Sql tábla kitöltése lekérdezéssel. Példák a SELECT INTO használatára

28.03.2020 Tanácsot

Ha el kellett mentenie az SQL-lekérdezés által visszaadott eredményhalmazt, akkor ez a cikk érdekes lesz, mivel ebben megnézzük SELECT INTO utasítás, melynek segítségével Microsoft SQL Szerver, létrehozhat egy új táblát, és kitöltheti egy SQL lekérdezés eredményével.

Kezdjük természetesen magának a SELECT INTO utasításnak a leírásával, majd továbblépünk a példákra.

SELECT INTO utasítás a Transact-SQL-ben

VÁLASZTÁS BE– T-SQL nyelvű utasítás, amely egy új táblát hoz létre, és az SQL lekérdezésből kapott sorokat ebbe illeszti be. Táblázat szerkezet, i.e. oszlopok száma és neve, valamint adattípusok és érvényességi tulajdonságok NULL értékek, oszlopok ( kifejezéseket) megadva a SELECT utasítás forráskiválasztási listájában. Általában a SELECT INTO utasítást több tábla és nézet adatainak egy táblába egyesítésére használják, beleértve néhány számítási adatot is.

A SELECT INTO utasítás használatához CREATE TABLE engedéllyel kell rendelkeznie ahhoz az adatbázishoz, amelyben az új tábla létrejön.

A SELECT INTO utasításnak két argumentuma van:

  • new_table - név új asztal;
  • fájlcsoport – fájlcsoport. Ha nincs megadva argumentum, akkor az alapértelmezett fájlcsoport kerül felhasználásra. Ez a lehetőség Microsoft SQL Server 2017-től kezdve elérhető.

Fontos tudnivalók a SELECT INTO utasítással kapcsolatban

  • Az utasítás használható tábla létrehozására az aktuális szerveren, a tábla létrehozása távoli szerveren nem támogatott;
  • Új táblát tölthet fel adatokkal akár az aktuális adatbázisból és az aktuális szerverről, akár egy másik adatbázisból vagy egy távoli szerverről. Például adja meg az adatbázis teljes nevét a következőképpen: adatbázis_séma.tábla_neve vagy távoli szerver esetén, linked_server.database.schema.table_name;
  • Egy új tábla identitásoszlopa nem örökli az IDENTITY tulajdonságot, ha: az utasítás tartalmaz egy JOIN, UNION, egy GROUP BY záradékot, egy összesítő függvényt, vagy ha az identitásoszlop egy kifejezés része, távoli adatforrásból származik. , vagy többször is megjelenik egy listában. Minden ilyen esetben az identitás oszlop nem örökli az IDENTITY tulajdonságot, és NEM NULLként jön létre;
  • A SELECT INTO utasítás nem használható particionált tábla létrehozására, még akkor sem, ha a forrástábla particionált;
  • Megadhatja új táblaként rendes asztal, valamint egy ideiglenes tábla, de nem adhat meg táblaváltozót vagy visszatérést táblázat értéke paraméter;
  • Számított oszlop, ha a SELECT INTO utasítás kijelölőlistájában van ilyen, az új táblában normálissá válik, pl. nincs kiszámítva;
  • A SELECT INTO nem használható COMPUTE záradékkal;
  • A SELECT INTO használatával az indexek, megszorítások és triggerek nem kerülnek át az új táblába, azokat az utasítás végrehajtása után, ha szükséges, külön kell létrehozni;
  • Az ORDER BY záradék nem garantálja, hogy az új tábla sorai a megadott sorrendben kerülnek beillesztésre.
  • A FILESTREAM attribútum nem kerül átvitelre az új táblába. Az új tábla BLOB FILESTREAM objektumai varbinary(max) típusú BLOB objektumok lesznek, és 2 GB-os korláttal rendelkeznek;
  • A SELECT INTO műveletek során a tranzakciós naplóba írt adatok mennyisége a helyreállítási modelltől függ. A tömegesen naplózott helyreállítási modellt használó adatbázisokban és egyszerű modell, a tömeges műveletek, amelyek magukban foglalják a SELECT INTO-t is, minimális naplózásra kerülnek. Emiatt a SELECT INTO utasítás hatékonyabb lehet, mint a különálló utasítások a tábla létrehozásához és az INSERT utasítások az adatokkal való kitöltéshez.

Példák a SELECT INTO használatára

Az összes példát a Microsoft SQL Server 2016 Express DBMS-ben fogom futtatni.

Kezdeti adatok

Először hozzunk létre két táblát, és töltsük fel adatokkal, ezeket a táblákat kombináljuk a példákban.

TÁBLÁZAT LÉTREHOZÁSA TesztTable( IDENTITY(1,1) NOT NULL, NOT NULL, (100) NOT NULL, NULL) ON GO CREATE TABLE TestTable2( IDENTITY(1,1) NOT NULL, (100) NOT NULL) ON GO INSERT INTO TestTable ÉRTÉKEK (1,"Billentyűzet", 100), (1, "Egér", 50), (2, "Telefon", 300) GO BESZÚRÁS A 2. teszttáblázatba ÉRTÉKEK (" Számítógép alkatrészek"), ("Mobil eszközök") GO SELECT * FROM TestTable SELECT * FROM TestTable2

1. példa - Táblázat létrehozása a SELECT INTO használatával az adategyesítéssel

Képzeljük el, hogy össze kell egyesítenünk két táblát, és az eredményt egy új táblában kell tárolnunk ( például olyan termékeket kell beszereznünk, amelyek kategóriájába tartoznak).

Művelet SELECT INTO SELECT T1.ProductId, T2.CategoryName, T1.ProductName, T1.Price INTO TestTable3 FROM TestTable T1 LEFT JOIN TestTable2 T2 ON T1.CategoryId = T2.CategoryId --Adatok kiválasztása egy új táblából * FROMTSELECT3


Ennek eredményeként létrehoztunk egy TestTable3 táblát, és feltöltöttük az egyesített adatokkal.

2. példa - Ideiglenes tábla létrehozása a SELECT INTO segítségével az adatok csoportosításával

Most tegyük fel, hogy szükségünk van csoportosított adatokra, például egy bizonyos kategóriába tartozó termékek számára vonatkozó információkra, és ezeket az adatokat egy ideiglenes táblába kell mentenünk, például ezeket az információkat csak SQL utasításokban fogjuk használni, így nem kell teljes értékű táblázatot létrehoznia.

Hozzon létre egy ideiglenes táblát (#TestTable) a SELECT INTO SELECT T2.CategoryName, COUNT(T1.ProductId) AS CntProduct INTO utasítással. - Adatok lekérése egy ideiglenes táblából SELECT * FROM #TestTable


Amint látja, sikerült létrehoznunk egy ideiglenes #TestTable táblát, és azt csoportosított adatokkal feltölteni.

Tehát megnéztük a SELECT INTO utasítást a T-SQL nyelven; a „T-SQL programozói út” című könyvemben részletesen beszélek az összes konstrukcióról. T-SQL nyelv (Ajánlom elolvasni), és egyelőre ennyi!

Az adatbázisokkal való munka közvetlenül kapcsolódik a táblák és a bennük lévő adatok megváltoztatásához. De mielőtt elkezdené, létre kell hozni táblázatokat. Ennek a folyamatnak az automatizálására van egy speciális - „TÁBLÁZAT LÉTREHOZÁSA”.

Első dolog!

Mielőtt megértené a táblák létrehozásának folyamatát az MS SQL "CREATE TABLE" parancsával, érdemes elidőzni azon, hogy mit kell tudni a függvény használata előtt.

Először is meg kell adnia a tábla nevét - egyedinek kell lennie az adatbázisban lévő többihez képest, és számos szabályt kell követnie. A névnek egy betűvel (a-z) kell kezdődnie, amelyet bármilyen betű, szám vagy aláhúzás követhet, és a kapott kifejezés nem lehet fenntartott szó. A táblázat nevének hossza nem haladhatja meg a 18 karaktert.

A név elhatározása után ki kell alakítani egy struktúrát: az oszlopoknak nevezzenek ki, gondolják át, hogy milyen adattípust használnak azokban, és mely mezőket kell kitölteni. Itt érdemes azonnal meghatározni az idegen és elsődleges kulcsok mezőit, valamint az adatértékekre vonatkozó esetleges korlátozásokat.

A táblázat fennmaradó árnyalatai meglehetősen könnyen korrigálhatók, ezért előfordulhat, hogy a táblázat elkészítésének szakaszában nincsenek teljesen átgondolva.

Szintaxis

A táblázat szerkezetének kidolgozása után folytathatja a létrehozását. Ez egyszerűen megtehető a "CREATE TABLE" SQL függvény használatával. Ebben a felhasználónak meg kell adnia a korábban kitalált tábla nevét és oszloplistáját, mindegyik típusát és nevét. A függvény szintaxisa a következő:

TÁBLÁZAT LÉTREHOZÁSA táblanév
((oszlop_neve adattípus …| táblázat_megszorítás)
[,(oszlopnév adattípus …| táblázat_megszorítás)]…)

A függvénykonstrukcióban használt argumentumok a következőket jelentik:

  • táblázat_neve - tábla neve
  • oszlopnév – oszlopnév
  • adattípus – az ebben a mezőben használt adattípus
  • A DEFAULT az oszlopban használt alapértelmezett kifejezés.

Két további függvényargumentum is használható:

  • oszlop_kényszer – oszlopparaméterek
  • table_constraint - táblázat paraméterei

Ezekben a felhasználó megadhatja a munkavégzéshez szükséges korlátozásokat vagy a táblázat kitöltésének feltételeit.

A táblázatok létrehozásának jellemzői

Függvényes lekérdezés írásakor néha szükséges a mezők kitöltési szabályainak megadása. Ehhez speciális függvényattribútumokat kell hozzáadnia, amelyek egy adott feltételkészletet határoznak meg.

Annak megállapításához, hogy egy cella tartalmazhat-e üres értéket, az oszlop nevének és típusának megadása után a következő kulcsszavak egyikét kell beírni: NULL (lehet üres értékek) vagy NEM NULL (a mezőt ki kell tölteni).

Táblázat létrehozásakor a legtöbb esetben egységesíteni kell az egyes rekordokat, hogy ne legyen két egyforma. Ehhez leggyakrabban sorszámozást használnak. És annak érdekében, hogy a felhasználónak ne kelljen tudnia a táblázatban elérhető utolsó számot, a "TÁBLÁZAT LÉTREHOZÁSA" funkcióban elegendő az elsődleges kulcs oszlopának megadása írásban. kulcsszó"Elsődleges kulcs" a megfelelő mező után. Leggyakrabban az elsődleges kulcs segítségével kapcsolják össze a táblákat.

Az elsődleges kulccsal való összefűzés biztosítására a „FOREIGN KEY” idegen kulcs tulajdonságot használjuk. Az oszlop megadásával ezt az ingatlant, akkor biztosíthatja, hogy ez a mező olyan értéket tartalmazzon, amely megegyezik az ugyanazon vagy egy másik tábla elsődleges kulcs oszlopában szereplő értékekkel. Így biztosítható az adatok konzisztenciája.

Ha egy meghatározott halmazhoz vagy definícióhoz szeretne ellenőrizni, használja a CHECK attribútumot. A függvényargumentumok listájában utolsóként van írva, és logikai kifejezése van személyes paraméterként. Segítségével korlátozhatja a lehetséges értékek listáját, például a „Nem” táblázat mezőjében csak az „M” és „F” betűket használja.

A bemutatottakon kívül a függvénynek számos specifikus attribútuma van, de a gyakorlatban sokkal ritkábban használatosak.

Példák

A függvény működési elvének teljes megértéséhez érdemes a gyakorlatban átgondolni, hogy a CREATE TABLE (SQL) hogyan működik. Az alábbi példa az ábrán látható táblázatot hozza létre:

TÁBLÁZAT LÉTREHOZÁSA Egyéni
(ID CHAR(10) NOT NULL Elsődleges kulcs,
Egyéni_név CHAR(20),
Egyéni_cím CHAR(30),
Egyéni_város CHAR(20),
Egyéni_ország CHAR(20),
ArcDate CHAR(20))

Mint látható, a paraméter lehetséges hiányzás a cellában lévő értékek (NULL) elhagyhatók, mivel ez az alapértelmezett.

  • Hogyan kombinálhatom a SELECT utasításokat, hogy ki tudjam számítani a százalékos arányokat, a sikereket és a kudarcokat az SQL Serverben?
  • SQL: Hogyan lehet csak egyes sorokat kiválasztani egyes tulajdonságértékek alapján
  • Hogyan válasszuk ki a maximális árú terméket az egyes kategóriákban?
LevelId Min termék 1 x 1 2 y 1 3 z 1 4 a 1

Ugyanazokat az adatokat kell megkettőznem az adatbázisban úgy, hogy csak a termékazonosítót módosítom 1-ről 2,3.... 40

LevelId Min termék 1 x 2 2 y 2 3 z 2 4 a 2

Valami ilyesmit tudnék csinálni

INSERT INTO dbo.Levels SELECT top 4 * from FROM dbo.Levels, de ez csak az adatokat másolja. Van mód arra, hogy másoljam az adatokat és illessszem be, csak a Termék értékét módosítva?

A legjobb úton halad – még egy logikus lépést kell tennie:

INSERT INTO dbo.Levels (LevelID, Min, Product) SELECT LevelID, Min, 2 FROM dbo.Levels WHERE Termék = 1

... megduplázza a sorait egy másik termékazonosítóval.

Vegye figyelembe azt is, hogy a WHERE termék = 1 megbízhatóbb lesz, mint a TOP 4. Ha négynél több sora van a táblázatban, nem garantálhatja, hogy a TOP 4 ugyanazt a négy sort adja vissza, hacsak nem ad hozzá egy ORDER BY-t is a kiválasztáshoz, azonban a WHERE termék = ... mindig ugyanazt adja vissza, és még akkor is folytatja a munkát. ha hozzáad egy további sort az 1. termékazonosítóval (ahol fontolóra kell vennie a TOP 4-et TOP 5-re stb., ha további sorokat ad hozzá).

Létrehozhatja a termékazonosítót, majd betöltheti a következőbe:

< 40) INSERT INTO dbo.Levels(`min`, product) SELECT `min`, cte.n as product fROM dbo.Levels l cross join cte where l.productId = 1;

Ez azt feltételezi, hogy a LevelId egy azonosító oszlop, amely a beillesztéskor automatikusan növekszik. Ha nem:

A cte as paranccsal (válassza ki a 2-t n unióként mind válassza ki az n + 1-et a cte-ből, ahol n< 40) INSERT INTO dbo.Levels(levelid, `min`, product) SELECT l.levelid+(cte.n-1)*4, `min`, cte.n as product fROM dbo.Levels l cross join cte where l.productId = 1;

INSERT INTO dbo.Levels (LevelId, Min, Product) SELECT TOP 4 LevelId, Min, 2 FROM dbo.Levels

Kifejezéseket is beilleszthet a SELECT-be, akár keménykódolt értékeket, akár valami olyasmit, mint a Product + 1 vagy valami más.

Arra számítok, hogy valószínűleg nem szeretné beszúrni a LevelId-et, hanem hagyja ott, hogy illeszkedjen a mintájához. Ha nem szeretné ezt, egyszerűen távolítsa el az INSERT és a SELECT szakaszból.

Például használhatja a CROSS JOIN funkciót egy számtáblázaton.

WITH L0 AS(SELECT 1 AS C UNION ALL SELECT 1 AS O), -- 2 sor L1 AS(SELECT 1 AS C FROM L0 AS A CROSS JOIN L0 AS B), -- 4 sor Számok AS(SELECT ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS N FROM L1) SELECT lvl., lvl., num.[N] FROM dbo. lvl CROSS JOIN Num szm

Ez 4-szer megismétlődik.

Mielőtt létrehozna egy SQL-táblát, meg kell határoznia az adatbázis-modellt. Tervezzen egy ER diagramot, amelyben entitásokat, attribútumokat és kapcsolatokat definiálhat.

Alapfogalmak

Az entitások olyan objektumok vagy tények, amelyekről információt kell tárolni. Például egy vállalat alkalmazottja vagy a vállalat által megvalósított projektek. Az attribútumok olyan összetevők, amelyek egy entitást írnak le vagy minősítenek. Például az „alkalmazott” entitás attribútuma a fizetés, a „projekt” entitás attribútuma pedig a becsült költség. A kapcsolatok két elem közötti asszociációk. Lehet kétirányú. Létezik rekurzív kapcsolat is, vagyis egy entitás kapcsolata önmagával.

Meg kell határozni azokat a kulcsokat és feltételeket is, amelyek mellett az adatbázis integritását fenntartják. Mit jelent? Más szóval, olyan korlátozások, amelyek segítenek az adatbázisok helyes és következetes formában tartásában.

Átmenet ER diagramról táblázatos modellre

A táblázatos modellre való áttérés szabályai:

  1. Konvertálja az összes entitást táblázatokká.
  2. Konvertálja az összes attribútumot oszlopokká, vagyis minden entitásattribútumnak meg kell jelennie a tábla oszlopnevében.
  3. Konvertálja az egyedi azonosítókat elsődleges kulcsokká.
  4. Konvertálja az összes kapcsolatot idegen kulcsokká.
  5. Hozd létre az SQL táblát.

Adatbázis létrehozása

Először el kell indítania a MySQL szervert. Az elindításához lépjen a "Start" menübe, majd a "Programok", majd a MySQL és a My menüpontba SQL szerver, válassza a MySQL-Command-Line-Client lehetőséget.

Adatbázis létrehozásához használja az Adatbázis létrehozása parancsot. Ez a funkció a következő formátummal rendelkezik:

ADATBÁZIS LÉTREHOZÁSA adatbázis név.

Az adatbázis nevére vonatkozó korlátozások a következők:

  • hossza legfeljebb 64 karakter, és tartalmazhat betűket, számokat, "" és "" szimbólumokat;
  • a név kezdődhet számmal, de betűket kell tartalmaznia.

Emlékeznünk kell és Általános szabály: Minden lekérdezés vagy parancs határolóval végződik. Az SQL-ben gyakori a pontosvessző használata elválasztóként.

A szervernek jeleznie kell, hogy melyik adatbázissal kell dolgoznia. Erre van egy USE utasítás. Ennek az operátornak egyszerű szintaxisa van: USE n adatbázis név.

SQL-tábla létrehozása

Tehát megtervezik a modellt, létrehozzák az adatbázist, és a szerver pontosan megmondja, hogyan kell vele dolgozni. Most elkezdheti az SQL-táblák létrehozását. Van Data Definition Language (DDL). MS SQL tábla létrehozására, valamint objektumok meghatározására és szerkezetükkel való munkára szolgál. A DDL egy sor parancsot tartalmaz.

SQL Server tábla létrehozása

Egyetlen DDL-parancs használatával különféle adatbázis-objektumokat hozhat létre a paramétereinek változtatásával. A Tábla létrehozása parancsot használjuk. A tt formátum így néz ki:

CREATE TADLE táblázat_név,(oszlop_neve1 Név _oszlop2 adattípus [oszlop_megszorítás], [táblamegszorítások]).

Ennek a parancsnak a szintaxisát részletesebben le kell írni:

  • A táblázat nevének legfeljebb 30 karakter hosszúnak kell lennie, és betűvel kell kezdődnie. Csak alfabetikus karakterek, betűk, valamint a „_”, „$” és „#” szimbólumok megengedettek. A cirill ábécé használata megengedett. Fontos megjegyezni, hogy a táblanevek nem egyezhetnek meg más objektumok nevével, vagy nem egyezhetnek meg fenntartott szavak adatbázis-kiszolgáló, például oszlop, táblázat, index stb.
  • Minden oszlophoz meg kell adni egy adattípust. Van egy szabványkészlet, amelyet a legtöbben használnak. Például Char, Varchar, Number, Date, Null típus stb.

  • Az Alapértelmezett paraméter lehetővé teszi az alapértelmezett érték beállítását. Ez biztosítja, hogy a táblázatban ne legyenek null értékek. Mit jelent? Az alapértelmezett érték lehet szimbólum, kifejezés, függvény. Fontos megjegyezni, hogy ennek az alapértelmezett adattípusnak meg kell egyeznie az oszlop bemeneti adattípusával.
  • Az egyes oszlopokra vonatkozó megszorítások a táblaszintű adatok integritási feltételeinek érvényesítésére szolgálnak. Vannak más árnyalatok is. Tilos törölni egy táblát, ha más táblák is függenek tőle.

Hogyan kell dolgozni az adatbázissal

A nagy projektek gyakran több adatbázis létrehozását teszik szükségessé, amelyek mindegyikéhez sok tábla szükséges. Természetesen lehetetlen, hogy a felhasználók minden információt a fejükben tartsanak. Ehhez lehetőség van az adatbázisok és táblák szerkezetének megtekintésére a bennük. Számos parancs létezik, nevezetesen:

  • ADATBÁZISOK MUTATÁSA – az összes létrehozott SQL adatbázist megjeleníti a képernyőn;
  • TÁBLÁZATOK MEGJELENÍTÉSE – megjeleníti az aktuális adatbázishoz tartozó összes tábla listáját, amelyet a USE paranccsal kiválasztott;
  • LEÍRÁS táblázat_neve- a táblázat összes oszlopának leírását mutatja.
  • ALTER TABLE - lehetővé teszi a táblázat szerkezetének megváltoztatását.

Az utolsó parancs lehetővé teszi:

  • oszlop vagy kényszer hozzáadása a táblázathoz;
  • meglévő oszlop módosítása;
  • oszlop vagy oszlopok törlése;
  • távolítsa el az integritási korlátokat.

A parancs szintaxisa: ALTER TABLE táblázat_neve( | | | | [(ENgedélyezés | LETILTÁS) ÁLLANDÓ megszorítás_neve ] | }.

Vannak más parancsok is:

  • RENAME - nevezze át a táblázatot.
  • A TÁBLÁZAT csonkolása – eltávolítja az összes sort a táblázatból. Erre a funkcióra akkor lehet szükség, ha újra ki kell tölteni a táblázatot, de nincs szükség korábbi adatok tárolására.

Vannak olyan helyzetek is, amikor az adatbázis szerkezete megváltozott, és a táblát törölni kell. Erre van egy DROP parancs. Természetesen először ki kell választani azt az adatbázist, amelyből törölni kívánjuk a táblát, ha az eltér a jelenlegitől.

A parancs szintaxisa meglehetősen egyszerű: DROP TABLE Név_tables.

BAN BEN SQL hozzáférés A táblázatok létrehozása és módosítása a fent felsorolt ​​parancsokkal történik.

A TÁBLÁZAT LÉTREHOZÁSA segítségével létrehozhat egy üres táblázatot, majd kitöltheti adatokkal. De ez még nem minden. Közvetlenül egy másik táblázatból is létrehozhat táblázatot. Mint ez? Vagyis lehetőség van egy tábla definiálására és egy másik tábla adataival való feltöltésére. Erre van egy speciális AS kulcsszó.

A szintaxis nagyon egyszerű:

  • TÁBLÁZAT LÉTREHOZÁSA Név_tables[(oszlop_definíció)] AS segédlekérdezés;
  • oszlop_definíció - oszlopnevek, integritási szabályok az újonnan létrehozott táblaoszlopokhoz és alapértelmezett értékek;
  • subquery – visszaadja azokat a sorokat, amelyeket hozzá kell adni az új táblához.

Így egy ilyen parancs létrehoz egy táblázatot bizonyos oszlopokkal, sorokat szúr be abba, amelyeket a lekérdezésben visszaad.

Ideiglenes asztalok

Az ideiglenes táblák olyan táblák, amelyek adatai minden munkamenet végén vagy korábban törlődnek. Köztes értékek vagy eredmények rögzítésére szolgálnak. Feladatlapként használhatók. Bármely munkamenetben megadhat ideigleneseket, de ezek adatait csak az aktuális munkamenetben használhatja. Az ideiglenes SQL-táblák létrehozása hasonló a normál táblákhoz, a CREATE TABLE paranccsal. Ahhoz, hogy megmutassa a rendszernek, hogy a tábla ideiglenes, a GLOBAL TEMPORARY paramétert kell használni.

Az ON COMMIT záradék beállítja az adatok élettartamát egy ilyen táblában, és a következőkre képes:

  • SOROK TÖRLÉSE - minden tranzakció befejezése után törölje az ideiglenes táblát (törölje az összes munkamenet adatot). Általában ez az alapértelmezett érték.
  • SOROK MEGŐRZÉSE - hagyja meg az adatokat a következő tranzakcióhoz. Ezenkívül csak a munkamenet vége után törölheti a táblázatot. De van néhány sajátosság. Ha egy tranzakciót visszagörgetnek (ROLLBACK), a tábla visszaáll az előző tranzakció végén lévő állapotába.

Az ideiglenes tábla létrehozásának szintaxisa a következőképpen ábrázolható: CREATE TABLE Név_tables,(Névoszlop_1 adattípus [oszlop_megszorítás], Név _oszlop2 adattípus [oszlop_megszorítás], [tábla_megszorítások]).

Az üres táblák létrehozása után a következő logikus lépés az adatok feltöltése és az adatok frissítése. A Transact-SQL-ben van néhány utasítás erre: BEHELYEZÉS – FRISSÍTÉS.

Gyakran azonban a tervezés késői szakaszában magát a táblázatsémát kell megváltoztatni. Például, ha egy oszlop elsődleges kulcsa vagy adattípusa megváltozott. Annak érdekében, hogy a régi táblákat ne töröljük, és ne hozzuk létre újra a CREATE TABLE segítségével a megfelelő paraméterekkel, az ALTER TABLE utasítást használjuk. Ennek a három konstrukciónak az alkalmazását az alábbiakban tárgyaljuk.

Táblázatok kitöltése

A táblát a CREATE TABLE utasítással kitöltheti adatokkal, de hatékonyabb megközelítés a tábla létrehozásának és kitöltésének különválasztása, különösen az SQL-ben kezdők számára, mert:

  • vizuálisan tisztább;
  • Kényelmesebb, ha a táblázatokat szakaszosan töltik ki.

A következő táblázat nézet megjelenítéséhez:

ID. Bérlő

Születési dátum

Házszám

Email cím

Alekszin. V.V.

Gorbunov D.D.

[e-mail védett]

Simonova K.R.

Dormitotova K.S.

[e-mail védett]

segítségével kell létrehoznia TÁBLÁZAT LÉTREHOZÁSAés töltse ki az INSERT utasítás segítségével. A következő utasítás hozzáad egy sort az általunk már létrehozott házitársak táblázathoz:

Töröl előző verzió asztalok DROP TABLE háziak; -- Hozzon létre egy táblázatot. TÁBLÁZAT LÉTREHOZÁSA housemates(housemeateID int NOT NULL CONSTRAINT first_id PRIMARY KEY, housemateName nvarchar(30) NOT NULL, BithDate date NOT NULL, apartmentnumber int NOT NULL, Email nvarchar(30)); -- Adatok beszúrása a táblázatba USE GO INSERT INTO ( , , , ,) VALUES (100,"Aleksin V.V.","19721122",11," [e-mail védett]"), (101,"Gorbunov D.D.","19220525",25," [e-mail védett]"), (102," Simonova K.R. "," 19560211 ", 13," [e-mail védett]"), (103,"Dormitotova K.S.","19770815",9," [e-mail védett]")

A fenti példában különbséget kell tennünk az INSERT konstrukció két blokkja között:

BA- rámutatva arra a táblázatra, amelybe az adatokat hozzáadjuk

ÉRTÉKEK- vonali bemenet inicializálása.

A blokk paramétereiben (zárójelben). BA Az oszlopok a megjelenésük sorrendjében vannak felsorolva. Paraméter nélküli rekord akkor elfogadható, ha az oszlopok sorrendje a táblázat elkészítésekor és kitöltésekor megegyezik. A következő kód megegyezik az előzővel:

INSERT TO VALUES (100,"Aleksin. V.V.","19721122",11," [e-mail védett]"), (101,"Gorbunov D.D.","19220525",25," [e-mail védett]"), (102," Simonova K.R. "," 19560211 ", 13," [e-mail védett]"), (103,"Dormitotova K.S.","19770815",9," [e-mail védett]")

Ha módosítani kell a kitöltési sorrendet, akkor ezt kifejezetten jelezni kell:

INSERT INTO (,,, ,) VALUES ("Alexin. V.V.",101,"19721122"," [e-mail védett]",11), ("Gorbunov D.D.",102,"19220525"," [e-mail védett]",25), ("Simonova K.R",103,"19560211"," [e-mail védett]",13) ("Dormitotova K.S.",104,"19770815"," [e-mail védett]",9)

Az VALUES blokkban a soronkénti inicializálás az INTO blokk oszlopainak sorrendjében történik. A sor kitöltése a cellaértékek listája zárójelben. Az értékek vesszővel, a sorok pedig egymástól elválasztva jelennek meg.

Az INSERT konstrukciót csak azokra az oszlopokra alkalmazhatja, amelyek még nem tartalmaznak adatokat. Ellenkező esetben kérésvégrehajtási hiba lép fel.

Táblázat frissítése

A táblák frissítésének szükségessége akkor merül fel, ha módosítani kell a táblába már bevitt adatokat. Az utasítások alapján végrehajtva FRISSÍTÉS. Ha az INSERT csak üres táblákkal működik, akkor az UPDATE csak kitöltött táblákkal működik. Ha a kérés üres celláknak szól, hiba történik.

A következő kód hozzárendel egy újat Postafiók 103-as azonosító számú ház lakójának.

UPDATE housemates SET Email = " [e-mail védett]" WHERE housemeateID = 103

Blokk KÉSZLET- ez a változások blokkja. Ha több cella értékét kell frissíteni, akkor azok vesszővel elválasztva jelennek meg.

UPDATE housemates SET Email = "homemanage [e-mail védett]", housemateName = "Rurik S.S." WHERE housemeateID = 103

Asztalcsere

A tervezés későbbi szakaszaiban vagy az alap fejlesztése után gyakran felmerül az igény:

  • oszlop hozzáadása vagy eltávolítása;
  • oszloptípus módosítása;
  • jelöljön ki egy oszlopot vagy oszlopcsoportot elsődleges vagy idegen kulcsként, vagy távolítsa el ezeket a korlátozásokat.

Mindezekhez a műveletekhez tartozik egy felülírási utasítás. ATER ASZTAL.

Oszlop hozzáadásához az ALTER TABLE utasítást kell használni az ADD záradékkal együtt. Adjunk hozzá egy új oszlopot a házitársak táblázatához az előző részből:

ALTER TABLE housemates ADD PhoneNumber nvarchar(12) NULL;

Egy mondatot kell rá alkalmazni ALTER OSZLOP belül ALTER TABLE:

ALTER TABLE housemates ALTER COLUMN PhoneNumber char(25) NOT NULL;

Eltávolít egy oszlopot a használatával DROP OSZLOP belül ALTER TABLE:

ALTER TABLE housemates DROP COLUMN PhoneNumber;

Az elsődleges vagy az idegen kulcs eltávolítása és hozzáadása az ALTER TABLE ADD CONSTRAINT/DROP CONSTRAINT konstrukciók segítségével történik:

Távolítson el egy elsődleges kulcs kényszert a housemeateID oszlopból ALTER TABLE housemates DROP CONSTRAINT elsődleges_azonosító; -- Rendelje hozzá a housemeateID oszlopot elsődleges kulcsnak ALTER TABLE housemates ADD CONSTRAINT PK_ID PRIMARY KEY (housemeateID);

Ha megpróbál elsődleges kulcsot rendelni egy már ott lévő táblához, a lekérdezésfordító hibát ad vissza. Ezért, ha a táblának már van elsődleges kulcsa, távolítsa el, és jelöljön ki egy oszlopcsoportot elsődleges kulcsként. Például így:

ALTER TABLE housemates DROP CONSTRAINT PK_ID; ALTER TABLE housemates ADD CONSTRAINT PK_ID,PK_AN PRIMARY KEY (housemeateID,apartmentnumber);