Ablakok.  Vírusok.  Jegyzetfüzetek.  Internet.  hivatal.  Segédprogramok.  Drivers

Utolsó frissítés: 13.07.2017

Az adatok hozzáadásához az INSERT parancsot kell használni, amelynek formális szintaxisa a következő:

INSERT table_name [(oszlop_lista)] ÉRTÉKEK (érték1, érték2, ... értékN)

Az elején van egy INSERT INTO utasítás, majd zárójelben megadható az oszlopok listája, vesszővel elválasztva, melybe adatokat kell hozzáadni, a végén pedig a VALUES szó után zárójelben az értékeket Az oszlopokhoz hozzá kell adni.

Tegyük fel például, hogy a következő adatbázist korábban hozták létre:

ADATBÁZIS LÉTREHOZÁSA productsdb; GO USE productsdb; CREATE TABLE 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)

Adjunk hozzá egy sort az INSERT paranccsal:

INSERT Products VALUES ("iPhone 7", "Apple", 5, 52000)

Sikeres befejezése után SQL szerver A Management Studionak az „1 érintett sor(ok)” szöveget kell megjelenítenie az üzenetmezőben:

Vegye figyelembe, hogy az VALUES kulcsszó után zárójelben lévő oszlopok értékei a deklarálás sorrendjében kerülnek átadásra. Például a fenti CREATE TABLE utasításban láthatja, hogy az első oszlop az Id. De mivel az IDENTITY attribútum be van állítva, ennek az oszlopnak az értéke automatikusan generálódik, és elhagyható. A második oszlop a ProductName-et jelöli, így az első érték, az „iPhone 7” karakterlánc ebbe az oszlopba kerül átadásra. A második érték, az "Apple" karakterlánc a harmadik, Gyártó oszlopba kerül, és így tovább. Azaz az értékek a következőképpen kerülnek át az oszlopokba:

    Terméknév: "iPhone 7"

    Gyártó: Apple

Az értékek megadásakor megadhatja azokat az oszlopokat is, amelyekbe az értékek hozzáadódnak:

INSERT INTO Termékek (Terméknév, Ár, Gyártó) ÉRTÉKEI ("iPhone 6S", 41000, "Apple")

Itt csak három oszlopra van megadva az érték. És most az értékeket az oszlopok sorrendjében adjuk át:

    Terméknév: "iPhone 6S"

    Gyártó: Apple

Meghatározatlan oszlopokhoz (in ez az eset ProductCount) alapértelmezett értéket ad hozzá, ha a DEFAULT attribútum be van állítva, vagy NULL. A nem meghatározott oszlopoknak azonban érvénytelennek kell lenniük, vagy DEFAULT attribútummal kell rendelkezniük.

Egyszerre több sort is hozzáadhatunk:

INSERT INTO Products VALUES ("iPhone 6", "Apple", 3, 36000), ("Galaxy S8", "Samsung", 2, 46000), ("Galaxy S8 Plus", "Samsung", 1, 56000)

Ebben az esetben három sor kerül hozzáadásra a táblázathoz.

Hozzáadáskor megadhatjuk azt is, hogy az oszlop alapértelmezett értéke legyen a DEFAULT kulcsszó vagy a NULL használatával:

INSERT INTO Termékek (Terméknév, Gyártó, Termékszám, Ár) ÉRTÉKEK ("Mi6", "Xiaomi", ALAPÉRTELMEZETT, 28000)

Ebben az esetben a ProductCount oszlop alapértelmezett értéke lesz (ha be van állítva, ha nincs, akkor NULL).

Ha minden oszlop rendelkezik egy ALAPÉRTELMEZETT attribútummal, amely alapértelmezett értéket határoz meg, vagy nullázható, akkor az összes oszlophoz beszúrhat alapértelmezett értékeket:

INSERT INTO Products ALAPÉRTELMEZETT ÉRTÉKEK

De ha a Termékek táblát veszi, akkor egy ilyen parancs meghiúsul, mivel több mezőnek nincs DEFAULT attribútuma, és ugyanakkor nem engedélyezi a null értékeket.

Bejegyzések törlése

A DELETE utasítás rekordok eltávolítására szolgál egy táblából:

DELETE FROM táblanév WHERE feltétel;

Ez az utasítás eltávolítja a megadott táblarekordokat (nem az egyes oszlopértékeket), amelyek megfelelnek a megadott feltételnek. A feltétel az logikai kifejezés, melynek különféle terveit a korábbi laborokban tárgyalták.

A következő lekérdezés eltávolítja azokat a rekordokat az Ügyfél táblából, amelyekben az Lname oszlop értéke "Ivanov":

TÖRLÉS AZ Ügyféltől

WHERE Lname = "Ivanov"

Ha a táblázat több Ivanov vezetéknevű ügyfélről tartalmaz információkat, akkor mindegyik törlődik.

A WHERE záradék tartalmazhat egy részlekérdezést az adatok kiválasztásához (a SELECT utasítás). A DELETE utasításban lévő segédlekérdezések pontosan ugyanúgy működnek, mint a SELECT utasításban. A következő lekérdezés eltávolítja az összes ügyfelet Moszkva városából, és a város egyedi azonosítóját egy segédlekérdezés segítségével adja vissza.

TÖRLÉS AZ Ügyféltől

WHERE IdCity IN (SELECT IdCity FROM City WHERE CityName = "Moszkva")

A Transact-SQL kiterjeszti a szabványos SQL-t azáltal, hogy lehetővé teszi egy másik FROM záradék használatát a DELETE utasításban. Ez az összekapcsolást meghatározó bővítmény használható a WHERE záradékban szereplő részlekérdezés helyett a törölni kívánt sorok megadásához. Lehetővé teszi adatok beállítását a második FROM-ból, és a megfelelő sorok eltávolítását a táblázatból az első FROM záradékban. Konkrétan az előző lekérdezés a következőképpen írható át

TÖRLÉS AZ Ügyféltől

Ügyféltől k BELSŐ CSATLAKOZÁS

A rekordok táblából való törlése veszélyes abból a szempontból, hogy az SQL utasítás megfogalmazása során fellépő szemantikai (de nem szintaktikai) hibák visszafordíthatatlan adatvesztésének kockázatával járnak. A problémák elkerülése érdekében a rekordok törlése előtt ajánlott először a megfelelő kiválasztási lekérdezés futtatása, hogy megtudja, mely rekordok törlődnek. Így például a korábban tárgyalt törlési lekérdezés végrehajtása előtt nem ártana végrehajtani a megfelelő kiválasztási lekérdezést.

KIVÁLASZT*

Ügyféltől k BELSŐ CSATLAKOZÁS

Város c ON k.IdCity = c.IdCity ÉS c.CityName = "Moszkva"

Az összes rekord eltávolításához egy táblából használja a DELETE utasítást a WHERE kulcsszó nélkül. Ezzel egyidejűleg maga a tábla a benne definiált összes oszloppal mentésre kerül, és készen áll az új rekordok beszúrására. Például a következő lekérdezés eltávolítja az összes termék rekordját.

TÖRLÉS A termékből

Feladat önálló munkára: Fogalmazzon tovább SQL nyelv az összes árut nem tartalmazó rendelés (vagyis az összes üres rendelés) törlésére irányuló kérés.

A változtatási kérelmek a táblák rekordjainak hozzáadására (INSERT INTO), törlésére (DELETE) és frissítésére (UPDATE) szolgálnak.

INSERT INTO parancsot

Az INSERT INTO paranccsal egy vagy több rekordot adhatunk a tábla végéhez.

Az INSERT INTO parancs szintaxisa a következő:
INSERT INTO Táblanév [(Mező_név)] ÉRTÉKEK (Adatértékek);

Például a "Csoportok" táblába tegyünk egy rekordot, amely az adatokat (1, BF-16a, 1, 1) tartalmazza a megfelelő oszlopokban (Csoportazonosító, Név, Tantárgy, Félév).

Ehhez a kéréshez a következő formátumban:
INSERT INTO Csoportok (Csoportkód, Név, Tanfolyam, Félév) ÉRTÉKEK (1, BF-16a, 1, 1);
beírjuk a lekérdező űrlapra a "Létrehozás" fül "Query Builder" parancsának végrehajtásával, "SQL Mode" módban a Nézet menüből.

A lekérdezést "Add_1_records" néven mentjük. Ennek eredményeként egy nem kapcsolódó objektum jelenik meg a "Navigációs terület" - "Add_1_records" (1. ábra).


Rizs. 1.

A lekérdezés mentése után a "Futtatás" ikonra kattintva végre kell hajtania ezt a lekérdezést. Az „Add_1_records” parancs végrehajtása eredményeként az első rekord megjelenik az üres táblában (2. ábra).



Rizs. 2.

UPDATE parancs

Az UPDATE parancs a táblázat oszlopaiban már meglévő rekordok módosítására szolgál, ami lehetővé teszi a táblázat adott oszlopaiban lévő értékek frissítését.

Az UPDATE parancs szintaxisa a következő:
UPDATE Table_Name SET Oszlopnév = Új_Érték WHERE Szűrőfeltétel;

A SET záradék határozza meg azoknak az oszlopoknak a nevét, amelyek adatait módosítani kell. A WHERE záradék nem kötelező, de csak az oszlopok (táblázatok) frissítendő soraira mutathat.

Hozzon létre egy lekérdezést az sql_training_st.mdb adatbázis "Csoportok" táblájában lévő rekord módosításához.

Például módosítsunk egy már meglévő bejegyzést az első kulcsmező azonosítójához a "Csoportok" táblázat "Név" oszlopában.

Kérés a következő formátumban:
UPDATE Groups SET Name="BF-16b" WHERE ID=1;

A lekérdezést "Change_record_1" néven mentjük. Ennek eredményeként egy objektum jelenik meg a "Navigációs terület" - "Change_record_1" (3. ábra).



Rizs. 3.

A lekérdezés mentése után a "Futtatás" ikonra kattintva végre kell hajtania ezt a lekérdezést. A Change_Record_1 parancs végrehajtása eredményeként megjelenik egy párbeszédpanel, amelyben meg kell adni az ID=1 paraméter értékét, és kattintson az OK gombra. A "Csoportok" táblázatban ezek után a műveletek után a "Név" mező bejegyzése BF-16a-ról BF-16b-re változik (4. ábra).



Rizs. 4.

DELETE parancs

A DELETE parancs a rekordok eltávolítására szolgál egy táblából.

A rekordok törlésére vonatkozó kérelem formátuma:
DELETE FROM Table_Name WHERE Kiválasztási_feltétel;

Hozzon létre egy lekérdezést az sql_training_st.mdb adatbázis "Csoportok" táblájában lévő rekord módosításához.

Például töröljük az első kulcsmezőazonosító meglévő bejegyzését a "Csoportok" tábla összes oszlopában (mezőjében).

Ehhez a kéréshez a következő formátumban:
DELETE FROM Groups WHERE ID=1;
hozzon létre a lekérdező űrlapon a "Query Designer" parancs végrehajtásával a "Létrehozás" lapon, a Nézet menü "SQL mód" módjában.

A lekérdezést "Delete_record_1" néven mentjük. Ennek eredményeként egy objektum jelenik meg a "Navigációs terület" - "Delete_record_1" (5. ábra).



Rizs. 5.

A lekérdezés mentése után a "Futtatás" ikonra kattintva végre kell hajtania ezt a lekérdezést. A "Delete_record_1" parancs végrehajtása eredményeként megjelenik egy párbeszédpanel, amelyben meg kell adni az ID=1 paraméter értékét, és kattintson az OK gombra. Ezen lépések után megnyílik a "Rekordok törlésének megerősítése" párbeszédpanel. A "Csoportok" táblában történt megerősítés után minden mezőben lévő adat törlődik, pl. a rekord törlődik (6. ábra).



Rizs. 6.

Meg kell jegyezni, hogy a táblázat egyes mezőiben lévő adatok törléséhez tanácsos az UPDATE parancsot használni, és a kötelező mezőkben lévő értékeket nullára cserélni. Ha a tábla egészét el kell dobni, akkor a DROP TABLE utasítást kell használni (az utasítás szintaxisa: DROP TABLE TableName;).

Állítsuk vissza a "Csoportok" tábla első rekordját az "Add_1_records" parancs végrehajtásával, ennek eredményeként az első rekordot állítjuk vissza (7. ábra).



Rizs. 7.

Általános szintaxis:

a) egy új sor beszúrása a táblázatba:

BESZÁLLÍTÁS<таблица>[(oszlopok)]

ÉRTÉKEK

b) Az allekérdezésben megadott forrásból vett egy vagy több sor beszúrása a táblázatba:

BESZÁLLÍTÁS<таблица>[(oszlopok)]