sql >> Database >  >> RDS >> Mysql

Inleiding tot SQL-opdrachten

In de huidige wereld van toenemende digitalisering, big data en cloud computing, is databeheer een van de belangrijkste vaardigheden die een software-engineer kan hebben. Daartoe is SQL een van de krachtigste databasetools.

SQL (Structured Query Language) is de standaard programmeertaal die wordt gebruikt om gegevensstructuurobjecten te manipuleren. Ze werken op gegevens die zijn opgenomen in een relationeel databasebeheersysteem (RDBMS). Enkele bekende RDBMS zijn MySQL en PostgreSQL.

In deze handleiding leer je over de subsets van de SQL-taal en hoe je enkele fundamentele SQL-commando's gebruikt, zoals SELECT , INSERT , UPDATE , en DELETE .

Subsets van SQL

De onderstaande lijst bevat de verschillende taalsubsets van verschillende SQL-opdrachten. Elke subset heeft zijn eigen functie en doel.

  • Taal voor gegevensdefinitie (DDL):Hiermee kunt u definities van databaseschema's maken, verwijderen en bijwerken (namelijk tabellen en indexen), zonder de gegevens in de databasetabellen daadwerkelijk te manipuleren.
  • Taal voor gegevensquery (DQL):DQL wordt gebruikt om gegevens uit de database op te halen met behulp van de SELECT verklaring.
  • Taal voor gegevensmanipulatie (DML):Deze subtaal maakt gegevensmanipulatie in de database mogelijk met behulp van de INSERT , UPDATE , en DELETE verklaringen.

Deze handleiding gebruikt een voorbeelddatabase voor een school om de SQL-opdrachten voor elke hierboven vermelde subset verder te demonstreren. De schooldatabase heeft verschillende tabellen, voor studenten, cursussen, cijfers, enzovoort. De definitie van de Student tabel bevat kolommen voor het SSNumber van de leerling , Firstname , en Lastname , en de definitie van de CourseTaken tabel bevat kolommen voor SSNumber , CourseId , NumericGrade , en YearTaken .

Het voorbeeld gaat ervan uit dat er drie studenten in de school zijn, die elk twee cursussen hebben voltooid. De voorbeeldgegevens worden weergegeven in de onderstaande tabel:

SSNumber Achternaam Voornaam CourseId NumericGrade YearTaken
111111111 Smith Jan CSC101 98 2021
111111111 Smith Jan ENG101 95 2022
222222222 Jones Maria CSC101 100 2022
222222222 Jones Maria EEE101 75 2022
333333333 Hansen Robert POL101 92 2021
333333333 Hansen Robert SOC103 84 2022

Tabellen maken, wijzigen en neerzetten met SQL-opdrachten

Gebruik vanaf de opdrachtregel de CREATE TABLE commando gevolgd door de naam van de tabel en de tabelgegevens. De onderstaande opdracht maakt de Student tafel.

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

De haakjes omsluiten de tabelgegevens, te beginnen met een kolom die de gegevens van elke rij labelt. De volgende kolom geeft het gegevenstype aan dat deze rij bevat. CHAR geeft een stringgegevenstype met een vaste lengte aan en VARCHAR geeft een gegevenstype van een tekenreeks met variabele lengte aan. In de laatste kolom, de NOT NULL attribuut zorgt ervoor dat een record niet aan de tabel kan worden toegevoegd als een van de NOT NULL kolommen hebben geen gegevens die eraan zijn gekoppeld.

Opmerking De CREATE TABLE statement wordt gescheiden door een puntkomma (;), hoewel het mogelijk is dat sommige commerciële relationele databasesystemen dat scheidingsteken niet nodig hebben.
Opmerking Tenzij anders vermeld, werken alle databasecommando's die in deze handleiding worden gedemonstreerd goed op zowel MySQL en PostgreSQL .

De CourseTaken maken tabel, voer dan het volgende commando uit:

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

De YearTaken kolom is opzettelijk niet opgenomen in de CourseTaken tabel om het gebruik van de ALTER TABLE te demonstreren opdracht. Om de YearTaken toe te voegen kolom in de CourseTaken tabel, hoeft u de CourseTaken . niet te laten vallen tafel geheel. In plaats daarvan kunt u de DDL ALTER TABLE . gebruiken opdracht. Het volgende commando verandert de CourseTaken tabel door de ontbrekende kolom aan de tabel toe te voegen.

ALTER TABLE CourseTaken
  ADD (YearTaken INT NOT NULL);

De bovenstaande opdracht volgt een vergelijkbare syntaxis als voorheen. Het vereist de tabelnaam en drie argumenten:rijnaam, rijgegevenstype en NOT NULL attribuut. Als u de CourseTaken . wilt verwijderen tafel volledig, geef de DDL DROP TABLE uit commando gevolgd door de tabelnaam.

DROP TABLE CourseTaken;
Let op Als u een tabel laat vallen, worden alle gegevens in de tabel verwijderd.

Gegevens invoegen in een tabel in SQL

Om de gegevens in de tabel in te voegen, gebruikt u de SQL INSERT INTO uitspraak. Om deze opdracht aan te roepen, geeft u de tabelnaam en de lijst met rijnamen (tussen haakjes) op waarin u de gegevens wilt invoegen. Dit wordt gevolgd door de VALUES trefwoord en de werkelijke waarden (tussen haakjes) die u wilt invoegen. De waarden worden ingevoegd in de rijen in de volgorde waarin ze worden aangeroepen.

Opmerking
  • SQL-commando's kunnen over regels worden verdeeld. Het einde van het SQL-commando wordt begrensd door een puntkomma (; ).
  • De karaktergegevens worden gescheiden door een apostrof voor openen en sluiten ( ), terwijl numerieke gegevens dat niet zijn.

De volgende INSERT commando's voegen drie rijen in de Student tafel. Deze commando's gebruiken meerdere INSERT verklaringen.

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

Op dezelfde manier kunt u ook meerdere rijen in de tabel invoegen in een enkele SQL-query, zoals hieronder weergegeven:

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

U kunt de INSERT INTO . gebruiken commando op dezelfde manier in PostgreSQL om rijen aan de tabel toe te voegen. Zorg ervoor dat de waarden overeenkomen met de volgorde van de kolommen in de tabeldefinitie.

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

Gegevens uit een tabel verwijderen

Om gegevens uit een tabel te verwijderen, gebruikt u de SQL DELETE FROM uitspraak. Gebruik de WHERE clausule om de voorwaarde te specificeren, en als er meer dan één voorwaarde is, gebruik dan de AND clausule samen met WHERE .

Het volgende commando verwijdert bijvoorbeeld een record uit de CourseTaken tabel met SSNumber 333333333 en CourseId POL101 .

Let op Als u de WHERE . weglaat clausule worden alle records in de tabel verwijderd.
DELETE FROM CourseTaken WHERE SSNumber = '333333333' AND CourseId = 'POL101';

SQL-opdracht om gegevens in een tabel bij te werken

Om het bestaande record in een tabel bij te werken, gebruikt u de SQL UPDATE opdracht. De SET clausule wordt gebruikt om een ​​nieuwe waarde in te stellen (bij te werken) voor een bepaalde kolom en de WHERE clausule wordt gebruikt om de geselecteerde rijen bij te werken.

De volgende opdracht werkt bijvoorbeeld de NumericGrade . bij kolom van de CourseTaken tabel voor records met SSNumber 222222222 en CourseId EEE101 .

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

SQL-opdracht om gegevens uit een tabel op te halen

De ware kracht van relationele databasesystemen ligt in het vermogen om informatie op te halen in een schema met meerdere tabellen, via de SQL SELECT commando, en de mogelijkheid om tabellen samen te voegen via gemeenschappelijke sleutels. Hoewel deze inleidende gids niet ingaat op het maken van sleutels en indexen die deze sleutels gebruiken, gebruikt het de SSNumber kolom van elke tabel als een voertuig (sleutel) om de tabellen te relateren (of samen te voegen) om informatie te genereren. De volgende voorbeelden bieden verschillende gebruiksscenario's voor het gebruik van de SQL SELECT commando vanaf de commandoregel.

Voorbeeld 1: Om de lijst van alle leerlingen in de school op te halen.

SELECT * from Student;

Uitvoer:

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

Voorbeeld 2: Om de lijst op te halen van alle studenten en cursussen die ze hebben gevolgd.

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

Uitvoer:

+-----------+----------+-----------+----------+
| SSNumber  | LastName | FirstName | CourseId |
+-----------+----------+-----------+----------+
| 111111111 | Smith    | John      | CSC101   |
| 111111111 | Smith    | John      | ENG101   |
| 222222222 | Jones    | Mary      | CSC101   |
+-----------+----------+-----------+----------+
Opmerking In het bovenstaande commando zijn de twee tabellen, Student en CourseTaken worden samengevoegd om de vereiste informatie op te halen. De kolomnamen in de SELECT en WHERE clausules worden voor de duidelijkheid voorafgegaan door hun tabelnamen. In het geval van het SSNumber kolom, zijn we verplicht om de juiste voorvoegsels voor de tabelnaam op te geven, aangezien beide tabellen dezelfde kolomnaam hebben. De FROM clausule geeft de tabellen aan die in deze zoekopdracht worden gebruikt.

Voorbeeld 3: Haal de lijst met studenten op met CourseId CSC101 en het jaar waarin ze deze cursus hebben gevolgd.

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

Uitvoer:

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

Voorbeeld 4: Haal de lijst op met namen van studenten, gevolgde cursussen en ontvangen cijfers, voor degenen met cursuscijfers hoger dan 90 .

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

Uitvoer:

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

Opmerking De AND clausule in de bovenstaande opdracht stelt u in staat om de resultaten te filteren op een voorwaardelijke cijferscoretest.

Conclusie

Deze handleiding over SQL-opdrachten is een inleidende inleiding over het maken van databaseschema's en het manipuleren van gegevens in die databases. Hoewel de hier geïntroduceerde concepten slechts het eerste gezicht zijn met betrekking tot het gebruik van relationele databasesystemen, is het een goed startpunt voor basis- en essentiële commando's en concepten.


  1. PostgreSQL-array met elementen die elk een externe sleutel zijn

  2. SQL Server BCP export beschadigd bestand?

  3. Hoe een datetime op te slaan in MySQL met tijdzone-info

  4. PostgreSQL – Herhaalde waarden elimineren?