itthon / Böngészők / SQL összesítő függvények - SUM, MIN, MAX, AVG, COUNT. Beépített SQL függvények matematikai függvények lekérdezési példái

SQL összesítő függvények - SUM, MIN, MAX, AVG, COUNT. Beépített SQL függvények matematikai függvények lekérdezési példái

Utolsó frissítés: 2017.07.29

A következő függvényekkel dolgozhat karakterláncokkal T-SQL-ben:

    LEN : Egy karakterláncban lévő karakterek számát adja vissza. Paraméterként egy karakterláncot adunk át a függvénynek, amelyhez meg kell találni a hosszát:

    SELECT LEN("Apple") -- 5

    LTRIM: Eltávolítja a bevezető szóközöket a karakterláncból. Paraméterként egy karakterláncot vesz fel:

    SELECT LTRIM("Apple")

    RTRIM: Eltávolítja a karakterlánc záró szóközeit. Paraméterként egy karakterláncot vesz fel:

    SELECT RTRIM("Apple")

    CHARINDEX : Azt az indexet adja vissza, amelynél a karakterláncban egy részkarakterlánc első előfordulása található. Az első paraméter egy részkarakterlánc, a második paraméter pedig egy karakterlánc, amelyben keresni kell:

    SELECT CHARINDEX("pl", "Apple") -- 3

    PATINDEX: azt az indexet adja vissza, amelynél egy adott minta első előfordulása található egy karakterláncban:

    SELECT PATINDEX("%p_e%", "Apple") -- 3

    LEFT : bizonyos számú karaktert kivág a karakterlánc elejétől. A függvény első paramétere egy karakterlánc, a második pedig a karakterláncból először kivágandó karakterek száma:

    SELECT LEFT("Apple", 3) -- kb

    JOBBRA: adott számú karaktert levág egy karakterlánc végéről. A függvény első paramétere egy karakterlánc, a második pedig a karakterláncból először kivágandó karakterek száma:

    SELECT RIGHT("Apple", 3) -- pl

    SUBSTRING : meghatározott hosszúságú részkarakterláncot vág ki egy karakterláncból, egy bizonyos indextől kezdve. A függvény első paramétere egy karakterlánc, a második a kivágás kezdő indexe, a harmadik paraméter pedig a kivágandó karakterek száma:

    SUBSTRING ("Galaxy S8 Plus", 8, 2) -- S8

    REPLACE : Az egyik részstringet lecseréli egy másikra a karakterláncon belül. A függvény első paramétere egy karakterlánc, a második a lecserélendő karakterlánc, a harmadik pedig a következőre cserélendő karakterlánc:

    SELECT REPLACE("Galaxy S8 Plus", "S8 Plus", "Note 8") -- Galaxy Note 8

    REVERSE: megfordítja a karakterláncot:

    SELECT REVERSE("123456789") -- 987654321

    CONCAT: két karakterláncot fűz össze. Paraméterként 2 vagy több vonalra van szükség a csatlakoztatáshoz:

    SELECT CONCAT("Tom", " ", "Smith") -- Tom Smith

    LOWER: a karakterláncot kisbetűvé alakítja:

    SELECT LOWER("Alma") -- alma

    UPPER : a karakterláncot nagybetűssé alakítja

    SELECT UPPER("Alma") -- ALMA

    SZÓKÖZ : egy bizonyos számú szóközt tartalmazó karakterláncot ad vissza

Például vegyünk egy táblázatot:

TÁBLÁZAT LÉTREHOZÁSA Termékek (ID INT IDENTITY PRIMARY KEY, Product Name NVARCHAR(30) NOT NULL, Gyártó NVARCHAR(20) NOT NULL, ProductCount INT ALAPÉRTELMEZETT 0, Price MONEY NOT NULL);

Az adatok kinyerésekor pedig string függvényeket használunk:

SELECT UPPER(LEFT(Gyártó,2)) AS Rövidítés, CONCAT(Terméknév, " - ", Gyártó) AS Teljes Terméknév A termékekből ORDER BY Rövidítés

Beépített funkciók SQL célja az adatfeldolgozás megkönnyítése és felgyorsítása. A sajátosság az, hogy közvetlenül a kifejezésben megadhatók. Minden beépített funkció feltételesen csoportokra osztható.

Matematikai függvények:

    ABS(jelentése) - a szám abszolút értékét adja vissza;

    Kerek(érték, precizitás) - a megadott argumentumra felfelé kerekített numerikus értéket ad vissza pontosság a tizedesjegyek száma;

    JEL(jelentése) - mínuszt ad vissza, ha a szám negatív, és pluszt egyébként;

    ERŐ(érték, fokozat) – egy számot hatványra emel;

    SQRT(jelentése) - kivonja egy szám négyzetgyökét;

    MENNYEZET(jelentése)- az értéknél nagyobb vagy azzal egyenlő legközelebbi egész számot adja vissza;

    - PADLÓ(jelentése) Az értéknél kisebb vagy azzal egyenlő legközelebbi egész számot adja vissza.

String függvények:

    ASCII(vonal) - visszatér ASCII a karakterlánc első karakterének kódja;

    CHAR(szám) – karaktert ad vissza ASCII kód;

    LEN (vonal) – visszaadja a karakterlánc hosszát karakterekben, a záró szóközök nélkül;

    LTRIM(vonal)/ RTRIM(vonal)- eltávolítja a szóközt a karakterlánc elején/végén;

    BAL(karakterlánc, szám)/ R(karakterlánc, szám)- a megadott argumentumot adja vissza szám a karakterlánc karaktereinek száma a bal/jobb széltől kezdve;

    SUBSTRING(vonal, pozíció, hossz) - egy megadott hosszúságú részkarakterláncot ad vissza a karakterláncból, a megadott pozícióból kiindulva;

    ALSÓ(vonal) /FELSŐ(vonal) - kis-/nagybetűvé alakított karakterláncot ad vissza, stb.

A dátumokkal való munkavégzés funkciói:

    GETDATE() - Olyan értéket ad vissza, amely tartalmazza annak a számítógépnek a dátumát és idejét, amelyen az SQL Server példánya fut;

    NAP(értékdátum)– a megadott dátumtól származó számot ad vissza;

    HÓNAP(értékdátum)- a megadott dátumtól számítva a hónap számát adja vissza;

    ÉV(értékdátum)- a megadott dátumtól számítva visszaadja az év értékét;

    DATENANE( rész, értékdátum) - a megadott részt reprezentáló karakterláncot ad vissza ( nap, hónap, Órastb.) a megadott időponttól;

    DATEPART( rész, értékdátum) - a megadott részt reprezentáló egész számot ad vissza ( nap, hónap, Órastb.) a megadott időponttól.

Adattípus-konverziós függvények

    ÖNTVÉNY (jelentése MINT adattípus)

    ALAKÍTANI(adattípus, jelentése)

Érv jelentése a függvényekben megadja a konvertálandó értéket.

7.3. Adatdefiníciós nyelvi parancsok

Az adatdefiníciós nyelv parancsokat tartalmaz adatbázisok és objektumai létrehozására, módosítására és törlésére.

Hozzon létre egy táblázatot

Az új tábla létrehozását a parancs hajtja végre TÁBLÁZAT LÉTREHOZÁSA. A parancs leírja a tábla szerkezetét, a tábla egyes oszlopait és a táblához beállítandó integritási megszorításokat.

Parancs szintaxis:

TÁBLÁZAT LÉTREHOZÁSA táblázat_neve (( oszlopleírás |számított_oszlop_neve MINT kifejezés | table_level_integrity_constraints) [, ...])

A táblázat neve legfeljebb 128 karakter hosszúságú azonosító.

A táblázat tartalmazhat számított oszlopot, ebben az esetben az oszlop értékét a táblázat szerkezetében tárolt kifejezés határozza meg. A számított oszlop nem módosítható, így nem lehet NEM NULL, EGYEDI, ELSŐDLEGES KULCS, IDEGEN KULCS vagy ALAPÉRTELMEZETT.

A táblázat oszlopának leírásának szintaxisa a következő:

oszlop_neve adattípus[(a méret)]

[(Alapértelmezett_érték | IDENTITY [(érték, lépés)]}]

[oszlopszint_integritási_korlátai]

DEFAULT – lehetővé teszi az újonnan hozzáadott rekordban az oszlophoz rendelt érték megadását.

AZONOSÍTÁS Azt jelzi, hogy egy automatikus számozásra alkalmas oszlop (számlálóoszlop) jön létre. Egy táblázatban csak egy számlálóoszlop definiálható. Az érték paraméter a számláló kezdeti értékét adja meg, a lépés paraméter pedig a növekmény lépését. Ha ezek a paraméterek nincsenek beállítva, akkor 1-es értéket kapnak. Az IDENTITY csak olyan oszlopoknál állítható be, amelyek egész vagy decimális típusúak. Az értékek beszúrása az IDENTITY oszlopba nem megengedett.

A DBMS által kezelt integritási korlátozásoknak két csoportja van:

Deklaratív integritási megszorítások, amelyeket egy tábla létrehozásakor vagy módosításakor deklarálnak;

A triggerek által kezelt eljárási integritási megszorítások.

A deklaratív integritási megszorítások lehetnek táblaszintű megszorítások és táblaszintű megszorítások. Az oszlopszintű megkötés csak egy oszlopra vonatkozik. Minden deklaratív integritási megkötésnek lehet nevet adni.

Az oszlopszintű megkötések leírásának szintaxisa a következő:

((PRIMARY KEY | EGYEDI | NEM NULL ) |IDEGEN KULCS HIVATKOZÁSOK táblázat_neve( oszlop_neve)

|ELLENŐRIZZE a logikai_kifejezést)

Az adatintegritási megkötés nevének egyedinek kell lennie az adatbázison belül. Tekintsük az oszlopszinten meghatározható megszorításokat:

PRIMER KULCS kényszer. Minden tábla elsődleges kulcsának egyedinek kell lennie, és nem nullának kell lennie. Egy táblának csak egy elsődleges kulcsa lehet. Ha összetett, akkor az elsődleges kulcsra vonatkozó integritási megszorítások a táblázat szintjén vannak beállítva;

EGYEDI oszlopérték egyediségi megszorítások. Ez azt jelenti, hogy egy táblának nem lehet két olyan rekordja, amelyek az oszlopban azonos értékűek;

Egy NOT NULL megszorítás, amely megakadályozza, hogy az oszlop NULL értéket tároljon;

Idegenkulcs-megszorítás FOREIGN KEY (hivatkozási integritási kényszer). Idegen kulcsú oszlop esetén a REFERENCES használatával adja meg annak a táblának a nevét, amelyhez a hivatkozás létrejön, valamint a tábla azon oszlopának nevét, amelyre hivatkozni fog. Egy ilyen tábla a fő (szülő) tábla a létrehozott táblához képest. A fő táblázat oszlopában, amelynek értékeit összekapcsoljuk, rendelkeznie kell egy PRIMARY KEY megszorítással.

Ha az idegen táblakulcs több mezőből áll, akkor a FOREIGN KEY kényszert tábla szinten kell megadni. Ebben az esetben ki kell listázni az idegen kulcsban szereplő összes oszlopot, meg kell adni a főtábla nevét és a főtábla azon oszlopainak nevét, amelyekre az idegen kulcs hivatkozik.

A hivatkozási integritás meghatározza a szabályokat az adatok hozzáadására és módosítására egy táblában egy idegen kulcs és a megfelelő elsődleges kulcs megszorítás használatával. Az ON UPDATE és ON DELETE záradékok egy idegen kulcshoz a következő szabályokat határozzák meg a kapcsolódó adatok módosításához:

NO ACTION - lehetővé teszi, hogy csak azokat az értékeket módosítsa (törölje) a fő táblázatban, amelyeknek nincs megfelelő idegenkulcs-értéke a gyermektáblázatban. Ez a szabály alapértelmezés szerint érvényben van;

A CASCADE azt jelenti, hogy a szülőtábla elsődleges kulcsának módosításakor a gyermektábla idegen kulcsának minden értéke automatikusan megváltozik (törlődik);

A SET NULL azt jelenti, hogy a szülőtábla elsődleges kulcsának megváltoztatása (törlése) esetén a gyermektábla összes hivatkozó sorában az idegen kulcs értékei automatikusan NULL értékeket kapnak;

SET DEFAULT azt jelenti, hogy ha a szülőtábla elsődleges kulcsa megváltozik (törölve), a gyermektábla összes hivatkozó sorában az idegen kulcs értékek automatikusan alapértelmezett értékeket kapnak.

Egészítsük ki az „Egyetem” képzési adatbázis példáját, amelynek tervezését a fejezetben vettük figyelembe. 4.3 táblázat FEGYELEM és ÁLTALÁNOS NYILATKOZAT. A 6. és 7. táblázat a táblázatok logikai felépítését írja le.

6. táblázat

A DISCIPLINE információs objektum logikai felépítése

7. táblázat

Az információs objektum logikai felépítése ÁLTALÁNOS NYILATKOZAT

Kulcs jele

Mezőformátum

Név

Pontosság

Rekord könyvszám

Regisztrált diákkönyvi szám

szöveg

Fegyelmi kódex

Fegyelmi kódex

Számszerű

hosszú egész szám

számszerű

Adjunk kéréseket táblák létrehozására az ábrán látható módon. 35 infológiai adatbázis modell.

Rizs. 35. "Egyetemi" adatbázisséma

Amint az adatbázissémából látható, a FACULTY tábla független tábla, ezért először létrejön. Táblázat létrehozására irányuló kérelem, figyelembe véve a táblázatban található logikai struktúra leírását. 4 (61. o.) így fog kinézni:

ASZTAL LÉTREHOZÁSA tantestület

([részleg száma] tinyint PRIMARY KEY , [részleg neve] char(50))

A SPECIALTY tábla is független, másodikként hozzuk létre. Lekérdezés létrehozásakor a táblázatban található logikai struktúra leírását használja. 5. (62. o.).

TÁBLÁZAT LÉTREHOZÁSA [szakterület] (

[specialty number] int PRIMARY KEY,

[szakterület neve] char (60),

[oktatás költsége] )

A CSOPORT tábla a FACULTY és SPECIALTY táblától függ. A lekérdezés létrehozásakor a 3. táblázatot (61. o.) használjuk, és figyelembe vesszük, hogy az oszlopok kari számés szakszám idegen kulcsok:

TÁBLÁZAT LÉTREHOZÁSA [csoport] (

[csoportszám] smallint PRIMARY KEY,

[specialty number] int FORIGN KEY REFERENCES specialty( szoba különleges- hírek)A CASCADE TÖRLÉSE AZ UPDADE CASCADE-n,

[kar száma] tinyint FORIGN KEY REFERENCES faculty( szoba kar) ON DELETE CASCADE ON UPDADE CASCADE, [tanfolyam száma] tinyint)

A STUDENT tábla egy CSOPORT függő tábla. A 2. táblázat (60. o.) adatai alapján lekérdezést végzünk. Azt is megjegyezzük, hogy az oszlop csoportszám idegen kulcsok:

TÁBLÁZAT LÉTREHOZÁSA [tanuló] (

[csoport száma] smallint NOT NULL FOREIGN KEY REFERENCES group( szoba csoportok) ,

[vezetéknév] char(15) NOT NULL ,

[születési dátum] dátum és idő NEM NULL ,

[kereskedelmi] bit NEM NULL,

[regisztrációs név] char(9))

Az ÁLTALÁNOS FELVONÁS tábla adatai a DIÁK és FELMÉRŐ tábláktól függenek. Ebben a táblázatban az elsődleges kulcs összetett, és az elsődleges kulcs minden oszlopa egy idegen kulcs (lásd: 7. táblázat és 35. ábra).

Használjuk a diszciplína tábla logikai felépítésének a 6. táblázatban megadott leírását, és készítsünk egy lekérdezést:

TÁBLÁZAT LÉTREHOZÁSA [szakág] (

[tudományág kódja] int PRIMARY KEY,

[tudományág neve] char(50))

Most létrehozhat egy lekérdezést egy általános kimutatástábla létrehozásához. Mivel a tábla elsődleges kulcsa összetett kulcs, az ELSŐDLEGES KULCS kényszert a táblázat szintjén kell beállítani. Például állítsuk be a FOREIGN KEY megszorításokat a táblázat szintjén is. A kérés így fog kinézni:

TÁBLÁZAT LÉTREHOZÁSA [általános lap] (

[tudományági kód] int,

[osztálykönyv száma] char(8),

[osztály] NEM NULL , ELSŐDLEGES KULCS ([szakterület kódja], [osztálykönyvszám]), IDEGEN KULCS ([szakterület kódja]) HIVATKOZÁSOK [tudományág] ([szakterület kódja]), IDEGEN KULCS ([osztálykönyvszám]) HIVATKOZÁSOK [tanuló ] ([osztályzati könyv száma]))

Táblázat szerkezetének megváltoztatása

A tábla szerkezetének megváltoztatása az ALTER TABLE paranccsal történik. A paranccsal megváltoztathatja a meglévő oszlopok tulajdonságait, törölheti azokat vagy új oszlopokat adhat hozzá a táblához, kezelheti az integritási korlátozásokat, mind oszlopszinten, mind táblázat szinten. Számos paraméter és kulcsszó hozzárendelése hasonló a CREATE TABLE parancs megfelelő paramétereinek és kulcsszavainak hozzárendeléséhez.

Táblázat törlése

A táblázat eldobása a DROP TABLE paranccsal történik. Parancs szintaxis:

DROP TABLE asztal

Például a STUDENT tábla törlésére vonatkozó lekérdezés így néz ki:

DROP TABLE Diák

A tábla törlésekor figyelembe kell venni az adatbázisban a táblák között létrejött kapcsolatokat. Ha egy másik tábla a FOREIGN KEY integritási megszorítással törlésre kerülő táblára hivatkozik, akkor a DBMS nem engedélyezi a törlését.

Hozzon létre egy indexet

Az indexeket arra használják, hogy felgyorsítsák a hozzáférést az adatbázis-táblázatban lévő konkrét adatokhoz. Az index egy olyan struktúra, amely egy adatbázistábla egy vagy több oszlopában rendezi az értékeket, például a STUDENT tábla Vezetéknév oszlopában. Ha egy adott diákra keres vezetéknév alapján, az index segítségével gyorsabban hozzájuthat a szükséges információkhoz, mint a táblázat összes sorában.

Egy index mutat mutatókat a táblázat adott oszlopaiban tárolt adatértékekre, és a mutatókat a megadott rendezési sorrend szerint rendezi el. Az adatok keresése egy táblázatban index segítségével hasonló a könyvben található indexek kereséséhez. Először egy adott értékre keresünk az indexben, majd a megfelelő ugrást végrehajtjuk a mutatón keresztül az ezt az értéket tartalmazó sorra.

Az index a CREATE INDEX paranccsal jön létre:

INDEX LÉTREHOZÁSA

név_ index BE név _tables([,…] oszlop)

ahol az UNIQUE azt jelzi, hogy az indexnek csak egyedi értékeket kell tárolnia.

Egy index egy vagy több oszlopon hozható létre (összetett index). Az összetett indexek lehetővé teszik az azonos oszlopban azonos értékű rekordok megkülönböztetését.

Példa: Hozzon létre egy összetett indexet a DIÁK táblán a Vezetéknév és Születési dátum mezőkhöz

INDEX LÉTREHOZÁSA Ind_Fam BE

Tanuló (Vezetéknév, [születési dátum] DESC)

Csak akkor hozzon létre indexet egy táblán, ha gyakran kívánja lekérdezni az indexelt oszlopokban lévő adatokat. Az indexek lemezterületet foglalnak el, és lelassítják a sorok hozzáadását, törlését és frissítését.

Táblázatindex törlése

A DROP parancs eltávolít egy indexet a táblából. Az indexet eldobó DROP parancs szintaxisa a következő:

DROP INDEX index TOVÁBB asztal

Mielőtt egy indexet le lehetne dobni egy táblából vagy magából a táblából, be kell zárni.

Példa: Ind_Fam index törlése a TANULÓ táblából

DROP INDEX Ind_Fam ON tanuló

A Transact-SQL függvények lehetnek összesített vagy skalárisak. Az ilyen típusú funkciókkal ez a cikk foglalkozik.

Összesített függvények

Az aggregált függvények egy oszlopérték-csoporton hajtanak végre számításokat, és mindig egyetlen értéket adnak vissza a számítások eredményéből. A Transact-SQL nyelv számos általános összesítő függvényt támogat:

AVG

Kiszámítja az oszlopban található adatok számtani átlagát. A számításhoz használt értékeknek numerikusnak kell lenniük.

MIN és MAX

Határozza meg az oszlopban található összes adatérték maximális és minimális értékét. Az értékek lehetnek numerikusak, karakterláncok vagy ideiglenesek (dátum/idő).

ÖSSZEG

Kiszámítja egy oszlopban lévő értékek teljes összegét. A számításhoz használt értékeknek numerikusnak kell lenniük.

SZÁMOL

Megszámolja az oszlopban lévő nem null értékek számát. A count(*) függvény az egyetlen összesítő függvény, amely nem végez számításokat oszlopokon. Ez a függvény a sorok számát adja vissza (függetlenül attól, hogy az egyes oszlopok tartalmaznak-e null értékeket).

COUNT_BIG

Hasonló a count függvényhez, azzal a különbséggel, hogy BIGINT adatértéket ad vissza.

A rendszeres összesítő függvények SELECT utasításban való használatával a következő cikkek egyike foglalkozik.

Skaláris függvények

A Transact-SQL skalárfüggvényeket skaláris kifejezések létrehozására használják. (A skaláris függvény egyetlen értékre vagy értéklistára, míg az összesített függvény több sorból származó értékcsoportra végez számításokat.) A skalárfüggvények a következő kategóriákra bonthatók:

    numerikus függvények;

    dátumfüggvények;

    karakterlánc-függvények;

    rendszerfunkciók;

    metaadat függvények.

Az ilyen típusú funkciókat a következő szakaszok tárgyalják.

Numerikus függvények

A Transact-SQL numerikus függvények numerikus értékek módosítására szolgáló matematikai függvények. A numerikus függvények listája és rövid leírása az alábbi táblázatban található:

Transact-SQL numerikus függvények
Funkció Szintaxis Leírás Használati példa
ABS ABS(n)

Az n numerikus kifejezés abszolút értékét adja vissza (vagyis a negatív értékeket pozitívként adja vissza).

SELECT ABS(-5.320) -- 5.320 SELECT ABS(8.90) -- 8.90

ACOS, ASIN, ATAN, ATN2 ACOS(n), ASIN(n), ATAN(n), ATN2(n, m)

Inverz trigonometrikus függvények, amelyek kiszámítják n értékének inverz koszinuszát, inverz szinuszát, arctangensét (ATN2 esetén az n/m arc tangensét számítják ki). Az n, m bemeneti értékek és az eredmény FLOAT adattípusú.

COS, SIN, TAN, COT COS(n), SIN(n), TAN(n), COT(n)

Trigonometrikus függvények, amelyek kiszámítják az n érték koszinuszát, szinuszát, érintőjét, kotangensét. Az eredmény a FLOAT adattípus.

FOKOK, RADIÁNOK FOK(n), RADIÁNSZ(n)

A DEGREES függvény a radiánokat fokokká, RADIANS-t, illetve fordítva konvertálja.

SELECT DEGREES(PI() / 4) -- 45 SELECT COS(RADIANS(60.0))) -- 0.5 értéket ad vissza

MENNYEZET MENNYEZET (n)

Egy számot felkerekít egy nagyobb egész értékre.

MENNYEZET KIVÁLASZTÁSA(-5.320) -- Visszatér -5 MENNYEZET KIVÁLASZTÁSA(8.90) -- 9.

KEREK ROUND(n, p, [t])

n értékét a legközelebbi p-re kerekíti. Ha p pozitív szám, akkor n tört részét kerekítjük, negatív esetén pedig az egész részt. Az opcionális t argumentum használatakor az n számot nem kerekítjük, hanem csonkoljuk (vagyis lefelé kerekítjük).

SELECT ROUND(5.3208, 3) -- 5.3210 SELECT ROUND(125.384, -1) -- 130.000 SELECT ROUND(125.384, -1, 1) -- 120.000 értéket ad vissza

PADLÓ EMELET(n)

Lefelé kerekít a legközelebbi egész számra.

EMELET KIVÁLASZTÁSA(5,88) -- 5. eredmény

EXP EXP(n)

Kiszámítja e n értékét.

NAPLÓ, LOG10 LOG(n), LOG10(n)

LOG(n) - kiszámítja az n szám természetes logaritmusát (azaz e alapját), LOG10(n) - kiszámítja az n szám decimális (10-es) logaritmusát.

PI PI()

π értékét adja vissza (3,1415).

ERŐ TELJESÍTMÉNY(x, y)

Kiszámítja az x y értéket.

RAND RAND()

Egy tetszőleges FLOAT számot ad vissza 0 és 1 között.

ROWCOUNT_BIG ROWCOUNT_BIG()

A rendszer által legutóbb végrehajtott Transact-SQL utasítás által feldolgozott táblázatsorok számát adja vissza. A visszatérési érték BIGINT típusú.

JEL JEL(n)

Az n érték előjelét adja vissza számként: +1, ha pozitív, -1, ha negatív.

SQRT, SQUARE SQRT(n), NÉGYZET(n)

SQRT(n) - az n szám négyzetgyökét számítja ki, SQUARE(n) - az n argumentum négyzetét adja vissza.

Dátum funkciók

A dátum függvények kiértékelik a kifejezés dátumának vagy időpontjának megfelelő részeit, vagy visszaadják egy időintervallum értékét. A Transact-SQL által támogatott dátumfüggvényeket és azok rövid leírását az alábbi táblázat tartalmazza:

Transact-SQL dátumfüggvények
Funkció Szintaxis Leírás Használati példa
GETDATE GETDATE()

Az aktuális rendszerdátumot és -időt adja vissza.

KIVÁLASZTÁS GETDATE()

DATEPART DATEPART(elem, dátum)

Az item paraméterben megadott dátumrészt egész számként adja vissza.

1. (január) SELECT DATEPART(hónap, "2012. 01. 01.") -- 4. visszatérés (szerda) SELECT DATEPART (hétköznap, "2012. 01. 01.")

DATENAME DATENAME (tétel, dátum)

A dátumnak az item paraméterben karakterláncként megadott részét adja vissza.

Visszatér: január SELECT DATENAME(hónap, "2012. 01. 01.") -- szerda SELECT DATENAME (hétköznap, "2012. 01. 02.")

DATEDIFF DATEDIFF (elem, dat1, dat2)

Kiszámítja a dat1 és dat2 dátumok két része közötti különbséget, és egész számot ad vissza az item argumentumban megadott egységekben.

19-et ad vissza (19 év a dátumok között) SELECT DATEDIFF(év, "1990.01.01.", "2010.01.01") -- 7305-öt ad vissza (7305 nap a dátumok között) SELECT DATEDIFF(nap, "1990.01.01. ", "01/01/2010") .2010")

DATEADD DATEADD (tétel, n, dátum)

Hozzáadja az elem argumentumban megadott n-edik számú egységet a megadott dátum dátumhoz. (Az n argumentum értéke negatív is lehet.)

3 nap hozzáadása az aktuális dátumhoz SELECT DATEADD(nap, 3, GETDATE())

String függvények

A karakterlánc-függvények az oszlopértékeket manipulálják, amelyek általában karakteres adattípussal rendelkeznek. A Transact-SQL által támogatott karakterlánc-függvényeket és azok rövid leírását az alábbi táblázat tartalmazza:

Transact-SQL karakterlánc-függvények
Funkció Szintaxis Leírás Használati példa
ASCII, UNICODE ASCII(karakter), UNICODE(karakter)

A megadott karaktert a megfelelő ASCII egész számmá alakítja.

SELECT ASCII("W") -- 87 SELECT UNICODE("W") -- 1102

CHAR, NCHAR CHAR(int), NCHAR(int)

ASCII kódot (vagy Unicode-ot, ha NCHAR) alakít át a megfelelő karakterré.

SELECT CHAR(87) -- "W" SELECT NCHAR(1102) -- "w"

CHARINDEX CHARINDEX (str1, str2)

Az str1 részkarakterlánc előfordulásának kezdőpozícióját adja vissza az str2 karakterláncban. Ha az str2 karakterlánc nem tartalmazza az str1 részkarakterláncot, akkor a rendszer 0 értéket ad vissza.

5 SELECT CHARINDEX értéket ad vissza ("morf", "polimorfizmus")

KÜLÖNBSÉG DIFFERENCE(str1, str2)

Egy 0 és 4 közötti egész számot ad vissza, amely a két str1 és str2 karakterlánc SOUNDEX értéke közötti különbség. A SOUNDEX metódus egy számot ad vissza, amely a húr hangját jellemzi. Ezzel a módszerrel hasonló hangzású húrok azonosíthatók. Csak ASCII karakterekkel működik.

2 SELECT DIFFERENCE ("elírás", "megmondó") értéket ad vissza

BAL JOBB BAL (szt, hossz), JOBB (szt, hossz)

Visszaadja az str karakterlánc első karaktereinek számát, amelyet a LEFT hossz paramétere ad meg, és az str utolsó karaktereinek számát a JOBBRA függvényhez.

DECLARE @str nvarchar(30) = "Szinkronizálás"; -- "sync" visszaadása SELECT LEFT(@str, 4) -- "zation" visszaadása SELECT RIGHT(@str, 5)

LEN LEN(str)

Az argumentumban megadott karakterlánc karaktereinek számát (nem a bájtok számát) adja vissza, beleértve a záró szóközöket.

ALSÓ FELSŐ LOWER(str), UPPER(str)

A LOWER függvény az str1 összes nagybetűjét kisbetűvé alakítja. A kisbetűket és a karakterláncban szereplő egyéb karaktereket ez nem érinti. Az UPPER függvény az str karakterlánc összes kisbetűjét nagybetűvé alakítja.

DECLARE @str nvarchar(30) = "Szinkronizálás"; -- Visszatér: "SYNC" SELECT UPPER(@str) -- "sync" visszatérés SELECT LOWER(@str)

LTRIM, RTRIM LTRIM(str), RTRIM(str)

Az LTRIM függvény eltávolítja a kezdő szóközöket a str stringből, az RTRIM ennek megfelelően eltávolítja a szóközöket a karakterlánc végén.

QUOTENAME QUOTENAME (karakterlánc)

Egy elválasztott Unicode karakterláncot ad vissza, amely a bemeneti karakterláncot érvényes elválasztott azonosítóvá alakítja.

DECLARE @str nvarchar(30) = "Szinkronizálás"; -- A „[Sync]” értéket adja vissza SELECT QUOTENAME(@ str)

PATINDEX PATINDEX(%p%,kif)

A p minta első előfordulásának kezdőpozícióját adja vissza az adott kifejezésben, vagy nullát, ha az adott minta nem található.

4 SELECT PATINDEX("%xro%", "Sync")

CSERE REPLACE(str1, str2, str3)

Az str2 részkarakterlánc minden előfordulását lecseréli az str1 karakterláncban az str3 részkarakterláncra.

A "Desync" értéket adja vissza SELECT REPLACE("Sync", "Sync", "Desync")

MEGISMÉTELNI REPLICATE(str, i)

Megismétli a str i karakterláncot.

"aBaBaBaBaB" SELECT REPLICATE("aB", 5) eredményt ad vissza

FORDÍTOTT FORDÍTOTT (str)

A str karakterláncot fordított sorrendben nyomtatja ki.

A "yaicazinorchnis" értéket adja vissza SELECT REVERSE("Sync")

SOUNDEX SOUNDEX (str)

Egy négy karakterből álló soundex kódot ad vissza, amely két karakterlánc hasonlóságának meghatározására szolgál. Csak ASCII karakterekkel működik.

TÉR TÉR (hossz)

A hossz paraméter által megadott hosszúságú szóközök karakterláncát adja vissza. Hasonló a REPLICATE(" ", hossza).

STR STR (f[, len[, d]])

Az adott f lebegőpontos kifejezést karakterláncsá alakítja, ahol len a karakterlánc hossza, beleértve a tizedesvesszőt, előjelet, számjegyeket és szóközöket (alapértelmezett 10), d pedig a visszaadandó tört számjegyek száma.

„3.14” SELECT STR (3.1415, 4, 2) értéket ad vissza

DOLOG STUFF (str1, a, hossza, str2)

Eltávolítja a hosszúságú karaktereket az str1 karakterláncból, az a pozíciótól kezdve, és beszúrja az str2 karakterláncot a helyükre.

Megjegyzés egy könyvben SELECT STUFF("Jegyzetfüzet", 5, 0," in a ") -- Kézikönyv SELECT STUFF("Jegyzetfüzet", 1, 4, "Kézi")

SUBSTRING SUBSTRING (str1, a, hosszúság)

Az a pozíciótól kezdődő str karakterláncból kivon egy hosszúságú részkarakterláncot.

Rendszerfunkciók

A Transact-SQL rendszerfunkciók rengeteg információt szolgáltatnak az adatbázis-objektumokról. A legtöbb rendszerfunkció belső numerikus azonosítót (ID) használ, amely minden adatbázis-objektumhoz hozzá van rendelve annak létrehozásakor. Ezzel az azonosítóval a rendszer egyedileg tud azonosítani minden adatbázis-objektumot.

Az alábbi táblázat felsorol néhány legfontosabb rendszerfunkciót egy rövid leírással együtt:

Transact-SQL rendszerfunkciók
Funkció Szintaxis Leírás Használati példa
ÖNTVÉNY CAST (AS típusú [(hossz)]

A w kifejezést a megadott adattípusra konvertálja (ha lehetséges). A w argumentum bármilyen érvényes kifejezés lehet.

3 SELECT CAST (3,1258 AS INT) eredményt ad vissza

EGYESÜL EGYESÜLÉS (a1, a2)

Az első kifejezésértéket adja vissza az a1, a2, ... kifejezések listájában, amely nem null.

COL_LENGTH COL_LENGTH (obj, col)

Az adatbázis-objektum (tábla vagy nézet) obj oszlop oszlopának hosszát adja vissza.

4 SELECT COL_LENGTH értéket ad vissza ("Alkalmazott", "Id")

ALAKÍTANI KONVERT (típus[(hossz)], w)

Egyenértékű a CAST függvénnyel, de az argumentumok eltérőek. Bármilyen adattípussal használható.

CURRENT_TIMESTAMP CURRENT_TIMESTAMP

Az aktuális dátumot és időt adja vissza.

JELENLEGI FELHASZNÁLÓ JELENLEGI FELHASZNÁLÓ

Az aktuális felhasználó nevét adja vissza.

ADATOK DATAENGTH (z)

A z kifejezés által elfoglalt bájtok számát adja eredményül.

Ez a lekérdezés visszaadja az egyes mezők hosszát SELECT DATALENGTH(FirstName) FROM Employee

GETANSINULL GETANSINULL("dbname")

1-et ad vissza, ha a null értékek használata a dbname adatbázisban megfelel az ANSI SQL szabványnak.

NULLA ISNULL (kifejezés, érték)

Az expr értékét adja vissza, ha nem NULL; ellenkező esetben értéket ad vissza.

ISNUMERIC ISNUMERIC (kif)

Meghatározza, hogy az expr érvényes numerikus típussal rendelkezik-e.

NEWID ÚJID()

Létrehoz egy egyedi azonosítót, amely egy 16 bájtos bináris karakterláncból áll, amely az UNIQUEIDENTIFIER adattípus értékeinek tárolására szolgál.

NEWSEQUENTIALID NEWSEQUENTIALID()

Létrehoz egy GUID-t, amely nagyobb, mint bármely más GUID, amelyet korábban ez a funkció generált a megadott számítógépen. (Ez a függvény csak alapértelmezett értékeként használható egy oszlophoz.)

NULLIF NULLIF(kifejezés1;kif2)

Null értékkel tér vissza, ha az expr1 és a expr2 értéke megegyezik.

A lekérdezés NULL értéket ad vissza egy olyan projekthez, amelynek -- száma = "p1" SELECT NULLIF(szám, "p1") FROM projekt

SZERVERTULAJDON SZERVERTULAJDON (tulajdonnév)

Információkat ad vissza az adatbázis-kiszolgáló tulajdonságairól.

SYSTEM_USER SYSTEM_USER

Az aktuális felhasználó azonosítóját adja vissza.

FELHASZNÁLÓI AZONOSÍTÓ FELHASZNÁLÓI AZONOSÍTÓ()

A felhasználói azonosító felhasználónevet adja vissza. Ha nincs megadva felhasználó, akkor az aktuális felhasználói azonosító kerül visszaadásra.

FELHASZNÁLÓNÉV FELHASZNÁLÓNÉV()

A megadott azonosítójú felhasználónevet adja vissza. Ha az azonosító nincs megadva, akkor az aktuális felhasználó nevét adja vissza.

Metaadat-funkciók

Alapvetően a metaadatfüggvények egy megadott adatbázisról és adatbázis-objektumokról adnak vissza információkat. Az alábbi táblázat felsorol néhány legfontosabb metaadat-funkciót egy rövid leírással együtt:

Transact-SQL metaadat függvények
Funkció Szintaxis Leírás Használati példa
COL_NAME COL_NAME (tab_id, col_id)

Visszaadja az oszlop nevét a tab_id azonosítójú tábla megadott col_id-jével.

A "LastName" oszlop nevét adja vissza SELECT COL_NAME (OBJECT_ID("Employee"), 3)

OSZLOP TULAJDONSÁGA OSZLOPTULAJDONSÁG (azonosító, oszlop, tulajdonság)

A megadott oszlop adatait adja vissza.

A PRECISION tulajdonság értékét adja vissza az Employee tábla Id oszlopához SELECT COLUMNPROPERTY (OBJECT_ID("Employee"), "Id", "precision")

ADATBÁZISTULAJDONSÁG ADATBÁZISTULAJDON (adatbázis, tulajdonság)

Az adatbázis-adatbázis tulajdonság tulajdonságának értékét adja vissza.

Az IsNullConcat tulajdonság értékét adja vissza -- a SampleDb adatbázishoz SELECT DATABASEPROPERTY ("SampleDb", "IsNullConcat")

DB_ID db_id()

A db_name adatbázis-azonosítót adja vissza. Ha nincs megadva adatbázisnév, akkor az aktuális adatbázis azonosítója kerül visszaadásra.

DB_NAME DB_NAME()

A db_id azonosítóval rendelkező adatbázis nevét adja vissza. Ha az azonosító nincs megadva, akkor az aktuális adatbázis nevét adja vissza.

INDEX_COL INDEX_COL (tábla, i, nem)

A táblatábla indexelt oszlopnevét adja vissza. Az oszlopot az i indexazonosító és az oszlop pozíciószáma jelzi az indexben.

INDEXPROPERTY INDEXPROPERTY (obj_id, index_name, property)

A megadott táblaazonosító, index vagy statisztikai név és tulajdonságnév elnevezett index- vagy statisztikai tulajdonságait adja vissza.

OBJECT_NAME OBJECT_NAME (obj_id)

Az adatbázis objektum nevét adja vissza obj_id értékkel.

SELECT OBJECT_NAME(245575913);

OBJECT_ID OBJECT_ID (obj_name)

Az adatbázis obj_name objektumazonosítóját adja vissza.

Visszatér: 245575913 – Alkalmazotti táblázat azonosítója SELECT OBJECT_ID("Alkalmazott")

TÁRGY TULAJDONSÁG OBJECTPROPERTY (obj_id, property)

Információkat ad vissza az objektumokról az aktuális adatbázisból.

Az SQL nyelv főbb funkciói az alábbiakban találhatók.

Adatdefiníció. Ez az SQL függvény a támogatott adatszerkezet és a relációs kapcsolatok (táblázatok) szervezésének leírása. Megvalósítására az adatbázis létrehozására, a táblák létrehozására és az adatok elérésére szolgáló operátorok szolgálnak.

Adatbázis létrehozása. A CREATE DATABASE utasítás új adatbázis létrehozására szolgál. Az utasításstruktúra adja meg a létrehozandó adatbázis nevét.

Táblázatok készítése. Az alaptábla a CREATE TABLE utasítással jön létre. Ez az operátor adja meg a mezőneveket, a hozzájuk tartozó adattípusokat, a hosszt (egyes adattípusoknál). Az SQL a következő adattípusokat használja:

Az INTEGER egy egész szám;

CHAR - karakterérték;

VARCHAR - karakterérték, csak a nem üres karakterek kerülnek tárolásra;

DECIMAL - decimális szám;

FLOAT - lebegőpontos szám;

DOUBLE PRECISION - dupla pontosságú lebegőpontos;

DATETIME - dátum és idő;

A BOOL logikai érték.

A táblázat létrehozási utasítás korlátozásokat határoz meg az oszlopértékekre és a táblázatra vonatkozóan. A lehetséges korlátozásokat a táblázat tartalmazza. 4.8

4.8. táblázat: Meghatározott adatokra vonatkozó korlátozások

Egy relációs adatmodellhez elengedhetetlen egy idegen kulcs (FOREIGNKEY) megadása. Az idegen kulcsok deklarálásakor megfelelő megszorításokat kell beállítani az oszlopra, például NOT NULL.

Az SQL utasításban a CHECK olyan szemantikai megszorításokat jelöl, amelyek biztosítják az adatok integritását, például korlátozza az érvényes értékek készletét egy adott oszlopra vonatkozóan.

A Create table utasítás nem használható többször ugyanabban a táblában. Ha létrehozása után pontatlanságokat találtak a definíciójában, akkor az ALTER TABLE utasítással módosíthatók. Ez az utasítás egy meglévő tábla szerkezetének megváltoztatására szolgál: törölhet vagy hozzáadhat egy mezőt egy meglévő táblához.

Adatmanipuláció. Az SQL lehetővé teszi a felhasználók vagy alkalmazások számára, hogy új adatok beszúrásával, meglévő adatok törlésével vagy módosításával módosítsák az adatbázis tartalmát.

Új adatok beszúrása egy eljárás sorok adatbázishoz való hozzáadására, és az INSERT utasítás használatával hajtják végre.

Adatmódosítás magában foglalja a táblázat egy vagy több oszlopában lévő értékek módosítását, és az UPDATE utasítással hajtják végre. Példa:

BEÁLLÍTOTT összeg=összeg+1000,00

WHERE összeg>0

Sorok eltávolítása táblázatból a DELETE utasítással történik. Az operátor szintaxisa a következő:

táblázatból

A WHERE záradék nem kötelező, azonban ha nincs benne, akkor a táblázatban szereplő összes rekord törlődik. Hasznos, ha a SELECT utasítást ugyanazzal a szintaxissal használja, mint a DELETE utasítást, hogy előzetesen ellenőrizze, mely rekordok törlődnek.

Az adatok integritásának biztosítása. Az SQL nyelv lehetővé teszi meglehetősen összetett integritási megszorítások meghatározását, amelyek kielégítését minden adatbázis-módosítás esetén ellenőrizni kell. A tranzakciók eredményének ellenőrzését, a hibák kezelését és a párhuzamos munka koordinálását több alkalmazás vagy felhasználó adatbázisával a COMMIT utasítások (az aktuális tranzakció sikeres befejezését és egy új kezdetét rögzíti) és a ROLLBACK (az indítás szükségessége) biztosítják. visszaállítás – az adatbázis állapotának automatikus visszaállítása a tranzakció elején)

Adatmintavétel- az adatbázis egyik legfontosabb funkciója, amely megfelel a SELECT utasításnak. Az előző részben tárgyaltunk egy példát az operátor használatára.

Az SQL-ben beágyazott lekérdezési sorozatokat (allekérdezéseket) hozhat létre. Vannak bizonyos típusú lekérdezések, amelyeket a legjobban az allekérdezések segítségével lehet megvalósítani. Ezek a lekérdezések úgynevezett létezés-ellenőrzéseket tartalmaznak. Tegyük fel, hogy adatokat szeretne kapni azokról a tanulókról, akiknek nincs "hetes" pontszámuk. Ha üres halmazt adnak vissza, akkor ez csak egy dolgot jelent - minden tanulónak legalább egy ilyen értékelése van.

Táblázatok összekapcsolása. Az SQL utasítások lehetővé teszik az adatok lekérését egynél több táblából. Ennek egyik módja a táblázatok egyetlen közös mezőben való összekapcsolása.

A SELECT utasításnak tartalmaznia kell egy bizonyos oszlop (mező) értékeinek egybeesésére vonatkozó korlátozást. Ekkor csak azok a sorok kerülnek lekérésre a kapcsolódó táblákból, amelyekben a megadott oszlop értékei egyeznek. Az oszlop neve csak a táblázat nevével együtt kerül feltüntetésre; ellenkező esetben az operátor kétértelmű lesz.

Más típusú táblahivatkozást is használhat: az INTER JOIN operátor (belső összekapcsolás) biztosítja a jelenlétet az eredményül kapott rekordhalmazban, a kapcsolódó mezőkben az értékeket egyeztetve. A külső összekapcsolások (OUTER JOIN) lehetővé teszik, hogy a lekérdezés eredményébe belefoglalja az összes sort egy táblából és a megfelelő sorokat egy másikból

Hozzáférés-szabályozás. Az SQL biztosítja az adatbázis-feldolgozás szinkronizálását különböző alkalmazási programok által, az adatok védelmét az illetéktelen hozzáférés ellen.

A többfelhasználós környezetben az adatokhoz való hozzáférést a GRANT és REVOKE utasítások szabályozzák. Minden utasításban meg kell adni a felhasználót, az objektumot (tábla, nézet), amelyre vonatkozóan a jogosultságok be vannak állítva, és magukat a jogosultságokat. Például a GRANT utasítás lehetővé teszi az X felhasználó számára, hogy adatokat kérjen le a PRODUCT táblából:

A TERMÉK KIVÁLASZTÁSÁNAK MEGHATÁROZÁSA AZ X-NEK

A REVOKE utasítás visszavon minden korábban megadott engedélyt.

SQL beágyazása az alkalmazási programokba. A valódi alkalmazásokat általában más nyelveken írják, amelyek SQL kódot generálnak és ASCII-szövegként továbbítják a DBMS-nek.

Az IBM Standard for SQL termékek előírja a beágyazott SQL használatát. Alkalmazási program írásakor annak szövege a fő programozási nyelv (például C, Pascal, Cobol, Fortran, Assembler) és például speciális előtaggal ellátott SQL parancsok keveréke. ExecSQL. Az SQL-utasítások szerkezete kibővült, hogy az SQL-konstrukciókban a gazdagép nyelvi változóihoz is hozzáférjen.

Az SQL processzor a fő programozási nyelv fordítójának követelményei szerint módosítja a program formáját. A fordító feladata, hogy egy programot lefordítson (lefordítson) egy forrásprogramozási nyelvről egy gépi nyelvhez közeli nyelvre. Összeállítás után az alkalmazott program (alkalmazás) önálló modul.

SQL dialektusok

A modern relációs DBMS-ben az SQL nyelv dialektusait használják az adatok leírására és kezelésére. Az SQL nyelv egy részhalmazát, amely lehetővé teszi egy adatbázis létrehozását és leírását, DDL-nek (Data Definition Language) nevezik.

Az SQL eredeti neve SEQUEL (Structured English Query Language), majd SEQUEL/2, majd csak SQL. Ma az SQL a relációs adatbázis-kezelő rendszerek de facto szabványa.

Az első nyelvi szabvány 1989-ben jelent meg - SQL-89, és szinte minden kereskedelmi relációs adatbázis-kezelő támogatta. Általános jellegű volt, és tág értelmezést tett lehetővé. Az SQL-89 előnyeinek az adatkiválasztó és -manipulációs operátorok szintaxisának és szemantikájának szabványosítása, valamint az adatbázis integritását korlátozó eszközök rögzítése tekinthető. Hiányzott azonban egy olyan fontos rész, mint az adatbázisséma-manipuláció. Az SQL-89 szabvány hiányossága vezetett 1992-ben a megjelenéséhez az SQL nyelv következő verziója.

Az SQL2 (vagy SQL-92) szinte mindent lefed, amire szüksége van: adatbázisséma-manipuláció, tranzakció- és munkamenet-kezelés, kliens-szerver architektúrák vagy alkalmazásfejlesztő eszközök.

A nyelv fejlesztésének következő lépése az SQL 3 variáns, ezt a nyelvváltozatot egy trigger mechanizmus, egy tetszőleges adattípus meghatározása és egy objektumkiterjesztés egészíti ki.

Jelenleg három nyelvi szint létezik: kezdő, középhaladó és befejezett. Sok adatbázis-szállító saját SQL-megvalósítást használ, amely legalább a vonatkozó ANSI-szabvány kezdeti szintjén alapul, és egy adott DBMS-re jellemző kiterjesztéseket tartalmaz. táblázatban. A 4.9 példákat mutat be SQL dialektusokra.

4.9. táblázat: SQL dialektusok

DBMS Lekérdezés nyelve
DBMS rendszer R SQL
DB2 SQL
Hozzáférés SQL
SUBASE SQL bárhol watcom-sql
SUBASE SQL Server Transact_SQL
MySQL SQL
Jóslat PL/SQL

Az objektumorientált adatbázisok az OQL (Object Query Language) objektumlekérdezési nyelvet használják. Az OQL nyelv az SQL2 SELECT parancson alapult, és lehetőséget adott a lekérdezés egy objektumra vagy objektumgyűjteményre történő irányítására, valamint a metódusok egyetlen lekérdezésen belüli meghívására.

A sok használt SQL dialektus kompatibilitása határozza meg a DBMS kompatibilitását. Így a SUBASE SQL Anywhere DBMS a lehető legjobban kompatibilis az ebbe az osztályba tartozó adatbázis-kezelő rendszerrel a SIBASE SQL Server DBMS-sel. Ennek a kompatibilitásnak az egyik oldala, hogy a Sybase SQL Anywhere támogatja az SQL nyelv olyan dialektusát, mint pl. Transzaktálj SQL-t. Ezt a dialektust a Sybase SQL Server használja, és a SUBASE SQL Anywhere-ben is használható az SQL nyelv saját dialektusával együtt - watcom-sql.

tesztkérdések

1. Hogyan osztályozható egy DBMS?

2. Milyen adatbázismodellek léteznek?

3. Melyek az infológiai modellek fő elemei?

4. Milyen típusú kapcsolatok léteznek az entitások között?

5. Mik azok az ER diagramok és mire használják őket?

6. Mit tesz lehetővé a táblázat normalizálási eljárása?

7. Melyek a DBMS nyelvi és szoftveres eszközei?

8. Milyen típusú DBMS az MS Access?

9. Melyek az MS Access DBMS fő objektumai?

10. Mire használják az alapvető SQL utasításokat?

Az SQL nyelvi szabványt 1992-ben fogadták el, és ma is használatos. Ő volt az, aki sokak számára a szabvány lett.Természetesen egyes gyártók a saját szabványértelmezésüket használják. De minden rendszerben továbbra is vannak fő összetevők - SQL-utasítások.

Bevezetés

Az SQL utasítások segítségével az értékek, táblák kezelése és fogadása további elemzés és megjelenítés céljából történik. Ezek olyan kulcsszavak, amelyek alapján a rendszer megérti, hogy mit kezdjen az adatokkal.

Az SQL utasításoknak több kategóriája van meghatározva:

  • adatbázis objektumok meghatározása;
  • értékmanipuláció;
  • védelem és irányítás;
  • munkamenet paraméterei;
  • alapinformációk;
  • statikus SQL;
  • dinamikus SQL.

SQL utasítások az adatok manipulálásához

BESZÁLLÍTÁS. Sorokat szúr be egy meglévő táblázatba. Egy értékre és több értékre is használható, valamilyen feltétel határozza meg. Például:

táblázat neve (1. oszlopnév, 2. oszlopnév)

ÉRTÉKEK (érték 1, érték 2).

Az INSERT utasítás több értékre történő használatához a szintaxis a következő:

1. táblázat neve (1. oszlopnév, 2. oszlopnév)

1. oszlopnév, 2. oszlopnév KIVÁLASZTÁSA

FROM táblanév 2

WHERE tábla neve 2.oszlop neve 1>2

Ez a lekérdezés kiválasztja a 2. táblázat összes adatát, amely nagyobb, mint 2 az 1. oszlopban, és beszúrja az elsőbe.

FRISSÍTÉS. Ahogy a név is sugallja, ez az SQL lekérdezési utasítás frissíti egy meglévő tábla adatait egy bizonyos attribútum szerint.

1. táblanév FRISSÍTÉSE

SET oszlopnév 2 = "Basil"

WHERE tábla neve 1.oszlop neve 1 = 1

Ez a konstrukció kitölti Vaszilij értékkel mindazokat a sorokat, amelyekben az első oszlopban az 1-es számmal találkozik.

Adatok a táblázatból. Megadhat bármilyen feltételt, vagy eltávolíthat minden sort.

TÖRLÉS A tábla nevéből

WHERE tábla neve.oszlopnév 1 = 1

A fenti lekérdezés eltávolítja az adatbázisból az összes olyan adatot, amelynek az első oszlopban egy értéke van. És a következőképpen törölheti a teljes táblázatot:

SELECT utasítás

A SELECT fő célja az adatok bizonyos feltételek szerinti kiválasztása. Munkájának eredménye mindig egy új táblázat a kiválasztott adatokkal. Az MS operátor számos különböző lekérdezéshez használható. Ezért ezzel együtt más kapcsolódó kulcsszavakat is figyelembe vehet.

Egy adott táblázat összes adatának kijelöléséhez használja a "*" jelet.

FROM táblanév 1

A lekérdezés eredménye az 1. táblázat pontos másolata lesz.

És itt van a WHERE feltétel szerinti kijelölés, amely az 1. táblázatból megkapja az 1. oszlop 2-nél nagyobb értékeit.

FROM táblanév 1

WHERE tábla neve 1.oszlop neve 1 > 2

Azt is megadhatja a kijelölésben, hogy csak bizonyos oszlopokra van szükség.

1. táblanév KIVÁLASZTÁSA.1. oszlopnév

FROM táblanév 1

Ennek a lekérdezésnek az eredménye az összes olyan sor lesz, amely az 1. oszlopból származó értékeket tartalmazza. Az MS SQL utasítások segítségével saját táblázatot hozhat létre bizonyos értékek cseréjével, kiszámításával és helyettesítésével útközben.

táblázat neve 1.oszlop neve 1

táblázat neve 1.oszlop neve 2

táblázat neve 1.oszlop neve 3

táblázat neve 1.oszlop neve 2 * tábla neve 1.oszlop neve 3 AS SUMMA

FROM táblanév 1

Ez a látszólag összetett lekérdezés az 1. táblázat összes értékét lekéri, majd új EQ és SUMMA oszlopokat hoz létre. Az elsőbe a „+” jelet írja be, a másodikba pedig a 2. és 3. oszlop adatainak szorzatát. Az eredményt táblázat formájában is bemutathatjuk, hogy megértsük, hogyan működik:

A SELECT utasítás használatakor azonnal rendezhetjük az adatokat valamilyen attribútum szerint. Erre az ORDER BY szót használjuk.

táblázat neve 1.oszlop neve 1

táblázat neve 1.oszlop neve 2

táblázat neve 1.oszlop neve 3

FROM táblanév 1

ORDER BY oszlopnév 2

A kapott táblázat így fog kinézni:

Vagyis minden sor olyan sorrendben lett beállítva, hogy a 2. oszlopban lévő értékek növekvő sorrendben legyenek.

Az adatok több táblából is lekérhetők. Az egyértelműség kedvéért először el kell képzelnie, hogy kettő van belőlük az adatbázisban, valami ilyesmi:

"Alkalmazottak" táblázat

"Bérezés" táblázat

Most valahogy össze kell kapcsolnia ezt a két táblát, hogy közös értékeket kapjon. Alapvető SQL utasítások használatával ezt a következőképpen teheti meg:

Személyzet.Szám

Munkavállaló neve

Fizetés, arány

Fizetés. Felhalmozott

Alkalmazottaktól, Fizetés

WHERE Alkalmazottak.Szám = Fizetés.Szám

Itt van egy válogatás két különböző értéktáblázatból, amelyeket számok egyesítenek. Az eredmény a következő adatkészlet lesz:

Egy kicsit többet a SELECT-ről. Összesített függvények használata

Az egyik fő operátor elvégezhet némi számítást a lehíváson. Ehhez bizonyos függvényeket és képleteket használ.

Például az „Alkalmazottak” táblából a rekordok számának lekéréséhez a lekérdezést kell használnia:

SZÁM VÁLASZTÁSA (*) N-ként

Az alkalmazottaktól

Az eredmény egy táblázat egy értékkel és egy oszloppal.

Használhatja ezt a lekérdezést, és megnézheti, mi történik:

SZUM(Bér. Felhalmozott) SZUMMAKÉNT

MAX(Bér.Felhalmozott) AS MAX

MIN(Bér. Felhalmozott) AS MIN

AVG(Felhalmozott fizetés) AS SRED

A fizetéstől

A döntő asztal így fog kinézni:

Ily módon kiválaszthatja a kívánt értékeket az adatbázisból a különféle függvények menet közbeni kiszámításával.

Unió, metszéspont és különbségek

Több lekérdezés kombinálása SQL-ben

SELECT Employees.Name

Az alkalmazottaktól

WHERE Alkalmazottak.Szám = 1

SELECT Employees.Name

Alkalmazottaktól, Fizetés

HOL Fizetés.Szám = 1

Nem szabad megfeledkezni arról, hogy egy ilyen összekapcsolással az asztaloknak kompatibilisnek kell lenniük. Azaz, hogy ugyanannyi oszlop legyen.

SELECT utasítás szintaxisa és feldolgozási sorrendje

Először is, a SELECT meghatározza azt a területet, ahonnan adatot vesz. Erre a FROM kulcsszót használjuk. Ha nincs megadva, hogy pontosan mit válasszunk.

Ekkor lehet, hogy van egy SQL WHERE záradék. Segítségével a SELECT a tábla összes sorát végigfutja, és ellenőrzi, hogy az adatok megfelelnek-e a feltételnek.

Ha van egy GROUP BY a lekérdezésben, akkor az értékek a megadott paraméterek szerint vannak csoportosítva.

Adat-összehasonlító operátorok

Többféle is létezik belőlük. Az SQL-ben az összehasonlító operátorok különböző típusú értékeket tesztelhetnek.

    "=". Amint azt sejtheti, két kifejezés egyenlőségét jelöli. Például a fenti példákban már használták - WHERE Fizetés.Szám = 1.

    ">". Több jel. Ha a kifejezés bal oldalának értéke nagyobb, akkor a rendszer a logikai IGAZ értéket adja vissza, és a feltétel teljesül.

    «<». Знак меньше. Обратный предыдущему оператор.

    jelek"<=» и «>=". Abban különbözik az egyszerű több és kevesebb operátortól, hogy ha az operandusok egyenlőek, akkor a feltétel is igaz lesz.

TETSZIK

Ez a kulcsszó "hasonlónak" fordítható. A LIKE operátort az SQL-ben hozzávetőleg ugyanígy használják – sablon szerint hajtja végre a lekérdezést. Vagyis lehetővé teszi, hogy reguláris kifejezésekkel bővítse az adatbázisból származó adatok választékát.

Például a következő feladatot tűzték ki: a már ismert "Alkalmazottak" bázisból minden olyan embert lekérni, akinek a neve "én"-re végződik. Ekkor a lekérdezés így írható:

Az alkalmazottaktól

WHERE Név LIKE `%i`

A százalékjel ebben az esetben maszkot jelent, vagyis bármely karaktert és azok számát. És az "i" betű alapján az SQL meghatározza, hogy az utolsó karakternek pontosan ez legyen.

ÜGY

Ez az SQL Server utasítás a többszörös kijelölés megvalósítása. Sok programozási nyelvben hasonlít a switch konstrukcióra. Az SQL CASE utasítása több feltétel esetén hajt végre műveletet.

Például ki kell választania a maximális és minimális értéket a Fizetés táblázatból.

Ekkor a lekérdezés így írható:

A fizetéstől

WHERE CASE WHEN SELECT MAX(Accrued) THEN Maximum

AMIKOR KIVÁLASZTÁSA MIN(Felhalmozott) MAJD Minimum

Ebben az összefüggésben a rendszer a maximális és minimális értéket keresi a Felhalmozott oszlopban. Ezután az END használatával létrejön egy „összesen” mező, amelybe a „Maximum” vagy a „Minimum” kerül beírásra, a feltétel eredményétől függően.

Egyébként az SQL-nek van egy kompaktabb formája is a CASE - COALESCE.

Adatdefiníciós operátorok

Ez a nézet lehetővé teszi a táblák különféle módosításait - indexek létrehozását, törlését, módosítását és kezelését.

Az első, amit érdemes megfontolni, a CREATE TABLE. Nem tesz mást, mint létrehoz egy táblázatot. Ha csak a CREATE TABLE lekérdezést írja be, semmi sem fog történni, mivel még meg kell adnia néhány paramétert.

Például a már ismerős Alkalmazottak tábla létrehozásához a következő parancsokat kell használnia:

TÁBLÁZAT LÉTREHOZÁSA Alkalmazottak

(Számszám(10) NEM NULL

Név varchar(50) NOT NULL

Varchar vezetéknév (50) NEM NULL)

Ebben a lekérdezésben zárójelben azonnal meghatározásra kerül a mezők neve és típusa, valamint az, hogy egyenlő lehet-e NULL-lal.

DROP TABLE

Egy egyszerű feladatot hajt végre, a megadott táblázat eldobásával. Egy további IF EXISTS paraméterrel rendelkezik. Elnyeli a hibát a törléskor, ha a keresett tábla nem létezik. Használati példa:

Drop TABLE Alkalmazottak, HA LÉTEZIK.

INDEX LÉTREHOZÁSA

Az SQL rendelkezik egy indexrendszerrel, amely lehetővé teszi az adatok elérésének felgyorsítását. Általában ez egy hivatkozás, amely egy adott oszlopra mutat. Indexet létrehozhat egy egyszerű lekérdezéssel:

CREATE INDEX index_name

ON tábla_neve(oszlop_neve)

Ezt az operátort T-SQL, Oracle, PL SQL és sok más értelmezési technológiában használják.

ALTER TABLE

Nagyon funkcionális kezelő számos lehetőséggel. Általában megváltoztatja a táblázatok szerkezetét, meghatározását és elhelyezését. Az operátort az Oracle SQL-ben, a Postgres-ben és sok másban használják.

    HOZZÁAD. Oszlop hozzáadása a táblázathoz. Szintaxisa: ALTER TABLE táblanév ADD oszlopnév tárolt_adattípus. Rendelkezhet egy IF NOT EXISTS opcióval a hiba elnyomására, ha a létrehozandó oszlop már létezik;

    CSEPP. Töröl egy oszlopot. Van egy IF EXISTS kulcs is, amely nélkül hibaüzenetet generál, miszerint a szükséges oszlop hiányzik;

    VÁLTOZÁS. A mezőnév átnevezésére szolgál a megadott névre. Használati példa: ALTER TABLE táblázat_neve CHANGE régi_név új_név;

    MÓDOSÍT. Ez a parancs segít megváltoztatni egy bizonyos oszlop típusát és további attribútumait. És a következőképpen használják: ALTER TABLE táblanév MODIFY oszlopnév adattípus attribútumok;

NÉZET LÉTREHOZÁSA

Az SQL-ben létezik olyan, hogy nézet. Röviden, ez egyfajta virtuális tábla adatokkal. Az SQL SELECT utasítással végzett kiválasztás eredményeként jön létre. A nézetek korlátozhatják az adatbázishoz való hozzáférést, elrejthetik azokat, helyettesíthetik a valódi oszlopneveket.

A létrehozási folyamat egy egyszerű kéréssel történik:

CREATE VIEW nézet neve AS SELECT FROM * tábla neve

A mintavétel történhet a teljes adatbázis egészeként és bizonyos feltételek szerint.

Egy kicsit a funkciókról

Az SQL-lekérdezések gyakran használnak különféle beépített függvényeket, amelyek lehetővé teszik az adatokkal való interakciót és azok menet közbeni átalakítását. Érdemes ezeket figyelembe venni, hiszen egy strukturált nyelv szerves részét képezik.

    SZÁMOL. Megszámolja egy adott tábla rekordjait vagy sorait. Paraméterként megadhatjuk az oszlop nevét, akkor onnan veszik át az adatokat. SZÁM KIVÁLASZTÁSA * FROM alkalmazottaktól;

    A.V.G. csak a numerikus adatokat tartalmazó oszlopokra vonatkozik. Ennek eredménye az összes érték számtani középértékének meghatározása;

    MIN és MAX. Ezeket a funkciókat már használtuk ebben a cikkben. Meghatározzák a maximális és minimális értékeket a megadott oszlopból;

    ÖSSZEG. Egyszerű – a függvény kiszámítja az oszlopértékek összegét. Kizárólag a numerikus adattípusokhoz használatos. Ha hozzáadja a DISTINCT paramétert a lekérdezéshez, csak az egyedi értékek összegződnek;

    KEREK. A tizedes törtszámok kerekítésének függvénye. A szintaxis az oszlop nevét és a tizedesjegyek számát használja;

    len. Egy egyszerű függvény, amely kiszámítja egy oszlop értékeinek hosszát. Az eredmény egy új táblázat lesz, amely jelzi a karakterek számát;

    MOST. Ez a kulcsszó az aktuális dátum és idő kiszámítására szolgál.

További operátorok

Az SQL-utasítás példái közül sok olyan kulcsszavakat tartalmaz, amelyek kis feladatokat hajtanak végre, de mégis nagyban leegyszerűsítik a kijelöléseket vagy az adatbázis-műveleteket.

    MINT. Akkor használatos, ha az eredményt úgy kell megjeleníteni, hogy a megadott nevet hozzárendeli a kapott táblához.

    KÖZÖTT. Nagyon praktikus kiválasztási eszköz. Meghatározza az értékek tartományát, ahonnan az adatok lekérhetők. A bemenet egy paramétert fogad el, és milyen számig használja a tartományt;.

    NEM. Az operátor a kifejezés ellenkezőjét adja meg.

    CSONKA. Eltávolítja az adatokat az adatbázis meghatározott régiójából. A hasonló operátoroktól abban különbözik, hogy használata után lehetetlen visszaállítani az adatokat. Érdemes megfontolni, hogy ennek a kulcsszónak a megvalósítása az SQL különböző értelmezéseiben eltérő lehet. Ezért a TRUNCATE használatának kipróbálása előtt jobb, ha elolvassa a súgót.

    HATÁR. Beállítja a megjelenítendő sorok számát. A kezelő sajátossága, hogy mindig a végén található. Ehhez egy kötelező és egy opcionális paraméter szükséges. Az első azt határozza meg, hogy hány sor jelenjen meg a kiválasztott adatokkal. És ha a másodikat használjuk, akkor az operátor úgy működik, mint egy értéktartomány esetén.

    UNIÓ. Nagyon praktikus operátor több lekérdezés kombinálásához. Ebben a cikkben már találkozott erre a példák között. A kényelmesebb használat érdekében több táblázatból is megjelenítheti a kívánt sorokat, ha azokat UNION-nal összekapcsolja. A szintaxis a következő: SELECT oszlopnév FROM táblanév UNION SELECT másik oszlopnév FROM másik táblanév. Az eredmény egy pivot tábla kombinált lekérdezésekkel.

    ELSŐDLEGES KULCS. Lefordítva "elsődleges kulcs". Valójában ezt a terminológiát használják a referenciaanyagokban. Az egyedi sorazonosítót jelenti. Általában a táblázat létrehozásakor használatos az azt tartalmazó mező megadására.

    ALAPÉRTELMEZETT. Az előző operátorhoz hasonlóan ez is a lekérdezés létrehozásának folyamatában használatos. Meghatározza azt az alapértelmezett értéket, amely a létrehozáskor kitöltésre kerül a mezőben.

    NULLA. A kezdők és nem csak a programozók a lekérdezések összeállításakor nagyon gyakran megfeledkeznek a NULL érték megszerzésének lehetőségéről. Emiatt hiba kúszik a kódba, amit a hibakeresés során nehéz nyomon követni. Ezért a táblák létrehozásakor, az értékek kijelölése vagy újraszámítása során meg kell állnia, és el kell gondolkodnia azon, hogy figyelembe veszi-e a NULL előfordulását a lekérdezés ezen szakaszában.

    Memória. Ez a cikk számos olyan funkciót mutat be, amelyek bizonyos feladatokat végrehajthatnak. Az adatbázissal való munkavégzéshez szükséges shell fejlesztésekor „meghaladhatja” az adatbázis-kezelő rendszer egyszerű kifejezéseinek kiszámítását. Bizonyos esetekben ez jelentős teljesítménynövekedést ad.

    Korlátozások. Ha egy több ezer sort tartalmazó adatbázisból csak kettőt kell beszereznie, akkor olyan operátorokat kell használnia, mint a LIMIT vagy a TOP. Nincs szükség adatok kinyerésére a shell fejlesztői nyelv használatával.

    Összetett. Miután több táblából is megkapta az adatokat, sok programozó elkezdi összehozni azokat shell memória segítségével. De miért? Végül is tehet egy kérést, amelyben mindez jelen lesz. Nem kell extra kódot írnia és további memóriát lefoglalnia a rendszerben.

    Válogató. Ha lehetséges a lekérdezésben rendezést alkalmazni, azaz DBMS által, akkor ezt kell használni. Ez jelentősen megtakarítja az erőforrásokat egy program vagy szolgáltatás futtatásakor.

    Sok kérés. Ha sok rekordot kell egymás után beszúrnia, akkor az optimalizálás érdekében érdemes az adatok egy lekérdezésben történő kötegelt beszúrásán gondolkodni. Ez a teljes rendszer egészének teljesítményét is növeli.

    Az adatok átgondolt elhelyezése. Az adatbázis szerkezetének összeállítása előtt át kell gondolni, hogy szükséges-e ekkora számú tábla és mező. Lehet, hogy van mód egyesíteni őket, vagy eldobni néhányat. Nagyon gyakran a programozók túl sok adatot használnak fel, amelyet soha sehol nem fognak felhasználni.

    Típusok. A hely és az erőforrások megtakarítása érdekében érzékenynek kell lennie a felhasznált adattípusokra. Ha lehet memória szempontjából kevésbé "nehéz" típust használni, akkor azt kell használni. Például, ha ismert, hogy egy adott mezőben a numerikus érték nem haladja meg a 255-öt, akkor minek használjunk 4 bájtos INT-t, ha van egy 1 bájtos TINYINT.

Következtetés

Végezetül meg kell jegyezni, hogy az SQL strukturált lekérdezési nyelvet ma már szinte mindenhol használják - webhelyeken, webszolgáltatásokban, PC-programokban, mobileszközökre szánt alkalmazásokban. Ezért az SQL ismerete a fejlesztés minden ágát segíti.

Ugyanakkor az eredeti nyelvi szabvány módosításai néha eltérnek egymástól. Például a PL SQL utasítások szintaxisa eltérő lehet, mint az SQL Serverben. Ezért, mielőtt elkezdené a fejlesztést ezzel a technológiával, olvassa el a kézikönyvet.

A jövőben valószínűleg nem fognak megjelenni olyan analógok, amelyek funkcionalitás és teljesítmény tekintetében felülmúlhatnák az SQL-t, így ez a terület minden programozó számára ígéretes rést jelent.