sql >> Databáze >  >> RDS >> Mysql

Úvod do SQL příkazů

V dnešním světě zvýšené digitalizace, velkých dat a cloud computingu patří správa dat mezi nejdůležitější dovednosti, které může softwarový inženýr mít. Za tímto účelem je jedním z nejvýkonnějších databázových nástrojů SQL.

SQL (Structured Query Language) je standardní programovací jazyk používaný k manipulaci s objekty datové struktury. Pracují s daty, která jsou obsažena v systému správy relačních databází (RDBMS). Některé známé RDBMS jsou MySQL a PostgreSQL.

V této příručce se dozvíte o podmnožinách jazyka SQL a o tom, jak používat některé základní příkazy SQL, jako je SELECT , INSERT , UPDATE a DELETE .

Podmnožiny SQL

Níže uvedený seznam obsahuje různé jazykové podmnožiny různých příkazů SQL. Každá podmnožina má svou vlastní funkci a účel.

  • Jazyk definice dat (DDL):Umožňuje vytvářet, mazat a aktualizovat definice databázových schémat (jmenovitě tabulky a indexy), aniž byste museli ve skutečnosti manipulovat s daty v tabulkách databáze.
  • Jazyk dotazu na data (DQL):DQL se používá k načtení dat z databáze pomocí SELECT prohlášení.
  • Jazyk pro manipulaci s daty (DML):Tento podjazyk umožňuje manipulaci s daty v databázi pomocí INSERT , UPDATE a DELETE prohlášení.

Tato příručka používá vzorovou databázi pro školu k další demonstraci příkazů SQL pro každou podmnožinu uvedenou výše. Školní databáze má několik tabulek pro studenty, kurzy, známky a tak dále. Definice Student tabulka obsahuje sloupce pro SSNumber studenta , Firstname a Lastname a definice CourseTaken tabulka obsahuje sloupce pro SSNumber , CourseId , NumericGrade a YearTaken .

Příklad předpokládá, že ve škole jsou tři studenti, z nichž každý absolvoval dva kurzy. Ukázková data jsou uvedena v tabulce níže:

SSNumber Příjmení Jméno Id kurzu NumericGrade YearTaken
111111111 Smith Jan CSC101 98 2021
111111111 Smith Jan ENG101 95 2022
222222222 Jones Marie CSC101 100 2022
222222222 Jones Marie EEE101 75 2022
333333333 Hansen Robert POL101 92 2021
333333333 Hansen Robert SOC103 84 2022

Vytvářejte, upravujte a rušte tabulky pomocí příkazů SQL

Z příkazového řádku použijte CREATE TABLE za ním následuje název tabulky a data tabulky. Níže uvedený příkaz vytvoří Student tabulka.

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

Závorka uzavírá data tabulky, počínaje sloupcem, který označuje data každého řádku. Další sloupec označuje datový typ, který tento řádek obsahuje. CHAR označuje datový typ řetězce pevné délky a VARCHAR označuje datový typ řetězce proměnné délky. V posledním sloupci NOT NULL atribut zajišťuje, že záznam nemůže být přidán do tabulky, pokud je některá z NOT NULL sloupce nemají přidružená data.

Poznámka CREATE TABLE příkaz je oddělen středníkem na konci (;), ačkoli je možné, že některé komerční systémy relačních databází tento oddělovač nevyžadují.
Poznámka Pokud není uvedeno jinak, všechny databázové příkazy uvedené v této příručce fungují dobře na obou MySQL a PostgreSQL .

Chcete-li vytvořit CourseTaken tabulky, proveďte následující příkaz:

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

YearTaken sloupec záměrně není zahrnut v CourseTaken tabulka k demonstraci použití ALTER TABLE příkaz. Chcete-li přidat YearTaken ve sloupci CourseTaken tabulky, nemusíte opouštět CourseTaken stůl úplně. Místo toho můžete použít DDL ALTER TABLE příkaz. Následující příkaz změní CourseTaken přidáním chybějícího sloupce do tabulky.

ALTER TABLE CourseTaken
  ADD (YearTaken INT NOT NULL);

Výše uvedený příkaz má podobnou syntaxi jako dříve. Vyžaduje název tabulky a také tři argumenty:název řádku, datový typ řádku a NOT NULL atribut. Pokud chcete smazat CourseTaken celou tabulku, zadejte DDL DROP TABLE příkaz následovaný názvem tabulky.

DROP TABLE CourseTaken;
Pozor Vypuštěním tabulky se odstraní všechna data v tabulce.

Jak vložit data do tabulky v SQL

Pro vložení dat do tabulky použijte SQL INSERT INTO prohlášení. Chcete-li zavolat tento příkaz, zadejte název tabulky a seznam názvů řádků (v závorkách), do kterých chcete vložit data. Poté následuje VALUES klíčové slovo a skutečné hodnoty (v závorkách), které chcete vložit. Hodnoty jsou vloženy do řádků v pořadí, v jakém jsou volány.

Poznámka
  • Příkazy SQL lze rozdělit na řádky. Konec SQL příkazu je oddělen středníkem (; ).
  • Znaková data jsou oddělena úvodním a závěrečným apostrofem ( ), zatímco číselná data nikoli.

Následující INSERT příkazy vloží tři řádky do Student stůl. Tyto příkazy používají více příkazů INSERT prohlášení.

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');

Podobně můžete také vložit více řádků do tabulky v jednom SQL dotazu, jak je znázorněno níže:

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

Můžete použít INSERT INTO příkaz podobně v PostgreSQL pro přidání řádků do tabulky. Ujistěte se, že hodnoty odpovídají pořadí sloupců v definici tabulky.

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

Odstranit data z tabulky

Chcete-li odstranit data z tabulky, použijte SQL DELETE FROM prohlášení. Použijte WHERE klauzule k určení podmínky, a pokud existuje více než jedna podmínka, použijte AND klauzule spolu s WHERE .

Například následující příkaz odstraní záznam z CourseTaken tabulka s číslem SSN 333333333 a Id kurzu POL101 .

Pozor Pokud vynecháte WHERE klauzule, budou odstraněny všechny záznamy v tabulce.
DELETE FROM CourseTaken WHERE SSNumber = '333333333' AND CourseId = 'POL101';

Příkaz SQL pro aktualizaci dat v tabulce

Chcete-li aktualizovat existující záznam v tabulce, použijte SQL UPDATE příkaz. SET klauzule se používá k nastavení (aktualizaci) nové hodnoty pro konkrétní sloupec a WHERE klauzule se používá k aktualizaci vybraných řádků.

Například následující příkaz aktualizuje NumericGrade sloupec CourseTaken tabulka pro záznamy s číslem SSN 222222222 a Id kurzu EEE101 .

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

Příkaz SQL pro načtení dat z tabulky

Skutečná síla relačních databázových systémů je v jejich schopnosti získávat informace ve vícetabulkovém schématu pomocí SQL SELECT příkaz a schopnost spojovat tabulky pomocí společných klíčů. Ačkoli tato úvodní příručka nezkoumá vytváření klíčů a indexů pomocí těchto klíčů, využívá SSNumber sloupec každé tabulky jako vozidlo (klíč) pro spojení (nebo spojení) tabulek za účelem generování informací. Následující příklady poskytují různé případy použití SQL SELECT příkaz z příkazového řádku.

Příklad 1: Chcete-li načíst seznam všech studentů ve škole.

SELECT * from Student;

Výstup:

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

Příklad 2: Chcete-li načíst seznam všech studentů a kurzů, které absolvovali.

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

Výstup:

+-----------+----------+-----------+----------+
| SSNumber  | LastName | FirstName | CourseId |
+-----------+----------+-----------+----------+
| 111111111 | Smith    | John      | CSC101   |
| 111111111 | Smith    | John      | ENG101   |
| 222222222 | Jones    | Mary      | CSC101   |
+-----------+----------+-----------+----------+
Poznámka Ve výše uvedeném příkazu jsou dvě tabulky Student a CourseTaken jsou spojeny za účelem získání požadovaných informací. Názvy sloupců v SELECT a WHERE klauzule jsou pro přehlednost opatřeny předponou s názvy tabulek. Nicméně v případě SSNumber sloupec, musíme zadat příslušné předpony názvu tabulky, protože obě tabulky sdílejí stejný název sloupce. FROM klauzule označuje tabulky, které se v tomto dotazu používají.

Příklad 3: Získejte seznam studentů pomocí Id kurzu CSC101 a rok, kdy tento kurz absolvovali.

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

Výstup:

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

Příklad 4: Získejte seznam jmen studentů, absolvovaných kurzů a obdržených známek pro ty, kteří měli hodnocení kurzu vyšší než 90 .

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

Výstup:

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

Poznámka AND klauzule v příkazu výše vám umožňuje filtrovat výsledky pomocí podmíněného testu skóre.

Závěr

Tato příručka o příkazech SQL je úvodním návodem, jak vytvářet databázová schémata a manipulovat s daty v těchto databázích. Ačkoli zde představené koncepty pouze poškrábou povrch, pokud jde o použití relačních databázových systémů, jsou dobrým výchozím bodem pro základní a základní příkazy a koncepty.


  1. Poddotaz pomocí Existuje 1 nebo Existuje *

  2. Hvězdné schéma

  3. Vysvětlení rámce MySQL High Availability Framework – Část I:Úvod

  4. Co je MariaDB Enterprise Cluster?