Grundläggande sql-kommandon. Dataåtkomstmekanism. Strukturerat frågespråk SQL. Historik och standarder för SQL. Bearbetar SQL-kommandon av Oracle-servern. Begäranden om borttagning
All konceptuell information om relationsdatabaser och tabeller är bara användbar om du vet hur man interagerar med data. SQL-språket består av strukturerade kommandon för att lägga till, ändra och ta bort data från en databas. Dessa kommandon utgör grunden för interaktion med PostgreSQL-servern.
Det här avsnittet handlar om "anatomin" av SQL-kommandon. Den undersöker de strukturella komponenterna i kommandon och beskriver funktionerna för varje komponent och deras ömsesidiga relationer. Standard PostgreSQL kommandoradsklient, psql, skriver ut resultatet av kommandona i exemplen som ges.
De flesta av SQL-kommandoexemplen är specifika för booktown-databasen. All psql-utdata har prefixet formen booktown=# .
Några exempel använder testdb-testdatabasen. Som standard visar psql-prompten endast databasnamnet och =#-symbolerna, vilket indikerar att systemet är redo att utfärda ett nytt kommando (även om du kommer att se symbolen = dynamiskt ändras när tillståndet för SQL-inmatningen övervakas). Boken ger denna uppmaning tillsammans med SQL-inmatning och -utgång för att hjälpa dig att bli bekväm med psql-klientens utdata.
Psql-klienten beskrivs i detalj i kapitel 4. Den nämns här endast för att förtydliga stilen för SQL-kommandoexemplen.
Notera
Booktown-databasschemat (tillsammans med exempelposter) finns i filen booktown.sql på CD:n. För att installera denna databas, skriv in kommandot psql - U postgres template! vid kommandotolken. - f /mnt/cdrom/booktown.sql, där /mnt/cdrom är sökvägen till den monterade CD:n och postgres är PostgreSQL superanvändarnamnet.
SQL-kommandon börjar alltid med en handling (verb) - ett ord eller en grupp av ord som beskriver operationen som utförs. Dessutom innehåller ett SQL-kommando vanligtvis en eller flera sektioner som klargör dess innebörd. I tabell 3.2 listar de viktigaste åtgärderna för SQL.
Tabell 3.2. Grundläggande PostgreSQL-åtgärder.
SKAPA DATABAS | Skapa en ny databas |
SKAPA INDEX | Skapa ett nytt index på en tabellkolumn |
SKAPA SEKVENS | Skapa en ny sekvens i en befintlig databas |
SKAPA BORD | Skapa en ny tabell i en befintlig databas |
SKAPA TRIGGER | Skapa en ny triggerdefinition |
SKAPA VY | Skapa en ny vy för en befintlig tabell |
VÄLJ | Välja poster från en tabell |
FÖRA IN | Infoga en eller flera nya poster i en tabell |
UPPDATERING | Ändring av data i befintliga poster |
RADERA | Ta bort befintliga poster från en tabell |
SLIPPA DATABAS | Förstör en befintlig databas |
SLIPP INDEX | Ta bort ett kolumnindex från en befintlig tabell |
DROPPSEKVENS | Förstör en befintlig sekvensgenerator |
SLÄPP BORD | Att förstöra ett befintligt bord |
SLÄPP AVTRÖREN | Förstör en befintlig triggerdefinition |
DROP VIEW | Förstör en befintlig vy |
SKAPA ANVÄNDARE | Skapa ett nytt PostgreSQL-användarkonto i systemet |
ÄNDRA ANVÄNDARE | Ändra ett befintligt PostgreSQL-användarkonto |
SLIPPA ANVÄNDARE | Ta bort ett befintligt PostgreSQL-användarkonto |
BEVILJA | Bevilja åtkomsträttigheter till ett databasobjekt |
ÅTERKALLA | Ta bort åtkomsträttigheter till ett databasobjekt |
SKAPA FUNKTION | Skapa en ny SQL-funktion i en databas |
SKAPA SPRÅK | Skapa en ny språkdefinition i databasen |
SKAPA OPERATOR | Skapa en ny SQL-sats i databasen |
SKAPA TYP | Skapa en ny SQL-datatyp i en databas |
Structured Query Language utvecklades av IBM i början av 1970-talet. 1986 standardiserades SQL först av ANSI-organisationerna.
SQL är ett kraftfullt och samtidigt enkelt språk för databashantering. Det stöds av nästan alla moderna databaser. SQL är uppdelad i två underuppsättningar av kommandon: DDL (Data Definition Language) och DML (Data Manipulation Language). DDL-kommandon används för att skapa nya databaser, tabeller och kolumner, och DML-kommandon används för att läsa, skriva, sortera, filtrera, radera data.
Den här artikeln kommer att titta närmare på DML-kommandon, eftersom de används mycket oftare.
DDL-kommandonCREATE - används för att skapa nya tabeller, kolumner och index.
DROP - används för att ta bort kolumner och index.
ALTER - används för att lägga till nya kolumner i tabeller och ändra specifika kolumner.
DML-kommandonSELECT är det vanligaste kommandot och används för att hämta en uppsättning data från en databastabell. Kommandot SELECT har följande syntax:
VÄLJ fältlista1 FRÅN tabellnamn ]
Operatörer inom hakparenteser är valfria, och den vertikala stapeln betyder att en av de angivna fraserna måste finnas med, men inte båda.
Låt oss till exempel skapa en enkel fråga för att hämta data från fälten "namn" och "telefon" i tabellen "vänner":
VÄLJ namn, telefon FRÅN vänner
Om du behöver få fram alla fält i tabellen är det inte nödvändigt att lista dem, skriv bara en asterisk (*):
VÄLJ * FRÅN vänner
För att utesluta dubbletter från den visade listan, använd nyckelordet DISTINCT:
VÄLJ DISTINKT namn FRÅN vänner
Om du behöver få en separat post används WHERE-satsen. Till exempel måste vi få telefonnumret till "Vasya Pupkin" från tabellen "vänner":
VÄLJ * FRÅN vänner VAR namn = "Vasya Pupkin"
eller vice versa, vi måste ta reda på vem som äger telefonen 44-65-01:
VÄLJ * FRÅN vänner VAR telefon = "44-65-01"
Dessutom kan du använda jokertecken och därigenom skapa sökmönster. LIKE-operatorn används för detta. LIKE-operatorn har följande substitutionsoperatorer:
* - matchar en sträng som består av ett eller flera tecken;
Matchar vilket tecken som helst;
Matchar ett tecken från en specifik uppsättning;
Till exempel, för att hämta poster från "namn"-fältet som innehåller ordet "Vasya", skulle begäran se ut så här:
VÄLJ FRÅN vänner VAR namn TYCKA OM "*Vasya*"
ORDER BY-satsen används för att bestämma i vilken ordning data returneras. Utan denna operatör kan ordningen på de returnerade data inte förutsägas. Nyckelorden ASC och DESC låter dig bestämma sorteringsriktningen. ASC sorterar i stigande ordning och DESC-ordningar i fallande ordning.
Till exempel skulle en begäran om att få en lista över poster från "namn"-fältet i alfabetisk ordning se ut så här:
VÄLJ FRÅN vänner SORTERA EFTER namn
Observera att nyckelordet ASC inte krävs eftersom det är standard.
INSERT - detta kommando används för att lägga till en ny post i tabellen. Det är skrivet så här:
SÄTT IN I tabellnamn VÄRDEN ( värdelista)
Observera att värdetyperna i värdelistan måste matcha värdetyperna i tabellfälten, till exempel:
SÄTT IN I vänner VÄRDEN ( "Anka the Machine Gunner", "32-09-81" )
Det här exemplet lägger till en ny post i väntabellen med de angivna värdena.
UPDATE - Detta kommando används för att uppdatera data i en tabell och används oftast tillsammans med WHERE-satsen. Kommandot UPDATE har följande syntax:
UPPDATERING tabellnamn UPPSÄTTNING fält namn = menande
Om du utelämnar WHERE-satsen kommer data i alla definierade fält i tabellen att uppdateras. Låt oss till exempel ändra Vasya Pupkuns telefonnummer:
UPPDATERING vänner UPPSÄTTNING telefon = "55-55-55" VAR namn = "Vasya Pupkin"
DELETE - som du säkert redan förstått, används detta kommando för att radera poster från tabellen. Precis som UPDATE används kommandot DELETE vanligtvis med en WHERE-sats, om denna sats utelämnas kommer all data från den angivna tabellen att raderas. Syntaxen för DELETE-kommandot är följande:
DELETE FRÅN tabellnamn
Låt oss till exempel ta bort den här irriterande Vasya Pupkin från vårt bord :) :
DELETE FRÅN vänner VAR namn = "Vasya Pupkin"
SlutetI den här artikeln pratade jag om de viktigaste SQL-operatorerna, de är helt tillräckliga för att arbeta med databaser; jag kommer att prata om de återstående operatorerna mer i detalj en annan gång.
SQL eller Structured Query Language är ett språk som används för att hantera data i ett relationsdatabassystem (RDBMS). Den här artikeln kommer att täcka vanliga SQL-kommandon som alla programmerare bör känna till. Detta material är idealiskt för dig som vill fräscha upp sina kunskaper om SQL inför en anställningsintervju. För att göra detta, titta på exemplen som ges i artikeln och kom ihåg att du studerade databaser i par.
Observera att vissa databassystem kräver ett semikolon i slutet av varje sats. Semikolonet är standardpekaren till slutet av varje sats i SQL. Exemplen använder MySQL, så ett semikolon krävs.
Skapa en databas för exempelSkapa en databas för att visa hur team fungerar. För att fungera måste du ladda ner två filer: DLL.sql och InsertStatements.sql. Därefter öppnar du en terminal och loggar in på MySQL-konsolen med följande kommando (artikeln förutsätter att MySQL redan är installerat på systemet):
Mysql -u root -s
Ange sedan ditt lösenord.
Kör följande kommando. Låt oss kalla databasen "universitet":
SKAPA DATABAS universitet; ANVÄND universitet; KÄLLA; SOURCE Kommandon för att arbeta med databaser1. Visa tillgängliga databaser VISA DATABASER; 2. Skapa en ny databas CREATE DATABASE; 3. Välja en databas att använda USE; 4. Importera SQL-kommandon från .sql-filen SOURCE ; 5. Ta bort databasen DROP DATABASE ; Arbeta med tabeller6. Se de tillgängliga tabellerna i databasen SHOW TABLES;
7. Skapa en ny tabell SKAPA TABELL ( , , PRIMÄRNYCKEL (), UTLÄNDLIG KEY () REFERENSER ()); Integritetsbegränsningar när du använder CREATE TABLEDu kan behöva skapa begränsningar för vissa kolumner i en tabell. När du skapar en tabell kan du ställa in följande begränsningar:
- en tabellcell kan inte ha ett NULL-värde;
- primärnyckel - PRIMARY KEY (kolnamn1, kolnamn2, ...) ;
- främmande nyckel - UTLÄNDSK NYCKEL (kolnamnx1, …, kolnamnxn) REFERENSER tabellnamn(kolnamnx1, …, kolnamnxn) .
Du kan ange mer än en primärnyckel. I det här fallet får du en sammansatt primärnyckel.
ExempelSkapa en tabell "instruktör":
CREATE TABLE-instruktör (ID CHAR(5), namn VARCHAR(20) NOT NULL, dept_name VARCHAR(20), lön NUMERIC(8,2), PRIMÄRNYCKEL (ID), FOREIGN KEY (avd_namn) REFERENSER avdelning(avd_namn));
8. TabellinformationDu kan se olika information (värdetyp, nyckel eller inte) om tabellkolumner med följande kommando:
BESKRIVA ;
9. Lägga till data i tabellen INSERT INTO (, , , …) VALUES (, , , …);När du lägger till data till varje kolumn i en tabell behöver du inte ange kolumnnamn.
INSERT INTO VALUES (, , , ...);
10. Uppdatering av tabelldata UPDATE SET = , = , ... WHERE ; 11. Ta bort all data från tabellen DELETE FROM ; 12. Ta bort en tabell DROP TABLE ; Kommandon för att skapa frågor13. VÄLJSELECT används för att hämta data från en specifik tabell:
VÄLJ FRÅN ;
Följande kommando kan visa all data från tabellen:
VÄLJ FRÅN ;
14. VÄLJ DISTINKTTabellkolumner kan innehålla dubbletter av data. Använd SELECT DISTINCT för att bara hämta icke-duplicerade data.
VÄLJ DISTINCT , , … FRÅN ;
15. VARDu kan använda nyckelordet WHERE i SELECT för att ange villkor i en fråga:
VÄLJ , , ... FROM VAR ;
Följande villkor kan anges i begäran:
- textjämförelse;
- jämförelse av numeriska värden;
- logiska operatorer AND (och), OR (eller) och NOT (negation).
Prova följande kommandon. Var uppmärksam på villkoren som anges i VAR:
SELECT * FROM course WHERE dept_name=’Comp. Sci.'; VÄLJ * FRÅN kurs VAR poäng>3; SELECT * FROM course WHERE dept_name="Comp. Sci." OCH poäng>3;
16. GRUPP AVGROUP BY-operatorn används ofta med aggregerade funktioner som COUNT, MAX, MIN, SUM och AVG för att gruppera utdatavärden.
VÄLJ , , … FRÅN GRUPP EFTER ;
ExempelLåt oss visa antalet kurser för varje fakultet:
SELECT COUNT(course_id), dept_name FRÅN kurs GROUP BY dept_name;
17. HANyckelordet HAVING lades till i SQL eftersom WHERE inte kan användas med aggregerade funktioner.
VÄLJ , , ... FRÅN GRUPPEN GENOM ATT HA
ExempelLåt oss visa en lista över fakulteter som har mer än en kurs:
VÄLJ ANTAL(kurs_id), avd_namn FRÅN kurs GRUPPER EFTER avd_namn ATT HA ANTAL(kurs_id)>1;
18. BESTÄLL AVORDER BY används för att sortera frågeresultat i fallande eller stigande ordning. ORDER BY kommer att sortera i stigande ordning om inte ASC eller DESC anges.
VÄLJ , , … FRÅN BESTÄLLNING AV , , … ASC|DESC;
ExempelLåt oss visa en lista över kurser i stigande och fallande poängordning:
VÄLJ * FRÅN kurs BESTÄLL EFTER poäng; VÄLJ * FRÅN kurs BESTÄLLNING EFTER poäng DESC;
19. MELLANBETWEEN används för att välja datavärden från ett specifikt intervall. Numeriska och textvärden, såväl som datum, kan användas.
VÄLJ , , … VARFRÅN MELLAN OCH ;
ExempelLåt oss visa en lista över instruktörer vars lön är mer än 50 000, men mindre än 100 000:
VÄLJ * FRÅN instruktör VAR lön MELLAN 50000 OCH 100000;
20. GILLALIKE-operatorn används i WHERE för att ange ett sökmönster för ett liknande värde.
Det finns två gratisoperatörer som används i LIKE:
- % (inga, ett eller flera tecken);
- _ (ett tecken).
Låt oss visa en lista över kurser vars namn innehåller "till" och en lista över kurser vars namn börjar med "CS-":
VÄLJ * FRÅN kurs WHERE titel LIKE '%to%'; SELECT * FROM course WHERE course_id LIKE "CS-___";
21. INMed IN kan du ange flera värden för WHERE-satsen:
VÄLJ , , … FROM WHERE IN (, , …);
ExempelLåt oss visa en lista över studenter från Comp majors. Sci., Fysik och El. Eng.:
SELECT * FROM student WHERE dept_name IN ('Comp. Sci.', 'Physics', 'Elec. Eng.');
22. GÅ MEDJOIN används för att länka två eller flera tabeller med vanliga attribut inom dem. Bilden nedan visar de olika sätten att gå med i SQL. Observera skillnaden mellan en vänster yttre koppling och en höger yttre koppling:
VÄLJ , , … FRÅN JOIN ON = ;
Exempel 1Vi kommer att visa en lista över alla kurser och relevant information om fakulteterna:
VÄLJ * FRÅN kurs GÅ MED avdelning PÅ course.dept_name=department.dept_name;
Exempel 2Vi kommer att visa en lista över alla obligatoriska kurser och detaljer om dem:
VÄLJ prereq.course_id, title, dept_name, credits, prereq_id FROM prereq VÄNSTER YTTRE GÅ MED kurs PÅ prereq.course_id=course.course_id;
Exempel 3Vi kommer att visa en lista över alla kurser, oavsett om de är obligatoriska eller inte:
SELECT course.course_id, title, dept_name, credits, prereq_id FRÅN prereq HÖGER YTTRE JOIN-kurs PÅ prereq.course_id=course.course_id;
23. UtsiktView är en virtuell SQL-tabell skapad som ett resultat av exekvering av ett uttryck. Den innehåller rader och kolumner och är väldigt lik en vanlig SQL-tabell. View visar alltid den senaste informationen från databasen.
Skapar CREATE VIEW SOM SELECT , , ... FROM WHERE ; Ta bort DROP VIEW ; ExempelLåt oss skapa en vy som består av kurser med 3 poäng:
24. Aggregerade funktionerDessa funktioner används för att få ett aggregerat resultat relaterat till den aktuella informationen. Följande är vanliga aggregatfunktioner:
- COUNT (kolnamn) - returnerar antalet rader;
- SUM (col_name) - returnerar summan av värdena i denna kolumn;
- AVG (kolnamn) - returnerar medelvärdet för en given kolumn;
- MIN (kolnamn) - returnerar det minsta värdet av en given kolumn;
- MAX (kolnamn) - Returnerar det största värdet i en given kolumn.
Kapslade underfrågor är SQL-frågor som inkluderar SELECT-, FROM- och WHERE-satser kapslade i en annan fråga.
ExempelLåt oss hitta kurser som undervisades hösten 2009 och våren 2010:
SELECT DISTINCT course_id FROM section WHERE termin = 'Höst' AND year= 2009 AND course_id IN (SELECT course_id FROM section WHERE termin = 'Vår' AND year= 2010);
Kirill Pozdeev, översättare
Hur Yandex använder din data och maskininlärning för att anpassa tjänster -.
SQL (ˈɛsˈkjuˈɛl; English structured query language - "structured query language") är ett deklarativt programmeringsspråk som används för att skapa, modifiera och hantera data i en relationsdatabas.
Överensstämmelse med SQL-standarder för olika databaser:
SQL (Structured Query Language - strukturerat frågespråk). SQL är i första hand ett informationslogiskt språk utformat för att beskriva lagrad data, för att hämta lagrad data och för att modifiera data.
SQL är inte ett programmeringsspråk. Eftersom SQL har blivit mer komplext har det blivit mer av ett applikationsprogrammeringsspråk och användare kan nu använda visuella frågebyggare.
SQL är ett skiftlägesokänsligt språk. Strängar i SQL omges av enkla citattecken.
SQL-språket är en samling satser. SQL-satser är indelade i:
Data Definition Language (DDL) - schemabeskrivningsspråk i ANSI, består av kommandon som skapar objekt (tabeller, index, vyer, etc.) i databasen (CREATE, DROP, ALTER, etc.).
Datamanipulationsoperatorer (Data Manipulation Language, DML) är en uppsättning kommandon som bestämmer vilka värden som presenteras i tabeller när som helst (INSERT, DELETE, SELECT, UPDATE, etc.).
definitionssatser för dataåtkomst (Data Control Language, DCL) - består av verktyg som avgör om användaren ska tillåta att utföra vissa åtgärder eller inte (GRANT/REVOKE, LOCK/UNLOCK).
Transaction Control Language (TCL) operatörer
Tyvärr används dessa termer inte universellt i alla implementeringar. De betonas av ANSI och är användbara på en konceptuell nivå, men de flesta SQL-program gör inte mycket för att behandla dem separat, så de blir i huvudsak funktionella kategorier av SQL-kommandon.
VÄLJ sektion JOINEnkel JOIN (=korsning JOIN =INNER JOIN) - betyder att endast visa de gemensamma posterna för båda tabellerna. Hur poster anses delade bestäms av fälten i join-uttrycket. Till exempel följande post: FROM t1 JOIN t2 ON t1. id = t2. id
betyder att poster med samma id som finns i båda tabellerna kommer att visas.
LEFT JOIN (eller LEFT OUTER JOIN) betyder att visa alla poster från den vänstra tabellen (den som kommer först i join-uttrycket) oavsett om det finns motsvarande poster i den högra tabellen. Om det inte finns några poster i den högra tabellen sätts det tomma värdet NULL.
RIGHT JOIN (eller RIGHT OUTER JOIN) fungerar i motsats till LEFT JOIN - den visar alla poster från den högra (andra) tabellen och endast de som matchar från den vänstra (första) tabellen.
Andra typer av JOIN-kopplingar: MINUS - subtraktion; FULL JOIN - komplett anslut; CROSS JOIN - "Alla med alla" eller den kartesiska produktdriften.
INSERT IGNORE Om du anger nyckelordet IGNORE i ett INSERT-kommando med rader som har flera värden, kommer alla rader som har dubbletter av PRIMÄRA eller UNIKA nycklar i den tabellen att ignoreras och inte infogas. Om du inte anger IGNORE, avbryts denna infogningsoperation när den stöter på en rad som har ett dubblettvärde för en befintlig nyckel
Kommandot REPLACE skiljer sig från INSERT endast genom att om det finns en post i tabellen med samma värde i det indexerade fältet (unikt index) som den nya posten, så raderas den gamla posten innan den nya läggs till.
UPPDATERING< tablename>SET ( | ) .,. .< COLUMN name> = < VALUE expresslon>[VAR< predlcate>| VAR STRÖM AV< cursor name>(*endast för bilaga*) ] ; UPPDATERA peers SET zone= "voip" ; # uppdatera alla rader i zonkolumnen i peers-tabellen UPDATE stat SET whp= "13x13x13" WHERE id = 1 ; UPPDATERA länder SET nm_ukr= ( SELECT del_countries. ukrainian FROM del_countries WHERE länder. nm_en= del_countries. engelska );WordPress-användning, inställning: i tabellen wp_posts, radera alla förekomster av raden
UPPDATERA wp_posts SET post_content = ERSÄTT (post_content, "" , "" );DELETE FRÅN