Windows.  Virus.  Anteckningsböcker.  Internet.  kontor.  Verktyg.  Förare

Senaste uppdateringen: 13.07.2017

För att lägga till data används kommandot INSERT, som har följande formella syntax:

INFOGA tabellnamn [(kolumnlista)] VÄRDEN (värde1, värde2, ... värdeN)

I början finns en INSERT INTO-sats, sedan inom parentes kan du ange en lista med kolumner, separerade med kommatecken, i vilka data ska läggas till, och i slutet, efter ordet VALUES, inom parentes, värdena som ska läggas till för kolumnerna är listade.

Låt oss till exempel säga att följande databas skapades tidigare:

SKAPA DATABAS productsdb; GÅ ANVÄND productsdb; SKAPA TABELL Produkter (Id INT IDENTITET PRIMÄRNYCKEL, Produktnamn NVARCHAR(30) NOT NULL, Tillverkare NVARCHAR(20) NOT NULL, ProductCount INT DEFAULT 0, Pris PENGAR INTE NULL)

Låt oss lägga till en rad med kommandot INSERT:

INFOGA produkter VÄRDEN ("iPhone 7", "Apple", 5, 52000)

Efter framgångsrikt slutförande av SQL Server Management Studio bör visa "1 rad(er) påverkade" i meddelanderutan:

Observera att värdena för kolumnerna inom parentes efter nyckelordet VALUES skickas i den ordning som de deklareras. Till exempel, i CREATE TABLE-satsen ovan kan du se att den första kolumnen är Id. Men eftersom IDENTITY-attributet är inställt för det, genereras värdet för denna kolumn automatiskt och det kan utelämnas. Den andra kolumnen representerar ProductName, så det första värdet, strängen "iPhone 7", kommer att skickas till den kolumnen. Det andra värdet, strängen "Apple", kommer att skickas till den tredje kolumnen Tillverkare, och så vidare. Det vill säga värdena skickas till kolumnerna enligt följande:

    Produktnamn: "iPhone 7"

    Tillverkare: Apple

När du anger värden kan du också ange de omedelbara kolumnerna där värden kommer att läggas till:

INSERT INTO Products (produktnamn, pris, tillverkare) VÄRDEN ("iPhone 6S", 41000, "Apple")

Här anges värdet endast för tre kolumner. Och nu skickas värdena i kolumnernas ordning:

    Produktnamn: "iPhone 6S"

    Tillverkare: Apple

För ospecificerade kolumner (i det här fallet ProductCount) kommer att lägga till ett standardvärde om DEFAULT-attributet är inställt, eller NULL. Ospecificerade kolumner måste dock vara nullbara eller ha ett DEFAULT-attribut.

Vi kan också lägga till flera rader samtidigt:

INFOGA I PRODUKTS VÄRDEN ("iPhone 6", "Apple", 3, 36000), ("Galaxy S8", "Samsung", 2, 46000), ("Galaxy S8 Plus", "Samsung", 1, 56000)

I det här fallet kommer tre rader att läggas till i tabellen.

När vi lägger till kan vi också ange att standardvärdet används för kolumnen med nyckelordet DEFAULT eller NULL:

INFOGA I produkter (produktnamn, tillverkare, produktantal, pris) VÄRDEN ("Mi6", "Xiaomi", DEFAULT, 28000)

I det här fallet kommer standardvärdet att användas för kolumnen ProductCount (om det är inställt, om inte, då NULL).

Om alla kolumner har ett DEFAULT-attribut som definierar ett standardvärde, eller är nullbara, kan du infoga standardvärden för alla kolumner:

INFOGA I produkter STANDARDVÄRDEN

Men om du tar tabellen Produkter, kommer ett sådant kommando att misslyckas, eftersom flera fält inte har ett DEFAULT-attribut och samtidigt inte tillåter null-värden.

Ta bort poster

DELETE-satsen används för att ta bort poster från en tabell:

DELETE FROM tabellnamn WHERE-villkor;

Denna sats tar bort från de angivna tabellposterna (inte enskilda kolumnvärden) som uppfyller det angivna villkoret. Villkoret är booleskt uttryck, vars olika design diskuterades i tidigare labb.

Följande fråga tar bort poster från kundtabellen där värdet på kolumnen LName är "Ivanov":

RADERA FRÅN Kund

WHERE LName = "Ivanov"

Om tabellen innehåller information om flera klienter med efternamnet Ivanov, kommer alla att raderas.

WHERE-satsen kan innehålla en underfråga för att välja data (SELECT-satsen). Underfrågor i en DELETE-sats fungerar precis på samma sätt som de gör i en SELECT-sats. Följande fråga tar bort alla kunder från staden Moskva, med stadens unika identifierare returneras med hjälp av en underfråga.

RADERA FRÅN Kund

WHERE IdCity IN (VÄLJ IdCity FROM City WHERE CityName = "Moskva")

Transact-SQL utökar standard SQL genom att tillåta dig att använda en annan FROM-sats i en DELETE-sats. Denna tillägg, som anger en koppling, kan användas istället för en underfråga i WHERE-satsen för att ange raderna som ska tas bort. Det låter dig ställa in data från den andra FROM och ta bort motsvarande rader från tabellen i den första FROM-satsen. I synnerhet kunde den tidigare frågan skrivas om enligt följande

RADERA FRÅN Kund

FRÅN Kund k INNER JOIN

Operationen att ta bort poster från en tabell är farlig i den meningen att den är förknippad med risken för oåterkallelig dataförlust i händelse av semantiska (men inte syntaktiska) fel i formuleringen av SQL-satsen. För att undvika problem, innan du tar bort poster, rekommenderas det att du först kör lämplig urvalsfråga för att se vilka poster som kommer att raderas. Så, till exempel, innan exekvering av raderingsfrågan som diskuterades tidigare, skulle det inte skada att köra motsvarande urvalsfråga.

VÄLJ*

FRÅN Kund k INNER JOIN

Stad c PÅ k.IdCity = c.IdCity OCH c.CityName = "Moskva"

För att ta bort alla poster från en tabell, använd bara DELETE-satsen utan nyckelordet WHERE. Samtidigt sparas själva tabellen med alla kolumner definierade i den och är redo att infoga nya poster. Till exempel tar följande fråga bort poster för alla produkter.

RADERA FRÅN produkt

Uppgift för självständigt arbete: Formulera på SQL-språk en begäran om att radera alla beställningar som inte innehåller några varor (dvs alla tomma beställningar).

Ändringsbegäranden används för att lägga till (INSERT INTO), ta bort (DELETE) och uppdatera (UPDATE) poster i tabeller.

INSERT INTO-kommandot

Kommandot INSERT INTO kan användas för att lägga till en eller flera poster i slutet av en tabell.

Syntaxen för kommandot INSERT INTO är följande:
INSERT INTO Table_Name [(Field_Name)] VÄRDEN (Data_Values);

Låt oss till exempel lägga in en post i tabellen "Grupper" som innehåller data (1, BF-16a, 1, 1) i motsvarande kolumner (Grupp-ID, Namn, Kurs, Semester).

För denna begäran i formatet:
INFOGA I grupper (Gruppkod, Namn, Kurs, Termin) VÄRDEN (1, BF-16a, 1, 1);
vi kommer att ange det på frågeformuläret genom att utföra kommandot "Frågebyggare" på fliken "Skapa", i läget "SQL-läge" från menyn Visa.

Vi sparar frågan med namnet "Add_1_records". Som ett resultat kommer ett icke-relaterat objekt att visas i "Navigation Area" - "Add_1_records" (Fig.1.).


Ris. 1.

När du har sparat frågan måste du utföra denna fråga genom att klicka på ikonen "Kör". Som ett resultat av att utföra kommandot "Add_1_records" kommer den första posten att visas i den tomma tabellen (Fig. 2.)



Ris. 2.

UPDATE kommando

Kommandot UPDATE är avsett att modifiera redan befintliga poster i tabellens kolumner, vilket gör att du kan uppdatera värdena i tabellens givna kolumner.

Syntaxen för kommandot UPDATE är följande:
UPPDATERA Table_Name SET Column_Name = New_Value WHERE Filter_Condition;

SET-satsen specificerar namnen på de kolumner vars data behöver ändras. WHERE-satsen är valfri, men den kan bara peka på raderna i kolumnerna (tabellerna) som behöver uppdateras.

Låt oss skapa en fråga för att ändra en post i tabellen "Grupper" i databasen sql_training_st.mdb.

Låt oss till exempel ändra en redan befintlig post för det första nyckelfältets ID i kolumnen "Namn" i tabellen "Grupper".

Begäran i formatet:
UPPDATERA grupper SET Name="BF-16b" WHERE ID=1;

Vi sparar frågan med namnet "Change_record_1". Som ett resultat kommer ett objekt att dyka upp i "Navigation Area" - "Change_record_1" (Fig. 3.).



Ris. 3.

När du har sparat frågan måste du utföra denna fråga genom att klicka på ikonen "Kör". Som ett resultat av att utföra kommandot Change_Record_1 kommer en dialogruta att visas där du måste ange värdet på parametern ID=1 och klicka på OK. Efter dessa åtgärder i tabellen "Grupper" kommer inmatningen i fältet "Namn" att ändras från BF-16a till BF-16b (Fig. 4.).



Ris. 4.

Kommandot DELETE

Kommandot DELETE är utformat för att ta bort poster från en tabell.

Format för begäran om att radera poster:
DELETE FROM Table_Name WHERE Selection_Condition;

Låt oss skapa en fråga för att ändra en post i tabellen "Grupper" i databasen sql_training_st.mdb.

Låt oss till exempel ta bort den befintliga posten för det första nyckelfältets ID i alla kolumner (fält) i tabellen "Grupper".

För denna begäran i formatet:
DELETE FROM Groups WHERE ID=1;
skapa på frågeformuläret genom att utföra kommandot "Frågedesigner" på fliken "Skapa" i läget "SQL-läge" från menyn Visa.

Vi sparar frågan med namnet "Delete_record_1". Som ett resultat kommer ett objekt att dyka upp i "Navigation Area" - "Delete_record_1" (Fig. 5.).



Ris. 5.

När du har sparat frågan måste du utföra denna fråga genom att klicka på ikonen "Kör". Som ett resultat av att utföra kommandot "Delete_record_1" kommer en dialogruta att visas där du måste ange värdet för parametern ID=1 och klicka på OK. Efter dessa steg öppnas en dialogruta "Bekräfta borttagning av poster". Efter bekräftelse i tabellen "Grupper" kommer uppgifterna i alla fält att raderas, d.v.s. posten raderas (fig. 6.).



Ris. 6.

Det bör noteras att för att radera data i specifika fält i tabellen, är det lämpligt att använda kommandot UPDATE och ersätta värdena i de obligatoriska fälten med Null. Om det är nödvändigt att ta bort tabellen som helhet, ska DROP TABLE-satsen användas (syntaxen för satsen är: DROP TABLE TableName;).

Låt oss återställa den första posten i tabellen "Grupper" genom att utföra kommandot "Add_1_records", som ett resultat kommer vi att återställa den första posten (Fig. 7.).



Ris. 7.

Allmän syntax:

a) infoga en ny rad i tabellen:

FÖRA IN<таблица>[(kolumner)]

VÄRDEN

b) Infoga en eller flera rader från källan som anges i underfrågan i tabellen:

FÖRA IN<таблица>[(kolumner)]