Ms sql szerver lekérdezések írása. SQL-lekérdezések végrehajtása a Management Studio-ban. Átlag számított mező hozzáadása

Táblázatkifejezések allekérdezéseknek nevezzük, amelyeket ott használunk, ahol egy tábla jelenléte várható. Kétféle táblázatkifejezés létezik:

    származtatott táblázatok;

    általánosított táblázatos kifejezések.

A táblázatkifejezések e két formáját a következő alfejezetek tárgyalják.

Származtatott táblázatok

Származtatott táblázat egy táblakifejezés, amely egy lekérdezés FROM záradékában található. A származtatott táblák olyan esetekben használhatók, amikor az oszlopálnevek használata nem lehetséges, mert az SQL fordító egy másik utasítást dolgoz fel, mielőtt az álnév ismertté válik. Az alábbi példa egy oszlopálnév használatára tett kísérletet mutat be olyan helyzetben, amikor egy másik záradék feldolgozása folyamatban van, mielőtt az alias ismertté válna:

HASZNÁLATA SampleDb; SELECT MONTH(EnterDate) mint belépési_hónap FROM Munkavégzés GROUP BY belépés_hónap;

A lekérdezés futtatása a következő hibaüzenetet produkálja:

207. üzenet, 16. szint, 1. állapot, 5. sor Érvénytelen oszlopnév: „enter_month”. (207. üzenet: 16. szint, 1. állapot, 5. sor Érvénytelen oszlopnév beírás_hónap)

A hiba oka az, hogy a GROUP BY záradék feldolgozása a SELECT utasítás megfelelő listájának feldolgozása előtt megtörténik, és az enter_month oszlop álneve ismeretlen a csoport feldolgozása során.

Ez a probléma megoldható egy származtatott tábla használatával, amely tartalmazza az előző lekérdezést (a GROUP BY záradék nélkül), mivel a FROM záradék a GROUP BY záradék előtt kerül végrehajtásra:

HASZNÁLATA SampleDb; SELECT belépési_hónap FROM (SELECT MONTH(EnterDate) mint belépési_hónap FROM Munkaidő) AS m GROUP BY belépési_hónap;

A lekérdezés eredménye a következő lesz:

Általában egy táblakifejezés bárhol elhelyezhető a SELECT utasításban, ahol a tábla neve megjelenhet. (A táblakifejezés eredménye mindig egy tábla, vagy speciális esetekben egy kifejezés.) Az alábbi példa egy táblakifejezés használatát mutatja be egy SELECT utasítás kijelölő listájában:

Ennek a lekérdezésnek az eredménye:

Általános táblázati kifejezések

Közös táblakifejezés (OTB) egy elnevezett táblakifejezés, amelyet a Transact-SQL nyelv támogat. A gyakori táblakifejezések a következő két típusú lekérdezésben használatosak:

    nem rekurzív;

    rekurzív.

Ezt a két típusú kérelmet a következő szakaszok tárgyalják.

OTB és nem rekurzív lekérdezések

Az OTB nem rekurzív formája a származtatott táblák és nézetek alternatívájaként használható. Általában az OTB-t az határozza meg záradékokkalés egy további lekérdezés, amely a WITH záradékban használt névre hivatkozik. A Transact-SQL-ben a WITH kulcsszó jelentése nem egyértelmű. A félreértések elkerülése érdekében a WITH utasítást megelőző utasítást pontosvesszővel kell zárni.

HASZNÁLATA AdventureWorks2012; SELECT SalesOrderID FROM Sales.SalesOrderHeader WHERE TotalDue > (SELECT AVG(TotalDue) FROM Sales.SalesOrderHeader WHERE YEAR(OrderDate) = "2005") AND Freight > (SELECT AVG(TotalDue) FROM Sales.WorderHeader2. ")/2,5;

A példában szereplő lekérdezés azokat a rendeléseket választja ki, amelyek teljes adója (TotalDue) nagyobb, mint az összes adó átlaga, és amelyek fuvardíja (Freight) meghaladja az átlagos adók 40%-át. Ennek a lekérdezésnek a fő tulajdonsága a hossza, mivel az allekérdezést kétszer kell megírni. Az egyik lehetséges módjai a lekérdezési konstrukció méretének csökkentése egy részlekérdezést tartalmazó nézet létrehozása. Ez a megoldás azonban kissé bonyolult, mert egy nézetet kell létrehozni, majd a lekérdezés végrehajtása után törölni kell. Jobb megközelítés lenne egy OTB létrehozása. Az alábbi példa a nem rekurzív OTB használatát mutatja be, amely lerövidíti a fenti lekérdezésdefiníciót:

HASZNÁLATA AdventureWorks2012; WITH price_calc(year_2005) AS (SELECT AVG(TotalDue) FROM Sales.SalesOrderHeader WHERE YEAR(OrderDate) = "2005") SELECT SalesOrderID FROM Sales.SalesOrderHeader WHERE TotalDue > (SELECT év_ár_2005.év) FROM_ár_2005. ) /2,5;

A WITH záradék szintaxisa a nem rekurzív lekérdezésekben a következő:

A cte_name paraméter az eredményül kapott táblát meghatározó OTB-nevet, a column_list paraméter pedig a táblakifejezés oszlopainak listáját jelöli. (A fenti példában az OTB neve price_calc, és egy oszlopa van, év_2005.) Az inner_query paraméter egy SELECT utasítást jelent, amely a megfelelő táblázatkifejezés eredményhalmazát adja meg. A definiált táblakifejezés ezután használható a külső_lekérdezésben. (A fenti példában a külső lekérdezés az OTB price_calc értéket és annak év_2005 oszlopát használja a duplán beágyazott lekérdezés egyszerűsítésére.)

OTB és rekurzív lekérdezések

Ez a rész fokozott összetettségű anyagokat mutat be. Ezért első olvasásakor ajánlatos kihagyni, és később visszatérni hozzá. Az OTB-k használhatók rekurziók megvalósítására, mivel az OTB-k tartalmazhatnak hivatkozásokat önmagukra. A rekurzív lekérdezések alapvető OTB szintaxisa így néz ki:

A cte_name és oszloplista paraméterek jelentése ugyanaz, mint az OTB-ben a nem rekurzív lekérdezéseknél. A WITH záradék törzse két, az operátor által kombinált lekérdezésből áll UNIÓ MINDEN. Az első lekérdezést csak egyszer hívják meg, és elkezdi felhalmozni a rekurzió eredményét. Az UNION ALL operátor első operandusa nem hivatkozik az OTB-re. Ezt a lekérdezést referencia lekérdezésnek vagy forrásnak nevezik.

A második lekérdezés hivatkozást tartalmaz az OTB-re, és annak rekurzív részét képviseli. Emiatt rekurzív tagnak nevezik. A rekurzív rész első hívásakor az OTB hivatkozás a referencialekérdezés eredményét jelenti. A rekurzív tag az első lekérdezés hívás eredményét használja. Ezt követően a rendszer újra meghívja a rekurzív részt. Egy rekurzív tag hívása leáll, amikor egy korábbi hívás üres eredményhalmazt ad vissza.

Az UNION ALL operátor egyesíti az aktuálisan felhalmozott sorokat, valamint az aktuális hívás által a rekurzív taghoz hozzáadott további sorokat. (Az UNION ALL operátor jelenléte azt jelenti, hogy az ismétlődő sorok nem kerülnek eltávolításra az eredményből.)

Végül az outer_query paraméter határozza meg azt a külső lekérdezést, amelyet az OTB használ a mindkét tag csatlakozására irányuló összes hívás lekéréséhez.

Az OTB rekurzív formájának bemutatásához az alábbi példában látható kóddal definiált és feltöltött Repülőgép táblát használjuk:

HASZNÁLATA SampleDb; TÁBLÁZAT LÉTREHOZÁSA Repülőgép(TartalmazóAssembly VARCHAR(10), ContainedAssembly VARCHAR(10), MennyiségTartalmazott INT, Egységköltség DECIMAL(6,2)); INSERT INTO Repülőgép ÉRTÉKEK ("Airplane", "Fuselage", 1, 10); INSERT INTO Airplane VALUES ("Airplane", "Wings", 1, 11); INSERT INTO Airplane VALUES ("Airplane", "Tail", 1, 12); INSERT INTO Airplane VALUES ("törzs", "szalon", 1, 13); INSERT INTO Airplane VALUES ("Tüzér", "Cockpit", 1, 14); INSERT INTO Repülőgép ÉRTÉKEK ("Tüzér", "Orr",1, 15); INSERT INTO Airplane VALUES ("Cabin", NULL, 1,13); INSERT INTO Airplane VALUES ("Cockpit", NULL, 1, 14); INSERT INTO Airplane VALUES ("Orr", NULL, 1, 15); INSERT INTO Airplane VALUES ("Wings", NULL,2, 11); INSERT INTO Airplane VALUES ("Tail", NULL, 1, 12);

A Repülőgép táblázat négy oszlopból áll. A ContainingAssembly oszlop az összeállítást, a ContainedAssembly oszlop pedig a megfelelő összeállítást alkotó alkatrészeket (egyenként) azonosítja. Az alábbi ábra grafikusan szemlélteti egy lehetséges repülőgéptípust és alkatrészeit:

A Repülőgép táblázat a következő 11 sorból áll:

A következő példa a WITH záradékot használja egy lekérdezés meghatározására, amely kiszámítja az egyes buildek teljes költségét:

HASZNÁLATA SampleDb; Alkatrészlista(összeállítás1, mennyiség, költség) AS (SELECT ContainingAssembly, QuantityContained, UnitCost FROM Repülőgép WHERE ContainedAssembly IS NULL UNION ALL SELECT a.ContainingAssembly, a.QuantityContained, CAST(l.contity) *DECl.mennyiség6 *DECl. ) FROM list_of_parts l, Repülőgép a WHERE l.assembly1 = a.ContainedAssembly) SELECT assembly1 "Alkatrész", mennyiség "Mennyiség", költség "Ár" FROM_of_parts;

A WITH záradék egy list_of_parts nevű OTB listát határoz meg, amely három oszlopból áll: összeállítás1, mennyiség és költség. A példában szereplő első SELECT utasítást csak egyszer hívjuk meg, hogy eltároljuk a rekurziós folyamat első lépésének eredményeit. A példa utolsó sorában található SELECT utasítás a következő eredményt jeleníti meg.

Az SQL vagy Structured Query Language egy nyelv, amelyet a relációs adatbázisrendszerben (RDBMS) lévő adatok kezelésére használnak. Ez a cikk az általánosan használt SQL parancsok, amelyet minden programozónak ismernie kell. Ez az anyag ideális azok számára, akik állásinterjú előtt szeretnék felfrissíteni SQL-ismereteiket. Ehhez nézze meg a cikkben szereplő példákat, és ne feledje, hogy párban tanulmányozta az adatbázisokat.

Vegye figyelembe, hogy egyes adatbázisrendszerek pontosvesszőt igényelnek minden utasítás végén. A pontosvessző az szabványos mutató minden SQL utasítás végén. A példák MySQL-t használnak, ezért pontosvessző szükséges.

Adatbázis létrehozása a példákhoz

Hozzon létre egy adatbázist a csapatok működésének bemutatására. A munkához két fájlt kell letöltenie: DLL.sql és InsertStatements.sql. Ezután nyisson meg egy terminált, és jelentkezzen be a MySQL konzolba a következő paranccsal (a cikk feltételezi, hogy a MySQL már telepítve van a rendszeren):

Mysql -u root -p

Ezután adja meg jelszavát.

Futtassa a következő parancsot. Nevezzük az adatbázist egyetemnek:

ADATBÁZIS LÉTREHOZÁSA egyetem; USE egyetem; FORRÁS ; FORRÁS

Parancsok az adatbázisokkal való munkavégzéshez

1. Az elérhető adatbázisok megtekintése

ADATBÁZISOK MUTATÁSA;

2. Hozzon létre egy új adatbázist

ADATBÁZIS LÉTREHOZÁSA;

3. A használni kívánt adatbázis kiválasztása

HASZNÁLAT ;

4. Importáljon SQL parancsokat .sql fájlból

FORRÁS ;

5. Törölje az adatbázist

DROP ADATBÁZIS ;

Asztalokkal való munka

6. Tekintse meg az adatbázisban elérhető táblákat

ASZTALOK MUTATÁSA;

7. Hozzon létre egy új táblázatot

TÁBLÁZAT LÉTREHOZÁSA ( , , ELSŐDLEGES KULCS ( ), IDEGEN KULCS ( ) IRODALOM ());

Integritási korlátozások a CREATE TABLE használatakor

Előfordulhat, hogy korlátozásokat kell létrehoznia a táblázat egyes oszlopaiban. Táblázat létrehozásakor a következő korlátozásokat állíthatja be:

  • egy táblázatcellának nem lehet NULL értéke;
  • elsődleges kulcs - PRIMARY KEY (oszlopnév1, oszlopnév2, ...) ;
  • idegen kulcs - IDEGEN KULCS (col_namexn, …, col_namexn) HIVATKOZÁSOK táblázat_neve(col_namex1, …, col_namexn) .

Egynél több elsődleges kulcsot is megadhat. Ebben az esetben egy összetett elsődleges kulcsot kap.

Példa

Hozzon létre egy "oktató" táblázatot:

TÁBLÁZAT LÉTREHOZÁSA oktató (ID CHAR(5), név VARCHAR(20) NOT NULL, részlegnév VARCHAR(20), fizetés SZÁMSZÁM(8,2), ELSŐDLEGES KULCS (ID), IDEGEN KULCS (részleg_neve) REFERENCIÁK osztály(részleg_neve));

8. Táblázat információk

A következő paranccsal különféle információkat (értéktípust, kulcsot vagy nem) tekinthet meg a táblázat oszlopairól:

LEÍRÁS ;

9. Adatok hozzáadása a táblázathoz

INSERT INTO (, , , ...) ÉRTÉKEK ( , , , …);

Amikor egy táblázat minden oszlopához adatot ad hozzá, nem kell oszlopneveket megadnia.

INSERT INTO ÉRTÉKEK ( , , , …);

10. Táblázat adatok frissítése

FRISSÍTÉS KÉSZLET = , = , ... AHOL ;

11. Minden adat eltávolítása a táblából

TÖRLÉS FOL ;

12. Táblázat törlése

DROP TABLE ;

Parancsok a lekérdezések létrehozásához

13. KIVÁLASZTÁS

A SELECT egy adott tábla adatainak lekérésére szolgál:

KIVÁLASZTÁS , , … TÓL TŐL ;

A következő parancs képes megjeleníteni a táblázat összes adatát:

VÁLASSZON ;

14. SELECT DISTINCT

A táblázat oszlopai ismétlődő adatokat tartalmazhatnak. A SELECT DISTINCT használatával csak nem ismétlődő adatokat kérhet le.

SELECT DISTINCT , , … TÓL TŐL ;

15. HOL

Használhatja a WHERE kulcsszót a SELECT-ben a feltételek megadásához a lekérdezésben:

KIVÁLASZTÁS , , … TÓL TŐL AHOL ;

A kérelemben a következő feltételek adhatók meg:

  • szövegösszehasonlítás;
  • számértékek összehasonlítása;
  • logikai operátorok ÉS (és), VAGY (vagy) és NOT (negáció).

Példa

Próbálja ki a következő parancsokat. Ügyeljen a WHERE részben megadott feltételekre:

SELECT * FROM tanfolyam WHERE dept_name=’Comp. Sci.”; SELECT * FROM kurzus WHERE kredit>3; SELECT * FROM course WHERE dept_name="Comp. Sci." ÉS kredit>3;

16. GROUP BY

A GROUP BY operátort gyakran használják összesített függvények például COUNT, MAX, MIN, SUM és AVG a kimeneti értékek csoportosításához.

KIVÁLASZTÁS , , … TÓL TŐL CSOPORTOSÍT ;

Példa

Jelentsük meg az egyes karok képzéseinek számát:

SELECT COUNT(kurzusazonosító), részleg_neve FROM kurzus GROUP BY részleg_neve;

17. HAVE

A HAVING kulcsszót hozzáadtuk az SQL-hez, mert a WHERE nem használható összesítő függvényekkel.

KIVÁLASZTÁS , , ... TÓL TŐL CSOPORTOSÍT HAJNÁL

Példa

Mutassuk meg azoknak a karoknak a listáját, amelyek egynél több kurzussal rendelkeznek:

SELECT COUNT(kurzusazonosító), részlegnév FROM kurzus GROUP BY részleg_neve HAVING COUNT(kurzusazonosító)>1;

18. MEGRENDELÉS

Az ORDER BY a lekérdezési eredmények csökkenő vagy növekvő sorrendbe rendezésére szolgál. A ORDER BY növekvő sorrendbe rendeződik, hacsak nincs megadva ASC vagy DESC.

KIVÁLASZTÁS , , … TÓL TŐL RENDEZÉS , , …ASC|DESC;

Példa

Mutassuk meg a kurzusok listáját a kreditek növekvő és csökkenő sorrendjében:

SELECT * FROM kurzusból ORDER BY kreditek; SELECT * FROM tanfolyam ORDER BY kreditek DESC;

19. KÖZÖTT

A BETWEEN az adatértékek kiválasztására szolgál egy adott tartományból. Numerikus és szöveges értékek, valamint dátumok.

KIVÁLASZTÁS , , … TÓL TŐL AHOL KÖZÖTT ÉS ;

Példa

Mutassuk meg azoknak az oktatóknak a listáját, akiknek fizetése meghaladja az 50 000-et, de kevesebb, mint 100 000:

SELECT * FROM oktatótól WHERE fizetés 50000 ÉS 100000 KÖZÖTT;

20. LIKE

A LIKE operátor a WHERE mezőben egy hasonló érték keresési mintájának megadására szolgál.

Két ingyenes operátort használ a LIKE:

  • % (nincs, egy vagy több karakter);
  • _ (egy karakter).
KIVÁLASZTÁS , , … TÓL TŐL AHOL MINT ;

Példa

Mutassuk meg azoknak a kurzusoknak a listáját, amelyeknek a neve tartalmazza a „to”-t, valamint azon kurzusok listáját, amelyek neve „CS-”-vel kezdődik:

SELECT * FROM kurzus WHERE cím LIKE ‘%to%’; SELECT * FROM tanfolyam WHERE kurzusazonosító LIKE "CS-___";

21. IN

Az IN használatával több értéket is megadhat a WHERE záradékhoz:

KIVÁLASZTÁS , , … TÓL TŐL AHOL BAN BEN ( , , …);

Példa

Mutassuk meg a Comp szakok hallgatóinak listáját. Sci., Physics and Elec. angol:

SELECT * FROM diák WHERE tanszéknév IN ('Comp. Sci.', 'Physics', 'Elec. Eng.');

22. CSATLAKOZÁS

A JOIN két vagy több tábla összekapcsolására szolgál közös attribútumok használatával. Az alábbi képen látható különböző módokon SQL-be ​​csatlakozik. Jegyezze meg a különbséget a bal oldali külső csatlakozás és a jobb oldali külső csatlakozás között:

KIVÁLASZTÁS , , … TÓL TŐL CSATLAKOZIK TOVÁBB = ;

1. példa

Megjelenítjük az összes kurzus listáját és a karokkal kapcsolatos releváns információkat:

SELECT * FROM tanfolyam JOIN osztály ON tanfolyam.részleg_neve=részleg.részleg_neve;

2. példa

Megjelenítjük az összes szükséges kurzus listáját és a velük kapcsolatos részleteket:

SELECT prereq.course_id, title, dept_name, credits, prereq_id FROM prereq LEFT OUTTER JOIN course ON prereq.course_id=course.course_id;

3. példa

Megjelenítjük az összes kurzus listáját, függetlenül attól, hogy kötelezőek-e vagy sem:

SELECT kurzus.kurzusazonosító, cím, részleg_neve, kreditek, prereq_id FROM prereq RIGHT OUTTER JOIN kurzus ON prereq.course_id=course.course_id;

23. Megtekintés

A View egy virtuális SQL-tábla, amely egy kifejezés végrehajtása eredményeként jön létre. Sorokat és oszlopokat tartalmaz, és nagyon hasonlít egy normál SQL-táblához. A View mindig az adatbázis legfrissebb információit mutatja.

Teremtés

NÉZET LÉTREHOZÁSA AS SELECT , , … TÓL TŐL AHOL ;

Eltávolítás

DROP NÉZET ;

Példa

Hozzunk létre egy nézetet, amely 3 kredites kurzusokból áll:

24. Aggregált függvények

Ezek a függvények a kérdéses adatokhoz kapcsolódó összesített eredmény elérésére szolgálnak. A következő gyakran használt összesítő függvények:

  • COUNT (oszlopnév) - a sorok számát adja vissza;
  • SUM (oszlopnév) - az ebben az oszlopban lévő értékek összegét adja vissza;
  • AVG (oszlopnév) - egy adott oszlop átlagos értékét adja vissza;
  • MIN (oszlopnév) - egy adott oszlop legkisebb értékét adja vissza;
  • MAX (oszlopnév) – Egy adott oszlop legnagyobb értékét adja vissza.

25. Beágyazott segédlekérdezések

A beágyazott allekérdezések olyan SQL-lekérdezések, amelyek egy másik lekérdezésbe ágyazott SELECT , FROM és WHERE záradékot tartalmaznak.

Példa

Nézzük meg azokat a kurzusokat, amelyeket 2009 őszén és 2010 tavaszán tartottak:

SELECT DISTINCT kurzusazonosító FROM szekció WHERE félév = 'Ősz' AND év= 2009 AND kurzusazonosító IN (SELECT kurzusazonosító FROM szekció WHERE félév = 'tavasz' ÉS év= 2010);

SQL - Strukturált lekérdezési nyelv.
BAN BEN ezt a felülvizsgálatot Megnézzük az SQL lekérdezések leggyakoribb típusait.
Az SQL szabvány meg van határozva ANSI(Amerikai Nemzeti Szabványügyi Intézet).
Az SQL egy kifejezetten relációs adatbázisokra irányuló nyelv.

SQL particionálás:


DDL
(Adatdefiníciós nyelv) - az úgynevezett Schema Description Language az ANSI-ban, olyan parancsokból áll, amelyek objektumokat (táblázatokat, indexeket, nézeteket stb.) hoznak létre az adatbázisban.
DML(Adatkezelési nyelv) egy olyan parancskészlet, amely meghatározza, hogy adott időpontban milyen értékek jelenjenek meg a táblázatokban.
DCD(Adatkezelési nyelv) olyan szolgáltatásokból áll, amelyek meghatározzák, hogy engedélyezik-e a felhasználónak bizonyos műveletek végrehajtását. Az ANSI DDL részei. Ne felejtsd el ezeket a neveket. Ezek nem különböző nyelvek, hanem az SQL-parancsok funkciói szerint csoportosított részei.

Adattípusok:

SQL Server – Adattípusok

Leírás

bigint (int 8)

bigint (int 8)

bináris(n)

bináris n) vagy kép

karakter
(szinonima char)

nemzeti karakter vagy ntext

karakter változó(szinonima char változó varchar)

nemzeti karakter változó vagy ntext

Dátum idő

dátum idő

decimális

más néven numerikus

dupla pontosság

dupla pontosság

egész szám (int 4) (szinonima: int)

egész szám (int 4)

nemzeti jelleg(szinonima: nemzeti jelleg, nchar)

nemzeti jelleg

Numerikus(szinonimák: decimális, december)

nemzeti karakter változó(szinonimák: nemzeti char változó, nvarchar)

Változó nemzeti karakter

Kis dátumidő

dátum idő

smallint (int 2)

smallint (int 2)

Kis pénz

sql_variant

Már nem támogatott

Ntext
Az SQL Server 2005-től kezdődően nem javasolt a használata.

Időbélyeg

Nem támogatott

aprócska (int 1)

aprócska (int 1)

Egyedi azonosító

egyedi azonosító

varbináris(n)

varbináris n) vagy kép

kis randevú

dátum idő

smallint (int 2)

smallint (int 2)

kis pénz

sql_variant

Nem támogatott

időbélyeg

Nem támogatott

aprócska (int 1)

aprócska (int 1)

egyedi azonosító

egyedi azonosító

varbináris(n)

varbináris n) vagy kép

Adattípus táblázat az SQL Server 2000 rendszerben

MI A KÉRÉS?

Kérés egy parancs, amelyet az adatbázis-programnak adsz. A lekérdezések a DML nyelv részét képezik. Minden SQL lekérdezés egyetlen parancsból áll. Ennek a parancsnak a felépítése megtévesztően egyszerű, mert ki kell bővítenie rendkívül összetett kiértékelések és adatkezelések végrehajtásához.

SELECT parancs:

KIVÁLASZTÁS A „Select” a leggyakrabban használt parancs, a táblázat adatainak kiválasztására szolgál.
Lekérdezés típusa a SELECT használatával:

SELECT id, user_name, city, születési_nap FROM user_base;

Egy ilyen lekérdezés megjeleníti a user_base táblából a megadott oszlopok összes értékét vesszővel elválasztva. SELECT parancsok. Ezenkívül az összes oszlopot egy karakterrel is megjelenítheti, azaz * azaz. SELECT * FROM user_base ; - egy ilyen lekérdezés megjeleníti a táblázat összes adatát.

SELECT parancsstruktúra:

SELECT (A lekérdezésben megjelenítendő oszlopnevek vesszővel elválasztva) FROM (táblanév az adatbázisban)
- Ez a kérés legegyszerűbb típusa. További parancsok állnak rendelkezésre a kényelmes adatlekéréshez (lásd lent „Funkciók”)

DML parancsok:

Az értékek három DML (Data Manipulation Language) paranccsal helyezhetők el és távolíthatók el a mezőkből:
BESZÁLLÍTÁS(Beszúrás)
FRISSÍTÉS(Frissítés, módosítás),
TÖRÖL(Töröl)

INSERT parancs:

INSERT INTO user_base (felhasználói_név, város, születési_nap) ÉRTÉKEK ('Sándor', 'Rosztov', '1991.06.20');

Az INSERT parancs az INTO (in to) előtaggal érkezik, majd zárójelben azon oszlopok nevei vannak, amelyekbe adatokat kell beszúrnunk, majd jön a VALUES parancs (értékek), és zárójelben az értékek sorra jönnek (ez szükséges az értékek oszlopokkal való sorrendjének betartásához, az értékeknek ugyanabban a sorrendben kell lenniük, mint az Ön által megadott oszlopok).

UPDATE parancs:

UPDATE users_base SET user_name = 'Alexey';

Az UPDATE parancs frissíti az értékeket egy táblázatban. Először maga az UPDATE parancs jön, majd a tábla neve, a SET parancs (set) után, majd az oszlop neve és értéke idézőjelben (az idézőjelek karakterlánc formátumúak, ha numerikus értékek és az oszlop nem kötődik a vchar adattípushoz vagy más karakterlánctípusokhoz, az idézőjeleknek nincs jelentése.)

DELETE parancs:

DELETE FROM users_base WHERE user_name = 'Vaszilij';

A DELETE parancs törli a teljes sort, és a WHERE feltétel segítségével azonosítja a sort. Ebben az esetben ez a lekérdezés minden olyan sort töröl, amelyben a user_name oszlop értéke Vaszilij volt. A WHERE kritériumról és egyebekről kicsit később fogunk beszélni.

Kritériumok, funkciók, feltételek stb. mi segít nekünk az SQL-ben:

A WHERE záradék a SELECT parancs és más DML-parancsok záradéka, amely lehetővé teszi olyan predikátumok beállítását, amelyek feltétele igaz vagy hamis lehet a táblázat bármely sorában. A parancs csak azokat a sorokat kéri le a táblából, amelyekre ez az állítás igaz.
Példa:
SELECT id, city, születési_nap FROM user_base WHERE user_name = 'Alexey';- egy ilyen lekérdezés csak azokat a sorokat jeleníti meg, amelyek megfelelnek a WHERE feltételnek, vagyis minden olyan sort, amelyben a user_name oszlopban az Alexey értéke van.

ORDER BY - a kiválasztott sorok rendezésének feltétele. 2 ASC és DESC kritériuma van. ASC (rendezés A-tól Z-ig vagy 0-tól 9-ig)

DESC (az ASC ellentéte).
Példa:
SELECT id, city, születési_nap FROM user_base ORDER BY user_name ASC; - egy ilyen lekérdezés megjeleníti az értékeket a user_name oszlop szerint rendezve A-tól Z-ig (A-Z; 0-9)

Ez a feltétel a WHERE záradékkal együtt is használható.
Példa:
SELECT id, city, születési_nap FROM user_base WHERE user_name = 'Alexey' ORDER BY id ASC;

A DISTINCT egy olyan argumentum, amely lehetőséget biztosít a kettős értékek kiküszöbölésére a SELECT záradékból. Azok. ha egy oszlopban ismétlődő értékek vannak, mondjuk a user_name, akkor a DISTINCT csak egy értéket fog megjeleníteni, például 2 Alexey nevű személy van az adatbázisában, akkor a DISTINCT függvényt használó lekérdezés csak 1 értéket mutat. amivel először találkozunk...
Példa:
SELECT DISTINCT user_name FROM user_base;- egy ilyen lekérdezés megmutatja nekünk az összes rekord értékét a user_name oszlopban, de nem ismétlődnek meg, pl. ha végtelen számú ismétlődő értéked lenne, akkor azok nem jelennek meg...

ÉS - két logikai értéket (A ÉS B formában) vesz fel érvként, és értékeli őket az igazság ellenében, hogy mindkettő igaz-e.
Példa:
SELECT * FROM users_base WHERE city = 'Rosztov' AND user_name = 'Alexander';- megjeleníti az összes értéket a táblázatból, ahol a város neve egy sorban jelenik meg (ebben az esetben Rostov és az Alexander felhasználónév.

VAGY - két logikai értéket (A VAGY B formában) vesz argumentumként, és kiértékeli, hogy az egyik helyes-e.

SELECT * FROM users_base WHERE city = 'Rosztov' OR user_name = 'Alexander';- megjeleníti az összes értéket abból a táblázatból, ahol Rostov városának neve vagy Alexander felhasználónév szerepel a sorban.

NOT - egyetlen logikai értéket (NOT A formában) vesz fel argumentumként, és megváltoztatja annak értékét hamisról igazra vagy igazról hamisra.
SELECT * FROM users_base WHERE city = 'Rosztov' OR NOT user_name = 'Alexander';- megjeleníti az összes értéket a táblázatból, ahol Rostov városának neve egy sorban jelenik meg, vagy a felhasználónév nem pontosan Alexander.

IN - meghatároz egy értékkészletet, amelyben egy adott érték szerepelhet vagy nem.
SELECT * FROM user_base WHERE city IN ('Vladivosztok', "Rosztov");- egy ilyen lekérdezés megjeleníti a táblázat összes értékét, amely a város oszlopban tartalmazza a megadott városok nevét

A között hasonló az IN operátorhoz. A halmazból származó számokkal történő definiálástól eltérően, mint ahogy az IN is, a BETWEEN egy tartományt definiál, amelynek értékeinek csökkennie kell ahhoz, hogy az predikátum igaz legyen.
SELECT * FROM user_base WHERE id BETWEEN 1 ÉS 10;- megjeleníti a táblázat összes értékét, amely 1 és 10 közötti tartományban lesz az id oszlopban

COUNT – A lekérdezés által kiválasztott mezők sorszámát vagy nem NULL értékeit állítja elő.
SZÁM VÁLASZTÁSA (*) A felhasználók_bázisából ;- megjeleníti a sorok számát ebben a táblázatban.
SZÁM KIVÁLASZTÁSA (ELKÜLÖNBÖZŐ felhasználónév) A felhasználók_bázisából ;- megjeleníti a felhasználónevekkel ellátott sorok számát (nem ismétlődik)

SZUM – az adott mezőben kiválasztott értékek számtani összegét állítja elő.
SELECT SUM (id) FROM user_base ;- megjeleníti az id oszlop összes sorának értékeinek összegét.

AVG - átlagolja a mező összes kiválasztott értékét.
SELECT AVG (id) FROM user_base ;- megjeleníti az id oszlop összes kiválasztott értékének átlagát

MAX – a mezőben kiválasztott értékek közül a legnagyobbat állítja elő.

MIN – a mezőhöz kiválasztott összes érték közül a legkisebbet állítja elő.

Táblázatok készítése:

CREATE TABLE user_base (azonosító egész szám, felhasználónév szövege, város szövege, születési_nap dátum és idő);- egy ilyen parancs végrehajtása a tábla létrehozásához vezet, amelyre példákat hoztam... Itt minden egyszerű, írjuk a CREATE TABLE parancsot, utána a létrehozni kívánt tábla nevét, majd zárójelben, vesszővel elválasztva az oszlopok nevét és adattípusát. Ez a szabványos módja a táblázat létrehozásának SQL-ben. Most adok egy példát táblák létrehozására SQL Server 2005-ben:

ANSI_NULLS BEÁLLÍTÁSA
MEGY
A QUOTED_IDENTIFIER BEÁLLÍTÁSA
MEGY
IF NEM LÉTEZIK (SELECT * FROM sys.objects WHERE objektum_azonosító = OBJECT_ID(N."") ÉS írja be (N"U"))
KEZDŐDIK
TÁBLÁZAT LÉTREHOZÁSA .(

NEM NULLA,
NEM NULLA,
NEM NULLA,
ELSŐDLEGES KULCS CSOPORTOSÍTVA
A.S.C.


VÉGE
MEGY
ANSI_NULLS BEÁLLÍTÁSA
MEGY
A QUOTED_IDENTIFIER BEÁLLÍTÁSA
MEGY
IF NEM LÉTEZIK (SELECT * FROM sys.objects WHERE objektum_azonosító = OBJECT_ID(N."") ÉS írja be (N"U"))
KEZDŐDIK
TÁBLÁZAT LÉTREHOZÁSA .(
AZONOSÍTÁS(1,1) NEM NULL,
NULLA,
NULLA,
ELSŐDLEGES KULCS CSOPORTOSÍTVA
A.S.C.
)BE (IGNORE_DUP_KEY = KI) BE
) ON TEXTIMAGE_ON
VÉGE
MEGY
ANSI_NULLS BEÁLLÍTÁSA
MEGY
A QUOTED_IDENTIFIER BEÁLLÍTÁSA
MEGY
IF NEM LÉTEZIK (SELECT * FROM sys.objects WHERE objektum_azonosító = OBJECT_ID(N."") ÉS írja be (N"U"))
KEZDŐDIK
TÁBLÁZAT LÉTREHOZÁSA .(
AZONOSÍTÁS(1,1) NEM NULL,
NULLA,
NULLA,
ELSŐDLEGES KULCS CSOPORTOSÍTVA
A.S.C.
)BE (IGNORE_DUP_KEY = KI) BE
) TOVÁBB
VÉGE

A szintaxis az SQL Server 2005-ben egy másik téma, csak azt akartam megmutatni, hogy leírtam az SQL programozás alapjait, az alapok ismeretében egyedül is fel lehet jutni a csúcsra.

Ha kérdése van ebben a témában, írjon nekem

Olyan alkalmazás fejlesztése, amely bemutatja az alapvető műveleteket egy adatbázisban, például az MS SQL Serverben lévő adatokkal, nevezetesen:

  • az adatbázis összekapcsolása az alkalmazással;
  • adatbázis táblák megjelenítése az űrlapon;
  • kiegészítés új bejegyzés az adatbázisba;
  • rekord szerkesztése;
  • bejegyzés törlése.

Az Education.dbo adatbázist vettük alapul, amelynek létrehozási folyamatát részletesen ismertetjük

Az 1. ábra az Education.dbo adatbázis felépítését mutatja. Amint az ábrán látható, az adatbázis neve:

sasha-pc\sqlexpress.Education.dbo

Itt a „sasha-pc” a számítógép azonosítója a hálózaton, az „sqlexpress” az adatbázis-kiszolgáló neve, az „Education.dbo” pedig az adatbázis neve.

Rizs. 1. Education.dbo adatbázis

Az adatbázis két táblát tartalmaz: Student és Session. A táblázatok felépítése a következő.

Diák asztal.

Munkamenet asztal.

Teljesítmény

1. Hozzon létre egy új projektet az MS Visual Studio programban Windows Forms alkalmazásként.

Hozzon létre egy új, Windows Forms Application típusú projektet. Részletesen leírunk egy példát egy új projekt létrehozására

2. Hozzon létre egy új nézetet a tanulói táblázat adatainak megjelenítéséhez.

Adatbázistáblák adatainak megjelenítéséhez használhatja különböző utak. Az egyik ilyen nézetek létrehozása, melyeket az MS Visual Studio segítségével generálnak.

Esetünkben a táblázat adatai DataGridView típusú vezérlőben jelennek meg az űrlapon. A nézetek létrehozása után nagyon kényelmes a DataGridView elemekkel való társítása.

Nézet létrehozásához a helyi menüből kell meghívni az „Új nézet hozzáadása” parancsot, amelyet az Education.dbo adatbázis „Nézetek” elemére jobb gombbal kattintva hívhatunk meg (2. ábra).

Rizs. 2. Új nézet hozzáadásához szükséges parancs meghívása

Ennek eredményeként megnyílik a „Táblázat hozzáadása” ablak (3. ábra). Az ablakban ki kell választani a nézethez hozzáadott táblázatokat.

Rizs. 3. Az új nézet alapjául szolgáló táblák kiválasztása

Esetünkben válassza ki a Tanuló táblázatot, és erősítse meg a választását a Hozzáadás gombra kattintva. A következő lépés az ablak bezárása a Bezárás gomb megnyomásával.

A lépések elvégzése után egy ablak jön létre, amelyben ki kell választani a nézetben (az űrlapon) megjelenítendő mezőket. Jelölje ki az összes mezőt (4. ábra).

Amikor kiválasztja a mezőket, a tanuló táblázat mezői a munkaterület tetején jelennek meg. Az egér segítségével kiválaszthatja a kívánt megjelenítési mezőket.

Ennek megfelelően az ablak középső területén megjelenik a kiválasztott mezők neve, a táblázat, amelyben léteznek (lásd 4. ábra), a rendezés, szűrés stb.

A terület alján megjelenik a megfelelő SQL-lekérdezés szövege, amelyet a nézet létrehozásához használnak.

Rizs. 4. A nézetben megjelenítendő tanulói táblázat mezőinek kiválasztása

Csapatválasztás után

Fájl->Minden mentése Fájl->Nézet mentése1

Megnyílik egy ablak, amelyben meg kell adnia a nézet nevét. Állítsa be a „Diák megtekintése” nevet (5. ábra).

Rizs. 5. A nézet nevének megadása

A lépések elvégzése után a bemutató ablak a 6. ábrán látható módon fog kinézni.

Rizs. 6. Tekintse meg a hallgatói reprezentációt az adatbázisban

Most már tárolhat egy DataGridView vezérlőt, és társítható egy nézettel.

3. Helyezze el a DataGridView vezérlőt, és konfigurálja a kapcsolatot az adatbázissal.

A DataGridView vezérlő elhelyezése előtt be kell lépnie a "Form1.cs" űrlaptervezési módba.

A DataGridView elem egy táblázat, amely képes megjeleníteni az adatokat. Ez a vezérlő az Eszköztár panelen található. Először kissé módosítjuk az űrlap méretét, majd helyezzük rá a DataGridView vezérlőt (7. ábra). Ez alapértelmezés szerint létrehoz egy dataGridView1 nevű objektumpéldányt.

Rizs. 7. DataGridView vezérlő és adatforrás kiválasztási ablak

Miután elhelyezte a DataGridView vezérlőt az űrlapon, a jobb felső sarokban választhatja az adatforrás konfigurálását. Ennek megfelelően megnyílik a „DataGridView Tasks” ablak. Ebben az ablakban ki kell választania az „Adatforrás kiválasztása” előugró menüt.

A megnyíló menüben válassza ki az „Add Project Data Source...” parancsot (7. ábra). Ezt követően megnyílik egy varázsló ablak, amelyben sorra kerül kiválasztásra az adatforrás.

A 8. ábra a " Adatforrás konfigurációs varázsló“, amelyben az adatforrás típusa van kiválasztva. Esetünkben telepítjük az „Adatbázist”.

Rizs. 8. Adatforrás típusának kiválasztása

A következő ablakban (9. ábra) az adatforrás modellje kerül kiválasztásra. Ki kell választania a DataSet lehetőséget.

Rizs. 9. Adatforrás modell kiválasztása

A 10. ábrán látható ablakban meg kell adni azt az adatkapcsolatot, amellyel az adatbázishoz kapcsolódni kívánunk. Esetünkben ki kell választanunk az adatbázist " sasha-pc\sqlexpress\Education.dbo«.

Rizs. 10. Adatkapcsolat kiválasztása

A következő ablak (11. ábra) javasolja a Connection String mentését az alkalmazás konfigurációs fájljába. Mindent úgy hagyunk, ahogy van, és továbblépünk a következő ablakhoz.

Rizs. 11. Javaslat az adatbázis kapcsolati karakterlánc Connection String mentésére az alkalmazás konfigurációs fájljában

Az adatbázis-kapcsolat létrehozása után számos adatbázis-objektum jelenik meg (12. ábra). Esetünkben ki kell választanunk a „Diák megtekintése” nézetet és abból az összes mezőt. A bejelölt mezők a DataGridView típusú komponensben jelennek meg.

Rizs. 12. A DataGridView-ban megjelenítendő adatbázis-objektumok kiválasztása

A Befejezés gomb kiválasztása után az Education.dbo adatbázis kiválasztott objektumai (View Student view) jelennek meg (13. ábra).

Rizs. 13. DataGridView vezérlés kiválasztott View Student mezőkkel

Hasonló módon konfigurálhat olyan nézeteket, amelyek bármely adatbázistáblából bármilyen mezőt tartalmaznak. Ezenkívül a különböző táblák mezői is megjeleníthetők egy nézetben.

4. A DataGridView vezérlő megjelenésének beállítása.

Ha futtatja az alkalmazást, a View Student nézetből kap adatokat, amely megfelel az adatbázisban található Student táblának (14. ábra).

Rizs. 14. Pályázat végrehajtásra indítása

Ahogy a 14. ábrán látható, a dataGridView1 táblában lévő adatok normál módon jelennek meg, de a kialakítás módosítható.

A DataGridView típusú vezérlővel beállíthatja a megjelenített mezők megjelenését.

A mezők szerkesztéséhez szükséges parancsok meghívásához egyszerűen hívja meg a helyi menüt a jobb gombbal a dataGridView1 vezérlőre kattintva.

A menü változatos hasznos parancsokat, amelyek lehetővé teszik a DataGridView megjelenésének és működésének szabályozását:

  • parancs a vezérlés blokkolására (Lock Controls);
  • parancs a nézetben megjelenő mezők szerkesztéséhez (Oszlopok szerkesztése...);
  • parancs új mezők hozzáadásához, például kiszámított mezők hozzáadásához (Oszlop hozzáadása).

Esetünkben az „Oszlopok szerkesztése...” parancsot kell kiválasztani (15. ábra).

Rizs. 15. A helyi menüből adja ki az „Oszlopok szerkesztése...” parancsot

Ennek hatására megnyílik az „Oszlopok szerkesztése” ablak, amelyben a prezentációs mezők megjelenését tetszés szerint testre szabhatja (16. ábra).

Rizs. 16. Ablak a mezők nézetének beállítására a „Diák megtekintése” nézetben

A 16. ábra ablakában bármely mezőhöz beállíthatja a nevet, az igazítást, a szélességet, az adatok szerkesztésének lehetőségét stb.

5. Csatlakozási karakterlánc

Az adatbázis módosításához be kell szereznie egy kapcsolati karakterláncot az adatbázishoz Connection String .

Az adatbázis-kapcsolati karakterlánc beszerzésének különböző módjai vannak. Az egyik ezen a soron alapul az Education.dbo adatbázis Tulajdonságok ablakában (17. ábra).

Rizs. 17. Kapcsolati karakterlánc meghatározása

A karakterlánc programba való mentéséhez a típusú belső változó húr. A vágólap segítségével másolja be a Connection String-et a leírt karakterlánc-változóba.

A Form1.cs fájl szövegében a Form1 osztály leírásának elején le kell írnia a változót:

string conn_string = ;

Jelenleg a Form1 osztály szövege a következő:

nyilvános részosztály Form1 : Form { string conn_string = @"Adatforrás=(helyi)\SQLEXPRESS;Kezdeti katalógus=Oktatás;Integrált biztonság=Igaz;Pooling=False"; nyilvános űrlap1() { InitializeComponent(); } private void Form1_Load(objektum küldő, EventArgs e) { // TODO: Ez a kódsor adatokat tölt be az "educationDataSet.View_Student" táblába. tudsz szükség szerint mozgassa vagy távolítsa el. } }

6. Teremtés új forma adatkezelési parancsok bemutatására.

Az aktuális rekord adatainak feldolgozásához új űrlapot kell készíteni. Az MS Visual Studio - C# új űrlap létrehozásának folyamata részletesen le van írva.

Új űrlap hozzáadása a következő paranccsal történik:

Projekt -> Windows űrlap hozzáadása...

A megnyíló „Új elem” ablakban ki kell választania a „Windows Form” elemet.

Hagyja az új űrlapfájl nevét alapértelmezett „Form2.cs”-ként.

A 18. ábra az új űrlap nézetét mutatja.

A következő típusú vezérlőket helyezzük el az űrlapon:

  • két gombos vezérlő (OK és Mégse gomb). Ennek megfelelően két, button1 és button2 nevű objektum fog fogni;
  • négy címkevezérlő információs üzenetek létrehozásához;
  • négy TextBox típusú vezérlő az adatok bevitelére a Num_book, Name, Group, Year mezőkbe.

A vezérlők következő tulajdonságait kell konfigurálnia:

  • a vezérlőgomb1 tulajdonságban Text = "OK";
  • a button2 vezérlő tulajdonságban Text = "Mégse";
  • a control button1 tulajdonságban DialogResult = "OK";
  • a control button2 tulajdonságban DialogResult = "Cancel";
  • a control label1 tulajdonságban Text = "Num_book";
  • a control label2 tulajdonságban Text = "Név";
  • a control label3 tulajdonságban Text = "Csoport";
  • a label4-ben vezérelje a Text = "Év" tulajdonságot.

Beállítjuk a TextBox vezérlők láthatóságát is. Ehhez minden vezérlőben textBox1, textBox2, textBox3, textBox4 a Modifiers = „public” tulajdonság értéke.

Rizs. 18. Az újonnan létrehozott űrlap megtekintése

7. Gombok hozzáadása a Hallgatói táblázat adatainak kezeléséhez szükséges parancsok meghívásához.

A további munkához az egérrel át kell váltani a Form1 fő űrlapra.

Adjon hozzá három gombot a Form1 alkalmazás fő űrlapjához (Button). Három objektumváltozó automatikusan létrejön a button1, button2, button3 nevekkel. Mindegyik gombon a következő beállításokat végezzük (Tulajdonságok ablak):

  • a gombban button1 property Text = “Insert…” (insert record);
  • a button2 gombban property Text = “Szerkesztés…” (bejegyzés módosítása);
  • a gombban button3 property Text = "Törlés".

Az elvégzett változtatások eredményeként a fő űrlap a 19. ábrán látható módon fog kinézni.

Rizs. 19. A pályázat fő formája

8. Kattintási esemény programozása a „Beszúrás...” gombra.

A „Beszúrás...” gomb kattintási eseménykezelője így néz ki:

privát void button1_Click_1(objektum küldője, EventArgs e) { string cmd_text; Form2 f2 = new Form2(); if (f2.ShowDialog() == DialogResult .OK) { cmd_text = "INSERT INTO Student VALUES (" + """ + f2.textBox1.Text + "" , "" + f2.textBox2.Text + "" , "" + f2.textBox3.Text + "" , " + f2.textBox4.Text + ")" ; // kapcsolat létrehozása az adatbázissal SqlConnection sql_conn = new SqlConnection(conn_string); // parancs létrehozása SQL nyelven SqlCommand sql_comm = new SqlCommand(cmd_text, sql_conn); sql_conn.Open(); // kapcsolat megnyitása sql_comm.ExecuteNonQuery(); // parancs végrehajtása SQL nyelven sql_conn.Close(); // szoros kapcsolat this .view_StudentTableAdapter.Fill(this .educationDataSet.View_Student); } }

Form2 hívják először. Az „OK” eredmény megérkezése után (a megfelelő gomb megnyomásával) a Form2-ben a TextBox típusú elemekben kitöltött mezők bekerülnek az SQL lekérdezési karakterláncba. Az új sor hozzáadásához szükséges SQL-lekérdezés így néz ki:

INSERT INTO Diák ÉRTÉKEK (érték1, érték2, érték3, érték4)

ahol az 1 érték az érdemjegykönyv számának felel meg; érték2 – a tanuló vezetékneve; érték3 – csoport, amelyben a hallgató tanul; value4 – a belépés éve.

A Connection String adatbázis-kapcsolati karakterlánc leírása a conn_string változóban található (lásd az 5. bekezdést). Az SqlConnection osztályobjektum összekapcsolja az alkalmazást az adatforrásokkal. Ezenkívül a Connection osztály kezeli a felhasználói hitelesítést, a hálózatépítést, az adatbázis azonosítást, a kapcsolat pufferelését és a tranzakciók feldolgozását.

Az SQL-parancs, amely rekordot ad a táblához, az SqlCommand osztályba van beágyazva. Az SqlCommand osztály konstruktora két paramétert vesz fel: egy SQL lekérdezési karakterláncot (cmd_text változó) és az SqlConnection osztály objektumát.

Az ExecuteNonQuery() metódus az IDBCommand felületen van megvalósítva. A módszer olyan SQL-parancsokat valósít meg, amelyek nem adnak vissza adatokat. Ilyen parancsok közé tartoznak az INSERT, DELETE, UPDATE parancsok, valamint a tárolt eljárások, amelyek nem adnak vissza adatokat. Az ExecuteNonQuery() metódus az érintett rekordok számát adja vissza.

9. Kattintási esemény programozása a „Szerkesztés...” gombra.

A „Szerkesztés...” gomb kattintási eseménykezelője így néz ki:

private void button2_Click(objektum küldője, EventArgs e) ( string cmd_text; Form2 f2 = new Form2 (); int index; string num_book; index = dataGridView1.CurrentRow.Index; num_book = .ToString(dataGridView1.Value) konvertálása; 1 f2.textBox .Text = szám_könyv; f2.textBox2.Text = .ToString(dataGridView1.Value); f2.textBox3.Text = .ToString(dataGridView1.Érték) konvertálása; f2.textBox4.Text = .ToString(VtaGridView1); if (f2.ShowDialog() == DialogResult .OK) ( cmd_text = "FRISSÍTÉS Diákkészlet Num_book = ""+ f2.textBox1.Text + "", " + " = "" + f2.textBox2.Text + "", " + " = "" + f2.textBox3.Text + "", " + "Year = " + f2 .TextBox4.Text + "What num_book =" " + num_book +" "" "" SQLConNection SQL_Conn = Új SQLConNECTION (Conn_String); SQLCMAND SQL_comm = Új SQLCMANT (CMD_TEXT , sql_conn); sql_ (m.conn.)enryqueso. ; sql_conn.Close(); this .view_StudentTableAdapter.Fill(this .educationDataSet.View_Student); ) )

Ez a kezelő egy UPDATE SQL parancsot hajt végre, amely megváltoztatja az aktív rekord aktuális értékét.

10. Kattintási esemény programozása a „Törlés” gombra.

A „Törlés” gomb kattintási eseménykezelője így néz ki:

private void button3_Click(objektum küldője, EventArgs e) ( string cmd_text = "TÖRLÉS A tanulóból" ; int index; string num_book; index = dataGridView1.CurrentRow.Index; num_book = Convert.ToString(dataGridView1.Value); cmd_text = "DELETE FROM Student WHERE . = ""+ szám_könyv + """ ; SqlConnection sql_conn = új SqlConnection (conn_string); SqlCommand sql_comm = new SqlCommand (cmd_text, sql_conn); sql_conn.Open(); sql_comm.Qulleryn(this_on.sc.sconn); dentTable Adapter. Töltse ki (ez .educationDataSet.View_Student); )

Ez a kezelő végrehajtja a DELETE SQL parancsot a rekord törléséhez.

Kapcsolódó témák

  • Microsoft Access adatbázistábla kiadása

Az SQL Server Management Studio teljes eszközt biztosít minden típusú lekérdezés létrehozásához. Segítségével lekérdezéseket hozhat létre, menthet, tölthet be és szerkeszthet. Ezenkívül a lekérdezéseken anélkül is dolgozhat, hogy bármilyen szerverhez csatlakozna. Ez az eszköz arra is lehetőséget biztosít, hogy lekérdezéseket fejlesszen ki különböző projektekhez.

A lekérdezéseket a Lekérdezésszerkesztővel vagy a Megoldásböngészővel dolgozhatja fel. Ez a cikk mindkét eszközt tárgyalja. Az SQL Server Management Studio e két összetevője mellett megvizsgáljuk az SQL-kód hibakeresését a beépített hibakereső segítségével.

Lekérdezésszerkesztő

A Lekérdezésszerkesztő panel megnyitásához Lekérdezésszerkesztő, az SQL Server Management Studio eszköztárán kattintson az Új lekérdezés gombra. Ez a panel kibővíthető az összes lehetséges lekérdezés létrehozására szolgáló gombok megjelenítésére, nem csak az adatbázismotor-lekérdezésekre. Alapértelmezés szerint létrejön új kérés Database Engine komponens, de az eszköztár megfelelő gombjára kattintva MDX, XMLA stb. lekérdezéseket is készíthet.

A Lekérdezésszerkesztő panel alján található állapotsor jelzi a szerkesztő kiszolgálóhoz való kapcsolatának állapotát. Ha nem csatlakozik automatikusan a kiszolgálóhoz, a Lekérdezésszerkesztő elindításakor megjelenik egy Kapcsolódás a kiszolgálóhoz párbeszédpanel, amely lehetővé teszi a kapcsolódni kívánt kiszolgáló és a hitelesítési mód kiválasztását.

A lekérdezések offline szerkesztése nagyobb rugalmasságot biztosít, mint amikor kiszolgálóhoz csatlakozik. A lekérdezések szerkesztéséhez nem szükséges csatlakozni a szerverhez, és a lekérdezésszerkesztő ablak leválasztható az egyik szerverről (a menü Lekérdezés --> Kapcsolat --> Leválasztás parancsával), és egy másik szerkesztőablak megnyitása nélkül csatlakoztatható egy másikhoz. Az offline szerkesztési mód kiválasztásához használja a Csatlakozás a kiszolgálóhoz párbeszédpanelt, amely a szerkesztő indításakor nyílik meg. konkrét típus kéréseket, egyszerűen kattintson a Mégse gombra.

A Lekérdezésszerkesztővel a következő feladatokat hajthatja végre:

    Transact-SQL utasítások létrehozása és végrehajtása;

    a létrehozott Transact-SQL nyelvi utasítások fájlba mentése;

    végrehajtási tervek készítése és elemzése gyakori lekérdezésekhez;

    grafikusan illusztrálva a kiválasztott lekérdezés végrehajtási tervét.

A lekérdezésszerkesztő beépített szöveg szerkesztőés egy eszköztár gombkészlettel a különböző műveletekhez. A fő lekérdezésszerkesztő ablak vízszintesen fel van osztva egy lekérdezési panelre (fent) és egy eredmény panelre (alul). A végrehajtandó Transact-SQL utasítások (vagyis lekérdezések) a felső ablaktáblában jelennek meg, és az alsó panelen jelennek meg a rendszer által a lekérdezések feldolgozásának eredményei. Az alábbi ábra egy példát mutat be egy lekérdezés lekérdezésszerkesztőbe történő bevitelére, valamint a lekérdezés végrehajtásának eredményére:

Az első USE kérelem utasítás a SampleDb adatbázist határozza meg aktuális adatbázisként. A második utasítás, a SELECT, lekéri az összes sort az Employee táblából. A lekérdezés futtatásához és az eredmények megjelenítéséhez a Lekérdezésszerkesztő eszköztárában kattintson a Végrehajtás gombra, vagy nyomja meg az F5 billentyűt.

Több Lekérdezésszerkesztő ablakot is megnyithat, pl. több kapcsolatot létrehozni az adatbázismotor egy vagy több példányával. Az SQL Server Management Studio eszköztárában az Új lekérdezés gombra kattintva új kapcsolat jön létre.

A Lekérdezésszerkesztő ablakának alján lévő állapotsor a következő információkat jeleníti meg a lekérdezési utasítások végrehajtásával kapcsolatban:

    az aktuális művelet állapota (például "A kérés sikeresen befejeződött");

    adatbázis-kiszolgáló neve;

    aktuális felhasználónév és szerver folyamatazonosító;

    aktuális adatbázisnév;

    az utolsó kérés végrehajtására fordított idő;

    talált sorok száma.

Az SQL Server Management Studio egyik fő előnye a könnyű kezelhetőség, amely a Lekérdezésszerkesztőre is vonatkozik. A Lekérdezésszerkesztő számos szolgáltatást kínál a Transact-SQL utasítások kódolásának megkönnyítésére. Konkrétan szintaktikai kiemelést használ a Transact-SQL utasítások olvashatóságának javítására. Minden fenntartott szó kékkel, a változók feketével, a karakterláncok pirossal, a megjegyzések pedig zölddel jelennek meg.

Ezen kívül a lekérdezésszerkesztő fel van szerelve környezetfüggő súgóval, melynek neve Dinamikus súgó, amelyen keresztül információt szerezhet egy adott utasításról. Ha nem ismeri egy utasítás szintaxisát, válassza ki azt a szerkesztőben, majd nyomja meg az F1 billentyűt. A különböző Transact-SQL utasítások paramétereit is kiemelheti, hogy segítséget kapjon a Books Online-tól.

Az SQL Management Studio támogatja az SQL Intellisense-t, amely egyfajta automatikus kitöltési eszköz. Más szavakkal, ez a modul a részben bevitt Transact-SQL utasításelemek legvalószínűbb befejezését javasolja.

Az objektumböngésző a lekérdezések szerkesztésében is segíthet. Ha például meg szeretné tudni, hogyan hozhat létre CREATE TABLE utasítást az Employee táblához, kattintson jobb gombbal a táblára az Object Explorerben, és a kapott helyi menü válassza a Script Table As --> CREATE to --> New Query Editor Window lehetőséget. Az így létrehozott CREATE TABLE utasítást tartalmazó Query Editor ablak az alábbi ábrán látható. Ez a szolgáltatás más objektumokra is vonatkozik, például tárolt eljárásokra és függvényekre.

Az Object Browser nagyon hasznos egy adott lekérdezés végrehajtási tervének grafikus megjelenítéséhez. A lekérdezés-végrehajtási terv a lekérdezés-optimalizáló által több közül kiválasztott végrehajtási lehetőség lehetséges opciók konkrét kérés teljesítése. Írja be a kívánt lekérdezést a szerkesztő felső panelébe, válassza ki a parancssort a Lekérdezés --> Becsült végrehajtási terv megjelenítése menüből, és a lekérdezés végrehajtási terve megjelenik a szerkesztőablak alsó paneljén.

Megoldás kereső

Az SQL Server Management Studio lekérdezésszerkesztése a megoldási módszeren alapul. Ha az Új lekérdezés gombbal üres lekérdezést hoz létre, az üres megoldáson fog alapulni. Ezt úgy láthatja, ha egy üres lekérdezés megnyitása után azonnal futtat egy parancssort a Nézet --> Megoldáskezelő menüből.

A döntés egyetlen, egy vagy több projekthez is kapcsolódhat. Üres megoldás, nincs társítva egyetlen projekthez sem. Egy projekt megoldáshoz való társításához zárja be az üres megoldást, a Megoldáskezelőt és a Lekérdezésszerkesztőt, és hozzon létre egy új projektet a Fájl --> Új --> Projekt futtatásával. A megnyíló Új projekt ablakban válassza ki az SQL Server Scripts lehetőséget a középső ablaktáblában. A projekt a fájlok egy adott helyen történő rendezésének módja. Nevet rendelhet a projekthez, és kiválaszthatja a helyét a lemezen. Új projekt létrehozásakor automatikusan elindul egy új megoldás. A projektet hozzá lehet adni meglévő megoldás a Solution Explorer segítségével.

A Solution Explorer minden létrehozott projektnél megjeleníti a Connections, Queries és Miscellaneous mappákat. Ha egy adott projekthez új Lekérdezésszerkesztő ablakot szeretne megnyitni, kattintson a jobb gombbal a Lekérdezések mappára, és válassza az Új lekérdezés lehetőséget a helyi menüből.

SQL Server hibakeresése

Az SQL Server az SQL Server 2008-tól kezdve beépített kódhibakeresővel rendelkezik. A hibakeresési munkamenet megkezdéséhez válassza a Hibakeresés --> Hibakeresés indítása lehetőséget az SQL Server Management Studio főmenüjében. Megnézzük, hogyan működik a hibakereső egy példán keresztül, amely parancsokat használ. A köteg SQL-utasítások és eljárási kiterjesztések logikai sorozata, amely elküldésre kerül az adatbázismotornak, hogy végrehajtsa a benne lévő összes utasítást.

Az alábbi ábra egy csomagot mutat be, amely a p1 projekten dolgozó alkalmazottak számát számolja. Ha ez a szám 4 vagy több, akkor a megfelelő üzenet jelenik meg. Ellenkező esetben az alkalmazottak vezeték- és keresztneve jelenik meg.

Egy csomag végrehajtásának egy adott utasításnál történő leállításához töréspontokat állíthat be, az ábrán látható módon. Ehhez kattintson annak a sornak a bal oldalán, amelyen meg kíván állni. A hibakeresés megkezdésekor a végrehajtás leáll a kód első soránál, amely sárga nyíllal van jelölve. A végrehajtás és a hibakeresés folytatásához válassza a Debug --> Continue menüparancsot. A kötegelt utasítások végrehajtása az első töréspontig folytatódik, és a sárga nyíl ezen a ponton megáll.

A hibakeresési folyamattal kapcsolatos információk két panelen jelennek meg a Lekérdezésszerkesztő ablakának alján. Információ valamiről különböző típusok A hibakeresési információk ezeken a paneleken vannak csoportosítva több lapon. A bal oldali ablaktábla tartalmazza az Autos lapot, a Helyiek lapot és legfeljebb öt Figyelő lapot. A jobb oldali ablaktábla tartalmazza a Hívásverem, Szálak, Töréspontok, Parancsablak, Azonnali ablak és Kimenet lapokat. A Helyiek lap a változó értékeket, a Hívásverem lap a hívásveremértékeket, a Töréspontok lap pedig a töréspontadatokat jeleníti meg.

A hibakeresési folyamat befejezéséhez hajtsa végre a parancsok sorozatát a főmenü Hibakeresés --> Hibakeresés leállítása menüpontjában, vagy kattintson a kék gombra a hibakereső eszköztáron.

Az SQL Server 2012 számos új funkcióval egészíti ki az SQL Server Management Studio beépített hibakeresőjét. Most számos alábbi műveletet hajthat végre benne:

    Adjon meg egy töréspont feltételt. Töréspont állapot egy SQL kifejezés, amelynek kiértékelt értéke határozza meg, hogy a kód végrehajtása egy adott ponton leáll-e vagy sem. A töréspont feltételének megadásához kattintson jobb gombbal a piros töréspont ikonra, és válassza a Feltétel lehetőséget a helyi menüből. Megnyílik a Breakpoint Condition párbeszédpanel, ahol megadhatja a szükséges logikai kifejezést. Ezenkívül, ha le kell állítania a végrehajtást, ha a kifejezés igaz, állítsa be az Is True kapcsolót. Ha a végrehajtást le kell állítani, ha a kifejezés megváltozott, akkor be kell állítania a Amikor megváltozott kapcsolót.

    Adja meg a találatok számát a törésponton. A találatok száma a végrehajtás leállításának feltétele egy adott ponton, attól függően, hogy hányszor érte el a töréspontot a végrehajtás során. Amikor eléri a megadott számú áthaladást és bármely más, egy adott törésponthoz megadott feltételt, a hibakereső végrehajtja a megadott műveletet. A végrehajtás megszakítási feltétele a találatok száma alapján a következők egyike lehet:

    1. feltétel nélküli (alapértelmezett művelet) (Mindig szünet);

      ha a találatok száma megegyezik a megadott értékkel (Break when the his count egy meghatározott értékkel egyenlő);

      ha a találatok száma egy megadott érték többszöröse (Break, ha a találatok száma megegyezik egy megadott érték többszörösével);

      Törje meg, ha az ő száma nagyobb vagy egyenlő egy megadott értékkel.

    A találatok számának beállításához a hibakeresés során kattintson a jobb gombbal a kívánt töréspont ikonra a Töréspontok lapon, a helyi menüből válassza a Találatszám menüpontot, majd válassza ki az egyik feltételt az előző listából megnyíló Breakpoint Hit Count párbeszédpanelen. Az értéket igénylő opciók esetén írja be azt a feltételek legördülő listától jobbra található szövegmezőbe. A megadott feltételek mentéséhez kattintson az OK gombra.

    Adjon meg egy töréspont szűrőt. A töréspontszűrő csak meghatározott számítógépekre, folyamatokra vagy szálakra korlátozza a töréspont működését. Töréspont-szűrő beállításához kattintson a jobb gombbal a kívánt töréspontra, és válassza a Szűrő menüpontot a helyi menüből. Ezután a megnyíló Töréspont-szűrők párbeszédpanelen adja meg azokat az erőforrásokat, amelyekre korlátozni szeretné a töréspont végrehajtását. A megadott feltételek mentéséhez kattintson az OK gombra.

    Adjon meg egy műveletet egy törésponton. A Találatkor feltétel meghatározza a végrehajtandó műveletet, ha a kötegelt végrehajtás elér egy adott töréspontot. Alapértelmezés szerint, ha a találatszám-feltétel és a leállítási feltétel is teljesül, a végrehajtás megszakad. Alternatív megoldásként egy előre megadott üzenet is megjeleníthető.

    Ha meg szeretné határozni, hogy mit kell tenni egy töréspont leütése esetén, kattintson a jobb gombbal a töréspont piros ikonjára, és válassza a Leütéskor lehetőséget a helyi menüből. A megnyíló Amikor a töréspont találata párbeszédpanelen válassza ki a végrehajtani kívánt műveletet. A megadott feltételek mentéséhez kattintson az OK gombra.

    Használja a Gyorsfigyelő ablakot. Megtekintheti a Transact-SQL kifejezés értékét a QuickWatch ablakban, majd mentheti a kifejezést a Figyelő ablakban. A Gyorsfigyelő ablak megnyitásához válassza a Gyorsfigyelés lehetőséget a Hibakeresés menüből. Az ebben az ablakban lévő kifejezés kiválasztható a Kifejezés legördülő listából, vagy beírható ebbe a mezőbe.

    Használja a Gyors információs eszköztippet. Ha az egeret egy kódazonosító fölé viszi, a Gyors információ ( Rövid információ) egy felugró ablakban jeleníti meg a hirdetését.




Top