Completarea unui tabel SQL cu o interogare. Exemple de utilizare a SELECT INTO

28.03.2020 Sfat

Dacă ați avut nevoie să salvați setul de rezultate de date care a fost returnat de o interogare SQL, atunci acest articol va fi de interes pentru dvs., deoarece în el ne vom uita la instrucțiunea SELECT INTO, cu ajutorul căruia Microsoft SQL Server, puteți crea un tabel nou și îl puteți completa cu rezultatul unei interogări SQL.

Vom începe, desigur, cu o descriere a instrucțiunii SELECT INTO în sine, apoi vom trece la exemple.

Instrucțiunea SELECT INTO în Transact-SQL

SELECTAȚI ÎNTRE– o instrucțiune în limbajul T-SQL care creează un nou tabel și inserează în el rândurile rezultate din interogarea SQL. Structura tabelului, de ex. numărul și numele coloanelor și tipurile de date și proprietățile de valabilitate Valori NULL, se va baza pe coloane ( expresii) specificat în lista de selectare a sursei din instrucțiunea SELECT. De obicei, instrucțiunea SELECT INTO este utilizată pentru a combina datele din mai multe tabele și vederi, inclusiv unele date de calcul, într-un singur tabel.

Pentru a utiliza instrucțiunea SELECT INTO, trebuie să aveți permisiunea CREATE TABLE pe baza de date în care va fi creat noul tabel.

Instrucțiunea SELECT INTO are două argumente:

  • tabel_nou - nume masa noua;
  • filegroup – grup de fișiere. Dacă nu este specificat niciun argument, este utilizat grupul de fișiere implicit. Această ocazie disponibil începând cu Microsoft SQL Server 2017.

Puncte importante despre instrucțiunea SELECT INTO

  • Instrucțiunea poate fi folosită pentru a crea un tabel pe serverul curent; crearea tabelului pe un server la distanță nu este acceptată;
  • Puteți completa un nou tabel cu date fie din baza de date curentă și serverul curent, fie dintr-o altă bază de date sau de la un server la distanță. De exemplu, specificați numele complet al bazei de date ca schema_bază de date.nume_tabelă sau în cazul unui server la distanță, linked_server.database.schema.table_name;
  • O coloană de identitate dintr-un tabel nou nu moștenește proprietatea IDENTITY dacă: instrucțiunea conține o clauză JOIN, UNION, o clauză GROUP BY, o funcție de agregare sau dacă coloana de identitate face parte dintr-o expresie, este obținută dintr-o sursă de date la distanță , sau apare de mai multe ori într-o alegere de listă. În toate astfel de cazuri, coloana de identitate nu moștenește proprietatea IDENTITY și este creată ca NOT NULL;
  • Nu puteți utiliza instrucțiunea SELECT INTO pentru a crea un tabel partiționat, chiar dacă tabelul sursă este partiționat;
  • Puteți specifica ca tabel nou masa obisnuita, precum și un tabel temporar, dar nu puteți specifica o variabilă de tabel sau returnare valoarea tabelului parametru;
  • O coloană calculată, dacă există una în lista de selecție a instrucțiunii SELECT INTO, în noul tabel devine normală, adică. necalculat;
  • SELECT INTO nu poate fi folosit cu o clauză COMPUTE;
  • Folosind SELECT INTO, indecșii, constrângerile și declanșatoarele nu sunt transferate în noul tabel, ele trebuie create suplimentar, după executarea instrucțiunii, dacă sunt necesare;
  • Clauza ORDER BY nu garantează că rândurile din noul tabel vor fi inserate în ordinea specificată.
  • Atributul FILESTREAM nu este transferat în noul tabel. Obiectele BLOB FILESTREAM din noul tabel vor fi obiecte BLOB de tip varbinary(max) și au o limită de 2 GB;
  • Cantitatea de date scrise în jurnalul de tranzacții în timpul operațiunilor SELECT INTO depinde de modelul de recuperare. În bazele de date care utilizează modelul de recuperare în jurnal în bloc și model simplu, operațiunile de masă, care includ SELECT INTO, sunt înregistrate minim. Din această cauză, instrucțiunea SELECT INTO poate fi mai eficientă decât instrucțiunile separate pentru a crea tabelul și instrucțiunile INSERT pentru a-l completa cu date.

Exemple de utilizare a SELECT INTO

Voi rula toate exemplele în Microsoft SQL Server 2016 Express DBMS.

Datele inițiale

Mai întâi, să creăm două tabele și să le umplem cu date; vom combina aceste tabele în exemple.

CREATE TABLE 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 INSERT INTO TestTable VALORI (1, „Tastatură”, 100), (1, „Mouse”, 50), (2, „Telefon”, 300) GO INSERT INTO TestTable2 VALUES (" Componentele calculatorului"), ("Dispozitive mobile") GO SELECT * FROM TestTable SELECT * FROM TestTable2

Exemplul 1 - Crearea unui tabel folosind SELECT INTO cu alăturarea datelor

Să ne imaginăm că trebuie să îmbinăm două tabele și să stocăm rezultatul rezultat într-un tabel nou ( de exemplu, trebuie să obținem produse cu numele categoriei din care aparțin).

Operațiunea 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 --Selectarea datelor dintr-un nou tabel TestTable3 SELECT * FROM


Ca rezultat, am creat un tabel numit TestTable3 și l-am completat cu datele combinate.

Exemplul 2 - Crearea unui tabel temporar folosind SELECT INTO cu gruparea datelor

Acum să presupunem că avem nevoie de date grupate, de exemplu, informații despre numărul de produse dintr-o anumită categorie și trebuie să salvăm aceste date într-un tabel temporar, de exemplu, vom folosi aceste informații numai în instrucțiunile SQL, deci vom nu este nevoie să creați un tabel cu drepturi depline.

Creați un tabel temporar (#TestTable) folosind instrucțiunea 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 T2.CategoryName. - Preluarea datelor dintr-un tabel temporar SELECT * FROM #TestTable


După cum puteți vedea, am reușit să creăm un tabel temporar #TestTable și să-l umplem cu date grupate.

Așa că ne-am uitat la instrucțiunea SELECT INTO în limbajul T-SQL; în cartea mea „The T-SQL Programmer’s Way” vorbesc în detaliu despre toate construcțiile Limbajul T-SQL (Recomand să o citești), și asta e tot deocamdată!

Lucrul cu bazele de date este direct legat de modificarea tabelelor și a datelor pe care le conțin. Dar înainte de a începe, trebuie create tabele. Pentru a automatiza acest proces, există unul special - „CREATE TABLE”.

Primul lucru!

Înainte de a înțelege procesul de creare a tabelelor folosind comanda MS SQL „CREATE TABLE”, merită să ne gândim la ceea ce trebuie să știți înainte de a utiliza funcția.

În primul rând, trebuie să veniți cu un nume pentru tabel - trebuie să fie unic în comparație cu alții din baza de date și să urmați mai multe reguli. Numele trebuie să înceapă cu o literă (a-z), urmată de orice litere, cifre sau caractere de subliniere, iar fraza rezultată nu trebuie să fie un cuvânt rezervat. Lungimea numelui tabelului nu trebuie să depășească 18 caractere.

După ce ați hotărât asupra unui nume, ar trebui să dezvoltați o structură: veniți cu nume pentru coloane, gândiți-vă la tipul de date folosit în ele și ce câmpuri trebuie completate. Aici merită să definiți imediat câmpurile cheilor străine și primare, precum și posibilele restricții asupra valorilor datelor.

Nuanțele rămase ale tabelului pot fi corectate destul de ușor, așa că în etapa de creare a tabelului este posibil să nu fie pe deplin gândite.

Sintaxă

După ce a dezvoltat structura tabelului, puteți trece la crearea acestuia. Acest lucru se poate face destul de simplu folosind funcția SQL „CREATE TABLE”. În acesta, utilizatorul trebuie să specifice numele tabelului inventat anterior și lista de coloane, indicând tipul și numele pentru fiecare dintre ele. Sintaxa funcției este următoarea:

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

Argumentele utilizate în construcția funcției înseamnă următoarele:

  • table_name - numele tabelului
  • nume_coloană - numele coloanei
  • datatype - tipul de date utilizat în acest câmp
  • DEFAULT este expresia implicită folosită în coloană.

De asemenea, este posibil să utilizați încă două argumente de funcție:

  • column_constraint - parametrii coloanei
  • table_constraint - parametrii tabelului

În acestea, utilizatorul poate specifica restricțiile necesare pentru muncă sau condițiile de completare a tabelului.

Caracteristici de creare a tabelelor

Când scrieți o interogare cu o funcție, uneori este necesar să setați reguli pentru completarea câmpurilor. Pentru a face acest lucru, trebuie să adăugați atribute speciale de funcție care definesc un anumit set de condiții.

Pentru a determina dacă o celulă poate conține o valoare goală, după ce ați specificat numele și tipul coloanei, trebuie să introduceți unul dintre cuvintele cheie: NULL (poate fi valori goale) sau NOT NULL (câmpul trebuie completat).

Când creați un tabel, în cele mai multe cazuri trebuie să unificați fiecare înregistrare pentru a evita să aveți două identice. Pentru a face acest lucru, numerotarea liniilor este cea mai des folosită. Și, pentru a nu cere utilizatorului să cunoască ultimul număr disponibil în tabel, în funcția „CREATE TABLE” este suficient să indicați coloana cheii primare scriind cuvânt cheie„Cheie primară” după câmpul corespunzător. Cel mai adesea, tabelele sunt legate între ele prin cheia primară.

Pentru a asigura concatenarea cu cheia primară, este utilizată proprietatea cheii străine „CHEIE străină”. Prin specificarea pentru coloană această proprietate, vă puteți asigura că acest câmp conține o valoare care se potrivește cu una dintre cele din coloana cheii primare a aceluiași tabel sau a altui tabel. În acest fel, se poate asigura coerența datelor.

Pentru a furniza o verificare față de un set sau definiție specificat, ar trebui să utilizați atributul CHECK. Este scris ultimul în lista de argumente ale funcției și are o expresie logică ca parametru personal. Cu ajutorul acestuia, puteți limita lista de valori posibile, de exemplu, folosind doar literele „M” și „F” în câmpul tabelului „Sex”.

Pe lângă cele prezentate, funcția are mult mai multe atribute specifice, dar sunt folosite mult mai rar în practică.

Exemple

Pentru a înțelege pe deplin principiul de funcționare al funcției, merită să luați în considerare în practică modul în care funcționează CREATE TABLE (SQL). Exemplul de mai jos creează tabelul prezentat în figură:

CREATE TABLE Custom
(ID CHAR(10) NOT NULL Cheie primară,
Nume_personalizat CHAR(20),
adresa_personalizată CHAR(30),
Orașul_personalizat CHAR(20),
Custom_Country CHAR(20),
ArcDate CHAR(20))

După cum puteți vedea, parametrul posibilă absență valorile dintr-o celulă (NULL) pot fi omise, deoarece este implicit.

  • Cum pot combina instrucțiunile SELECT astfel încât să pot calcula procente, succese și eșecuri în SQL Server?
  • SQL: Cum să selectați numai rânduri individuale pe baza unor valori de proprietate
  • Cum sa alegi produsul cu pretul maxim din fiecare categorie?
LevelId Min Product 1 x 1 2 y 1 3 z 1 4 a 1

Trebuie să dublez aceleași date în baza de date schimbând doar ID-ul produsului de la 1 2,3.... 40

LevelId Min Product 1 x 2 2 y 2 3 z 2 4 a 2

Aș putea face ceva de genul

INSERT INTO dbo.Levels SELECT top 4 * din dbo.Levels dar aceasta va copia doar datele. Există vreo modalitate de a copia datele și de a le lipi, schimbând doar valoarea produsului?

Sunteți cel mai pe drum - trebuie să faceți încă un pas logic:

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

... vă va duplica rândurile cu un alt ID de produs.

De asemenea, rețineți că WHERE Product = 1 va fi mai fiabil decât TOP 4 . Odată ce aveți mai mult de patru rânduri în tabel, nu puteți garanta că TOP 4 va returna aceleași patru rânduri decât dacă adăugați și un ORDER BY pentru a selecta, totuși WHERE Product = ... va returna întotdeauna același și va continua lucrul chiar și dacă adăugați un rând suplimentar cu ID-ul produsului 1 (unde va trebui să luați în considerare schimbarea TOP 4 în TOP 5 etc. dacă adăugați rânduri suplimentare).

Puteți genera ID-ul produsului și apoi îl puteți încărca în:

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

Aceasta presupune că LevelId este o coloană de identificare care este incrementată automat la inserare. Dacă nu:

Cu cte ca (selectați 2 ca n uniune, toate selectați n + 1 din cte unde 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;

INSERT INTO dbo.Levels (LevelId, Min, Product) SELECT TOP 4 LevelId, Min, 2 FROM dbo.Levels

Puteți include expresii în SELECT , fie valori codificate, fie ceva de genul Produs + 1 sau altceva.

Mă aștept că probabil că nu veți dori să introduceți LevelId-ul, dar lăsați-l acolo pentru a se potrivi cu modelul dvs. Dacă nu doriți acest lucru, eliminați-l din secțiunile INSERT și SELECT.

De exemplu, puteți utiliza CROSS JOIN pe un tabel de numere.

CU L0 AS(SELECT 1 AS C UNION ALL SELECT 1 AS O), -- 2 rânduri L1 AS(SELECT 1 AS C FROM L0 CA A CROSS JOIN L0 AS B), -- 4 rânduri Nums AS(SELECT ROW_NUMBER() OVER (ORDERA PENTRU (SELECT NULL)) AS N FROM L1) SELECT lvl., lvl., num.[N] FROM dbo. lvl CROSS JOIN Num. num

Acest lucru se va repeta de 4 ori.

Înainte de a putea crea un tabel SQL, trebuie să definiți modelul bazei de date. Proiectați o diagramă ER în care să definiți entitățile, atributele și relațiile.

Noțiuni de bază

Entitățile sunt obiecte sau fapte despre care trebuie stocate informații. De exemplu, un angajat al unei companii sau proiecte implementate de companie. Atributele sunt componente care descriu sau califică o entitate. De exemplu, atributul entității „angajat” este salariul, iar atributul entității „proiect” este costul estimat. Legăturile sunt asocieri între două elemente. Poate fi bidirectional. Există și o legătură recursivă, adică legătura unei entități cu ea însăși.

De asemenea, este necesar să se determine cheile și condițiile în care va fi menținută integritatea bazei de date. Ce înseamnă? Cu alte cuvinte, restricții care vor ajuta la păstrarea bazelor de date într-o formă corectă și consecventă.

Trecerea de la diagrama ER la modelul tabelar

Reguli pentru trecerea la un model tabelar:

  1. Convertiți toate entitățile în tabele.
  2. Convertiți toate atributele în coloane, adică fiecare atribut de entitate trebuie să apară în numele coloanei din tabel.
  3. Convertiți identificatorii unici în chei primare.
  4. Convertiți toate relațiile în chei străine.
  5. Creați tabelul SQL.

Crearea unei baze de date

Mai întâi trebuie să porniți serverul MySQL. Pentru a-l lansa, accesați meniul „Start”, apoi „Programe”, apoi MySQL și My SQL Server, selectați MySQL-Command-Line-Client.

Pentru a crea o bază de date, utilizați comanda Creare bază de date. Această funcție are urmatorul format:

CREAȚI BAZĂ DE DATE numele bazei de date.

Restricțiile privind numele bazei de date sunt următoarele:

  • lungimea este de până la 64 de caractere și poate include litere, cifre, simboluri „” și „”;
  • numele poate începe cu un număr, dar trebuie să conțină litere.

Trebuie să ne amintim și regula generala: Orice interogare sau comandă se termină cu un delimitator. În SQL, este obișnuit să folosiți un punct și virgulă ca delimitator.

Serverul trebuie să indice cu ce bază de date va trebui să lucreze. Există o declarație USE pentru aceasta. Acest operator are o sintaxă simplă: USE n numele bazei de date.

Crearea unui tabel SQL

Deci, modelul este proiectat, baza de date este creată și serverului i se spune exact cum să lucreze cu el. Acum puteți începe să creați tabele SQL. Există limbajul de definire a datelor (DDL). Este folosit pentru a crea tabel MS SQL, precum și pentru a defini obiecte și a lucra cu structura lor. DDL include un set de comenzi.

Crearea tabelului SQL Server

Folosind o singură comandă DDL, puteți crea diverse obiecte de bază de date variind parametrii acesteia. Este folosită comanda Creare tabel. Formatul tt arată astfel:

CREATE TADLE table_name,(nume_coloană1 Nume _coloana2 tipul de date [column_constraint],[table_constraints]).

Sintaxa acestei comenzi ar trebui descrisă mai detaliat:

  • Numele tabelului trebuie să aibă maximum 30 de caractere și să înceapă cu o literă. Sunt permise numai caracterele alfabetice, literele și simbolurile „_”, „$” și „#”. Este permisă utilizarea alfabetului chirilic. Este important de reținut că numele tabelelor nu trebuie să fie aceleași cu numele altor obiecte sau cu cuvinte rezervate server de baze de date, cum ar fi coloană, tabel, index etc.
  • Trebuie să specificați un tip de date pentru fiecare coloană. Există un set standard folosit de majoritatea. De exemplu, Char, Varchar, Number, Date, Null type etc.

  • Parametrul implicit vă permite să setați o valoare implicită. Acest lucru asigură că nu există valori nule în tabel. Ce înseamnă? Valoarea implicită poate fi un simbol, o expresie, o funcție. Este important să rețineți că acest tip de date implicit trebuie să se potrivească cu tipul de date de intrare al coloanei.
  • Constrângerile pe fiecare coloană sunt folosite pentru a impune condiții de integritate pentru datele la nivel de tabel. Există și alte nuanțe. Este interzisă ștergerea unui tabel dacă există alte tabele dependente de acesta.

Cum se lucrează cu baza de date

Proiectele mari necesită adesea crearea mai multor baze de date, fiecare necesitând multe tabele. Desigur, este imposibil pentru utilizatori să rețină toate informațiile în capul lor. Pentru a face acest lucru, este posibil să vizualizați structura bazelor de date și a tabelelor din acestea. Există mai multe comenzi și anume:

  • SHOW DATABASES - arată toate bazele de date SQL create pe ecran;
  • SHOW TABLES - afișează o listă cu toate tabelele pentru baza de date curentă care sunt selectate prin comanda USE;
  • DESCRIE nume_tabel- arată o descriere a tuturor coloanelor din tabel.
  • ALTER TABLE - vă permite să schimbați structura tabelului.

Ultima comandă permite:

  • adăugați o coloană sau o constrângere la un tabel;
  • modifica o coloană existentă;
  • ștergeți coloana sau coloanele;
  • eliminarea constrângerilor de integritate.

Sintaxa acestei comenzi este: ALTER TABLE nume_tabel( | | | | [(ACTIVARE | DEZACTIVARE) CONSTANT nume_constrângere ] | }.

Există și alte comenzi:

  • RENUMIRE - redenumiți tabelul.
  • TRUNCATE TABLE - elimină toate rândurile din tabel. Această funcție poate fi necesară atunci când este necesar să completați din nou tabelul, dar nu este nevoie să stocați datele anterioare.

Există și situații în care structura bazei de date s-a schimbat și tabelul ar trebui șters. Există o comandă DROP pentru aceasta. Desigur, trebuie mai întâi să selectați baza de date din care doriți să ștergeți tabelul, dacă acesta este diferit de cel curent.

Sintaxa comenzii este destul de simplă: DROP TABLE Nume_Mese.

ÎN Acces SQL crearea tabelelor și modificarea acestora se realizează folosind aceleași comenzi enumerate mai sus.

Folosind CREATE TABLE, puteți crea un tabel gol și apoi îl puteți completa cu date. Dar asta nu este tot. De asemenea, puteți crea direct un tabel dintr-un alt tabel. Ca aceasta? Adică, este posibil să definiți un tabel și să îl completați cu date dintr-un alt tabel. Există un cuvânt cheie special AS pentru aceasta.

Sintaxa este foarte simplă:

  • CREAȚI TABEL Nume_Mese[(definiție_coloană)] subinterogare AS;
  • definiție_coloană - numele coloanelor, regulile de integritate pentru coloanele de tabel nou create și valorile implicite;
  • subinterogare - returnează rândurile care trebuie adăugate la noul tabel.

Astfel, o astfel de comandă creează un tabel cu anumite coloane, inserează rânduri în el, care sunt returnate în interogare.

Tabele temporare

Tabelele temporare sunt tabele ale căror date sunt șterse la sfârșitul fiecărei sesiuni sau mai devreme. Sunt folosite pentru a înregistra valori sau rezultate intermediare. Ele pot fi folosite ca foi de lucru. Le puteți defini temporare în orice sesiune, dar puteți utiliza datele lor numai în sesiunea curentă. Crearea tabelelor SQL temporare este similară cu tabelele obișnuite, folosind comanda CREATE TABLE. Pentru a arăta sistemului că tabelul este temporar, trebuie să utilizați parametrul GLOBAL TEMPORARY.

Clauza ON COMMIT stabilește durata de viață a datelor într-un astfel de tabel și poate face următoarele:

  • DELETE ROWS - ștergeți tabelul temporar (ștergeți toate datele sesiunii) după finalizarea fiecărei tranzacții. Aceasta este de obicei valoarea implicită.
  • PĂSTRARE RÂNDURI - lăsați datele pentru utilizare în următoarea tranzacție. În plus, puteți șterge tabelul numai după încheierea sesiunii. Dar există câteva particularități. Dacă o tranzacție este anulată (ROLLBACK), tabelul va fi revenit la starea sa la sfârșitul tranzacției anterioare.

Sintaxa pentru crearea unui tabel temporar poate fi reprezentată astfel: CREATE TABLE Nume_Mese,(Numecoloana_1 tip de date [column_constraint], Nume _coloana2 tipul de date [column_constraint], [table_constraints]).

După crearea tabelelor goale, următorul pas logic este să le populați cu date și să actualizați acele date. Există câteva declarații în Transact-SQL pentru aceasta: INSERT - UPDATE.

Cu toate acestea, adesea într-o etapă târzie de proiectare este nevoie să se schimbe schema tabelului în sine. De exemplu, dacă cheia primară sau tipul de date al unei coloane s-a schimbat. Pentru a nu șterge tabelele vechi și a nu le crea din nou cu ajutorul CREATE TABLE cu parametrii corecti, se folosește instrucțiunea ALTER TABLE. Aplicarea acestor trei constructe este discutată mai jos.

Umplerea meselor

Puteți completa un tabel cu date folosind instrucțiunea CREATE TABLE, dar o abordare mai eficientă este să separați crearea și completarea tabelului, mai ales pentru începătorii în SQL, deoarece:

  • vizual mai clar;
  • Este mai convenabil dacă tabelele sunt completate în etape.

Pentru a obține următoarea vizualizare a tabelului:

ID. Chiriaş

Data nașterii

Numărul apartamentului

Adresa de e-mail

Aleksin. V.V.

Gorbunov D.D.

[email protected]

Simonova K.R.

Dormitotova K.S.

[email protected]

Va trebui să-l creați folosind CREAȚI TABELși completați-l folosind instrucțiunea INSERT. Următoarea declarație adaugă un rând la tabelul de locuitori pe care l-am creat deja:

Șterge versiunea anterioara mese DROP TABLE colegi de casă; -- Creați un tabel. CREATE TABLE housemates(housemeateID int NOT NULL CONSTRAINT primary_id PRIMARY KEY, housemateName nvarchar(30) NOT NULL, BithDate date NOT NULL, apartmentnumber int NOT NULL, Email nvarchar(30)); -- Inserați date în tabel USE GO INSERT INTO ( , , , ,) VALUES (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]")

În exemplul de mai sus, trebuie să distingem între două blocuri ale constructului INSERT:

ÎN- indicând tabelul în care sunt adăugate datele

VALORI- inițializarea intrării de linie.

În parametrii (în paranteze) blocului ÎN Coloanele sunt listate în ordinea în care apar. O înregistrare fără parametri este acceptabilă dacă ordinea coloanelor la crearea tabelului și la completarea acestuia este aceeași. Următorul cod este identic cu cel anterior:

INSERT INTO VALUES (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]")

Dacă trebuie să modificați ordinea de umplere, atunci acest lucru trebuie să fie indicat în mod explicit:

INSERT INTO (,,, ,) VALUES ("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)

În blocul VALUES, inițializarea rând cu rând se realizează în ordinea coloanelor blocului INTO. Row padding este o listă de valori ale celulelor între paranteze. Valorile sunt enumerate separate prin virgule, iar liniile sunt separate unele de altele.

Puteți aplica construcția INSERT numai acelor coloane care nu conțin încă date. În caz contrar, va apărea o eroare de execuție a cererii.

Actualizarea unui tabel

Necesitatea actualizării tabelelor apare dacă este necesară modificarea datelor deja introduse în tabel. Efectuat folosind instrucțiuni ACTUALIZAȚI. Dacă INSERT funcționează numai cu tabelele goale, atunci UPDATE funcționează doar cu cele pline. Dacă cererea este adresată celulelor goale, va apărea o eroare.

Următorul cod va aloca unul nou Cutie poștală unui rezident al unei case cu numărul de identificare 103.

ACTUALIZAȚI colegii de casă SET E-mail = " [email protected]" WHERE housemeateID = 103

bloc A STABILIT- acesta este un bloc de schimbări. Dacă trebuie să actualizați valoarea mai multor celule, acestea sunt listate separate prin virgule.

UPDATE coechipieri SET E-mail = "homemanage [email protected]", housemateName = "Rurik S.S." WHERE housemeateID = 103

Schimbarea unei mese

În etapele ulterioare de proiectare sau după dezvoltarea bazei, apare adesea nevoia:

  • adăugați sau eliminați o coloană;
  • schimba tipul coloanei;
  • desemnați o coloană sau un grup de coloane ca cheie primară sau străină sau eliminați aceste restricții.

Pentru toate aceste operațiuni există o instrucțiune de anulare. MASA ATER.

Pentru a adăuga o coloană, instrucțiunea ALTER TABLE este utilizată împreună cu clauza ADD. Să adăugăm o nouă coloană la tabelul de locuitori din secțiunea anterioară:

ALTER TABLE housemates ADD PhoneNumber nvarchar(12) NULL;

Trebuie să-i aplicați o propoziție ALTER COLONAîn interiorul ALTER TABLE:

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

Elimină o coloană folosind COLOCARE COLONAîn interiorul ALTER TABLE:

ALTER TABLE coechipieri DROP COLUMN PhoneNumber;

Cheia primară sau străină este eliminată și adăugată folosind constructele ALTER TABLE ADD CONSTRAINT/DROP CONSTRAINT, respectiv:

Eliminați o constrângere a cheii primare din coloana housemeateID ALTER TABLE housemates DROP CONSTRAINT primary_id; --Atribuiți coloana housemeateID ca cheie primară ALTER TABLE housemates ADD CONSTRAINT PK_ID PRIMARY KEY (housemeateID);

Dacă încercați să atribuiți o cheie primară unui tabel care este deja acolo, traducătorul de interogări va returna o eroare. Prin urmare, dacă tabelul are deja o cheie primară, ar trebui să o eliminați și să desemnați un grup de coloane ca cheie primară. De exemplu, așa:

ALTER TABLE colegii de casă DROP CONSTRAINT PK_ID; ALTER TABLE housemates ADD CONSTRAINT PK_ID,PK_AN PRIMARY KEY (housemeateID,apartmentnumber);