Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Analysplattformssystem (PDW)
SQL-databas i Förhandsversion av Microsoft Fabric
Note
Utbildningsvägen Komma igång med frågor med Transact-SQL ger mer djupgående innehåll, tillsammans med praktiska exempel.
Den här lektionen visar hur du skapar en databas, skapar en tabell i databasen och sedan kommer åt och ändrar data i tabellen. Eftersom den här lektionen är en introduktion till att använda Transact-SQL använder eller beskriver den inte de många alternativ som är tillgängliga för dessa instruktioner.
Transact-SQL-instruktioner kan skrivas och skickas till databasmotorn på följande sätt:
Genom att använda SQL Server Management Studio. Den här självstudien förutsätter att du använder Management Studio, men du kan också använda Management Studio Express, som är tillgängligt som en kostnadsfri nedladdning från Microsoft Download Center.
Genom att använda verktyget sqlcmd .
Genom att ansluta från ett program som du skapar.
Koden körs på databasmotorn på samma sätt och med samma behörigheter, oavsett hur du skickar kodinstruktionerna.
Om du vill köra Transact-SQL-instruktioner i Management Studio öppnar du Management Studio och ansluter till en instans av SQL Server Database Engine.
Prerequisites
För att slutföra den här självstudien behöver du SQL Server Management Studio och åtkomst till en SQL Server-instans.
- Installera SQL Server Management Studio.
Om du inte har någon SQL Server-instans skapar du en. Om du vill skapa en väljer du din plattform från följande länkar. Om du väljer SQL-autentisering använder du dina autentiseringsuppgifter för SQL Server-inloggning.
- Windows: Ladda ned SQL Server 2022 Developer Edition.
- Linux: Snabbstart: Kör SQL Server Linux-containeravbildningar med Docker.
Skapa en databas
Precis som många Transact-SQL-instruktioner har CREATE DATABASE-instruktionen en obligatorisk parameter: namnet på databasen.
CREATE DATABASE har också många valfria parametrar, till exempel den diskplats där du vill placera databasfilerna. När du kör CREATE DATABASE utan de valfria parametrarna använder SQL Server standardvärden för många av dessa parametrar.
I ett frågeredigerare-fönster skriver du men kör inte följande kod:
CREATE DATABASE TestData GOAnvänd pekaren för att välja orden
CREATE DATABASEoch tryck sedan på F1. ArtikelnCREATE DATABASEbör öppnas. Du kan använda den här tekniken för att hitta den fullständiga syntaxen förCREATE DATABASEoch för de andra satser som används i den här handledningen.I Frågeredigeraren trycker du på F5 för att köra -instruktionen och skapa en databas med namnet
TestData.
När du skapar en databas gör SQL Server en kopia av model databasen och byter namn på kopian till databasnamnet. Den här åtgärden bör bara ta flera sekunder, såvida du inte anger en stor initial storlek på databasen som en valfri parameter.
Note
Nyckelordet GO separerar instruktioner när mer än en instruktion skickas i en enda batch.
GO är valfritt när batchen bara innehåller en -instruktion.
Skapa en tabell
gäller för:SQL Server
Azure SQL Database
Azure Synapse Analytics
Analytics Platform System (PDW)
Om du vill skapa en tabell måste du ange ett namn för tabellen och namnen och datatyperna för varje kolumn i tabellen. Det är också en bra idé att ange om nullvärden tillåts i varje kolumn. Om du vill skapa en tabell måste du ha behörigheten CREATE TABLE och behörigheten ALTER SCHEMA för schemat som ska innehålla tabellen. Den db_ddladmin fasta databasrollen har dessa behörigheter.
De flesta tabeller har en primärnyckel som består av en eller flera kolumner i tabellen. En primärnyckel är alltid unik. Databasmotorn tillämpar begränsningen att ett primärnyckelvärde inte kan upprepas i tabellen.
En lista över datatyper och länkar för en beskrivning av var och en finns i Datatyper.
Note
Databasmotorn kan installeras som skiftlägeskänslig eller icke-skiftlägeskänslig. Om databasmotorn är installerad som skiftlägeskänslig måste objektnamn alltid använda samma skiftläge. En tabell med namnet OrderData är till exempel en annan tabell än en tabell med namnet ORDERDATA. Om databasmotorn installeras som icke-skiftlägeskänslig anses dessa två tabellnamn vara samma tabell och det namnet kan bara användas en gång.
Växla frågeredigerarens anslutning till TestData-databasen
I ett frågeredigerare-fönster skriver och kör du följande kod för att ändra anslutningen till TestData databasen.
USE TestData
GO
Skapa tabellen
I ett frågeredigerare-fönster skriver och kör du följande kod för att skapa en tabell med namnet Products. Kolumnerna i tabellen heter ProductID, ProductName, Priceoch ProductDescription. Kolumnen ProductID är den primära nyckeln i tabellen.
int, varchar(25), moneyoch varchar(max) är alla datatyper. Endast kolumnerna Price och ProductionDescription får inte ha några data när en rad infogas eller ändras. Den här instruktionen innehåller ett valfritt element (dbo.) som kallas schema. Schemat är det databasobjekt som äger tabellen. Om du är administratör dbo är standardschemat.
dbo står för databasägaren.
CREATE TABLE dbo.Products
(ProductID int PRIMARY KEY NOT NULL,
ProductName varchar(25) NOT NULL,
Price money NULL,
ProductDescription varchar(max) NULL)
GO
Infoga och uppdatera data i en tabell
Nu när du har skapat Products tabellen är du redo att infoga data i tabellen med hjälp av -instruktionen INSERT . När data har infogats ändrar du innehållet i en rad med hjälp av en UPDATE instruktion. Du använder instruktionens WHEREUPDATE sats för att begränsa uppdateringen till en enda rad. De fyra uttrycken anger följande data.
| ProductID | ProductName | Price | ProductDescription |
|---|---|---|---|
| 1 | Clamp | 12.48 | Workbench-klämma |
| 50 | Skruvmejsel | 3.17 | Platt huvud |
| 75 | Däckstapel | Verktyg för att byta däck. | |
| 3000 | 3 mm fäste | 0.52 |
Den grundläggande syntaxen är: INSERT, tabellnamn, kolumnlista och VALUESsedan en lista över de värden som ska infogas. De två bindestrecken framför en rad anger att raden är en kommentar och att texten ignoreras av kompilatorn. I det här fallet beskriver kommentaren en tillåten variant av syntaxen.
Infoga data i en tabell
Kör följande instruktion för att infoga en rad i tabellen
Productssom skapades i föregående uppgift.-- Standard syntax INSERT dbo.Products (ProductID, ProductName, Price, ProductDescription) VALUES (1, 'Clamp', 12.48, 'Workbench clamp') GOOm infogningen lyckas går du vidare till nästa steg.
Om infogningen misslyckas kan det bero på
Productatt tabellen redan har en rad med produkt-ID:t i den. Om du vill fortsätta tar du bort alla rader i tabellen och upprepar föregående steg. TRUNCATE TABLE tar bort alla rader i tabellen.Kör följande kommando för att ta bort alla rader i tabellen:
TRUNCATE TABLE TestData.dbo.Products; GONär du har trunkerat tabellen, upprepa kommandot
INSERTi det här steget.Följande instruktion visar hur du kan ändra i vilken ordning parametrarna tillhandahålls genom att växla placeringen av
ProductIDochProductNamei både fältlistan (inom parentes) och i värdelistan.-- Changing the order of the columns INSERT dbo.Products (ProductName, ProductID, Price, ProductDescription) VALUES ('Screwdriver', 50, 3.17, 'Flat head') GOFöljande instruktion visar att namnen på kolumnerna är valfria, så länge värdena visas i rätt ordning. Den här syntaxen är vanlig men rekommenderas inte eftersom det kan vara svårare för andra att förstå koden.
NULLanges förPricekolumnen eftersom priset för den här produkten ännu inte är känt.-- Skipping the column list, but keeping the values in order INSERT dbo.Products VALUES (75, 'Tire Bar', NULL, 'Tool for changing tires.') GOSchemanamnet är valfritt så länge du kommer åt och ändrar en tabell i standardschemat.
ProductDescriptionEftersom kolumnen tillåter null-värden och inget värde anges kanProductDescriptionkolumnnamnet och värdet tas bort helt från -instruktionen.-- Dropping the optional dbo and dropping the ProductDescription column INSERT Products (ProductID, ProductName, Price) VALUES (3000, '3 mm Bracket', 0.52) GO
Uppdatera produkttabellen
Skriv och kör följande UPDATE instruktion för att ändra ProductName den andra produkten från Screwdriver, till Flat Head Screwdriver.
UPDATE dbo.Products
SET ProductName = 'Flat Head Screwdriver'
WHERE ProductID = 50
GO
Läsa data från en tabell
Använd -instruktionen SELECT för att läsa data i en tabell. -instruktionen SELECT är en av de viktigaste Transact-SQL-uttrycken och det finns många variationer i syntaxen. I den här självstudien arbetar du med fem grundläggande versioner.
Att läsa data i en tabell
Skriv och kör följande instruktioner för att läsa data i
Productstabellen.-- The basic syntax for reading data from a single table SELECT ProductID, ProductName, Price, ProductDescription FROM dbo.Products GODu kan använda en asterisk (
*) för att markera alla kolumner i tabellen. Asterisken är för ad hoc-frågor. I permanent kod anger du kolumnlistan så att -instruktionen returnerar de förutsagda kolumnerna, även om en ny kolumn läggs till i tabellen senare.-- Returns all columns in the table -- Does not use the optional schema, dbo SELECT * FROM Products GODu kan utelämna kolumner som du inte vill returnera. Kolumnerna returneras i den ordning som de visas.
-- Returns only two of the columns from the table SELECT ProductName, Price FROM dbo.Products GOAnvänd en
WHEREsats för att begränsa de rader som returneras till användaren.-- Returns only two of the records in the table SELECT ProductID, ProductName, Price, ProductDescription FROM dbo.Products WHERE ProductID < 60 GODu kan arbeta med värdena i kolumnerna när de returneras. I följande exempel utförs en matematisk åtgärd i
Pricekolumnen. Kolumner som har ändrats på det här sättet har inget namn om du inte anger ett med hjälp av nyckelordetAS.-- Returns ProductName and the Price including a 7% tax -- Provides the name CustomerPays for the calculated column SELECT ProductName, Price * 1.07 AS CustomerPays FROM dbo.Products GO
Användbara funktioner i en SELECT-instruktion
Information om vissa funktioner som du kan använda för att arbeta med data i -instruktioner finns i SELECT följande artiklar:
Skapa vyer och lagrade procedurer
En vy är en lagrad SELECT instruktion och en lagrad procedur är en eller flera Transact-SQL-instruktioner som körs som en batch.
Vyer efterfrågas som tabeller och accepterar inte parametrar. Lagrade procedurer är mer komplexa än vyer. Lagrade procedurer kan ha både indata- och utdataparametrar och kan innehålla instruktioner för att styra kodflödet, till exempel IF och WHILE -instruktioner. Det är bra programmeringspraxis att använda lagrade procedurer för alla repetitiva åtgärder i databasen.
I det här exemplet använder CREATE du VIEW för att skapa en vy som bara väljer två av kolumnerna Products i tabellen. Sedan använder CREATE PROCEDURE du för att skapa en lagrad procedur som accepterar en prisparameter och returnerar endast de produkter som kostar mindre än det angivna parametervärdet.
Skapa en vy
Kör följande instruktion för att skapa en vy som kör en select-instruktion och returnerar namn och priser för våra produkter till användaren.
CREATE VIEW vw_Names
AS
SELECT ProductName, Price FROM Products;
GO
Testa vyn
Vyer behandlas precis som tabeller. Använd en SELECT instruktion för att komma åt en vy.
SELECT * FROM vw_Names;
GO
Skapa en lagrad procedur
Följande instruktion skapar ett lagrat procedurnamn pr_Names, accepterar en indataparameter med namnet @VarPrice av datatypen money. Den lagrade proceduren skriver ut instruktionen Products less than sammanfogad med indataparametern som ändras från money datatypen till en varchar(10) teckendatatyp. Sedan kör proceduren en SELECT -instruktion i vyn och skickar indataparametern som en del av WHERE -satsen. Detta returnerar alla produkter som kostar mindre än indataparametervärdet.
CREATE PROCEDURE pr_Names @VarPrice money
AS
BEGIN
-- The print statement returns text to the user
PRINT 'Products less than ' + CAST(@VarPrice AS varchar(10));
-- A second statement starts here
SELECT ProductName, Price FROM vw_Names
WHERE Price < @VarPrice;
END
GO
Testa den lagrade proceduren
Om du vill testa den lagrade proceduren skriver du och kör följande instruktion. Proceduren ska returnera namnen på de två produkter som anges i Products tabellen i lektion 1 med ett pris som är mindre än 10.00.
EXECUTE pr_Names 10.00;
GO