SQL-syntakse - SQL syntax
Syntaksi on SQL- ohjelmointikieli on määritelty ja ylläpitää ISO / IEC SC 32 osana ISO / IEC 9075 . Tätä standardia ei ole vapaasti saatavilla. Standardin olemassaolosta huolimatta SQL-koodi ei ole täysin siirrettävissä eri tietokantajärjestelmissä ilman säätöjä.
Kielielementit
SQL-kieli on jaettu useisiin kielielementteihin, mukaan lukien:
-
Avainsanat ovat SQL-kielellä määriteltyjä sanoja. Ne ovat joko varattuja (esim
SELECT.COUNTJaYEAR) tai varaamattomia (esimASC.DOMAINJaKEY). Luettelo SQL-varattuista sanoista . -
Tunnisteet ovat tietokantaobjektien nimiä, kuten taulukoita, sarakkeita ja kaavioita. Tunniste ei välttämättä ole yhtä suuri kuin varattu avainsana, ellei se ole erotettu tunniste. Erotetut tunnisteet tarkoittavat kaksoislainausmerkkeihin suljettuja tunnisteita. Ne voivat sisältää merkkejä, joita ei yleensä tueta SQL-tunnisteissa, ja ne voivat olla identtisiä varatun sanan kanssa, esim. Nimetty sarake määritetään
YEARnimellä"YEAR". - Lausekkeet , jotka ovat lauseiden ja kyselyjen komponentteja. (Joissakin tapauksissa nämä ovat valinnaisia.)
- Ilmaisuja , jotka voivat tuottaa joko skalaari- arvoja, tai taulukoita koostuu sarakkeiden ja rivien tiedon
- Predikaatit , jotka määrittelevät ehdot, jotka voidaan arvioida SQL: n kolmiarvoiseksi logiikaksi (3VL) (true / false / unknown) tai Boolen totuusarvoiksi ja joita käytetään lauseiden ja kyselyjen vaikutusten rajoittamiseen tai ohjelmavirran muuttamiseen.
- Kyselyt , jotka hakevat tietoja tiettyjen ehtojen perusteella. Tämä on tärkeä osa SQL: ää .
-
Lausekkeet , joilla voi olla pysyvä vaikutus kaavioihin ja tietoihin tai jotka voivat hallita tapahtumia, ohjelmavirtaa, yhteyksiä, istuntoja tai diagnostiikkaa.
- SQL-käskyt sisältävät myös puolipisteen (";") käskyn terminaattorin. Vaikka sitä ei vaadita kaikilla alustoilla, se määritellään SQL-kieliopin vakio-osaksi.
- Merkityksetön välilyönti jätetään yleensä huomiotta SQL-käskyissä ja kyselyissä, mikä helpottaa SQL-koodin muotoilua luettavuuden vuoksi.
Operaattorit
| Operaattori | Kuvaus | Esimerkki |
|---|---|---|
=
|
Yhtä kuin |
Author = 'Alcott'
|
<>
|
Ei yhtä suuri (monet DBMS: t hyväksyvät != lisäksi <> )
|
Dept <> 'Sales'
|
>
|
Suurempi kuin |
Hire_Date > '2012-01-31'
|
<
|
Vähemmän kuin |
Bonus < 50000.00
|
>=
|
Suurempi tai yhtä suuri |
Dependents >= 2
|
<=
|
Pienempi tai yhtä suuri |
Rate <= 0.05
|
[NOT] BETWEEN [SYMMETRIC]
|
Sisältyvän alueen välillä. SYMMETRIC kääntää alueen rajat, jos ensimmäinen on suurempi kuin toinen. |
Cost BETWEEN 100.00 AND 500.00
|
[NOT] LIKE [ESCAPE]
|
Alkaa hahmokuviolla |
Full_Name LIKE 'Will%'
|
| Sisältää merkkikuvion |
Full_Name LIKE '%Will%'
|
|
[NOT] IN
|
Yhtä yhtä monista mahdollisista arvoista |
DeptCode IN (101, 103, 209)
|
IS [NOT] NULL
|
Vertaa nollaan (puuttuvat tiedot) |
Address IS NOT NULL
|
IS [NOT] TRUE tai IS [NOT] FALSE
|
Boolen totuusarvotesti |
PaidVacation IS TRUE
|
IS NOT DISTINCT FROM
|
On yhtä suuri kuin arvo tai molemmat ovat nollia (puuttuvat tiedot) |
Debt IS NOT DISTINCT FROM - Receivables
|
AS
|
Käytetään sarakkeen nimen muuttamiseen tuloksia tarkasteltaessa |
SELECT employee AS department1
|
Toisinaan on ehdotettu tai toteutettu muita operaattoreita, kuten siluettioperaattoria (vain sellaisten rivien löytämiseksi, jotka eivät ole "huonompia" kuin muut).
SQL: llä on case lauseke, joka otettiin käyttöön SQL-92: ssä . Yleisimmässä muodossaan, jota SQL-standardissa kutsutaan "haetuksi tapaukseksi":
CASE WHEN n > 0
THEN 'positive'
WHEN n < 0
THEN 'negative'
ELSE 'zero'
END
SQL testaa WHEN olosuhteet siinä järjestyksessä kuin ne esiintyvät lähteessä. Jos lähde ei määritä ELSE lauseketta, SQL oletuksena on ELSE NULL . Lyhennettyä syntaksia nimeltä "yksinkertainen tapaus" voidaan käyttää myös:
CASE n WHEN 1
THEN 'One'
WHEN 2
THEN 'Two'
ELSE 'I cannot count that high'
END
Tässä syntaksissa käytetään implisiittisiä tasa-arvon vertailuja tavallisten varoitusten kanssa verrattaessa NULL: iin .
Erikoislausekkeille on kaksi lyhyttä muotoa CASE : COALESCE ja NULLIF .
COALESCE Ilmaisu palauttaa arvon ensimmäinen ei-NULL operandin, saapuvat työskentelevät vasemmalta oikealle tai NULL, jos kaikki operandit yhtä NULL.
COALESCE(x1,x2)
vastaa:
CASE WHEN x1 IS NOT NULL THEN x1
ELSE x2
END
NULLIF Ilmaisu on kahden operandin ja palaa NULL, jos operandit on sama arvo, muuten sillä on arvo ensimmäinen operandi.
NULLIF(x1, x2)
vastaa
CASE WHEN x1 = x2 THEN NULL ELSE x1 END
Kommentit
Standard SQL mahdollistaa kahden formaatteja kommentit : -- comment , joka päättyy ensimmäisen rivinvaihto , ja /* comment */ , joka voi ulottua useita rivejä.
Kyselyt
SQL: n yleisimpiä toimintoja, kysely, käyttää deklaratiivista SELECT käskyä. SELECT noutaa tietoja yhdestä tai useammasta taulukosta tai lausekkeesta. Vakiolausekkeilla SELECT ei ole pysyviä vaikutuksia tietokantaan. Joillakin epätyypillisillä toteutuksilla SELECT voi olla pysyviä vaikutuksia, kuten SELECT INTO joissakin tietokannoissa tarjottu syntaksit.
Kyselyt avulla käyttäjä voi kuvata halutun datan, jolloin tietokannan hallintajärjestelmän (DBMS) suorittaa suunnitteluun , optimointiin , ja suorittaa fyysisiä toimintoja tarvitaan tuottamaan tämä tulos, kun se valitsee.
Kysely sisältää luettelon sarakkeista, jotka sisällytetään lopputulokseen, yleensä heti SELECT avainsanan jälkeen. Tähdellä (" * ") voidaan määrittää, että kyselyn pitäisi palauttaa kaikki kyseltyjen taulukoiden sarakkeet. SELECT on SQL: n monimutkaisin käsky, valinnaisilla avainsanoilla ja lausekkeilla, jotka sisältävät:
FROMLauseke, joka ilmaisee taulukon (t) hakea tietoja.FROMLauseke voi sisältää valinnaisiaJOINalakohdissa määrittää säännöt taulukoiden yhdistämisestä.WHERELauseke sisältää vertailun predikaatti, joka rajoittaa rivit palauttaa kyselyn.WHERELauseke poistaa kaikki rivit tulosjoukon vaikka vertailun predikaatti ei arvioi True.GROUP BYLauseke hankkeet rivit, joilla on yhteisiä arvoja pienemmäksi rivien.GROUP BYkäytetään usein yhdessä SQL-aggregaatiotoimintojen kanssa tai päällekkäisten rivien poistamiseksi tulosjoukosta.WHERELauseketta sovelleta ennenGROUP BYlauseketta.HAVINGLauseke sisältää predikaatti, jota käytetään suodattimen rivit saatuGROUP BYlauseke. Koska se vaikuttaaGROUP BYlauseen tuloksiin , aggregaatiofunktioita voidaan käyttääHAVINGlauseen predikaatissa.ORDER BYLauseke tunnistaa sarakkeessa [s] käyttää lajitella tuloksena olevan datan, ja mihin suuntaan lajitella ne (nouseva tai laskeva). IlmanORDER BYlauseketta SQL-kyselyn palauttamien rivien järjestys on määrittelemätön.DISTINCTAvainsanan eliminoi päällekkäiset tiedot.OFFSETLauseke täsmennetään rivien hypätä ennen tietojen palauttamiseen.FETCH FIRSTLauseke määrittää rivien palauttamista. Joissakin SQL-tietokannoissa on sen sijaan epätyypillisiä vaihtoehtoja, esimLIMIT.TOPTaiROWNUM.
Kyselyn lauseilla on erityinen suoritusjärjestys, joka on merkitty numerolla oikealla puolella. Se on seuraava:
SELECT <columns> |
5. |
FROM <table> |
1. |
WHERE <predicate on rows> |
2. |
GROUP BY <columns> |
3. |
HAVING <predicate on groups> |
4. |
ORDER BY <columns> |
6. |
OFFSET |
7. |
FETCH FIRST |
8. |
Seuraava SELECT kyselyesimerkki palauttaa luettelon kalliista kirjoista. Kysely noutaa kaikki kirjat- taulukon rivit , joissa hinta- sarake sisältää arvon, joka on suurempi kuin 100,00. Tulos lajitellaan nousevaan järjestykseen otsikon mukaan . Tähti (*) on Valitse lista osoittaa, että kaikki sarakkeet kirjan pöydän olisi sisällytettävä tulosjoukon.
SELECT *
FROM Book
WHERE price > 100.00
ORDER BY title;
Alla oleva esimerkki osoittaa kyselyn useista taulukoista, ryhmittelystä ja yhdistämisestä palauttamalla luettelon kirjoista ja kuhunkin kirjaan liittyvien tekijöiden lukumäärän.
SELECT Book.title AS Title,
count(*) AS Authors
FROM Book
JOIN Book_author
ON Book.isbn = Book_author.isbn
GROUP BY Book.title;
Esimerkkilähtö saattaa muistuttaa seuraavaa:
Title Authors ---------------------- ------- SQL Examples and Guide 4 The Joy of SQL 1 An Introduction to SQL 2 Pitfalls of SQL 1
Edellytyksenä on, että isbn on kahden taulukon ainoa yhteinen sarakkeen nimi ja että sarakkeella, jonka nimi on otsikko, on vain Kirja- taulukko, yllä oleva kysely voidaan kirjoittaa uudelleen seuraavassa muodossa:
SELECT title,
count(*) AS Authors
FROM Book
NATURAL JOIN Book_author
GROUP BY title;
Monet toimittajat joko eivät tue tätä lähestymistapaa, tai vaativat tiettyjä sarakkeiden nimeämiskäytäntöjä, jotta luonnolliset liitokset toimisivat tehokkaasti.
SQL sisältää operaattorit ja toiminnot tallennettujen arvojen laskemiseksi. SQL sallii lausekkeiden käytön valintaluettelossa datan projisointiin, kuten seuraavassa esimerkissä, joka palauttaa yli 100,00: n kustannuksia sisältävän kirjeluettelon ja lisää sales_tax -sarakkeen, joka sisältää arvonlisäveroluvun, joka on laskettu 6% hinnasta .
SELECT isbn,
title,
price,
price * 0.06 AS sales_tax
FROM Book
WHERE price > 100.00
ORDER BY title;
Alakyselyt
Kyselyt voidaan sijoittaa niin, että yhden kyselyn tuloksia voidaan käyttää toisessa kyselyssä relaatiooperaattorin tai aggregaatiofunktion avulla. Sisäkkäinen kysely tunnetaan myös alikyselynä . Liittyminen ja muut taulukkotoiminnot tarjoavat monissa tapauksissa laskennallisesti ylivoimaiset (eli nopeammat) vaihtoehdot, mutta alakyselyjen käyttö tuo käyttöön hierarkian, joka voi olla hyödyllistä tai välttämätöntä. Seuraavassa esimerkissä aggregaatiofunktio AVG vastaanottaa syötteenä alikyselyn tuloksen:
SELECT isbn,
title,
price
FROM Book
WHERE price < (SELECT AVG(price) FROM Book)
ORDER BY title;
Alikysely voi käyttää ulomman kyselyn arvoja, jolloin sitä kutsutaan korreloiduksi alakyselyksi .
Vuodesta 1999 lähtien SQL-standardi sallii WITH lausekkeet alakyselyille, nimeltään alakyselyille , joita yleensä kutsutaan yhteisiksi taulukkoilmaisuiksi (kutsutaan myös alakyselykerroiksi ). CTE: t voivat olla myös rekursiivisia viittaamalla itseensä; tuloksena oleva mekanismi sallii puiden tai kuvaajien liikkumisen (kun ne esitetään suhteina) ja yleisemmin kiinteän pisteen laskennan.
Johdettu taulukko
Johdettu taulukko on käyttää löytymistä SQL alikysely on lausekkeesta. Pohjimmiltaan johdettu taulukko on alakysely, joka voidaan valita tai liittyä siihen. Johdetun taulukon toiminnallisuuden avulla käyttäjä voi viitata alakyselyyn taulukkona. Inline-näkymää kutsutaan myös inline-näkymäksi tai alavalinnaksi .
Seuraavassa esimerkissä SQL-käsky sisältää liitoksen alkuperäisestä "Book" -taulukosta johdettuun "sales" -taulukkoon. Tämä johdettu taulukko sieppaa niihin liittyvät kirjamyyntitiedot ISBN-koodin avulla liittyäkseen Kirja-taulukkoon. Tuloksena on, että johdettu taulukko tarjoaa tulosjoukon lisäsarakkeilla (myytyjen tuotteiden määrä ja kirjojen myynyt yritys):
SELECT b.isbn, b.title, b.price, sales.items_sold, sales.company_nm
FROM Book b
JOIN (SELECT SUM(Items_Sold) Items_Sold, Company_Nm, ISBN
FROM Book_Sales
GROUP BY Company_Nm, ISBN) sales
ON sales.isbn = b.isbn
Nolla tai kolmiarvoinen logiikka (3VL)
Null- konseptin avulla SQL pystyy käsittelemään relaatiomallista puuttuvia tietoja. Sana NULL on varattu avainsana SQL: ssä, jota käytetään Null-erikoismerkin tunnistamiseen. Vertailut Nulliin, esimerkiksi WHERE-lausekkeiden tasa-arvo (=), tuottavat Tuntemattoman totuuden arvon. SELECT-lauseissa SQL palauttaa vain tulokset, joille WHERE-lauseke palauttaa arvon True; ts. se sulkee pois tulokset, joiden arvot ovat False, ja myös ne, joiden arvo on Tuntematon.
Tosi ja väärä -toiminnon lisäksi Nullin kanssa tehdyistä suorista vertailuista saatu Tuntematon tuo siten fragmentin kolmiarvoisesta logiikasta SQL: ään. Totuustaulukot, joita SQL käyttää AND: lle, OR: lle ja EI, vastaavat Kleene- ja Lukasiewicz-kolmenarvoisen logiikan yleistä fragmenttia (jotka eroavat implikaation määritelmässään, mutta SQL ei määritä tällaista operaatiota).
|
|
||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||
Nullsin semanttisesta tulkinnasta SQL: ssä on kuitenkin kiistoja, koska sitä käsitellään suorien vertailujen ulkopuolella. Kuten yllä olevasta taulukosta näkyy, suorat tasa-arvon vertailut kahden NULL: n välillä SQL: ssä (esim. {{{1}}} ) Palauttavat Tuntematon-arvon. Tämä on yhdenmukainen tulkinnan kanssa, jonka mukaan Nullilla ei ole arvoa (eikä se ole minkään tietotunnuksen jäsen), vaan se on pikemminkin paikkamerkki tai "merkki" puuttuville tiedoille. Kuitenkin periaate että kaksi Nulls eivät ole yhtä suuria keskenään tehokkaasti rikotaan SQL eritelmän UNION ja INTERSECT operaattoreille, jotka eivät tunnistaa nollia keskenään. Tästä johtuen nämä asetetut operaatiot SQL: ssä voivat tuottaa tuloksia, jotka eivät edusta varmaa tietoa, toisin kuin toiminnot, joihin liittyy nimenomaisia vertailuja NULL: ään (esim WHERE . Edellä käsitellyn lausekkeen toiminnot). Coddin vuoden 1979 ehdotuksessa (jonka periaatteessa hyväksyi SQL92) tämä semanttinen epäjohdonmukaisuus järkeistetään väittämällä, että kaksoiskappaleiden poisto asetetuissa operaatioissa tapahtuu "alemmalla yksityiskohtien tasolla kuin tasa-arvotestaus palautusoperaatioiden arvioinnissa". Tietojenkäsittelytieteen professori Ron van der Meyden päätyi kuitenkin siihen johtopäätökseen, että "SQL-standardin epäjohdonmukaisuudet tarkoittavat, että mitään intuitiivista loogista semantiikkaa ei voida liittää nollien käsittelyyn SQL: ssä".
Lisäksi, koska SQL-operaattorit palauttavat Tuntematon verrattaessa mitään suoraan Nulliin, SQL tarjoaa kaksi Null-spesifistä vertailuennustetta: IS NULL ja IS NOT NULL testaa, ovatko tiedot Null-vai ei. SQL ei tue nimenomaisesti yleistä kvantifiointia , ja sen on toimittava negatiivisena eksistentiaalisena kvantifikaationa . On myös "<riviarvolauseke> Eristetään <riviarvolauseke>" -korjattu vertailuoperaattori, joka palauttaa TOSI-arvon, elleivät molemmat operandit ole yhtä suuria tai molemmat ovat NULL. Samoin IS NOT DISTINCT FROM määritellään "EI (<riviarvolauseke> IS DISTINCT FROM <riviarvolauseke>)". SQL: 1999 esitteli myös BOOLEAN tyyppimuuttujia, jotka standardin mukaan voivat sisältää myös tuntemattomia arvoja, jos se on mitätöitävissä. Käytännössä useat järjestelmät (esim. PostgreSQL ) toteuttavat BOOLEAN Tuntemattoman BOOLEAN NULL: ina, jonka standardin mukaan NULL BOOLEAN ja TUNNETTU "voidaan käyttää vuorotellen tarkoittamaan täsmälleen samaa". C. Päivämäärä (2011). SQL ja relaatioteoria: Kuinka kirjoittaa tarkka SQL-koodi . O'Reilly Media, Inc. s. 83. ISBN 978-1-4493-1640-2 . </ref>
Tietojen käsittely
Data Manipulation Language (DML) on osajoukko SQL käytetään lisätä, päivittää ja poistaa tiedot:
INSERT INTO example
(column1, column2, column3)
VALUES
('test', 'N', NULL);
-
UPDATEmuokkaa joukkoa olemassa olevia taulukkorivejä, esimerkiksi:
UPDATE example
SET column1 = 'updated value'
WHERE column2 = 'N';
-
DELETEpoistaa olemassa olevat rivit taulukosta, esimerkiksi:
DELETE FROM example
WHERE column2 = 'N';
-
MERGEkäytetään useiden taulukoiden tietojen yhdistämiseen. Se yhdistääINSERTjaUPDATEelementit. Se on määritelty SQL: 2003-standardissa; ennen sitä jotkut tietokannat tarjosivat samanlaista toiminnallisuutta eri syntaksin kautta, joita joskus kutsutaan " ylöspäin ".
MERGE INTO table_name USING table_reference ON (condition)
WHEN MATCHED THEN
UPDATE SET column1 = value1 [, column2 = value2 ...]
WHEN NOT MATCHED THEN
INSERT (column1 [, column2 ...]) VALUES (value1 [, value2 ...])
Tapahtumien hallinta
Tapahtumat, jos saatavilla, kääri DML-operaatiot:
-
START TRANSACTION(taiBEGIN WORK, taiBEGIN TRANSACTIONSQL-murteesta riippuen) merkitsee tietokantatapahtuman alkua , joka joko suoritetaan kokonaan tai ei ollenkaan. -
SAVE TRANSACTION(taiSAVEPOINT) tallentaa tietokannan tilan tapahtuman nykyiseen kohtaan
CREATE TABLE tbl_1(id int);
INSERT INTO tbl_1(id) VALUES(1);
INSERT INTO tbl_1(id) VALUES(2);
COMMIT;
UPDATE tbl_1 SET id=200 WHERE id=1;
SAVEPOINT id_1upd;
UPDATE tbl_1 SET id=1000 WHERE id=2;
ROLLBACK to id_1upd;
SELECT id from tbl_1;
-
COMMITtekee kaikista tapahtuman tietomuutoksista pysyviä. -
ROLLBACKhylkää kaikki datamuutokset viimeisen jälkeenCOMMITtaiROLLBACKjättää tiedot sellaisiksi kuin ne olivat ennen näitä muutoksia. KunCOMMITlauseke on valmis, tapahtuman muutoksia ei voida palauttaa.
COMMIT ja ROLLBACK lopettaa nykyinen tapahtuma ja vapauta tietolukot. Jos START TRANSACTION vastaavaa lausetta ei ole, SQL: n semantiikka on toteutuksesta riippuvainen. Seuraava esimerkki näyttää klassisen varojensiirtotapahtuman, jossa raha poistetaan tililtä ja lisätään toiselle. Jos joko poisto tai lisäys epäonnistuu, koko tapahtuma palautetaan.
START TRANSACTION;
UPDATE Account SET amount=amount-200 WHERE account_number=1234;
UPDATE Account SET amount=amount+200 WHERE account_number=2345;
IF ERRORS=0 COMMIT;
IF ERRORS<>0 ROLLBACK;
Tietojen määrittely
Data Definition Language (DDL) hallinnoi pöytä ja indeksin rakenne. Keskeisin erät DDL ovat CREATE , ALTER , RENAME , DROP ja TRUNCATE lausunnot:
-
CREATEluo objektin (esimerkiksi taulukon) tietokantaan, esimerkiksi:
CREATE TABLE example(
column1 INTEGER,
column2 VARCHAR(50),
column3 DATE NOT NULL,
PRIMARY KEY (column1, column2)
);
-
ALTERmuokkaa olemassa olevan objektin rakennetta eri tavoin, esimerkiksi lisäämällä sarakkeen olemassa olevaan taulukkoon tai rajoitteen, esimerkiksi:
ALTER TABLE example ADD column4 INTEGER DEFAULT 25 NOT NULL;
-
TRUNCATEpoistaa kaikki tiedot taulukosta erittäin nopeasti poistamalla taulukon sisällä olevat tiedot eikä itse taulukkoa. Se tarkoittaa yleensä myöhempää COMMIT-operaatiota, ts. Sitä ei voi palauttaa takaisin (tietoja ei kirjoiteta lokiin myöhempää palautusta varten, toisin kuin POISTA).
TRUNCATE TABLE example;
-
DROPpoistaa objektin tietokannasta, yleensä peruuttamattomasti, ts. sitä ei voida palauttaa takaisin, esimerkiksi:
DROP TABLE example;
Tietotyypit
Jokainen SQL-taulukon sarake ilmoittaa tyypin (tyypit), jotka sarake voi sisältää. ANSI SQL sisältää seuraavat tietotyypit.
- Merkkijonot ja kansalliset merkkijonot
-
CHARACTER(n)(tai ): kiinteä leveys n- merkkijono, täytetty tarvittaessa välilyönneilläCHAR(n) -
CHARACTER VARYING(n)(tai ): vaihtelevan leveyden merkkijono, jonka enimmäiskoko on n merkkiäVARCHAR(n) -
CHARACTER LARGE OBJECT(n [ K | M | G | T ])(tai ): merkki iso esine, jonka enimmäiskoko on n [K | M | G | T] merkkiäCLOB(n [ K | M | G | T ]) -
NATIONAL CHARACTER(n)(tai ): kiinteä leveysmerkkijono, joka tukee kansainvälistä merkistöäNCHAR(n) -
NATIONAL CHARACTER VARYING(n)(tai ): vaihtelevan leveyden merkkijonoNVARCHAR(n)NCHAR -
NATIONAL CHARACTER LARGE OBJECT(n [ K | M | G | T ])(tai ): kansallinen merkki, suuri esine, jonka enimmäiskoko on n [K | M | G | T] merkkiäNCLOB(n [ K | M | G | T ])
Varten CHARACTER LARGE OBJECT ja NATIONAL CHARACTER LARGE OBJECT tietotyypit, kertojat K (1 024), M (1 048 576), G (1 073 741 824) ja T (1 099 511 627 776), voidaan vaihtoehtoisesti käyttää, kun määritetään pituus.
- Binääri
-
BINARY(n): Kiinteän pituinen binaarijono, enimmäispituus n . -
BINARY VARYING(n)(tai ): Muuttuvan pituinen binaarijono, enimmäispituus n .VARBINARY(n) -
BINARY LARGE OBJECT(n [ K | M | G | T ])(tai ): binäärinen iso esine, jonka enimmäispituus on n [K | M | G | T] .BLOB(n [ K | M | G | T ])
Että BINARY LARGE OBJECT tietotyyppi, kertojat K (1 024), M (1 048 576), G (1 073 741 824) ja T (1 099 511 627 776), voidaan vaihtoehtoisesti käyttää, kun määritetään pituus.
- Boolen
BOOLEAN
BOOLEAN Tietotyyppi voi tallentaa arvoja TRUE ja FALSE .
- Numeerinen
-
INTEGER(taiINT),SMALLINTjaBIGINT -
FLOAT,REALjaDOUBLE PRECISION -
NUMERIC(precision, scale)taiDECIMAL(precision, scale) -
DECFLOAT(precision)
Esimerkiksi numeron 123.45 tarkkuus on 5 ja asteikko 2. Tarkkuus on positiivinen kokonaisluku, joka määrittää merkittävien numeroiden lukumäärän tietyssä radiksissa (binääri tai desimaali). Asteikko on ei-negatiivinen kokonaisluku. Asteikko 0 osoittaa, että luku on kokonaisluku. Desimaaliluvulle asteikolla S tarkka numeerinen arvo on merkittävien numeroiden kokonaisluku jaettuna 10 S: llä .
SQL tarjoaa toiminnot CEILING ja FLOOR pyöristää numeeriset arvot. (Suosittuja toimittajakohtaisia toimintoja ovat TRUNC (Informix, DB2, PostgreSQL, Oracle ja MySQL) ja ROUND (Informix, SQLite, Sybase, Oracle, PostgreSQL, Microsoft SQL Server ja Mimer SQL.))
- Ajallinen (päivämäärä)
-
DATE: päivämääräarvoille (esim.2011-05-03). -
TIME: aika-arvoille (esim.15:51:36). -
TIME WITH TIME ZONE: sama kuinTIME, mutta sisältää tietoja kyseisestä aikavyöhykkeestä. -
TIMESTAMP: Tämä on aDATEjaTIMEkoottu yhteen muuttujaan (esim.2011-05-03 15:51:36.123456). -
TIMESTAMP WITH TIME ZONE: sama kuinTIMESTAMP, mutta sisältää tietoja kyseisestä aikavyöhykkeestä.
SQL-toimintoa EXTRACT voidaan käyttää yksittäisen kentän (esimerkiksi sekuntien) purkamiseen päivämääräajasta tai aikaväliarvosta. Nykyisen järjestelmän päivämäärä / kellonaika tietokantapalvelimen voidaan kutsua käyttämällä toimintoja kuten CURRENT_DATE , CURRENT_TIMESTAMP , LOCALTIME , tai LOCALTIMESTAMP . (Suosittu valmistajakohtaisia toimintoja TO_DATE , TO_TIME , TO_TIMESTAMP , YEAR , MONTH , DAY , HOUR , MINUTE , SECOND , DAYOFYEAR , DAYOFMONTH ja DAYOFWEEK .)
- Intervalli (päivämäärä)
-
YEAR(precision): useita vuosia -
YEAR(precision) TO MONTH: useita vuosia ja kuukausia -
MONTH(precision): useita kuukausia -
DAY(precision): useita päiviä -
DAY(precision) TO HOUR: päivien ja tuntien määrä -
DAY(precision) TO MINUTE: päivien, tuntien ja minuuttien määrä -
DAY(precision) TO SECOND(scale): päivien, tuntien, minuuttien ja sekuntien määrä -
HOUR(precision): useita tunteja -
HOUR(precision) TO MINUTE: useita tunteja ja minuutteja -
HOUR(precision) TO SECOND(scale): tuntien, minuuttien ja sekuntien määrä -
MINUTE(precision): muutama minuutti -
MINUTE(precision) TO SECOND(scale): minuuttien ja sekuntien määrä
Tietojen hallinta
Data Control Language (DCI) valtuuttaa käyttäjät voivat käyttää ja käsitellä tietoja. Sen kaksi päälausumaa ovat:
-
GRANTvaltuuttaa yhden tai useamman käyttäjän suorittamaan toiminnon tai joukon toimintoja objektille. -
REVOKEeliminoi avustuksen, joka voi olla oletusapuraha.
Esimerkki:
GRANT SELECT, UPDATE
ON example
TO some_user, another_user;
REVOKE SELECT, UPDATE
ON example
FROM some_user, another_user;
Huomautuksia
- ^ ANSI / ISO / IEC kansainvälinen standardi (IS). Tietokannan kieli SQL — osa 2: Säätiö (SQL / Foundation). 1999.
- ^ "Transact-SQL-viite". SQL Server Language Reference . SQL Server 2005 Books Online. Microsoft. 2007-09-15 . Haettu 17.06.2007 .
-
^ SAS 9.4 SQL-menettelyjen käyttöopas . SAS-instituutti. 2013. Sivumäärä 248. ISBN
9781612905686 . Haettu 21.10.2015 .
Vaikka UNIQUE-argumentti on sama kuin DISTINCT, se ei ole ANSI-standardi.
-
^ Leon, Alexis ; Leon, Mathews (1999). "Kopioiden poistaminen - VALITSE käyttämällä DISTINCT". SQL: Täydellinen viite . New Delhi: Tata McGraw-Hill Education (julkaistu 2008). s. 143. ISBN
9780074637081 . Haettu 21.10.2015 .
[...] avainsana DISTINCT [...] poistaa kaksoiskappaleet tulosjoukosta.
- ^ "Mikä on SQL-kyselyn suoritusjärjestys? - Designcise.com" . www.designcise.com . Haettu 2018-02-04 .
- ^ a b Hans-Joachim, K. (2003). Msgstr "Nolla-arvot relaatiotietokannoissa ja varma tietovasta" Semantiikka tietokannoissa. Toinen kansainvälinen työpaja Dagstuhlin linna, Saksa, 7. – 12. Tammikuuta 2001. Revised Papers . Tietojenkäsittelytieteen luennot. 2582 . s. 119–138. doi : 10.1007 / 3-540-36596-6_7 . ISBN 978-3-540-00957-3 .
- ^ a b Ron van der Meyden, "Loogiset lähestymistavat epätäydelliseen tietoon: kysely" Chomickissä, Jan; Saake, Gunter (Toim.) Logics for Databases and Information Systems , Kluwer Academic Publishers ISBN 978-0-7923-8129-7 , s. 344
- ^ ISO / IEC. ISO / IEC 9075-2: 2003, "SQL / Foundation" . ISO / IEC.
- ^ "SQL: n yleisen kvantifioinnin semantiikka ja ongelmat" . Tietokonelehti . Helmikuu 1989. doi : 10.1093 / comjnl / 32.1.90 . Haettu 16.1.2017 .
- ^ Fratarcangeli, Claudio (1991). "Tekniikka universaalille kvantifioinnille SQL: ssä" . ACM SIGMOD -tietue . 20 (3): 16–24. doi : 10.1145 / 126482.126484 . Haettu 16.1.2017 .
- ^ Kawash, Jalal (2004) Monimutkainen kvantifiointi strukturoidussa kyselykielessä (SQL): relaatiolaskua käyttävä opetusohjelma ; Journal of Computers in Mathematics and Science Teaching ISSN 0731-9258, osa 23, numero 2, 2004, AACE Norfolk, Virginia. Thefreelibrary.com
- ^ ISO / IEC 9075-2: 2011, §4.5
- ^ "ISO / IEC 9075-1: 2016: Tietotekniikka - Tietokannan kielet - SQL - Osa 1: Kehys (SQL / Framework)" .