SQL
SQL | |
---|---|
deklara programlingvo • demandlingvo •programlingvo• faka programlingvo | |
Paradigmo: | Plurparadigma:deklara,procedura |
Paradigmo(j): deklara programado | |
Klaso: | Rilata datumbazo |
Aperis en: | 1986 |
Aktuala versio: | SQL:2011 (2011) |
Tipa sistemo: | statika, strikta |
Ĉefaj realigoj: | MSSQL,MySQL,Oracle,PostgreSQLktp. |
Programlingva(j) dialekto(j): | SQL-86, SQL-89, SQL-92, SQL:1999, SQL:2003, SQL:2006, SQL:2008, SQL:2011 |
SQL(angleStructured Query Language,strukturhava serĉmenda lingvo) estas komputillingvo porrilataj datumbazoj.Ĝia relative malkomplika sintakso similas al tiu de laanglakaj provizas la uzanton per komandoj por la manipulado de datumaroj (kiel aldoni, ŝanĝi kaj forigi datumerojn, strukturigi tabelojn, ktp.) kaj por serĉmendidatumojn.Pro sia kvazaŭa normeco SQL subtenas la sendependecon de programoj disde ladatumbazo,kiun ili uzas. La plej multaj el la realigoj de SQL krome ebligas la uzon de aldonaj funkcioj kaj komandoj nenormaj.
Historio
[redakti|redakti fonton]La fundamenton de ĉiuj datumbazoj rilataj kreis en1970Edgar F. Coddper sia artikoloA Relational Model of Data for Large Shared Data Banks(rilateca modelo de datumoj por grandaj komune uzataj datumbazoj). La artikoloj sekvintaj ĉi-artikolon interalie temis pri la kreo derilataj lingvoj,el kiuj la plej grava estisStructured English Query LanguageaŭSEQUEL,evoluigita en1974ĉeIBM.En1976oni difinisSEQUEL/2kaj alinomis ĝinSQLpro leĝaj kialoj. Ties prototipo,System R,estis finevoluigita en1977kaj jam enhavis la plejparton de SQL.
Pro la sukceso deSystem Rposte multaj aliaj firmaoj decidis enkonduki produktojn SQL-kapablajn en la merkaton, interalie
- 1980Oraclefare deRelational Software Inc.,
- 1981SQL/DSfare deIBM,
- 1983DB2fare deIBM,
- 1985INGRES,kaj
- 1986SYBASE.
Ene de dek jarojSQLiĝis la laŭfakta normo de datumbazoj.
LaAmerican National Standards Institute(ANSI) ordonis1982la normigon de rilata lingvo, kiun oni subskribis en1986(ĉi-tial nomataSQL/86) kaj kiun plejparte konsistigis la SQL-dialekto de IBM. En1987,ĝi ankaŭ estis akceptita kielISO-normo; ĝisdatigoj sekvis perSQL/89,SQL/92kajSQL/99.
Novan version (SQL:2003) oni decidis en2003enStokholmo.
Ekzemploj
[redakti|redakti fonton]La komandojn oni partigas en tri kategoriojn:
Datumdifino
[redakti|redakti fonton]La komandoj por datumdifino estasCREATE,ALTERkajDROP.
CREATE TABLE adresoj (nomo VARCHAR(30), antnomo VARCHAR(40))
- Kreu novan tabelon nomatanadresojkun la kolumnojnomokajantnomo,kiuj povas enhavi tekstojn ĝis 30 aŭ 40 literojn longajn.
ALTER TABLE adresoj ADD COLUMN urbo VARCHAR(30)
- Aldonu kolumnonurboal la tabeloadresoj.
DROP TABLE adresoj
- Forigu la tutan tabelonadresoj.
CREATE INDEX indekso_nomo ON adresoj (nomo)
- Kreuindeksonnomataindekso_nomopor la tabeloadresojkiu enhavu la liniojn ordigitaj laŭnomo.
DROP INDEX indekso_nomo
- Forigu la indeksonindekso_nomo.
Datummanipulado
[redakti|redakti fonton]La komando por serĉmendi estasSELECT.
SELECT * FROM adresoj WHERE nomo='Schmidt'
- Montru ĉiujn kolumnojn el la tabeloadresoj,kies kolumnonomoegalas alSchmidt.
SELECT nomo FROM adresoj ORDER BY nomo
- Montru la kolumnonnomode ĉiuj linioj en la tabeloadresoj,kaj ordigu ilin laŭnomo.
SELECT COUNT(*) AS nombro_de_adresoj FROM adresoj
- Montru la nombron de linioj enadresojkaj nomu la rezultkolumnonnombro_de_adresoj.
SELECT nomo,COUNT(nomo) FROM adresoj GROUP BY nomo
- Montru ĉiujn unikajn nomojn kune kun iliaj nombroj.
La komandoj por ŝanĝi datumojn estasINSERT,UPDATEkajDELETE.
INSERT INTO adresoj (nomo,antnomo,urbo) VALUES ('Schmidt','Philipp','Hamburg')
- Aldonu linion kies kolumnojnomo,antnomo,kajurbohavas la valorojn montratajn en la tabelonadresoj.
UPDATE adresoj SET urbo='Berlin' WHERE nomo='Schmidt'
- Ŝanĝu la kolumnonurbode ĉiu linio, kies kolumnonomoegalas alSchmidt.
DELETE FROM adresoj WHERE urbo!='London'
- Forigu el la tabelo ĉiujn liniojn, kies kolumnourbomalegalas alLondon.
DELETE FROM adresoj
- Forigu ĉiujn liniojn el la tabeloadresoj.
Datumkontrolo
[redakti|redakti fonton]La komandoj de datumkontrolo estasGRANTkajREVOKE.
GRANT SELECT,UPDATE ON TABLE adresoj TO karlo
- Rajtigu la uzantonkarlofari mendojn kaj ŝanĝi ekzistantajn liniojn.
REVOKE ALL ON TABLE adresoj FROM alia_uzanto
- Malpermesu ĉiujn komandojn al la uzantoalia_uzanto.
SQL-datumbazoj
[redakti|redakti fonton]kaj krome ankaŭ
- Adabas
- DB2
- dBase IV
- Firebird
- GUPTA
- Informix
- INGRES
- InterBase
- JetSQL
- Microsoft SQL Server
- MaxDB(antaŭe SAP DB)
- Progress (datumbazo kaj 4GL)
- SQLite
- SYBASE
- T-SQL
- Teradata
Eksteraj ligiloj
[redakti|redakti fonton]- Comparison of Different SQL Implementations– la komparo diversajn SQL efektiviĝojn: SQL:2008, PostgreSQL, DB2, MS SQL Server, MySQL, Oracle kaj Informix (angle)