SQL Server CREATE, ALTER, DROP Table [T-SQL-exempel]

โšก Smart sammanfattning

SQL Server-tabeller lagrar data i rader och kolumner. Transact-SQL anvรคnder CREATE TABLE fรถr att bygga en tabell, ALTER TABLE fรถr att lรคgga till eller รคndra kolumner och DROP TABLE fรถr att ta bort tabellen, dess data och dess struktur.

  • ๐Ÿงฑ Vad รคr en tabell: En tabell lagrar data i rader och kolumner och รคr det grundlรคggande objektet fรถr att lagra data i en databas.
  • ๐Ÿ› ๏ธ SKAPA BORD: CREATE TABLE-satsen definierar varje kolumn med ett namn, en datatyp och en NULL- eller NOT NULL-instรคllning.
  • ๐Ÿ“‹ Skapa frรฅn befintligt: SELECT โ€ฆ INTO kopierar valda kolumner och rader frรฅn en befintlig tabell till en helt ny tabell.
  • โž• ร„NDRA TABELL: ALTER TABLE โ€ฆ ADD lรคgger till nya kolumner i en tabell utan att รฅterskapa den.
  • ๐Ÿ—‘๏ธ SLร„PPBORD: DROP TABLE tar bort hela tabellen, inklusive dess data och dess struktur.
  • ๐Ÿ–ฑ๏ธ Borddesigner: SQL Server Management Studio kan ocksรฅ skapa och รคndra tabeller visuellt via Table Designer.

SQL Server CREATE, ALTER och DROP-tabell med T-SQL-exempel

Vad รคr ett bord?

En tabell รคr ett objekt i SQL Server som lagrar data i rad- och kolumnformat. Diagrammet nedan visar rader respektive kolumner.

Diagram รถver en tabell som lagrar data i rader och kolumner

Hur man skapar en tabell i SQL Server med T-SQL

Det fรถrsta steget fรถr att lagra data รคr att skapa en tabell i databas var informationen kommer att finnas. Efter att du har skapat tabellen kan du fortsรคtta infoga rader i den.

Du kan skapa en tabell pรฅ fรถljande sรคtt:

  • T-SQL: skapa en ny tabell genom att definiera alla kolumner och deras datatyp.
  • T-SQL: skapa en ny tabell med hjรคlp av en befintlig tabell.
  • Anvรคnda tabelldesignern.

Lรฅt oss studera detta i detalj.

T-SQL: Skapa en ny tabell genom att definiera alla kolumner och deras datatyp

Nedan fรถljer syntaxen fรถr att skapa en tabell i SQL Server.

Syntax:

CREATE TABLE tableName
( 
  column_1 datatype [ NULL | NOT NULL ],
  column_2 datatype [ NULL | NOT NULL ],
  ...
);

Hรคr,

  • Parametern tableName anger namnet pรฅ tabellen som du ska skapa.
  • Parametrarna kolumn_1, kolumn_2... anger de kolumner som ska lรคggas till i tabellen.
  • En kolumn ska anges som antingen NULL eller NOT NULL. Om du inte anger det tar SQL Server NULL som standardvรคrde.

Lรฅt oss skapa en enkel tabell med tvรฅ kolumner.

Frรฅga:

CREATE TABLE COURSE
(
Course_ID Int,
Course_Name Varchar(10)
)

Nรถdvรคndig fรถrutsรคttning: Vรคlj den databas dรคr du vill skapa tabellen.

Steg 1) Kรถr frรฅgan genom att klicka pรฅ Kรถr. Innan frรฅgan kรถrs finns ingen tabell, som visas nedan.

Objektutforskaren visar ingen kurstabell innan CREATE-satsen kรถrs

Nรคr du har kรถrt frรฅgan klickar du pรฅ knappen Uppdatera. Den nya tabellen finns nu som Kurs, som visas nedan.

Kurstabellen visas i Object Explorer efter kรถrning och uppdatering

Steg 2) Infoga lite data. Skรคrmbilderna nedan visar den nyskapade kurstabellen som รคr redo att ta emot rader.

Nyskapad kurstabell vald i Object Explorer innan data infogas

Kurstabellstruktur med dess tvรฅ kolumner visade fรถre datainsรคttning

Hittills finns bara tabellen, men det finns รคnnu inga data i den.

Transact-SQL tillhandahรฅller INSERT-satsen fรถr att infoga data i en tabell. Med denna sats kan du infoga en eller flera rader i en tabell.

Syntax:

INSERT INTO tableName
(column_1, column_2, ... )
VALUES
(expression_1, expression_2, ... ),
(expression_1, expression_2, ... ),
...;

Syntaxen ovan visar den grundlรคggande formen av kommandot nรคr man anvรคnder nyckelordet VALUES fรถr att infoga data i en tabell.

Lรฅt oss infoga fyra rader med hjรคlp av INSERT-kommandot.

Insert into COURSE values (1,'SQL');
Insert into COURSE values (2,'Python');
Insert into COURSE values (3,'SQL');
Insert into COURSE values (4,'C');

ร–gonblicksbilden nedan visar att insรคttningen av fyra rader har lyckats.

Meddelandefรถnstret bekrรคftar att fyra rader har infogas i kurstabellen

Steg 3) Anvรคnd SELECT-satsen fรถr att visa data. Fรถr att visa data i SQL Server, anvรคnd fรถljande syntax:

SELECT expression
FROM tableName
[WHERE condition];

Exempelfrรฅga:

SELECT * FROM COURSE;

Tabellen skapades och innehรฅller nu fyra poster. Observera att du kan skapa poster med ett duplicerat vรคrde i vilken kolumn som helst, eftersom det inte finns nรฅgra begrรคnsningar.

Resultatrutnรคt som visar de fyra kursraderna som returneras av SELECT

T-SQL: Skapa en ny tabell med hjรคlp av en befintlig tabell

Anta att du vill ha en annan tabell liknande den KURS-tabell som skapades ovan, men du behรถver bara kolumnen Kursnamn och inte Kurs-ID.

Syntax:

SELECT (Column 1, โ€ฆ) INTO <New Table name> FROM <Old Table name>;

Exempelfrรฅga:

SELECT COURSE_NAME INTO COURSE_NAMES FROM COURSE;

Steg 1) Kรถr frรฅgan genom att klicka pรฅ Kรถr. En ny tabell med namnet COURSE_NAMES skapas med en kolumn och fyra poster kopierade frรฅn den รคldre tabellen, som visas nedan.

Ny COURSE_NAMES-tabell skapad frรฅn en befintlig tabell med SELECT INTO

Exempelfrรฅga:

SELECT * FROM COURSE_NAMES;

Resultatet nedan listar de fyra Course_Name-posterna i den nya tabellen COURSE_NAMES.

Resultatrutnรคt som visar vรคrdena fรถr Course_Name i tabellen COURSE_NAMES

Anvรคnda Table Designer

Du kan ocksรฅ skapa en tabell frรฅn SQL Server Management Studio IDE med hjรคlp av tabelldesignern.

Steg 1) Hรถgerklicka pรฅ Tabell > Ny > Tabell, som visas nedan.

Hรถgerklicka pรฅ Tabell, sedan Ny och sedan Tabell i Object Explorer

Steg 2) Ange kolumnnamnen och datatyperoch vรคlj om varje kolumn tillรฅter nullvรคrden.

Verktygsfรคltet Tabelldesigner fรถr att definiera en ny tabell

Tabelldesignerrutnรคt med kolumnnamn, datatyper och alternativ fรถr Tillรฅt nullvรคrden

Steg 3) Tryck CTRL+S fรถr att spara tabellen och ange namnet som Kurstitel.

Dialogrutan Vรคlj namn fรถr att spara den nya tabellen som Kurstitel

Efter att du klickat pรฅ Uppdatera visas den nya tabellen med namnet Kurstitel och en kolumn med namnet Kursnamn, som visas nedan.

Tabellen Course_Title med en enda Course_Name-kolumn i Object Explorer

ร„ndra tabell i SQL Server

Det finns tvรฅ sรคtt att รคndra en tabell i SQL Server:

  • T-SQL: รคndra tabellen genom att lรคgga till nya kolumner.
  • Anvรคnda tabelldesignern.

T-SQL: ร„ndra tabell genom att infoga kolumner

Nedan fรถljer syntaxen fรถr ALTER-kommandot i SQL:

Syntax:

 Alter TABLE <Table name> ADD Column1 datatype, Column2 datatype;

Frรฅga:

ALTER TABLE dbo.Course_Title ADD Course_Duration VARCHAR(20);

Steg 1) Kรถr frรฅgan genom att klicka pรฅ Kรถr. En ny kolumn med namnet Course_Duration finns nu i tabellen Course_Title, som visas nedan.

ALTER TABLE ADD-satsen lรคgger till kolumnen Course_Duration

Kolumnerna Course_Title inklusive den nyligen tillagda kolumnen Course_Duration

Anvรคnda Table Designer

Du kan ocksรฅ รคndra en tabell frรฅn anvรคndargrรคnssnittet med hjรคlp av tabelldesignern.

Steg 1) Hรถgerklicka pรฅ den befintliga tabellen > Design, som visas nedan.

Hรถgerklicka pรฅ tabellen Kurstitel och vรคlj Design

Steg 2) Lรคgg till kolumnnamnet som Course_Start_Date och vรคlj dess datatyp.

Lรคgga till kolumnen Course_Start_Date och dess datatyp i tabelldesignern

Steg 3) Tryck CTRL+S fรถr att spara den nyligen tillagda kolumnen. En ny kolumn med namnet Course_Start_Date skapas i tabellen Course_Title, som visas nedan.

Tabellen Course_Title som visar den sparade kolumnen Course_Start_Date

Ta bort tabell i SQL Server

Du tar bort en tabell nรคr den inte lรคngre behรถvs.

Det finns tvรฅ sรคtt att ta bort en tabell i SQL Server:

  • Anvรคnder SQL Server Management Studio.
  • T-SQL: ta bort tabellen med DROP TABLE.

Anvรคnda SQL Server Management Studio

Steg 1) Hรถgerklicka pรฅ den befintliga tabellen > Ta bort, fรถr tabellen med namnet Kurstitel, som visas nedan.

Hรถgerklicka pรฅ tabellen Kurstitel och vรคlj Ta bort

Steg 2) Klicka pรฅ OK i fรถnstret Ta bort objekt.

Bekrรคftelsefรถnstret fรถr att ta bort objekt med OK-knappen

Tabellen Course_Title รคr nu borttagen frรฅn tabellistan, som visas nedan.

Object Explorer-tabelllista efter att tabellen Course_Title har tagits bort

T-SQL: Ta bort tabell

Nedan fรถljer syntaxen fรถr att ta bort en tabell.

Syntax:

DROP TABLE <tableName>;

Parametern tableName รคr namnet pรฅ tabellen som ska raderas.

Frรฅga:

DROP TABLE COURSE_NAMES;

Steg 1) Kรถr frรฅgan genom att klicka pรฅ Kรถr. Tabellen COURSE_NAMES tas bort frรฅn tabellistan, som visas nedan.

DROP TABLE-sats tar bort tabellen COURSE_NAMES

Object Explorer-tabelllistan efter att tabellen COURSE_NAMES har tagits bort

Alternativt visar kรคllkoden ett DELETE TABLE-kommando som รคr avsett att endast ta bort rader (data) samtidigt som tabellstrukturen lรคmnas intakt, sรฅ att tabellen kan รฅteranvรคndas senare.

Syntax:

DELETE TABLE <Table name>;

Obs: I standard T-SQL tas rader bort med DELETE FROM <table>, och ett bord tรถms snabbt med TRUNCATE TABLE <table>; hela tabellen tas bort med DROP TABLE, som visas ovan.

Intressanta fakta!

  • Stora filer som XML eller bilder kan lagras i en kolumn med hjรคlp av datatyper fรถr stora objekt som VARBINARY(MAX), VARCHAR(MAX) eller XML-typen (SQL Server anvรคnder inte Oracle-stil BLOB- och CLOB-namn).
  • DELETE tar bara bort rader och kan rullas tillbaka inom en transaktion, medan DROP tar bort hela tabellstrukturen; i SQL Server kan รคven DROP rullas tillbaka nรคr den kรถrs inuti en explicit transaktion.

Vanliga frรฅgor

DELETE tar bort valda rader och loggas fullstรคndigt. TRUNCATE tar snabbt bort alla rader och รฅterstรคller identitetsvรคrden. DROP tar bort hela tabellen, dess data och dess struktur. I SQL Server kan alla tre รฅterstรคllas i en explicit transaktion.

Anvรคnd DROP TABLE IF EXISTS tabellnamn, tillgรคngligt sedan SQL Server 2016. Den tar bort tabellen nรคr den finns och gรถr ingenting nรคr den saknas, vilket undviker ett fel. Pรฅ รคldre versioner, kontrollera OBJECT_ID innan du slรคpper den.ping.

SQL Server har ingen RENAME TABLE-sats. Kรถr istรคllet den systemlagrade proceduren sp_rename, till exempel EXEC sp_rename 'old_name', 'new_name'. Uppdatera beroende vyer, procedurer och kod efterรฅt, eftersom sp_rename inte รคndrar dessa referenser automatiskt.

Ja. ALTER TABLE table ALTER COLUMN column new_type รคndrar en kolumns datatyp, och ALTER TABLE table DROP COLUMN column tar bort den. ร„ndringen lyckas endast nรคr befintliga data รคr kompatibla, sรฅ testa konverteringar och sรคkerhetskopiera fรถrst.

Definiera begrรคnsningar inuti CREATE TABLE, sรฅsom Course_ID INT PRIMARY KEY, eller lรคgg till dem senare med ALTER TABLE ADD CONSTRAINT. primรคr nyckel framtvingar unikhet, medan en frรคmmande nyckel lรคnkar rader mellan tabeller.

En temporรคr tabell, namngiven med prefixet #, skapas i tempdb och tas bort automatiskt nรคr sessionen avslutas. En vanlig tabell รคr permanent tills du tar bort den. Temporรคra tabeller passar fรถr kortlivade mellanliggande resultat i en batch eller procedur.

Ja. GitHub Copilot kan skapa CREATE-, ALTER- och DROP TABLE-skript frรฅn naturligt sprรฅk och fรถreslรฅ kolumner, datatyper och begrรคnsningar. Granska alltid det genererade schemat, nycklarna och nullbarheten innan du kรถr det i produktion.

AI- och maskininlรคrningsverktyg rekommenderar tabellstrukturer, datatyper och index frรฅn exempeldata och frรฅgemรถnster, flaggar redundanta eller รถverdimensionerade kolumner och varnar fรถr riskabla DROP- eller ALTER-รฅtgรคrder. Utvecklaren bekrรคftar varje fรถrslag innan det tillรคmpas.

Sammanfatta detta inlรคgg med: