SQLShack (Suomi)

Tämä artikkeli kattaa SQL SELECT INTO -käskyn syntaksin, parametrit ja käyttö useiden taulukoiden, tiedostoryhmien ja WHERE-ehdon kanssa.

Lisäämme tietoja säännöllisesti SQL Server -taulukoihin joko sovelluksesta tai suoraan SSMS: ään. Voimme lisätä tietoja INSERT INTO -käskyllä. Tätä varten meillä on oltava jo taulukko tietojen lisäämiseksi siihen, koska emme voi luoda taulukkoa käyttämällä Lisää lauseeseen.

Seuraavat tehtävät on tehtävä INSERT INTO -käskyllä.

  • Luo taulukkorakenne sopivilla tietotyypeillä
  • Lisää siihen tietoja

Mutta hyvä uutinen on, että voimme suorittaa molemmat tehtävät yhdessä tyylikkäästi käyttämällä SQL SELECT INTO -käskyä. Se luo taulukkorakenteen Select-käskyn palauttamille sarakkeille.

Oletetaan, että haluamme päivittää monia taulukon tietueita. Voimme käyttää SELECT INTO -käskyä luomaan varmuuskopiotaulukon, jolla on olemassa oleva lähdetaulukon rakenne. Tutkitaan tämän artikkelin SELECT INTO -ohjelmaa.

SELECT INTO-lauseen syntaksit

1
2
3
4

SELECT sarake1, sarake2 .. .ColumnN
INTO New_table
FROM taulukot
;

SELECT INTO-lauseen parametrit

  • Sarakeluettelo: Meidän on määritettävä sarake, jonka haluamme hakea ja lisätä uuteen taulukkoon.
  • New_table: Voimme määrittää uuden taulukon nimen täältä. SQL Server luo uuden taulukon sarakeluettelossa mainituilla sarakkeilla. Emme voi korvata olemassa olevaa taulukkoa tällä tavalla. Taulukon nimen tulee olla yksilöllinen
  • Taulukot: Se sisältää taulukon, josta haluamme saada tietueita. Meillä voi olla useita taulukoita, jotka on määritelty tässä myös asianmukaisella Join-lauseella.
  • WHERE-ehdot: Voimme suodattaa tietueet Where-lausekkeen avulla. Se on valinnainen lauseke

Tutkitaan SQL SELECT INTO -käsky esimerkkien avulla.

Ympäristö:

Tässä esimerkissä käytämme esimerkkitietokanta AdventureWorks2017. Oletetaan, että haluamme valita tietueet taulukosta ja luoda uuden taulukon käyttämällä SELECT INTO -käskyä. Haluamme valitut sarakkeet vain uuteen taulukkoon. Suoritetaan Select-lause Employee-taulukossa haluamillamme sarakkeilla.

Ennen kuin suoritamme SQL SELECT INTO: n lauseke, voimme varmistaa, että Employee_Demo-taulukkoa ei ole AdventureWorks2017-tietokannassa sp_help-komennolla.

1

sp_help ”..”

Seuraavassa kuvakaappauksessa voimme nähdä, että Employee_Demo-taulukkoa ei ole tietokannassani.

Suorita seuraava kysely luoda uusi taulukko käyttämällä SELECT INTO -käskyä.

Saamme seuraavan tulosviestin Azure Data Studiossa. Voit huomata, että rivien määrä, johon asia vaikuttaa, on 10. Kyselyssä valitsimme 10 parasta tietuetta Employee-taulukosta.

Voimme käyttää tietoja äskettäin luotusta taulukosta Employee_Demo ja varmistaa, että se sisältää samat tietueet kuin edellisessä select-lauseessamme.

Emme määritelleet sarakkeen ominaisuuksia SQL SELECT INTO -käskyssä. Verrataan lähde- ja kohdetaulukon sarakkeita ja niiden ominaisuuksia.

Voimme suorittaa sp_help ‘tablename’ -komennon sekä Employee- että Employee_Demo -taulukoissa. Kopioin molempien taulukoiden lähdöt Exceliin (valituille sarakkeille). Seuraavassa kuvakaappauksessa näet, että sarakkeen tietotyyppi ja niiden ominaisuudet ovat samanlaiset.

Edellisessä SQL SELECT INTO -käskyssä , valmistelimme kohdetaulukon (Employee_Demo) muutamasta lähdetaulukon sarakkeesta (Employee).

Luodaan toinen taulukko, jossa on kaikki työntekijän taulukon sarakkeet ja seuraava kysely.

Tuloksessa voimme nähdä, että se on lisännyt 290 riviä Employee_All -taulukkoon.

Olemme varmistaneet, että SELECT INTO -lauseke luo uuden taulukon, jossa on sarakeluettelossa määritetyt sarakkeet. Se luo samanlaisen tietotyypin myös kohdetaulukkoon.

Oletetaan, että lähdetaulukossa on ensisijainen ja vieras avain. Luodaanko se ensisijainen avain ja vieras avain samankaltaisia kuin lähdetaulukko? Ei, SQL SELECT INTO -käsky ei luo avaimia kohdetaulukkoon. Haluttaessa voimme määrittää avaimet kohdetaulukossa. Tarkistetaan tämä seuraavassa osassa.

Aikaisemmassa esimerkissä Työntekijä-taulukko sisältää siinä määritetyn ensisijaisen ja vieraan avaimen. Voimme saada luettelon olemassa olevista avaimista käyttämällä INFORMATION_SCHEMA-näkymää. Suorita seuraava koodi ja se palauttaa olemassa olevat Ensisijaiset ja Ulkomaiset avaimet Työntekijä-taulukossa.

Voimme nähdä, että Työntekijä-taulukko sisältää ensisijaiset ja vieraat avaimet.

Kopioimme kaikki sarakkeet Työntekijä_Kaikki Työntekijä-taulukosta. Meidän on tarkistettava ensisijainen ja ulkomainen avain kohdetaulukossa nyt.

Voimme nähdä, että se ei sisällä avainta kohdetaulukossa. Se antaa meille joustavuutta määritellä avaimet kohdetaulukossa.

SQL SELECT INTO – Lisää tietoja useista taulukoista

Aikaisemmissa esimerkeissä loimme taulukon käyttämällä SELECT INTO -käskyä yhdestä taulukosta Työntekijä. Voimme myös liittää useita taulukoita ja luoda SELECT INTO -käskyn avulla myös uuden taulukon, joka sisältää tietoja. Tässä osassa haluamme liittää useita taulukoita yhteen. Seuraavassa kyselyssä yhdistimme seuraavat taulukot yhdessä AdventureWorks2017: ssä.

Suorita seuraava kysely. Se antaa tuloksia useista taulukoista liittymisehdon ja mainittujen sarakkeiden perusteella.

Suorita kysely ja seuraamme SQL SELECT INTO -käskyn tulosta.

Haluamme luoda taulukon, jonka tiedot palautetaan yllä olevan taulukon avulla. Suoritetaan SQL SELECT INTO -käsky.

Se luo. ja lisää siihen tiedot. Voimme tarkistaa tämän taulukon tietueet select-lauseella.

Voimme nähdä, että voit liittää useita taulukoita yhteen ja luoda tulosteen taulukko käyttäen SELECT INTO -käskyä.

Meidän ei tarvitse huolehtia kohdetaulukon tietotyyppien määrittelystä. Jos haluamme luoda taulukon manuaalisesti, meidän on tarkasteltava kunkin sarakkeen tietotyyppiä ja määritettävä tietotyyppi vastaavasti. Jos tietotyyppien välillä on ristiriitoja, saat virheilmoituksen, kuten seuraava.

Virhe 1: Tietotyyppien ristiriitaisuuden vuoksi

Viesti 245, taso 16, tila 1 , Rivi 1
Muunnos epäonnistui muunnettaessa varchar-arvo GG tietotyypiksi int.

Virhe 2: Msg 8152, taso 16, tila 30, rivi 2

Merkkijono tai binääridata katkaistaisiin.

Emme saa näitä virheitä, kun lisätään tietoja SQL SELECT INTO -käskyllä. Emme kuitenkaan voi lisätä tietoja olemassa oleviin taulukoihin tällä menetelmällä.

SELECT INTO – Määritä tiedostoryhmä

Edellisissä osioissa selvitimme, että voimme luoda uuden taulukon ja lisätä siihen tietoja käyttämällä olemassa olevien taulukoiden SQL SELECT INTO -käskyä. Se luo taulukon vain oletustiedostoryhmässä. Voimme määrittää tietyn tiedostoryhmän vasta SQL Server 2016. SQL Server 2017: ssä voimme määrittää tietyn tiedostoryhmän, johon uusi taulukko tulisi luoda. SQL Server luo uuden taulukon kyseiseen Verify table Filegroup -sovellukseen. Jos emme määritä tiedostoryhmiä SQL Server 2017: ssä ja uudemmissa, se luo taulukon oletusarvoiseen Filegroup-ryhmään.

Huomaa: Emme voi määrittää tiedostoryhmiä SQL SELECT 2016: ssa ja sitä aikaisemmissa SQL SELECT INTO -ohjelmassa.

Lisää uusi tiedostoryhmä AdventureWorks2017-tietokantaan. Napsauta hiiren kakkospainikkeella tietokantaa ja siirry kohtaan Filegroups.

Napsauta tällä Filegroup-sivulla Lisää FileGroup ja määritä Filegroup-nimi.

Napsauta nyt Tiedostot ja siinä luetellaan olemassa olevat tietokantatiedostot (data- ja lokitiedosto), lisää tälle sivulle uusi tietotiedosto ja määritä FileGroup pudotusvalikosta. Sen pitäisi olla juuri luomamme FileGroup.

Haluamme luoda SQL-taulukon INSERTFILE-tiedostoryhmään. Emme ole asettaneet tätä tiedostoryhmää oletustiedostoryhmäksi.

Seuraavassa kyselyssä näet, että määritimme tiedostoryhmän nimen käyttämällä ON-lauseketta. Se toimii samalla tavalla kuin tavallinen SQL SELECT INTO -käsky, jolla on ero tiedostoryhmässä.

1
2
3

valitse * osaksi person.person_temp
ON INSERTFILE –FILEGROUP NIMI
henkilöstä.henkilö

Kun taulukko on luotu, suorita sp_help-komento tälle uudelle taulukolle. Seuraavassa kuvakaappauksessa voimme varmistaa, että taulukko sijaitsee INSERTFILE FileGroupissa. Se on aiemmin luomamme FileGroup.

Voimme varmistaa tämän myös taulukon ominaisuuksista. Napsauta hiiren kakkospainikkeella taulukkoa SSMS: ssä. Tallennus-osiossa voimme nähdä halutun FileGroupin.

SELECT INTO missä -ehto

Oletetaan, että haluamme luoda taulukon, jossa on SQL SELECT INTO -käsky, jossa on vain vähän tietueita. Voimme käyttää Where-lauseketta, joka on samanlainen kuin select-lause.Seuraavassa kyselyssä haluamme luoda person.person_WC-taulukon henkilölle, jolla on sukunimi, on kuin% Duf%.

1
2
3
4

valitse * into person.person_WC
ON INSERTFILE – Tarkista taulukko Filegroup
person.person
jossa sukunimi kuten ”% Duf%”

Johtopäätös

Tässä artikkelissa tutustuimme SQL: ään SELECT INTO -lauseke ja sen käyttöskenaariot. On hyödyllinen komento luoda kopio taulusta määrittelemättä tietotyyppejä.

  • Kirjoittaja
  • Viimeisimmät viestit
MCSA-sertifikaattina ja Intian Gurgaonissa toimiva Microsoft Certified Trainer, jolla on 13 vuoden kokemus, Rajendra työskentelee useissa suurissa yrityksissä, jotka keskittyvät suorituskyvyn optimointiin, seurantaan, korkeaan käytettävyyteen sekä hätäpalautumisstrategioihin ja toteutukseen. Hän on kirjoittanut satoja arvovaltaisia artikkeleita SQL Server, Azure, MySQL, Linux, Power BI, Performance tuning, AWS / Amazon RDS, Git ja niihin liittyvistä tekniikoista, joita tähän mennessä on lukenut yli 10 miljoonaa lukijaa.
Hän on luonut yhden suurimmista ilmaisista online-artikkelikokoelmista yhdestä aiheesta, 50-osaisella sarjalla SQL Server Always On Availability Groups -ryhmässä. Hänen osuutensa perusteella SQL Server -yhteisöön hänet on tunnustettu useilla palkinnoilla, kuten arvostettu ”Vuoden paras kirjailija” jatkuvasti vuosina 2020 ja 2021 SQLShackissa.
Raj on aina kiinnostunut uusista haasteista, joten jos tarvitset konsultointia apua mistä tahansa hänen kirjoituksissaan käsitellystä aiheesta, hän on tavoitettavissa osoitteessa [email protected]
Näytä kaikki viestit, jotka on kirjoittanut Rajendra Gupta

Viimeisimmät viestit, jotka on kirjoittanut Rajendra Gupta (katso kaikki)
  • Pienien ja suurten versiopäivitysten tekeminen AWS: lle RDS SQL Server – 29. tammikuuta 2021
  • AWS RDS PostgreSQL -esiintymien käyttöönotto – 27. tammikuuta 2021
  • Paikallisten SQL-tietokantojen siirtäminen AWS RDS SQL Serveriin AWS DMS: n avulla – 25. tammikuuta , 2021

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *