Popunjavanje sql tablice upitom. Primjeri korištenja SELECT INTO

28.03.2020 Savjet

Ako ste imali potrebu spremiti rezultat skupa podataka koje je vratio SQL upit, onda će vam ovaj članak biti zanimljiv, jer ćemo u njemu pogledati SELECT INTO iskaz, uz pomoć kojih Microsoft SQL Server, možete stvoriti novu tablicu i ispuniti je rezultatom SQL upita.

Počet ćemo, naravno, s opisom same naredbe SELECT INTO, a zatim prijeći na primjere.

SELECT INTO izjava u Transact-SQL

ODABERI U– instrukcija u T-SQL jeziku koja kreira novu tablicu i u nju ubacuje dobivene retke iz SQL upita. Struktura tablice, tj. broj i imena stupaca, te vrste podataka i svojstva valjanosti NULL vrijednosti, temeljit će se na stupcima ( izrazi) naveden na popisu odabira izvora u izjavi SELECT. Obično se naredba SELECT INTO koristi za kombiniranje podataka iz nekoliko tablica i pogleda, uključujući neke podatke izračuna, u jednu tablicu.

Da biste koristili naredbu SELECT INTO, morate imati dozvolu CREATE TABLE za bazu podataka u kojoj će se kreirati nova tablica.

Naredba SELECT INTO ima dva argumenta:

  • nova_tablica - ime novi stol;
  • filegroup – grupa datoteka. Ako argument nije naveden, koristi se zadana grupa datoteka. Ova prilika dostupan počevši od Microsoft SQL Servera 2017.

Važne točke o naredbi SELECT INTO

  • Uputa se može koristiti za stvaranje tablice na trenutnom poslužitelju; stvaranje tablice na udaljenom poslužitelju nije podržano;
  • Novu tablicu možete ispuniti podacima iz trenutne baze podataka i trenutnog poslužitelja, ili iz druge baze podataka ili s udaljenog poslužitelja. Na primjer, navedite puni naziv baze podataka kao shema_baze podataka.ime_tablice ili u slučaju udaljenog poslužitelja, povezani_poslužitelj.baza.shema.naziv_tablice;
  • Stupac identiteta u novoj tablici ne nasljeđuje svojstvo IDENTITY ako: izraz sadrži JOIN, UNION, klauzulu GROUP BY, agregatnu funkciju ili ako je stupac identiteta dio izraza, dobiven je iz udaljenog izvora podataka , ili se pojavljuje više puta u izboru popisa. U svim takvim slučajevima, stupac identiteta ne nasljeđuje svojstvo IDENTITY i kreira se kao NOT NULL;
  • Ne možete koristiti izraz SELECT INTO za kreiranje particionirane tablice, čak i ako je izvorna tablica particionirana;
  • Možete odrediti kao novu tablicu obični stol, kao i privremenu tablicu, ali ne možete navesti varijablu tablice ili return tablična vrijednost parametar;
  • Izračunati stupac, ako postoji na popisu odabira naredbe SELECT INTO, u novoj tablici postaje normalan, tj. nije izračunato;
  • SELECT INTO se ne može koristiti s klauzulom COMPUTE;
  • Korištenjem SELECT INTO, indeksi, ograničenja i okidači se ne prenose u novu tablicu, oni se moraju dodatno kreirati, nakon izvršenja naredbe, ako su potrebni;
  • Klauzula ORDER BY ne jamči da će retci u novoj tablici biti umetnuti navedenim redoslijedom.
  • Atribut FILESTREAM se ne prenosi u novu tablicu. BLOB FILESTREAM objekti u novoj tablici bit će BLOB objekti tipa varbinary(max) i imati će ograničenje od 2 GB;
  • Količina podataka upisana u dnevnik transakcija tijekom SELECT INTO operacija ovisi o modelu obnavljanja. U bazama podataka koje koriste skupni model oporavka, i jednostavan model, masovne operacije, koje uključuju SELECT INTO, minimalno se bilježe. Zbog toga naredba SELECT INTO može biti učinkovitija od zasebnih naredbi za kreiranje tablice i naredbi INSERT za njeno ispunjavanje podacima.

Primjeri korištenja SELECT INTO

Pokrenut ću sve primjere u Microsoft SQL Server 2016 Express DBMS.

Početni podaci

Prvo, napravimo dvije tablice i ispunimo ih podacima; te ćemo tablice kombinirati u primjerima.

STVARANJE TABLICE TestTable( 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 VRIJEDNOSTI (1,"Keyboard", 100), (1, "Mouse", 50), (2, "Phone", 300) GO INSERT INTO TestTable2 VALUES (" Računalne komponente"), ("Mobilni uredaji") GO SELECT * FROM TestTable SELECT * FROM TestTable2

Primjer 1 - Stvaranje tablice pomoću SELECT INTO sa spajanjem podataka

Zamislimo da trebamo spojiti dvije tablice i pohraniti dobiveni rezultat u novu tablicu ( na primjer, trebamo dobiti proizvode s nazivom kategorije kojoj pripadaju).

Operacija SELECT INTO SELECT T1.ProductId, T2.CategoryName, T1.ProductName, T1.Price INTO TestTable3 FROM TestTable T1 LIJEVO JOIN TestTable2 T2 ON T1.CategoryId = T2.CategoryId --Odabir podataka iz nove tablice SELECT * FROM TestTable3


Kao rezultat toga, stvorili smo tablicu pod nazivom TestTable3 i ispunili je kombiniranim podacima.

Primjer 2 - Stvaranje privremene tablice pomoću SELECT INTO s grupiranjem podataka

Recimo sada da su nam potrebni grupirani podaci, na primjer, informacije o broju proizvoda u određenoj kategoriji, te podatke trebamo spremiti u privremenu tablicu, na primjer, koristit ćemo te podatke samo u SQL izjavama, pa ćemo ne morate stvoriti punopravnu tablicu.

Stvorite privremenu tablicu (#TestTable) koristeći naredbu SELECT INTO SELECT T2.CategoryName, COUNT(T1.ProductId) AS CntProduct INTO #TestTable FROM TestTable T1 LEFT JOIN TestTable2 T2 ON T1.CategoryId = T2.CategoryId GROUP BY T2.CategoryName - - Dohvaćanje podataka iz privremene tablice SELECT * FROM #TestTable


Kao što vidite, uspjeli smo stvoriti privremenu tablicu #TestTable i ispuniti je grupiranim podacima.

Pa smo pogledali naredbu SELECT INTO u T-SQL jeziku; u mojoj knjizi "Put T-SQL programera" detaljno govorim o svim konstrukcijama T-SQL jezik (Preporučam čitanje), i to je sve za sada!

Rad s bazama podataka izravno je povezan s promjenom tablica i podataka koje one sadrže. Ali prije nego što počnete, morate izraditi tablice. Za automatizaciju ovog procesa postoji poseban - "CREATE TABLE".

Prva stvar!

Prije razumijevanja procesa stvaranja tablica pomoću naredbe MS SQL "CREATE TABLE", vrijedi se zadržati na onome što trebate znati prije korištenja funkcije.

Prije svega, trebate smisliti naziv tablice - ona mora biti jedinstvena u usporedbi s ostalima u bazi podataka i slijediti nekoliko pravila. Ime mora započeti slovom (a-z), nakon čega slijede bilo koja slova, brojke ili podvlake, a rezultirajuća fraza ne smije biti rezervirana riječ. Duljina naziva tablice ne smije premašiti 18 znakova.

Nakon što ste se odlučili za naziv, trebali biste razviti strukturu: osmislite nazive za stupce, razmislite o vrsti podataka koji se u njima koriste i koja polja moraju biti popunjena. Ovdje vrijedi odmah definirati polja stranih i primarnih ključeva, kao i moguća ograničenja vrijednosti podataka.

Preostale nijanse tablice mogu se prilično lako ispraviti, tako da u fazi izrade tablice možda neće biti u potpunosti promišljene.

Sintaksa

Nakon što ste razvili strukturu stola, možete nastaviti s njegovim stvaranjem. To se može učiniti vrlo jednostavno korištenjem SQL funkcije "CREATE TABLE". U njemu se od korisnika traži da navede prethodno izmišljeni naziv tablice i popis stupaca, navodeći vrstu i naziv za svaki od njih. Sintaksa funkcije je sljedeća:

CREATE TABLE naziv_tablice
((column_name datatype …| table_constraint)
[,(column_name datatype …| table_constraint)]…)

Argumenti korišteni u konstrukciji funkcije znače sljedeće:

  • table_name - naziv tablice
  • column_name - ime stupca
  • tip podataka - tip podataka koji se koristi u ovom polju
  • DEFAULT je zadani izraz koji se koristi u stupcu.

Također je moguće koristiti još dva argumenta funkcije:

  • column_constraint - parametri stupca
  • table_constraint - parametri tablice

U njima korisnik može odrediti ograničenja potrebna za rad ili uvjete za popunjavanje tablice.

Značajke izrade tablica

Prilikom pisanja upita s funkcijom ponekad je potrebno postaviti pravila za popunjavanje polja. Da biste to učinili, morate dodati posebne atribute funkcije koji definiraju određeni skup uvjeta.

Kako biste utvrdili može li ćelija sadržavati praznu vrijednost, nakon što navedete naziv i vrstu stupca, trebate unijeti jednu od ključnih riječi: NULL (može postojati prazne vrijednosti) ili NOT NULL (polje mora biti popunjeno).

Kada kreirate tablicu, u većini slučajeva morate objediniti svaki zapis kako biste izbjegli postojanje dva identična. Da biste to učinili, najčešće se koristi numeriranje redaka. A kako se od korisnika ne bi zahtijevalo da zna zadnji broj dostupan u tablici, u funkciji "CREATE TABLE" dovoljno je naznačiti stupac primarnog ključa upisivanjem ključna riječ"Primarni ključ" nakon odgovarajućeg polja. Najčešće se tablice međusobno spajaju primarnim ključem.

Kako bi se osiguralo ulančavanje s primarnim ključem, koristi se svojstvo stranog ključa "FOREIGN KEY". Određivanjem za stupac ovo svojstvo, možete osigurati da ovo polje sadrži vrijednost koja odgovara jednoj od onih u stupcu primarnog ključa iste ili druge tablice. Na taj način može se osigurati dosljednost podataka.

Da biste osigurali provjeru određenog skupa ili definicije, trebali biste koristiti atribut CHECK. Zapisuje se zadnji na popisu argumenata funkcije i ima logički izraz kao osobni parametar. Uz njegovu pomoć možete ograničiti popis mogućih vrijednosti, na primjer, koristeći samo slova "M" i "F" u polju tablice "Spol".

Osim navedenih, funkcija ima još puno specifičnih atributa, no oni se u praksi znatno rjeđe koriste.

Primjeri

Da biste u potpunosti razumjeli princip rada funkcije, vrijedi razmotriti u praksi kako funkcionira CREATE TABLE (SQL). Primjer ispod stvara tablicu prikazanu na slici:

STVARANJE TABLICE Prilagođeno
(ID CHAR(10) NOT NULL Primarni ključ,
Prilagođeno_ime CHAR(20),
Prilagođena_adresa CHAR(30),
Prilagođeni_grad CHAR(20),
Prilagođena_država CHAR(20),
ArcDate CHAR(20))

Kao što vidite, parametar moguća odsutnost vrijednosti u ćeliji (NULL) mogu se izostaviti jer je zadana.

  • Kako mogu kombinirati SELECT izjave tako da mogu izračunati postotke, uspjehe i neuspjehe u SQL Serveru?
  • SQL: Kako odabrati samo pojedinačne retke na temelju nekih vrijednosti svojstava
  • Kako odabrati proizvod s najvećom cijenom u svakoj kategoriji?
LevelId Min. proizvod 1 x 1 2 y 1 3 z 1 4 a 1

Trebam duplicirati iste podatke u bazi podataka mijenjajući samo ID proizvoda iz 1 2,3.... 40

LevelId Min. proizvod 1 x 2 2 y 2 3 z 2 4 a 2

Mogao bih učiniti nešto poput

INSERT INTO dbo.Levels SELECT top 4 * FROM dbo.Levels ali ovo će samo kopirati podatke. Postoji li način da kopiram podatke i zalijepim ih, mijenjajući samo vrijednost proizvoda?

Već ste na putu - morate napraviti još jedan logičan korak:

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

... duplicirat će vaše retke s drugim ID-om proizvoda.

Također imajte na umu da će WHERE Product = 1 biti pouzdaniji od TOP 4. Nakon što imate više od četiri retka u tablici, ne možete jamčiti da će TOP 4 vratiti ista četiri retka osim ako ne dodate i ORDER BY za odabir, međutim WHERE Product = ... uvijek će vratiti isto i nastavit će raditi čak i ako dodate dodatni redak s ID-om proizvoda 1 (gdje ćete morati razmotriti promjenu TOP 4 u TOP 5 itd. ako dodate dodatne retke).

Možete generirati ID proizvoda i zatim ga učitati u:

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

Ovo pretpostavlja da je LevelId stupac identifikatora koji se automatski povećava prilikom umetanja. Ako ne:

Sa cte kao (odaberite 2 kao n uniju sve odaberite n + 1 iz cte gdje je 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;

UMETNI U dbo.Levels (LevelId, Min, Product) ODABERITE TOP 4 LevelId, Min, 2 FROM dbo.Levels

Možete uključiti izraze u SELECT, bilo tvrdo kodirane vrijednosti, ili nešto poput Product + 1 ili nešto drugo.

Očekujem da vjerojatno nećete htjeti umetnuti LevelId, već ga ostaviti tamo da odgovara vašem obrascu. Ako to ne želite, samo ga uklonite iz odjeljaka INSERT i SELECT.

Na primjer, možete koristiti CROSS JOIN na tablici brojeva.

WITH L0 AS(SELECT 1 AS C UNION ALL SELECT 1 AS O), -- 2 retka L1 AS(SELECT 1 AS C FROM L0 KAO KRIŽNO SPAJANJE L0 AS B), -- 4 reda Nums AS(SELECT ROW_NUMBER() PREKO (ORDER BY (SELECT NULL)) AS N FROM L1) SELECT lvl., lvl., num.[N] FROM dbo. lvl KRIŽNI SPOJ Nums num

Ovo će se ponoviti 4 puta.

Prije nego što možete stvoriti SQL tablicu, trebate definirati model baze podataka. Dizajnirajte ER dijagram u kojem ćete definirati entitete, atribute i odnose.

Osnovni koncepti

Entiteti su objekti ili činjenice o kojima se informacije moraju pohraniti. Na primjer, zaposlenik tvrtke ili projekti koje tvrtka provodi. Atributi su komponente koje opisuju ili kvalificiraju entitet. Na primjer, atribut entiteta "zaposlenik" je plaća, a atribut entiteta "projekt" je procijenjeni trošak. Veze su asocijacije između dva elementa. Može biti dvosmjerno. Postoji i rekurzivna veza, odnosno veza entiteta sa samim sobom.

Također je potrebno odrediti ključeve i uvjete pod kojima će se održavati integritet baze podataka. Što to znači? Drugim riječima, ograničenja koja će pomoći da baze podataka budu u ispravnom i dosljednom obliku.

Prijelaz s ER dijagrama na tablični model

Pravila za prijelaz na tablični model:

  1. Pretvorite sve entitete u tablice.
  2. Pretvorite sve atribute u stupce, odnosno svaki atribut entiteta mora se pojaviti u nazivu stupca tablice.
  3. Pretvorite jedinstvene identifikatore u primarne ključeve.
  4. Pretvorite sve odnose u strane ključeve.
  5. Napravite SQL tablicu.

Izrada baze podataka

Prvo morate pokrenuti MySQL poslužitelj. Da biste ga pokrenuli, idite na izbornik "Start", zatim na "Programi", zatim na MySQL i My SQL poslužitelj, odaberite MySQL-Command-Line-Client.

Za izradu baze podataka koristite naredbu Create Database. Ova funkcija ima sljedeći format:

STVARANJE BAZE PODATAKA naziv_baze podataka.

Ograničenja naziva baze podataka su sljedeća:

  • duljina je do 64 znaka i može uključivati ​​slova, brojke, simbole "" i "";
  • ime može započeti brojem, ali mora sadržavati slova.

Trebamo zapamtiti i opće pravilo: Svaki upit ili naredba završavaju razdjelnikom. U SQL-u je uobičajeno koristiti točku i zarez kao razdjelnik.

Poslužitelj mora naznačiti s kojom bazom podataka će morati raditi. Za to postoji izjava USE. Ovaj operator ima jednostavnu sintaksu: USE n naziv_baze podataka.

Stvaranje SQL tablice

Dakle, model je dizajniran, baza podataka je kreirana, a poslužitelju je rečeno kako točno raditi s njom. Sada možete početi stvarati SQL tablice. Postoji jezik za definiranje podataka (DDL). Koristi se za izradu MS SQL tablice, kao i za definiranje objekata i rad s njihovom strukturom. DDL uključuje skup naredbi.

Stvaranje tablice SQL Servera

Koristeći samo jednu DDL naredbu, možete kreirati različite objekte baze podataka mijenjanjem njenih parametara. Koristi se naredba Create Table. tt format izgleda ovako:

STVORI TADLE naziv_tablice,(naziv_stupca1 Ime _stupac2 tip podataka [ograničenje_stupca],[ograničenja_tablice]).

Sintaksu ove naredbe treba detaljnije opisati:

  • Naziv tablice mora imati do 30 znakova i počinjati slovom. Dopušteni su samo abecedni znakovi, slova i simboli "_", "$" i "#". Dopuštena je uporaba ćirilice. Važno je napomenuti da nazivi tablica ne smiju biti isti kao nazivi drugih objekata ili sa rezervirane riječi poslužitelj baze podataka kao što su stupac, tablica, indeks itd.
  • Morate navesti vrstu podataka za svaki stupac. Postoji standardni skup koji koristi većina. Na primjer, Char, Varchar, Number, Date, Null type itd.

  • Parametar Default omogućuje postavljanje zadane vrijednosti. Ovo osigurava da u tablici nema nultih vrijednosti. Što to znači? Zadana vrijednost može biti simbol, izraz, funkcija. Važno je upamtiti da ovaj zadani tip podataka mora odgovarati tipu ulaznog podatka stupca.
  • Ograničenja za svaki stupac koriste se za provođenje uvjeta integriteta podataka na razini tablice. Postoje i druge nijanse. Zabranjeno je brisanje tablice ako o njoj ovise druge tablice.

Kako raditi s bazom podataka

Veliki projekti često zahtijevaju stvaranje više baza podataka, od kojih svaka zahtijeva mnogo tablica. Naravno, korisnicima je nemoguće zadržati sve informacije u svojim glavama. Da biste to učinili, moguće je pregledati strukturu baza podataka i tablica u njima. Postoji nekoliko naredbi, naime:

  • PRIKAŽI BAZE PODATAKA - prikazuje sve kreirane SQL baze podataka na ekranu;
  • PRIKAŽI TABLICE - prikazuje popis svih tablica za trenutnu bazu podataka koje su odabrane naredbom USE;
  • OPISATI naziv_tablice- prikazuje opis svih stupaca tablice.
  • ALTER TABLE - omogućuje promjenu strukture tablice.

Zadnja naredba dopušta:

  • dodajte stupac ili ograničenje u tablicu;
  • promijeniti postojeći stupac;
  • izbrisati stupac ili stupce;
  • ukloniti ograničenja cjelovitosti.

Sintaksa ove naredbe je: ALTER TABLE naziv_tablice( | | | | [(OMOGUĆI | ONEMOGUĆI) KONST ime_ograničenja ] | }.

Postoje i druge naredbe:

  • RENAME - preimenujte tablicu.
  • TRUNCATE TABLE - uklanja sve retke iz tablice. Ova funkcija može biti potrebna kada je potrebno ponovno ispuniti tablicu, ali nema potrebe za pohranjivanjem prethodnih podataka.

Također postoje situacije kada se struktura baze podataka promijenila i tablicu treba izbrisati. Za to postoji naredba DROP. Naravno, prvo je potrebno odabrati bazu iz koje želite obrisati tablicu, ako se razlikuje od trenutne.

Sintaksa naredbe je vrlo jednostavna: DROP TABLE Ime_stolovi.

U SQL pristup kreiranje tablica i njihovo mijenjanje provodi se pomoću istih naredbi navedenih gore.

Pomoću CREATE TABLE možete stvoriti praznu tablicu i zatim je ispuniti podacima. Ali to nije sve. Također možete izravno stvoriti tablicu iz druge tablice. Kao ovo? Odnosno, moguće je definirati tablicu i popuniti je podacima iz druge tablice. Za to postoji posebna ključna riječ AS.

Sintaksa je vrlo jednostavna:

  • STVARANJE TABLICE Ime_stolovi[(definicija_stupca)] AS podupit;
  • definicija_stupca - imena stupaca, pravila integriteta za novostvorene stupce tablice i zadane vrijednosti;
  • podupit - vraća retke koje je potrebno dodati u novu tablicu.

Dakle, takva naredba stvara tablicu s određenim stupcima, ubacuje retke u nju, koji se vraćaju u upitu.

Privremeni stolovi

Privremene tablice su tablice čiji se podaci brišu na kraju svake sesije ili ranije. Koriste se za bilježenje međuvrijednosti ili rezultata. Mogu se koristiti kao radni listovi. Privremene možete definirati u bilo kojoj sesiji, ali njihove podatke možete koristiti samo u trenutnoj sesiji. Stvaranje privremenih SQL tablica slično je uobičajenim tablicama, korištenjem naredbe CREATE TABLE. Kako biste sustavu pokazali da je tablica privremena, trebate koristiti parametar GLOBAL TEMPORARY.

Klauzula ON COMMIT postavlja životni vijek podataka u takvoj tablici i može učiniti sljedeće:

  • DELETE ROWS - brisanje privremene tablice (brisanje svih podataka o sesiji) nakon svakog završetka transakcije. Ovo je obično zadana vrijednost.
  • SAČUVAJ REDOVE - ostavi podatke za korištenje u sljedećoj transakciji. Osim toga, stol možete očistiti tek nakon završetka sesije. Ali postoje neke osobitosti. Ako se transakcija vrati (ROLLBACK), tablica će se vratiti u svoje stanje na kraju prethodne transakcije.

Sintaksa za kreiranje privremene tablice može se prikazati na sljedeći način: CREATE TABLE Ime_stolovi,(Imestupac_1 vrsta podataka [ograničenje_stupca], Ime _stupac2 tip podataka [ograničenje_stupca], [ograničenja_tablice]).

Nakon stvaranja praznih tablica, sljedeći logičan korak je njihovo popunjavanje podacima i ažuriranje tih podataka. Za to postoji nekoliko izjava u Transact-SQL-u: INSERT - AŽURIRANJE.

Međutim, često u kasnoj fazi dizajna postoji potreba za promjenom same sheme tablice. Na primjer, ako se promijenio primarni ključ ili vrsta podataka stupca. Kako se stare tablice ne bi brisale i ne bi se ponovno stvarale uz pomoć CREATE TABLE s ispravnim parametrima, koristi se naredba ALTER TABLE. Primjena ova tri konstrukta razmatra se u nastavku.

Tablice za punjenje

Možete ispuniti tablicu podacima pomoću naredbe CREATE TABLE, ali učinkovitiji pristup je odvojiti kreiranje tablice od njenog popunjavanja, posebno za početnike u SQL-u, jer:

  • vizualno jasniji;
  • Pogodnije je ako se tablice popunjavaju u fazama.

Da biste dobili sljedeći prikaz tablice:

ISKAZNICA. Stanar

Datum rođenja

Broj apartmana

Email adresa

Aleksin. V.V.

Gorbunov D.D.

[e-mail zaštićen]

Simonova K.R.

Dormitotova K.S.

[e-mail zaštićen]

Morat ćete ga izraditi pomoću STVARANJE TABLICE i ispunite ga pomoću naredbe INSERT. Sljedeća izjava dodaje jedan red u tablicu kućnih prijatelja koju smo već stvorili:

Izbrisati prethodna verzija stolovi DROP TABLE ukućani; -- Napravite tablicu. CREATE TABLE housemates(housemeateID int NOT NULL CONSTRAINT primary_id PRIMARY KEY, housemateName nvarchar(30) NOT NULL, BitDate date NOT NULL, apartmentnumber int NOT NULL, Email nvarchar(30)); -- Umetnite podatke u tablicu USE GO INSERT INTO ( , , , ,) VALUES (100,"Aleksin V.V.","19721122",11," [e-mail zaštićen]"), (101,"Gorbunov D.D.","19220525",25," [e-mail zaštićen]"), (102," Simonova K.R. "," 19560211 ", 13," [e-mail zaštićen]"), (103,"Dormitotova K.S.","19770815",9," [e-mail zaštićen]")

U gornjem primjeru moramo razlikovati dva bloka konstrukcije INSERT:

U- pokazuje na tablicu u koju se dodaju podaci

VRIJEDNOSTI- inicijalizacija linijskog unosa.

U parametrima (u zagradama) bloka U Stupci su navedeni redoslijedom kojim se pojavljuju. Zapis bez parametara je prihvatljiv ako je redoslijed stupaca prilikom izrade tablice i prilikom njenog popunjavanja isti. Sljedeći kod je identičan prethodnom:

UMETNI U VRIJEDNOSTI (100,"Aleksin. V.V.","19721122",11," [e-mail zaštićen]"), (101,"Gorbunov D.D.","19220525",25," [e-mail zaštićen]"), (102," Simonova K.R. "," 19560211 ", 13," [e-mail zaštićen]"), (103,"Dormitotova K.S.","19770815",9," [e-mail zaštićen]")

Ako trebate promijeniti redoslijed punjenja, to morate izričito naznačiti:

INSERT INTO (,,, ,) VRIJEDNOSTI ("Alexin. V.V.",101,"19721122"," [e-mail zaštićen]",11), ("Gorbunov D.D.",102,"19220525"," [e-mail zaštićen]",25), ("Simonova K.R",103,"19560211"," [e-mail zaštićen]",13) ("Dormitotova K.S.",104,"19770815"," [e-mail zaštićen]",9)

U bloku VRIJEDNOSTI, inicijalizacija red po red se izvodi prema redoslijedu stupaca bloka INTO. Ispuna reda je popis vrijednosti ćelija u zagradama. Vrijednosti su navedene odvojene zarezima, a linije su odvojene jedna od druge.

Konstrukciju INSERT možete primijeniti samo na one stupce koji još ne sadrže podatke. U protivnom će doći do pogreške u izvršenju zahtjeva.

Ažuriranje tablice

Potreba za ažuriranjem tablica javlja se ako je potrebno promijeniti podatke koji su već uneseni u tablicu. Izvedeno prema uputama AŽURIRAJ. Ako INSERT radi samo s praznim tablicama, tada UPDATE radi samo s ispunjenim. Ako je zahtjev upućen na prazne ćelije, pojavit će se pogreška.

Sljedeći kod će dodijeliti novi poštanski sandučić stanaru kuće s matičnim brojem 103.

AŽURIRAJ sustanare POSTAVLJAJ Email = " [e-mail zaštićen]" WHERE housemeateID = 103

Blok SET- ovo je blok promjena. Ako trebate ažurirati vrijednost nekoliko ćelija, one su navedene odvojene zarezima.

AŽURIRAJ housemates SET Email = "homemanage [e-mail zaštićen]", housemateName = "Rurik S.S." WHERE housemeateID = 103

Mijenjanje stola

U kasnijim fazama projektiranja ili nakon razvoja baze često se javlja potreba:

  • dodati ili ukloniti stupac;
  • promijeniti vrstu stupca;
  • odredite stupac ili grupu stupaca kao primarni ili strani ključ ili uklonite ta ograničenja.

Za sve ove operacije postoji uputa za nadjačavanje. ATER STOL.

Za dodavanje stupca koristi se naredba ALTER TABLE s klauzulom ADD. Dodajmo novi stupac u tablicu ukućana iz prethodnog odjeljka:

ALTER TABLE sustanari ADD PhoneNumber nvarchar(12) NULL;

Na to trebate primijeniti rečenicu IZMIJENI STUPAC unutar ALTER TABLE:

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

Uklanja stupac pomoću ISPUSTI STUPAC unutar ALTER TABLE:

ALTER TABLE ukućani DROP COLUMN PhoneNumber;

Primarni ili strani ključ uklanja se i dodaje korištenjem konstrukcija ALTER TABLE ADD CONSTRAINT/DROP CONSTRAINT:

Uklonite ograničenje primarnog ključa iz stupca housemeateID ALTER TABLE housemates DROP CONSTRAINT primary_id; --Dodijelite stupac housemeateID kao primarni ključ ALTER TABLE housemates ADD CONSTRAINT PK_ID PRIMARY KEY (housemeateID);

Ako pokušate dodijeliti primarni ključ tablici koja već postoji, prevoditelj upita će vratiti pogrešku. Stoga, ako tablica već ima primarni ključ, trebali biste ga ukloniti i odrediti grupu stupaca kao primarni ključ. Na primjer, ovako:

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