Lisää tiedot

Valmis

Transact-SQL tarjoaa useita tapoja lisätä rivejä taulukkoon.

LISÄÄ-lauseke

LISÄÄ-lauseketta käytetään lisäämään yksi tai useampi rivi taulukkoon. Lausekkeessa on useita muotoja.

Yksinkertaisen INSERT-lausekkeen perussyntaksi näytetään alla:

INSERT [INTO] <Table> [(column_list)]
VALUES ([ColumnName or an expression or DEFAULT or NULL],…n)

Tässä LISÄÄ-lausekkeen muodossa, jota kutsutaan LISÄÄ ARVOJA-lausekkeeksi, voit määrittää sarakkeet, joihin arvot sijoitetaan, ja järjestyksen, jossa tiedot esitetään kullekin taulukkoon lisätylle riville. column_list on valinnainen, mutta suositeltavaa. Ilman column_list INSERT-lauseke odottaa arvoa taulukon jokaiselle sarakkeelle siinä järjestyksessä, jossa sarakkeet määritettiin. Voit myös antaa näiden sarakkeiden arvot pilkuin eroteltuna luettelona.

Luetteloidessaan arvoja avainsana DEFAULT tarkoittaa ennalta määritettyä arvoa, joka määritettiin taulukkoa luotaessa. Oletusarvo voidaan määrittää kolmella tavalla:

  • Jos sarakkeelle on määritetty automaattisesti muodostettu arvo, kyseistä arvoa käytetään. Automaattisesti luoduista arvoista keskustellaan myöhemmin tässä moduulissa.
  • Kun taulukko luodaan, sarakkeelle voidaan antaa oletusarvo, ja kyseistä arvoa käytetään, jos DEFAULT on määritetty.
  • Jos sarake on määritetty sallimaan NULL-arvot, eikä sarake ole automaattisesti muodostettu sarake eikä sillä ole oletusarvoa määritettynä, NULL lisätään DEFAULT-arvoksi.

Taulukon luonnin tiedot eivät kuulu tämän moduulin alueeseen. Usein on kuitenkin hyödyllistä nähdä, mitä sarakkeita taulukossa on. Helpoin tapa on vain suorittaa SELECT-lauseke taulukossa palauttamatta mitään rivejä. Kun käytät WHERE-ehtoa, joka ei voi koskaan olla TRUE, rivejä ei voi palauttaa.

SELECT * FROM Sales.Promotion
WHERE 1 = 0;

Tämä lauseke näyttää kaikki sarakkeet ja niiden nimet, mutta se ei näytä tietotyyppejä tai mitään ominaisuuksia, kuten onko NULL-arvot sallittu tai onko määritetty oletusarvoja. Esimerkki kyselyn tulostuloksista voi näyttää tältä:

Kampanjan nimi

StartDate

ProductModelID

Alennus

Muistiinpanot

Voit lisätä tietoja tähän taulukkoon käyttämällä LISÄÄ-lauseketta tässä esitetyllä tavalla.

INSERT INTO Sales.Promotion (PromotionName,StartDate,ProductModelID,Discount,Notes)
VALUES
('Clearance Sale', '01/01/2021', 23, 0.1, '10% discount');

Tässä yllä olevassa esimerkissä sarakeluettelo voidaan jättää pois, koska annamme arvon jokaiselle sarakkeelle oikeassa järjestyksessä:

INSERT INTO Sales.Promotion
VALUES
('Clearance Sale', '01/01/2021', 23, 0.1, '10% discount');

Oletetaan, että taulukko on määritetty siten, että startDate-sarakkeessa käytetään nykyisen päivämäärän oletusarvoa ja Huomautukset-sarakkeessa null-arvoja. Voit ilmaista, että haluat käyttää näitä arvoja eksplisiittisesti seuraavasti:

INSERT INTO Sales.Promotion
VALUES
('Pull your socks up', DEFAULT, 24, 0.25, NULL);

Vaihtoehtoisesti voit jättää arvot pois INSERT-lausekkeesta, jolloin oletusarvoa käytetään, jos se on määritetty, ja jos oletusarvoa ei ole, mutta sarake sallii NULL-arvot, lisätään NULL. Jos et anna arvoja kaikille sarakkeille, sinulla on oltava sarakeluettelo, joka ilmaisee, mitä sarakearvoja annat.

INSERT INTO Sales.Promotion (PromotionName, ProductModelID, Discount)
VALUES
('Caps Locked', 2, 0.2);

Yksittäisen rivin kerrallaan lisäämisen lisäksi INSERT VALUES -lauseketta voidaan käyttää useiden rivien lisäämiseksi antamalla useita pilkuin eroteltuja arvojoukkoja. Arvojoukot erotetaan toisistaan myös pilkuilla, kuten tässä:

(col1_val,col2_val,col3_val),
(col1_val,col2_val,col3_val)

Tätä arvoluetteloa kutsutaan taulukkoarvokonstruktoriksi. Tässä on esimerkki kahden rivin lisäämisestä taulukkoon taulukkoarvokonstruktorilla:

INSERT INTO Sales.Promotion
VALUES
('The gloves are off!', DEFAULT, 3, 0.25, NULL),
('The gloves are off!', DEFAULT, 4, 0.25, NULL);

INSERTTI... VALIKOIDA

Sen lisäksi, että T-SQL määrittää lisää-lausekkeessa arvoliteraalijoukon, se tukee myös muiden toimintojen tulosten käyttämistä arvojen antamiseen LISÄÄ-toiminnolle. Voit käyttää SELECT-lausekkeen tuloksia tai tallennetun toimintosarjan tulosta syöttääksesi ARVOT LISÄÄ-lausekkeelle.

Jos haluat käyttää LISÄÄ-lauseketta sisäkkäisen SELECT-kohteen kanssa, luo SELECT-lauseke VALUES-lauseen korvaamiseksi. Tämän lomakkeen, jonka nimi on LISÄÄ SELECT, avulla voit lisätä SELECT-kyselyn palauttamien rivien joukon kohdetaulukkoon. Lisää SELECT -parametrin käyttö esittää samat seikat kuin LISÄÄ ARVOT:

  • Voit halutessasi määrittää sarakeluettelon taulukon nimen jälkeen.
  • Sinun on annettava kullekin sarakkeelle sarakearvot tai DEFAULT tai NULL.

Seuraava syntaksi havainnollistaa LISÄÄ SELECT -valikon käyttöä:

INSERT [INTO] <table or view> [(column_list)]
SELECT <column_list> FROM <table_list>...;

Huomautus

Tallennettujen toimintosarjojen (tai jopa dynaamisten erien) tulosjoukkoja voidaan käyttää myös syötteenä LISÄÄ-lausekkeeseen. Tämä LISÄÄ-muoto, jonka nimi on LISÄÄ EXEC, on käsitteellisesti samanlainen kuin LISÄÄ SELECT, ja se esittää samat seikat. Tallennetut toimintosarjat voivat kuitenkin palauttaa useita tulosjoukkoja, joten niitä on varottava.

Seuraavassa esimerkissä lisätään useita rivejä uudelle tarjoukselle nimeltä Get Framed noutamalla mallin tunnus ja mallin nimi Production.ProductModel-taulukosta jokaiselle mallille, jonka nimessä on "kehys".

INSERT INTO Sales.Promotion (PromotionName, ProductModelID, Discount, Notes)
SELECT DISTINCT 'Get Framed', m.ProductModelID, 0.1, '10% off ' + m.Name
FROM Production.ProductModel AS m
WHERE m.Name LIKE '%frame%';

Toisin kuin alikyselyssä, sisäkkäistä SELECT-parametria, jota käytetään INSERT-parametrin kanssa, ei ole sulkeissa.

VALIKOIDA... SISÄÄN

Toinen rivien lisäysvaihtoehto, joka muistuttaa LISÄÄ SELECT -toimintoa, on SELECT INTO -lauseke. Suurin ero LISÄÄ SELECT- ja SELECT INTO -funktioiden välillä on se, että SELECT INTO -funktiota ei voi käyttää rivien lisäämiseksi olemassa olevaan taulukkoon, koska se luo aina uuden taulukon, joka perustuu SELECT-funktion tulokseen. Jokaisella uuden taulukon sarakkeella on sama nimi, tietotyyppi ja tyhjäarvo kuin vastaavalla sarakkeella (tai lausekkeella) SELECT-luettelossa.

Jos haluat käyttää SELECT INTO -intoa, lisää INTO <new_table_name> kyselyn SELECT-lauseessa juuri ennen FROM-lausetta. Tässä on esimerkki, joka poimii tiedot Sales.SalesOrderHeader-taulukosta uuteen taulukkoon nimeltä Sales.Invoice..

SELECT SalesOrderID, CustomerID, OrderDate, PurchaseOrderNumber, TotalDue
INTO Sales.Invoice
FROM Sales.SalesOrderHeader;

SELECT INTO -arvo epäonnistuu, jos olemassa on jo taulukko, jonka nimi on määritetty INTO-kohteen jälkeen. Kun taulukko on luotu, sitä voidaan käsitellä kuten mitä tahansa muuta taulukkoa. Voit valita siitä, liittää sen muihin taulukoihin tai lisätä siihen lisää rivejä.