SQLShack (Magyar)

Ez a cikk az SQL SELECT INTO utasítással foglalkozik, beleértve a szintaxist is, paraméterek, és több táblával, fájlcsoporttal és WHERE feltétellel használható.

Rendszeresen beszúrunk adatokat az SQL Server táblákba, akár egy alkalmazásból, akár közvetlenül az SSMS-ből. Adatokat beszúrhatunk az INSERT INTO utasítással. Ehhez már rendelkeznünk kell egy táblával az adatok beszúrására, mivel nem tudunk táblázatot létrehozni az Insert in utasítás használatával.

A következő feladatokat kell végrehajtanunk az INSERT INTO utasítás használatával.

  • Hozzon létre egy táblázatstruktúrát a megfelelő adattípusokkal
  • Adatok beszúrása

De jó hír, hogy mindkét feladatot elvégezhetjük együtt, elegánsan, az SQL SELECT INTO utasítással. Táblázatszerkezetet hoz létre a Select utasítás által visszaadott oszlopokhoz.

Tegyük fel, hogy sok rekordot akarunk frissíteni egy táblázatban. A SELECT INTO utasítással létrehozhatunk egy tartalék táblázatot a meglévő struktúrával, a forrás táblához hasonlóan. Fedezze fel a SELECT INTO-t ebben a cikkben.

SELECT INTO utasítás szintaxis

1
2
3
4

SELECT oszlop1, oszlop2 .. . OszlopN
INTO New_table
FROM táblákból
;

Paraméterek a SELECT INTO utasításban

  • Oszlopok listája: Meg kell adnunk azt az oszlopot, amelyet be akarunk tölteni és be akarunk illeszteni egy új táblába
  • New_table: Itt adhatjuk meg az új táblázat nevét. Az SQL Server létrehoz egy új táblázatot az oszlopok listájában említett oszlopokkal. Nem cserélhetünk ki egy meglévő táblázatot ezzel. A tábla nevének egyedinek kell lennie
  • Táblázatok: Tartalmaz egy táblázatot, ahonnan rekordokat szeretnénk szerezni. Itt több táblázatot is definiálhatunk, megfelelő Join záradékkal
  • WHERE feltételek: A Where záradék segítségével szűrhetjük a rekordokat. Ez egy opcionális záradék

Fedezzük fel az SQL SELECT INTO utasítást példák segítségével.

Környezet:

Ebben a példában a minta adatbázis AdventureWorks2017. Tegyük fel, hogy rekordokat akarunk kiválasztani a táblából, és új táblát hozunk létre a SELECT INTO utasítás segítségével. Csak az új táblában szeretnénk kijelölt oszlopokat használni. Futtassunk egy select utasítást az Alkalmazottak táblán a kívánt oszlopokkal.

Mielőtt végrehajtanánk az SQL SELECT INTO parancsot utasítás, az sp_help paranccsal ellenőrizhetjük, hogy az Employee_Demo tábla nem létezik-e az AdventureWorks2017 adatbázisban.

1

sp_help “..”

A következő képernyőképen láthatjuk, hogy az Employee_Demo tábla nem létezik az adatbázisomban.

Hajtsa végre a következő lekérdezést, ha új táblát szeretne létrehozni a SELECT INTO utasítással.

A következő kimeneti üzenetet kapjuk az Azure Data Studio-ban. Megjegyezheti, hogy az érintett sorok száma 10. A lekérdezésben kiválasztottuk a top 10 rekordot egy Employee táblából.

Hozzáférhetünk az újonnan létrehozott Employee_Demo táblázat adataihoz, és ellenőrizhetjük, hogy azok ugyanazokat a rekordokat tartalmazzák-e, mint a korábbi select utasításunk.

Nem adtunk meg oszlop tulajdonságokat az SQL SELECT INTO utasításban. Hasonlítsuk össze a forrás- és a céltábla oszlopait és azok tulajdonságait.

Futtathatjuk az sp_help ‘tablename’ parancsot mind az Employee, mind az Employee_Demo táblában. Mindkét tábla kimenetét bemásoltam az excelbe (a kiválasztott oszlopokhoz). A következő képernyőképen láthatja, hogy az oszlop adattípusa és tulajdonságai hasonlóak.

Az előző SQL SELECT INTO utasításban , a forrástábla (Employee) néhány oszlopából előkészítettünk egy céltáblát (Employee_Demo).

Hozzunk létre egy másik táblázatot, amelyben az összes oszlop szerepel az Employee táblázatban, a következő lekérdezéssel.

A kimenetben láthatjuk, hogy 290 sort szúr be az Employee_All táblába.

Ellenőriztük, hogy a SELECT INTO utasítás új táblázatot hoz létre az oszloplistában megadott oszlopokkal. Hasonló adattípust hoz létre a céltáblában is.

Tegyük fel, hogy a forrás táblában vannak elsődleges és idegen kulcsok. Létrehoz egy elsődleges és idegen kulcsot, hasonlóan a forrás táblához? Nem, az SQL SELECT INTO utasítás nem hoz létre kulcsokat a céltáblában. Ha akarjuk, meghatározhatunk kulcsokat a céltáblán. Ellenőrizzük ezt a következő szakaszban.

Korábbi példámban az Alkalmazottak tábla tartalmazza az elsődleges és az idegen kulcsot. Az INFORMATION_SCHEMA nézet segítségével megkaphatjuk a meglévő kulcsok listáját. Hajtsa végre a következő kódot, és visszaadja a meglévő elsődleges és idegen kulcsokat az Alkalmazottak táblában.

Láthatjuk, hogy az Alkalmazottak tábla elsődleges és idegen kulcsokat tartalmaz.

Az Employee_All összes oszlopát átmásoltuk az Employee táblából. Most ellenőriznünk kell az elsődleges és a külföldi kulcsot a céltáblán.

Láthatjuk, hogy nem tartalmaz kulcsot a céltáblában. Rugalmasságot biztosít számunkra, hogy meghatározzuk a kulcsokat a céltáblán.

SQL SELECT INTO – Adatok beszúrása több táblából

Korábbi példákban létrehoztunk egy táblázatot a SELECT INTO utasítás használatával egyetlen tábla Munkavállaló. Több táblához is csatlakozhatunk, és a SELECT INTO utasítással új táblázatot is létrehozhatunk adatokkal. Ebben a szakaszban több asztalt szeretnénk összekapcsolni. A következő lekérdezésben a következő táblákat kapcsoltuk össze az AdventureWorks2017 programban.

Hajtsa végre a következő lekérdezést. Több táblázatból ad eredményt a csatlakozási feltétel és az említett oszlopok alapján.

Végezzen egy lekérdezést, és követni fogjuk az SQL SELECT INTO utasítás kimenetét.

Táblázatot szeretnénk létrehozni a fenti táblázat segítségével visszaadott adatokkal. Hajtsuk végre az SQL SELECT INTO utasítást.

Ez létrehoz. táblázatot és szúrjon be adatokat. A táblázatban szereplő rekordokat a select utasítással ellenőrizhetjük.

Láthatjuk, hogy több táblához is csatlakozhat, és kimenetet hoz létre táblázat a SELECT INTO utasítással.

Nem kell törődnünk a céltábla adattípusainak meghatározásával. Ha táblázatot szeretnénk manuálisan létrehozni, meg kell vizsgálnunk az egyes oszlopok adattípusait, és ennek megfelelően meg kell határoznunk az adattípust. Ha eltér az adattípusok között, hibaüzenetet kaphat, mint például a következő.

1. hiba: Az adattípusok eltérése miatt

Msg 245, 16. szint, 1. állapot , 1. sor

A konvertálás sikertelen, amikor a „GG” varchar értéket int típusúvá konvertálta.

2. hiba: Msg 8152, 16. szint, 30. állapot, 2. sor

Karakterlánc vagy a bináris adatok csonkolódnának.

Ezeket a hibákat nem kapjuk meg, amikor adatokat szúrunk be az SQL SELECT INTO utasítással. Azonban nem tudjuk beilleszteni az adatokat a meglévő táblákba ezzel a módszerrel.

SELECT INTO – Adja meg a filegroup

Az előző szakaszokban azt vizsgáltuk, hogy létrehozhatunk-e új táblázatot, és adatokat beilleszthetünk az SQL SELECT INTO utasítás használatával a meglévő táblákból. Csak az alapértelmezett Filegroup táblázatot hoz létre. Az SQL Server 2016-ig nem adhat meg egy adott fájlcsoportot. Az SQL Server 2017-ben megadhatunk egy adott fájlcsoportot, amelyben új táblát kell létrehozni. Az SQL Server új táblát hoz létre az adott Verify table Filegroup táblában. Ha nem adunk meg egyetlen fájlcsoportot sem az SQL Server 2017, sem az újabb verziókban, akkor egy táblázatot hoz létre az alapértelmezett fájlcsoportban.

Megjegyzés: Nem adhatunk meg fájlcsoportokat az SQL SELECT INTO for SQL Server 2016 és korábbi verziókhoz.

Vegyünk fel egy új Filegroupot az AdventureWorks2017 adatbázisba. Kattintson a jobb gombbal az adatbázisra, és lépjen a Filegroups oldalra.

Ezen a Filegroup oldalon kattintson a FileGroup hozzáadása elemre, és adja meg a Filegroup nevét.

Most kattintson a Fájlok elemre, és felsorolja a meglévő adatbázisfájlokat (adatok és naplófájlok), ezen az oldalon adjon hozzá egy új adatfájlt, és adja meg a FileGroup elemet a legördülő listából. A FileGroup-nak kell lennie, amelyet most hoztunk létre.

SQL-táblázatot szeretnénk létrehozni az INSERTFILE Filegroupban. Nem állítottuk be ezt a fájlcsoportot alapértelmezett fájlcsoportként.

A következő lekérdezésben láthatja, hogy az ON záradékkal megadtuk a fájlcsoport nevét. Hasonlóan működik, mint egy szokásos SQL SELECT INTO utasítás, amelynek különbsége van egy fájlcsoportban.

1
2
3

válassza * a person.person_temp
beillesztési fájlba – FILEGROUP NÉV
from person.person

A tábla létrehozása után hajtson végre egy sp_help parancsot ezen az újonnan létrehozott táblán. A következő képernyőképen ellenőrizhetjük, hogy a táblázat az INSERTFILE FileGroup helyen található-e. Ez a korábban létrehozott FileGroup.

Ezt a tábla tulajdonságaiból is ellenőrizhetjük. Kattintson a jobb gombbal egy táblára az SSMS-ben. A Tárolás részben láthatjuk a kívánt FileGroup-ot.

SELECT INTO Where feltétel

Tegyük fel, hogy egy táblát szeretnénk létrehozni egy SQL SELECT INTO utasítással, amelyben kevés rekord található. Használhatunk egy Where utasításokat, amelyek hasonlóak a select utasításhoz.A következő lekérdezésben szeretnénk létrehozni egy person.person_WC táblát a vezetéknévvel rendelkező személy számára, mint a% Duf%.

1
2
3
4

kijelölés * into person.person_WC
ON INSERTFILE – Ellenőrizze a Filegroup táblát
from person.person
ahol vezetéknév, például “% Duf%”

Következtetés

Ebben a cikkben az SQL-t tártuk fel SELECT INTO utasítás és annak használati forgatókönyvei. Hasznos parancs egy tábla másolatának létrehozása az adattípusok megadása nélkül.

  • Szerző
  • Legutóbbi bejegyzések
MCSA tanúsítvánnyal és az indiai Gurgaonban lévő Microsoft Certified Trainer, 13 éves tapasztalattal, Rajendra különféle nagyvállalatoknál dolgozik, elsősorban a teljesítmény optimalizálására, a monitorozásra, a magas rendelkezésre állásra, valamint a katasztrófa utáni helyreállítási stratégiákra és megvalósításra. Több száz hiteles cikk szerzője az SQL Server, Azure, MySQL, Linux, Power BI, Performance tuning, AWS / Amazon RDS, Git és kapcsolódó technológiákról, amelyeket eddig több mint 10 millió olvasó nézett meg.
Az egyik legnagyobb ingyenes online cikkgyűjtemény létrehozója egyetlen témában, az SQL Server Always On Available Groups 50 részből álló sorozatával. Az SQL Server közösséghez való hozzájárulása alapján különféle díjakkal ismerték el, köztük a rangos “Az év legjobb szerzője” címet folyamatosan 2020-ban és 2021-ben az SQLShacknél.
Raj mindig érdekli az új kihívásokat, így ha tanácsadásra van szüksége segítséget nyújt az írásaiban szereplő bármely témában, elérhető a [email protected] címen
Rajendra Gupta összes bejegyzésének megtekintése

Rajendra Gupta legújabb üzenetei (lásd az összeset)
  • Kisebb és nagyobb verzió frissítések az AWS számára RDS SQL Server – 2021. január 29.
  • AWS RDS PostgreSQL példányok telepítése – 2021. január 27.
  • Helyszíni SQL adatbázisok áttelepítése AWS RDS SQL Server rendszerre AWS DMS használatával – január 25. , 2021

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük