sql >> Databasteknik >  >> RDS >> Mysql

Introduktion till SQL-kommandon

I dagens värld av ökad digitalisering, big data och cloud computing är datahantering bland de viktigaste färdigheter en mjukvaruingenjör kan ha. För detta ändamål är SQL ett av de mest kraftfulla databasverktygen.

SQL (Structured Query Language) är standardprogrammeringsspråket som används för att manipulera datastrukturobjekt. De arbetar på data som finns i ett relationsdatabashanteringssystem (RDBMS). Några välkända RDBMS är MySQL och PostgreSQL.

I den här guiden lär du dig om undergrupperna av SQL-språket och hur du använder några grundläggande SQL-kommandon, som SELECT , INSERT , UPDATE och DELETE .

Underuppsättningar av SQL

Listan nedan inkluderar de olika språkunderuppsättningarna av olika SQL-kommandon. Varje delmängd har sin egen funktion och syfte.

  • Datadefinitionsspråk (DDL):Detta låter dig skapa, ta bort och uppdatera databasschemadefinitioner (nämligen tabeller och index), utan att faktiskt manipulera data i databastabellerna.
  • Data Query Language (DQL):DQL används för att hämta data från databasen med SELECT uttalande.
  • Datamanipulationsspråk (DML):Detta underspråk tillåter datamanipulation i databasen med INSERT , UPDATE och DELETE uttalanden.

Den här guiden använder en exempeldatabas för en skola för att ytterligare demonstrera SQL-kommandona för varje delmängd som anges ovan. Skoldatabasen har flera tabeller för elever, kurser, betyg och så vidare. Definitionen av Student Tabellen innehåller kolumner för elevens SSNumber , Firstname och Lastname , och definitionen av CourseTaken Tabellen innehåller kolumner för SSNumber , CourseId , NumericGrade och YearTaken .

Exemplet förutsätter att det finns tre elever i skolan som var och en har genomgått två kurser. Exempeldata visas i tabellen nedan:

SSNumber Efternamn Förnamn Kurs-ID NumericGrade YearTaken
111111111 Smith John CSC101 98 2021
111111111 Smith John ENG101 95 2022
222222222 Jones Mary CSC101 100 2022
222222222 Jones Mary EEE101 75 2022
333333333 Hansen Robert POL101 92 2021
333333333 Hansen Robert SOC103 84 2022

Skapa, ändra och släpp tabeller med SQL-kommandon

Från kommandoraden, använd CREATE TABLE kommando följt av namnet på tabellen och tabelldata. Kommandot nedan skapar Student bord.

CREATE TABLE Student (
  SSNumber CHAR(9) NOT NULL,
  LastName VARCHAR(30) NOT NULL,
  FirstName VARCHAR(20) NOT NULL
);

Parentesen omsluter tabelldata, börjar med en kolumn som etiketterar varje rads data. Nästa kolumn anger vilken datatyp som denna rad innehåller. CHAR indikerar en strängdatatyp med fast längd och VARCHAR indikerar en strängdatatyp med variabel längd. I den sista kolumnen visas NOT NULL attribut säkerställer att en post inte kan läggas till i tabellen om någon av NOT NULL kolumner har inga data kopplade till dem.

Obs CREATE TABLE uttalandet är avgränsat med ett avslutande semikolon (;), även om det är möjligt att vissa kommersiella relationsdatabassystem kanske inte kräver den avgränsaren.
Obs Om inget annat nämns fungerar alla databaskommandon som visas i den här guiden bra på både MySQL och PostgreSQL .

För att skapa CourseTaken tabell, kör följande kommando:

CREATE TABLE CourseTaken (
  SSNumber CHAR(9) NOT NULL,
  CourseId CHAR(6) NOT NULL,
  NumericGrade INT NOT NULL
);

YearTaken kolumnen är avsiktligt inte inkluderad i CourseTaken tabell för att demonstrera användningen av ALTER TABLE kommando. För att lägga till YearTaken kolumnen i CourseTaken tabellen behöver du inte släppa CourseTaken bordet helt och hållet. Istället kan du använda DDL ALTER TABLE kommando. Följande kommando ändrar CourseTaken tabell genom att lägga till den saknade kolumnen i tabellen.

ALTER TABLE CourseTaken
  ADD (YearTaken INT NOT NULL);

Kommandot ovan följer en liknande syntax som tidigare. Det kräver tabellnamnet samt tre argument:radnamn, raddatatyp och NOT NULL attribut. Om du vill ta bort CourseTaken tabell helt, utfärda DDL DROP TABLE kommando följt av tabellnamnet.

DROP TABLE CourseTaken;
Varning Om du släpper en tabell raderas all data i tabellen.

Hur man infogar data i en tabell i SQL

För att infoga data i tabellen, använd SQL INSERT INTO påstående. För att anropa detta kommando, ange tabellnamnet och listan över radnamn (inom parentes) som du vill infoga data i. Detta följs av VALUES nyckelord och de faktiska värdena (inom parentes) som du vill infoga. Värdena infogas i raderna i den ordning som de kallas.

Obs
  • SQL-kommandon kan delas upp över rader. Slutet på SQL-kommandot avgränsas av ett semikolon (; ).
  • Teckendata avgränsas av en öppnings- och stängningsapostrof ( ), medan numeriska data inte är det.

Följande INSERT kommandon infogar tre rader i Student tabell. Dessa kommandon använder flera INSERT uttalanden.

INSERT INTO Student (SSNumber, LastName, FirstName) VALUES
('111111111', 'Smith', 'John');

INSERT INTO Student (SSNumber, LastName, FirstName) VALUES
('222222222', 'Jones', 'Mary');

INSERT INTO Student (SSNumber, LastName, FirstName) VALUES
('333333333', 'Hansen', 'Robert');

På samma sätt kan du också infoga flera rader i tabellen i en enda SQL-fråga som visas nedan:

INSERT INTO CourseTaken
(SSNumber, CourseId, NumericGrade, YearTaken)
VALUES
('111111111', 'CSC101', 98, 2021),
('111111111', 'ENG101', 95, 2022),
('222222222', 'CSC101', 100, 2022);
Obs

Du kan använda INSERT INTO kommandot på liknande sätt i PostgreSQL för att lägga till rader i tabellen. Se till att värdena matchar kolumnernas ordning i tabelldefinitionen.

INSERT INTO student VALUES ('111111111', 'Smith', 'John');

Ta bort data från en tabell

För att radera data från en tabell, använd SQL DELETE FROM påstående. Använd WHERE sats för att specificera villkoret, och om det finns mer än ett villkor, använd AND sats tillsammans med WHERE .

Till exempel raderar följande kommando en post från CourseTaken tabell med SSNumber 333333333 och CourseId POL101 .

Varning Om du utelämnar WHERE klausul, raderas alla poster i tabellen.
DELETE FROM CourseTaken WHERE SSNumber = '333333333' AND CourseId = 'POL101';

SQL-kommando för att uppdatera data i en tabell

För att uppdatera den befintliga posten i en tabell, använd SQL UPDATE kommando. SET sats används för att ställa in (uppdatera) ett nytt värde till en viss kolumn och WHERE sats används för att uppdatera de valda raderna.

Till exempel uppdaterar följande kommando NumericGrade kolumnen i CourseTaken tabell för poster med SSNumber 222222222 och CourseId EEE101 .

UPDATE CourseTaken
SET NumericGrade = 95
WHERE SSNumber = '222222222' AND CourseId = 'EEE101';

SQL-kommando för att hämta data från en tabell

Den sanna kraften hos relationsdatabassystem ligger i dess förmåga att hämta information i ett flertabellsschema, via SQL SELECT kommando och möjligheten att ansluta tabeller via vanliga nycklar. Även om den här introduktionsguiden inte undersöker skapandet av nycklar och index som använder dessa nycklar, använder den SSNumber kolumn i varje tabell som ett fordon (nyckel) för att relatera (eller sammanfoga) tabellerna för att generera information. Följande exempel ger olika användningsfall för att använda SQL SELECT kommando från kommandoraden.

Exempel 1: För att hämta listan över alla elever i skolan.

SELECT * from Student;

Utdata:

+-----------+----------+-----------+
| SSNumber  | LastName | FirstName |
+-----------+----------+-----------+
| 111111111 | Smith    | John      |
| 222222222 | Jones    | Mary      |
| 333333333 | Hansen   | Robert    |
+-----------+----------+-----------+

Exempel 2: För att hämta listan över alla studenter och kurser de har gått.

SELECT Student.SSNumber, Student.LastName,
       Student.FirstName, CourseTaken.CourseId
FROM Student, CourseTaken
WHERE Student.SSNumber = CourseTaken.SSNumber;

Utdata:

+-----------+----------+-----------+----------+
| SSNumber  | LastName | FirstName | CourseId |
+-----------+----------+-----------+----------+
| 111111111 | Smith    | John      | CSC101   |
| 111111111 | Smith    | John      | ENG101   |
| 222222222 | Jones    | Mary      | CSC101   |
+-----------+----------+-----------+----------+
Obs I kommandot ovan, de två tabellerna, Student och CourseTaken förenas för att hämta den information som krävs. Kolumnnamnen i SELECT och WHERE satser har prefixet med deras tabellnamn för tydlighetens skull. Men i fallet med SSNumber kolumn måste vi ange lämpliga tabellnamnsprefix, eftersom båda tabellerna delar samma kolumnnamn. FROM sats anger tabellerna som används i den här frågan.

Exempel 3: Hämta listan över elever med CourseId CSC101 och året då de gick den här kursen.

SELECT Student.LastName, Student.FirstName,
       CourseTaken.CourseId, CourseTaken.YearTaken
FROM Student, CourseTaken
WHERE Student.SSNumber = CourseTaken.SSNumber
AND CourseTaken.CourseId = 'CSC101';

Utdata:

+----------+-----------+----------+-----------+
| LastName | FirstName | CourseId | YearTaken |
+----------+-----------+----------+-----------+
| Smith    | John      | CSC101   |      2021 |
| Jones    | Mary      | CSC101   |      2022 |
+----------+-----------+----------+-----------+

Exempel 4: Hämta listan över elevnamn, gjorda kurser och mottagna betyg för de som hade kursbetyg över 90 .

SELECT Student.LastName, Student.FirstName,
       CourseTaken.CourseId, CourseTaken.NumericGrade
FROM Student, CourseTaken
WHERE Student.SSNumber = CourseTaken.SSNumber
AND CourseTaken.NumericGrade > 90;

Utdata:

+----------+-----------+----------+--------------+
| LastName | FirstName | CourseId | NumericGrade |
+----------+-----------+----------+--------------+
| Smith    | John      | ENG101   |           95 |
| Smith    | John      | CSC101   |           98 |
| Jones    | Mary      | CSC101   |          100 |
+----------+-----------+----------+--------------+

Obs AND klausul i kommandot ovan låter dig filtrera resultaten med ett villkorligt betygstest.

Slutsats

Den här guiden om SQL-kommandon är en introduktion till hur man skapar databasscheman och manipulerar data i dessa databaser. Även om begreppen som introduceras här bara skrapar på ytan när det gäller användningen av relationsdatabassystem, är det en bra utgångspunkt för grundläggande och väsentliga kommandon och begrepp.


  1. PHP:Varning:sort() förväntar sig att parameter 1 är array, resurs given

  2. Importera InnoDB-partitioner i MariaDB 10.0/10.1

  3. Hur man skapar en schemabunden lagrad procedur i SQL Server

  4. Uppgradera din databas till PostgreSQL version 10 - Vad du bör veta