Prijelaz sa ER dijagrama na tabelarni model

Rad sa bazama podataka direktno je povezan sa promjenom tabela i podataka koje one sadrže. Ali prije nego što počnete, moraju se kreirati tabele. Za automatizaciju ovog procesa postoji poseban - „KREIRAJ TABELU“.

Prva stvar!

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

Prije svega, morate smisliti ime za tablicu - ono mora biti jedinstveno u poređenju s ostalima u bazi podataka i slijediti nekoliko pravila. Ime mora početi slovom (a-z), iza kojeg slijede sva slova, brojke ili donje crte, a rezultirajuća fraza ne smije biti rezervirana riječ. Dužina naziva tabele ne smije biti veća od 18 znakova.

Nakon što ste se odlučili za ime, trebali biste razviti strukturu: smisliti imena za stupce, razmisliti o tipu podataka koji se koristi u njima 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 kreiranja tablice možda neće biti u potpunosti promišljene.

Sintaksa

Nakon što ste razvili strukturu tabele, možete nastaviti sa njenim kreiranjem. Ovo se može učiniti vrlo jednostavno korištenjem SQL funkcije "CREATE TABLE". U njemu se od korisnika traži da navede prethodno izmišljeno ime tabele i listu kolona, ​​navodeći tip i naziv za svaku od njih. Sintaksa funkcije je sljedeća:

CREATE TABLE ime_tablice
((tip podataka ime_stupca…| ograničenje_tablice)
[,(naziv_stupca tip podataka …| ograničenje_tablice)]…)

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

  • table_name - ime tabele
  • column_name - ime kolone
  • datatype - tip podataka koji se koristi u ovom polju
  • DEFAULT je podrazumevani izraz koji se koristi u koloni.

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

  • column_constraint - parametri stupca
  • table_constraint - parametri tabele

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

Karakteristike kreiranja tabela

Prilikom pisanja upita sa 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.

Da biste utvrdili da li ćelija može sadržavati praznu vrijednost, nakon što odredite naziv i tip kolone, trebate unijeti jednu od ključnih riječi: NULL (možda ima praznih vrijednosti) ili NOT NULL (polje mora biti popunjeno).

Prilikom kreiranja tabele, u većini slučajeva morate objediniti svaki zapis kako biste izbegli da imate dva identična. Da biste to učinili, najčešće se koristi numeriranje redova. I, kako ne bi zahtijevali od korisnika da zna posljednje izdanje postojeće u tabeli, u funkciji "CREATE TABLE" dovoljno je pisanjem navesti kolonu primarnog ključa ključna riječ"Primarni ključ" iza odgovarajućeg polja. Najčešće se tabele spajaju pomoću primarnog ključa.

Da bi se osigurala konkatenacija sa primarnim ključem, koristi se svojstvo stranog ključa "FOREIGN KEY". Određivanjem ovog svojstva za kolonu, možete osigurati da će ovo polje sadržavati vrijednost koja odgovara jednoj od onih koje se nalaze u koloni primarnog ključa iste ili druge tablice. Na ovaj način se može osigurati konzistentnost podataka.

Da biste pružili provjeru prema određenom skupu ili definiciji, trebali biste koristiti CHECK atribut. Piše se zadnji na listi argumenata funkcije i ima neki lični parametar logički izraz. Uz njegovu pomoć možete ograničiti listu mogućih vrijednosti, na primjer, koristeći samo slova "M" i "F" u polju tablice "Spol".

Pored prikazanih, funkcija ima mnogo specifičnijih atributa, ali se u praksi koriste mnogo rjeđe.

Primjeri

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

CREATE TABLE Custom
(ID CHAR(10) NOT NULL Primarni ključ,
Custom_name CHAR(20),
Custom_address CHAR(30),
Custom_city CHAR(20),
Custom_Country CHAR(20),
ArcDate CHAR(20)

Kao što vidite, parametar moguće odsustvo Vrijednosti u ćeliji (NULL) mogu se izostaviti jer su zadane.

Nakon kreiranja praznih tabela, sljedeći logičan korak je da ih popunite podacima i ažurirate te podatke. Postoji nekoliko izjava u Transact-SQL-u za ovo: INSERT - UPDATE.

Međutim, često u kasnoj fazi dizajna postoji potreba za promjenom same šeme tablice. Na primjer, ako se promijenio primarni ključ ili tip podataka stupca. Da se stare tabele ne brišu i ne stvaraju ponovo uz pomoć CREATE TABLE sa ispravnim parametrima, koristi se naredba ALTER TABLE. Primjena ove tri konstrukcije je razmotrena u nastavku.

Popunjavanje tabela

Možete popuniti tablicu podacima koristeći izraz CREATE TABLE, ali je efikasniji pristup odvojiti kreiranje tablice i njeno popunjavanje, posebno za početnike u SQL-u, jer:

  • vizuelno jasnije;
  • Pogodnije je ako se tabele popunjavaju u fazama.

Da biste dobili sljedeći prikaz tabele:

ID. Stanar

Datum rođenja

Broj stana

E-mail adresa

Aleksin. V.V.

Gorbunov D.D.

[email protected]

Simonova K.R.

Dormitotova K.S.

[email protected]

Morat ćete ga kreirati koristeći CREATE TABLE i popunite ga koristeći INSERT izraz. Sljedeće upute dodaje jedan red u tabelu ukućana koju smo već kreirali:

Izbriši prethodna verzija stolovi DROP TABLE ukućani; -- Napravite tabelu. CREATE TABLE housemates(housemeateID int NOT NULL OGRANIČENJA primarni_id PRIMARY KEY, housemateName nvarchar(30) NOT NULL, BitDate date NOT NULL, apartmentnumber int NOT NULL, Email nvarchar(30)); -- Ubacite podatke u tabelu KORISTI IDI INSERT INTO ( , , , ,) VRIJEDNOSTI (100,"Aleksin V.V.","19721122",11," [email protected]"), (101,"Gorbunov D.D.","19220525",25," [email protected]"), (102," Simonova K.R. "," 19560211 ", 13," [email protected]"), (103,"Dormitotova K.S.","19770815",9," [email protected]")

U gornjem primjeru, moramo razlikovati dva bloka INSERT konstrukcije:

INTO- pokazujući na tabelu u koju se dodaju podaci

VRIJEDNOSTI- inicijalizacija linijskog unosa.

U parametrima (u zagradama) bloka INTO Kolone su navedene redosledom kojim se pojavljuju. Zapis bez parametara je prihvatljiv ako je redosled kolona prilikom kreiranja tabele i prilikom njenog popunjavanja isti. Sljedeći kod je identičan prethodnom:

UMETNI U VRIJEDNOSTI (100,"Aleksin. V.V.","19721122",11," [email protected]"), (101,"Gorbunov D.D.","19220525",25," [email protected]"), (102," Simonova K.R. "," 19560211 ", 13," [email protected]"), (103,"Dormitotova K.S.","19770815",9," [email protected]")

Ako trebate promijeniti redoslijed popunjavanja, to mora biti izričito naznačeno:

UMETNI U (,,, ,) VRIJEDNOSTI ("Alexin. V.V.",101,"19721122"," [email protected]",11), ("Gorbunov D.D.",102,"19220525"," [email protected]",25), ("Simonova K.R",103,"19560211"," [email protected]",13) ("Dormitotova K.S.",104,"19770815"," [email protected]",9)

U bloku VALUES, inicijalizacija red po red se izvodi po redoslijedu stupaca INTO bloka. Ispuna reda je lista vrijednosti ćelija u zagradama. Vrijednosti su navedene odvojene zarezima, a redovi su odvojeni jedan od drugog.

Možete primijeniti INSERT konstrukciju samo na one stupce koji još ne sadrže podatke. U suprotnom, doći će do greške u izvršavanju zahtjeva.

Ažuriranje tabele

Potreba za ažuriranjem tabela javlja se ukoliko je potrebno promijeniti podatke koji su već uneseni u tablicu. Izvedeno prema uputama UPDATE. Ako INSERT radi samo sa praznim tabelama, onda UPDATE radi samo sa popunjenim. Ako je zahtjev upućen na prazne ćelije, pojavit će se greška.

Sljedeći kod će dodijeliti novi Mailbox stanaru kuće sa matičnim brojem 103.

AŽURIRAJTE ukućane SET Email = " [email protected]" WHERE homemeateID = 103

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

AŽURIRAJTE ukućane SET Email = " [email protected]", housemateName = "Rurik S.S." WHERE housemeateID = 103

Promjena stola

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

  • dodati ili ukloniti kolonu;
  • promijeniti tip stupca;
  • označite stupac ili grupu stupaca kao primarni ili strani ključ ili uklonite ova ograničenja.

Za sve ove operacije postoji instrukcija nadjačavanja. ATER TABLE.

Za dodavanje stupca, izraz ALTER TABLE se koristi s klauzulom ADD. Dodajmo novu kolonu u tabelu ukućana iz prethodnog odjeljka:

ALTER TABLE ukućani DODAJTE telefonski broj nvarchar(12) NULL;

Morate primijeniti rečenicu na to ALTER COLUMN unutar ALTER TABLE:

ALTER TABLE ukućani ALTER COLUMN Broj telefona znak(25) NOT NULL;

Uklanja kolonu koristeći DROP COLUMN unutar ALTER TABLE:

ALTER TABLE ukućani DROP COLUMN PhoneNumber;

Primarni ili strani ključ se uklanja i dodaje pomoću konstrukcija ALTER TABLE ADD CONSTRAINT/DROP CONSTRAINT, respektivno:

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

Ako pokušate dodijeliti primarni ključ tablici koja je već tamo, prevodilac upita će vratiti grešku. Stoga, ako tabela već ima primarni ključ, trebali biste ga ukloniti i odrediti grupu stupaca kao primarni ključ. Na primjer, ovako:

ALTER TABLE ukućani DROP CONSTRAINT PK_ID; ALTER TABLE ukućani ADD CONSTRAINT PK_ID,PK_AN PRIMARY KEY (housemeateID,broj stana);

SQL - Lekcija 3. Kreiranje tablica i njihovo popunjavanje informacijama

Dakle, upoznali smo se sa tipovima podataka, sada ćemo poboljšati tabele za naš forum. Pogledajmo ih prvo. I počnimo sa tablicom korisnika. U njemu imamo 4 kolone:

Id_user su cjelobrojne vrijednosti, što znači da će tip biti int, ograničimo ga na 10 znakova - int (10).
name je vrijednost niza varchar, ograničimo ga na 20 znakova - varchar(20).
email je vrednost niza varchar, hajde da je ograničimo na 50 karaktera - varchar(50).
lozinka je vrijednost niza varchar, ograničit ćemo je na 15 znakova - varchar(15).

Sve vrijednosti polja su obavezne, što znači da morate dodati tip NOT NULL.

Id_user int (10) NOT NULL
name varchar(20) NOT NULL
email varchar(50) NOT NULL

Prva kolona, ​​kao što se sjećate iz konceptualnog modela naše baze podataka, je primarni ključ (odnosno, njegove vrijednosti su jedinstvene i jedinstveno identificiraju zapis). Moguće je samostalno pratiti jedinstvenost, ali to nije racionalno. Za to postoji poseban atribut u SQL-u - AUTO_INCREMENT, koji, kada pristupi tabeli radi dodavanja podataka, izračunava maksimalnu vrednost ove kolone, povećava rezultujuću vrednost za 1 i unosi je u kolonu. Dakle, jedinstveni broj se automatski generira u ovoj koloni, pa je tip NOT NULL suvišan. Dakle, dodijelimo atribut koloni s primarnim ključem:


name varchar(20) NOT NULL
email varchar(50) NOT NULL
lozinka varchar(15) NOT NULL

Sada moramo navesti da je polje id_user primarni ključ. Da bi to učinio, SQL koristi ključnu riječ PRIMARNI KLJUČ(), naziv ključnog polja je naznačen u zagradama. Učinimo promjene:

Id_user int (10) AUTO_INCREMENT
name varchar(20) NOT NULL
email varchar(50) NOT NULL
lozinka varchar(15) NOT NULL
PRIMARNI KLJUČ (id_user)

Dakle, tabela je spremna, a njena konačna verzija izgleda ovako:

Kreirajte korisnike tablice (
id_user int (10) AUTO_INCREMENT,
naziv varchar(20) NOT NULL,
email varchar(50) NOT NULL,
lozinka varchar(15) NOT NULL,
PRIMARNI KLJUČ (id_user)
);

Pogledajmo sada drugu tabelu - teme. Slično argumentirajući, imamo sljedeća polja:



id_author int (10) NOT NULL
PRIMARNI KLJUČ (id_topic)

Ali u našem modelu baze podataka, polje id_author je strani ključ, tj. može imati samo vrijednosti koje se nalaze u polju id_user tabele korisnika. Da bi se to naznačilo u SQL-u postoji ključna riječ STRANI KLJUČ(), koji ima sljedeću sintaksu:

STRANI KLJUČ (ime_kolone_koji_je_strani_ključ) REFERENCE naziv_roditeljske_tabele (ime_nadređene_kolone);

Naznačimo da je id_author strani ključ:

Id_topic int (10) AUTO_INCREMENT
topic_name varchar(100) NOT NULL
id_author int (10) NOT NULL
PRIMARNI KLJUČ (id_topic)
STRANI KLJUČ (id_author) REFERENCE korisnika (id_user)

Tabela je spremna, a njena konačna verzija izgleda ovako:

Kreirajte teme tabele (
id_topic int (10) AUTO_INCREMENT,
topic_name varchar(100) NOT NULL,

PRIMARNI KLJUČ (id_topic),
STRANI KLJUČ (id_author) REFERENCE korisnika (id_user)
);

Poslednja preostala tabela su postovi. Ovdje je sve slično, samo dva strana ključa:

Kreirajte postove za stolom (
id_post int (10) AUTO_INCREMENT,
tekst poruke NOT NULL,
id_author int (10) NOT NULL,
id_topic int (10) NIJE NULL,
PRIMARNI KLJUČ (id_post),
STRANI KLJUČ (id_author) REFERENCE korisnici (id_user),
STRANI KLJUČ (id_topic) REFERENCE teme (id_topic)
);

Imajte na umu da tabela može imati nekoliko stranih ključeva, ali u MySQL-u može postojati samo jedan primarni ključ. U prvoj lekciji smo izbrisali našu bazu podataka foruma, vrijeme je da je ponovo kreiramo.

Hajdemo MySQL server(Start - Programi - MySQL - MySQL Server 5.1 - MySQL klijent komandne linije), unesite lozinku, kreirajte forum baze podataka (kreirajte forum baze podataka;), odaberite ga za upotrebu (koristite forum;) i kreirajte naše tri tabele:

Imajte na umu da se jedna naredba može napisati u nekoliko redova pomoću tipke Enter (MySQL automatski zamjenjuje simbol nova linija->), a tek nakon separatora (tačka-zarez) pritisak na tipku Enter izvršava upit.

Zapamtite, ako ste učinili nešto pogrešno, uvijek možete ispustiti tablicu ili cijelu bazu podataka koristeći DROP izraz. Popravi nešto komandna linija izuzetno nezgodno, pa je ponekad (posebno u početnoj fazi) lakše napisati upite u nekom uređivaču, na primjer, Notepad, a zatim ih kopirati i zalijepiti u crni prozor.

Dakle, tabele su napravljene, da bismo se uverili u to, sjetimo se ekipe pokazati tabele:

I na kraju, pogledajmo strukturu naše posljednje tabele postova:

Sada značenja svih polja strukture postaju jasna, osim polja DEFAULT. Ovo je polje zadane vrijednosti. Mogli bismo odrediti zadanu vrijednost za neki stupac (ili sve). Na primjer, ako bismo imali polje pod nazivom "Oženjen" i upisali ENUM ("da", "ne"), onda bi imalo smisla jednu od vrijednosti postaviti kao zadanu vrijednost. Sintaksa bi bila:

Oženjen enum ("da", "ne") NOT NULL default ("da")

One. ova ključna riječ se piše odvojena razmakom nakon tipa podataka, a zadana vrijednost je navedena u zagradama.

No, vratimo se našim stolovima. Sada treba da unesemo podatke u naše tabele. Na web stranicama obično unosite informacije u neke html forme, zatim skripta na nekom jeziku (php, java...) izvlači te podatke iz obrasca i unosi ih u bazu podataka. On to radi putem SQL upita za unos podataka u bazu podataka. Još ne znamo kako pisati skripte u PHP-u, ali sada ćemo naučiti kako slati SQL upite za unos podataka.

U tu svrhu se koristi operator INSERT. Postoje dvije vrste sintakse koje možete koristiti. Prva opcija se koristi za unos podataka u sva polja tabele:

INSERT INTO table_name VALUES ("first_column_value","second_column_value", ..., "last_column_value");


Pokušajmo dodati sljedeće vrijednosti u našu korisničku tablicu:

UMETNI U korisničke VRIJEDNOSTI ("1","sergey", " [email protected]", "1111");

Druga opcija se koristi za unos podataka u neka polja tabele:

INSERT INTO table_name ("column_name", "column_name") VALUES ("first_column_value","second_column_value");


U našoj tabeli korisnika sva polja su obavezna, ali naše prvo polje ima ključnu riječ AUTO_INCREMENT (tj. popunjava se automatski), tako da možemo preskočiti ovu kolonu:

UMETNI U korisnike (ime, email, lozinka) VRIJEDNOSTI ("valera", " [email protected]", "2222");

Da imamo polja tipa NULL, tj. opciono, mogli bismo ih i zanemariti. Ali ako pokušate da ostavite polje sa vrijednošću NOT NULL prazno, server će prikazati poruku o grešci i neće dovršiti zahtjev. Osim toga, prilikom unosa podataka, server provjerava odnose između tabela. Stoga nećete moći dodati vrijednost polju koje je strani ključ koji ne postoji u povezanoj tabeli. To ćete provjeriti unosom podataka u preostale dvije tabele.

Ali prvo, dodajmo informacije o još nekoliko korisnika. Da biste dodali nekoliko redaka odjednom, samo trebate navesti zagrade s vrijednostima odvojenim zarezima:

Sada unesite podatke u drugu tabelu - teme. Sve je isto, ali moramo imati na umu da vrijednosti u polju id_author moraju biti prisutne u tabeli korisnika:

Pokušajmo sada dodati još jednu temu, ali sa id_author, koji nije u tabeli korisnika (pošto smo dodali samo 5 korisnika u tabelu korisnika, onda id=6 ne postoji):

Server daje grešku i kaže da ne može ući u takav red jer polje koje je strani ključ sadrži vrijednost koja se ne nalazi u tablici povezanih korisnika.

Sada dodajmo nekoliko redova tabeli postova, imajući na umu da u njoj imamo 2 strana ključa, tj. id_author i id_topic, koje ćemo unijeti, moraju biti prisutni u tabelama pridruženim njima:

Dakle, imamo 3 tabele koje imaju podatke u sebi. Postavlja se pitanje - kako vidjeti koji su podaci pohranjeni u tabelama. To ćemo raditi u sljedećoj lekciji.

Ako ste imali potrebu da sačuvate rezultat skupa podataka koji je vraćen SQL upitom, onda će vas ovaj članak zanimati, jer ćemo u njemu pogledati SELECT izraz INTO, uz pomoć kojih Microsoft SQL Server, možete kreirati novu tabelu i popuniti je rezultatom SQL upit.

Počećemo, naravno, sa opisom samog izraza SELECT INTO, a zatim preći na primere.

SELECT INTO izraz u Transact-SQL

SELECT INTO– instrukcija na T-SQL jeziku koja kreira novu tablicu i u nju umeće rezultirajuće redove iz SQL upita. Struktura tabele, tj. broj i imena kolona, ​​kao i tipovi podataka i svojstva nullabilnosti, bit će zasnovani na kolonama ( izrazi) naveden u listi za odabir izvora u SELECT izrazu. Tipično, naredba SELECT INTO se koristi za kombiniranje podataka iz nekoliko tablica i pogleda, uključujući neke podatke proračuna, u jednu tablicu.

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

Naredba SELECT INTO ima dva argumenta:

  • nova_tabela - ime novi sto;
  • filegroup – grupa datoteka. Ako nijedan argument nije naveden, koristi se zadana grupa datoteka. Ova prilika dostupno počevši od Microsoft SQL Server 2017.

Važne točke o naredbi SELECT INTO

  • Instrukcija se može koristiti za kreiranje tabele na trenutnom serveru; kreiranje tabele na udaljenom serveru nije podržano;
  • Novu tabelu možete popuniti podacima bilo iz trenutne baze podataka i trenutnog servera, bilo iz druge baze podataka ili sa udaljenog servera. Na primjer, naznačite puno ime baza podataka u formi database_schema.table_name ili u slučaju udaljenog servera, linked_server.database.schema.table_name;
  • Stupac identiteta u novoj tablici ne nasljeđuje svojstvo IDENTITY ako: izraz sadrži spoj (JOIN, UNION), klauzulu GROUP BY, agregatna funkcija, također ako je kolona identiteta dio izraza, dobivena je iz udaljenog izvora podataka ili se pojavljuje više puta na listi odabira. U svemu sličnim slučajevima kolona 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 navesti redovnu tabelu kao i privremenu tabelu kao novu tabelu, ali ne možete navesti promenljivu tabele ili parametar sa vrednostom tabele;
  • Izračunata kolona, ​​ako postoji u izbornoj listi naredbe SELECT INTO, u novoj tabeli postaje normalna, tj. nije izračunato;
  • SELECT INTO se ne može koristiti s klauzulom COMPUTE;
  • Koristeći SELECT INTO, indeksi, ograničenja i okidači se ne prenose u novu tablicu, već se moraju dodatno kreirati, nakon izvršenja naredbe, ako su potrebni;
  • Klauzula ORDER BY ne garantuje da će redovi u novoj tabeli biti umetnuti navedenim redosledom.
  • Atribut FILESTREAM se ne prenosi u novu tablicu. BLOB FILESTREAM objekti u novoj tabeli bit će BLOB objekti tipa varbinary(max) i imati ograničenje od 2 GB;
  • Količina podataka upisanih u dnevnik transakcija tijekom SELECT INTO operacija ovisi o modelu oporavka. U bazama podataka koje koriste masovno evidentirani model oporavka, i jednostavan model, masovne operacije, koje uključuju SELECT INTO, minimalno se evidentiraju. Zbog toga, izraz SELECT INTO može biti efikasniji od zasebnih izraza za kreiranje tablice i INSERT izraza za popunjavanje podacima.

Primjeri korištenja SELECT INTO

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

Početni podaci

Prvo, napravimo dvije tabele i popunimo ih podacima; te ćemo tabele kombinovati u primerima.

CREATE TABLE TestTable( IDENTITY(1,1) NOT NULL, NOT NULL, (100) NOT NULL, NULL) ON GO KREATE TABLE TestTable2( IDENTITY(1,1) NOT NULL, (100) NOT NULL) ON GO INSERT IN TO Testable VRIJEDNOSTI (1,"Tastatura", 100), (1, "Miš", 50), (2, "Telefon", 300) IDI INSERT U TestTable2 VRIJEDNOSTI (" Komponente računara"), ("Mobilni uređaji") GO SELECT * FROM TestTable SELECT * FROM TestTable2

Primjer 1 - Kreiranje tablice korištenjem SELECT INTO sa spajanjem podataka

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

Operacija 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 --Odabir podataka iz nove tabele SELECTTROM * F


Kao rezultat, kreirali smo tabelu pod nazivom TestTable3 i popunili je kombinovanim podacima.

Primjer 2 - Kreiranje privremene tablice korištenjem SELECT INTO sa grupiranjem podataka

Sada recimo da su nam potrebni grupirani podaci, na primjer, informacija o broju proizvoda u određenoj kategoriji, i moramo te podatke spremiti u privremenu tablicu, na primjer, te ćemo informacije koristiti samo u SQL izrazima, pa ćemo ne morate kreirati punopravnu tablicu.

Kreirajte privremenu tabelu (#TestTable) koristeći izraz SELECT INTO SELECT T2.CategoryName, COUNT(T1.ProductId) AS CntProduct INTO #TestTable FROM TestTable T1 LEFT JOIN TestTable2 T2 ON T1.CategoryId = T2.CategoryName2.CGROUPate GROUPate. - Dohvaćanje podataka iz privremene tablice SELECT * FROM #TestTable


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

Tako smo pogledali naredbu SELECT INTO u T-SQL jeziku; u svojoj knjizi “The T-SQL Programmer’s Way” detaljno govorim o svim konstrukcijama T-SQL jezik (Preporučujem čitanje), i to je sve za sada!

Prije nego što možete kreirati SQL tablicu, morate 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 moraju pohraniti informacije. Na primjer, zaposlenik kompanije ili projekti koje kompanija implementira. Atributi su komponente koje opisuju ili kvalifikuju entitet. Na primjer, atribut entiteta “zaposleni” je nadnica, a atribut entiteta „projekta“ 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 uslove pod kojima će se održavati integritet baze podataka. Šta to znači? Drugim riječima, ograničenja koja će pomoći da baze podataka budu u ispravnom i dosljednom obliku.

Prijelaz sa ER dijagrama na tabelarni model

Pravila za prelazak na tabelarni model:

  1. Pretvorite sve entitete u tabele.
  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 relacije u strane ključeve.
  5. Kreirajte SQL tablicu.

Kreiranje baze podataka

Prvo morate pokrenuti MySQL server. Da biste ga pokrenuli, idite na Start meni, zatim Programi, zatim MySQL i MySQL Server, odaberite MySQL-Command-Line-Client.

Za kreiranje baze podataka koristite naredbu Kreiraj bazu podataka. Ova funkcija ima sljedeći format:

CREATE DATABASE database_name.

Ograničenja imena baze podataka su sljedeća:

  • dužina je do 64 znaka i može uključivati ​​slova, brojeve, "" i "" simbole;
  • ime može početi brojem, ali mora sadržavati slova.

Morate zapamtiti opšte pravilo: svaki zahtjev ili naredba završava se graničnikom. U SQL-u je uobičajeno koristiti tačku i zarez kao graničnik.

Server treba naznačiti s kojom bazom podataka će morati raditi. Za ovo postoji USE izjava. Ovaj operator ima jednostavnu sintaksu: USE n database_name.

Kreiranje SQL tabele

Dakle, model je dizajniran, baza podataka je kreirana i serveru je rečeno kako da tačno radi sa njom. Sada možete početi kreirati SQL tabele. Postoji jezik za definiciju podataka (DDL). Koristi se za kreiranje MS SQL tabele, kao i za definisanje objekata i rad sa njihovom strukturom. DDL uključuje skup naredbi.

Kreiranje tablice SQL Servera

Koristeći samo jednu DDL naredbu, možete kreirati različite objekte baze podataka mijenjajući njene parametre. Koristi se naredba Kreiraj tablicu. tt format izgleda ovako:

CREATE TADLE ime_tabele,(column_name1 Ime _kolona2 tip podataka [ograničenje_stupca], [ograničenja_tablice]).

Sintaksu ove naredbe treba detaljnije opisati:

  • Naziv tabele mora imati do 30 znakova i početi slovom. Dozvoljeni su samo abecedni znakovi, slova i simboli "_", "$" i "#". Dozvoljena je upotreba ćiriličnog pisma. Važno je napomenuti da imena tabela ne bi trebalo da budu ista kao imena drugih objekata ili rezervisanih reči servera baze podataka kao što su kolona, ​​tabela, indeks itd.
  • Morate navesti tip podataka za svaku kolonu. Postoji standardni set koji većina koristi. Na primjer, Char, Varchar, Broj, Datum, Null tip, itd.

  • Parametar Default vam omogućava da postavite zadanu vrijednost. Ovo osigurava da u tablici nema nul vrijednosti. Šta to znači? Zadana vrijednost može biti simbol, izraz, funkcija. Važno je zapamtiti da ovaj zadani tip podataka mora odgovarati ulaznom tipu podataka kolone.
  • Ograničenja na svakoj koloni se koriste za provođenje uvjeta integriteta za podatke na razini tablice. Postoje i druge nijanse. Zabranjeno je brisanje tabele ako postoje druge tabele koje zavise od nje.

Kako raditi sa bazom podataka

Veliki projekti često zahtijevaju kreiranje više baza podataka, od kojih svaka zahtijeva mnogo tabela. Naravno, nemoguće je da korisnici zadrže sve informacije u svojim glavama. Da biste to učinili, moguće je vidjeti strukturu baza podataka i tabela u njima. Postoji nekoliko naredbi, i to:

  • SHOW DATABASES - prikazuje sve kreirane SQL baze podataka na ekranu;
  • SHOW TABLES - prikazuje listu svih tabela za trenutnu bazu podataka koje su odabrane naredbom USE;
  • DESCRIBE table_name- prikazuje opis svih kolona tabele.
  • ALTER TABLE - omogućava vam promjenu strukture tabele.

Poslednja komanda dozvoljava:

  • dodati kolonu ili ograničenje u tablicu;
  • promijeniti postojeću kolonu;
  • brisati kolonu ili kolone;
  • ukloniti ograničenja integriteta.

Sintaksa za ovu naredbu je: ALTER TABLE table_name( | | | | [(UKLJUČI | ONEMOGUĆI) KONSTANTNO constraint_name ] | }.

Postoje i druge komande:

  • RENAME - preimenuj tabelu.
  • TRUNCATE TABLE - uklanja sve redove iz tabele. Ova funkcija može biti potrebna kada je potrebno ponovo popuniti tabelu, ali nema potrebe za pohranjivanjem prethodnih podataka.

Postoje i situacije kada se struktura baze podataka promijenila i tablicu treba izbrisati. Za ovo postoji naredba DROP. Naravno, prvo treba da izaberete bazu podataka iz koje želite da obrišete tabelu, ako se razlikuje od trenutne.

Sintaksa naredbe je prilično jednostavna: DROP TABLE Ime_tables.

IN SQL pristup kreiranje tabela i njihovo modifikovanje se vrši korišćenjem istih gore navedenih komandi.

Koristeći CREATE TABLE možete kreirati praznu tabelu, a zatim je popuniti podacima. Ali to nije sve. Takođe možete direktno kreirati tabelu iz druge tabele. Volim ovo? Odnosno, moguće je definisati tabelu i popuniti je podacima iz druge tabele. Za ovo postoji posebna ključna riječ AS.

Sintaksa je vrlo jednostavna:

  • CREATE TABLE Ime_tables[(definicija_stupca)] AS potupit;
  • definicija_kolone - imena stupaca, pravila integriteta za novokreirane stupce tablice i zadane vrijednosti;
  • potupit - vraća redove koje treba dodati u novu tablicu.

Dakle, takva komanda kreira tabelu sa određenim kolonama, ubacuje redove u nju, koji se vraćaju u upitu.

Privremeni stolovi

Privremene tabele su tabele čiji se podaci brišu na kraju svake sesije ili ranije. Koriste se za snimanje međuvrijednosti ili rezultata. Mogu se koristiti kao radni listovi. Možete definirati privremene u bilo kojoj sesiji, ali njihove podatke možete koristiti samo u trenutnoj sesiji. Kreiranje privremenih SQL tablica slično je redovnim tablicama, korištenjem naredbe CREATE TABLE. Da biste sistemu pokazali da je tabela privremena, trebate koristiti parametar GLOBAL TEMPORARY.

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

  • DELETE ROWS - obrišite privremenu tabelu (izbrišite sve podatke sesije) nakon svake transakcije. Ovo je obično zadana vrijednost.
  • OČUVATI REDOVE - ostavite podatke za korištenje u sljedećoj transakciji. Osim toga, možete obrisati tabelu tek nakon što se sesija završi. Ali postoje neke posebnosti. Ako se transakcija vrati (ROLLBACK), tabela će biti vraćena u svoje stanje na kraju prethodne transakcije.

Sintaksa za kreiranje privremene tabele može se predstaviti na sledeći način: CREATE TABLE Ime_stolovi,(Imestupac_1 tip podataka [column_constraint], Ime _kolona2 tip podataka [ograničenje_stupca], [ograničenja_tablice]).