Inleiding tot de basisprincipes van SQL

De Structured Query Language (SQL) is een van de fundamentele bouwstenen van moderne database-architectuur. SQL definieert de methoden die worden gebruikt voor het maken en manipuleren van relationele databases op alle belangrijke platforms. Op het eerste gezicht lijkt de taal misschien intimiderend en complex, maar het is niet zo moeilijk.

Over SQL

De juiste uitspraak van SQL is een omstreden kwestie binnen de databasegemeenschap. In zijn SQL-standaard verklaarde het American National Standards Institute dat de officiële uitspraak "es queue" is el." Veel databaseprofessionals hebben echter de slanguitspraak "vervolg" overgenomen van GIF, er is geen goed antwoord.

SQL is er in vele smaken. Oracle-databases gebruiken de eigen PL/SQL. Microsoft SQL Server maakt gebruik van Transact-SQL. Alle variaties zijn gebaseerd op de industriestandaard ANSI SQL.

Deze inleiding maakt gebruik van ANSI-compatibele SQL-commando's die werken op elk modern relationeel databasesysteem.

DDL en DML

SQL-opdrachten kunnen worden onderverdeeld in twee hoofdsubtalen. De Data Definition Language bevat de opdrachten die worden gebruikt om databases en database-objecten te maken en te vernietigen. Nadat de databasestructuur is gedefinieerd met DDL, kunnen databasebeheerders en gebruikers de Data Manipulation Language gebruiken om de daarin opgenomen gegevens in te voegen, op te halen en te wijzigen.

instagram viewer

SQL ondersteunt een derde type syntaxis genaamd Taal voor gegevensbeheer. DCL regelt de beveiligingstoegang tot objecten in de database. Bijvoorbeeld, een DCL-script verleent of herroept specifieke gebruikersaccounts het recht om te lezen of te schrijven naar tabellen binnen een of meer gedefinieerde gebieden van de database. In de meeste beheerde omgevingen met meerdere gebruikers voeren databasebeheerders meestal DCL-scripts uit.

Gegevensdefinitie Taalcommando's

De Data Definition Language wordt gebruikt om databases en database-objecten te maken en te vernietigen. Deze opdrachten worden voornamelijk gebruikt door databasebeheerders tijdens de installatie- en verwijderingsfasen van een databaseproject. DDL draait om vier primaire commando's:creëren, gebruik, wijzigen, en laten vallen.

Aanmaken

De creëren command brengt databases, tabellen of query's tot stand op uw platform. Bijvoorbeeld het commando:

MAAK DATABASE medewerkers;

maakt een lege database met de naam medewerkers op uw DBMS. Na het maken van de database is de volgende stap het maken van tabellen die gegevens bevatten. Een andere variant van de creëren opdracht bereikt dit doel. Het bevel:

CREATE TABLE personal_info (first_name char (20) niet null, achternaam char (20) niet null, employee_id int niet null);

vestigt een tabel met de titel persoonlijke informatie in de huidige database. In het voorbeeld bevat de tabel drie attributen: Voornaam, achternaam, en werknemer_id samen met wat aanvullende informatie.

Gebruik

De gebruik commando specificeert de actieve database. Als u bijvoorbeeld momenteel in de verkoopdatabase werkt en enkele opdrachten wilt geven die van invloed zijn op de werknemersdatabase, laat ze dan voorafgaan door de volgende SQL-opdracht:

GEBRUIK medewerkers;

Controleer nogmaals de database waarin u werkt voordat u SQL-opdrachten geeft die gegevens manipuleren.

Wijzigen

Nadat u een tabel in een database hebt gemaakt, wijzigt u de definitie ervan via de wijzigen commando, dat de structuur van een tabel verandert zonder deze te verwijderen en opnieuw aan te maken. Kijk eens naar het volgende commando:

ALTER TABLE personal_info ADD salarisgeld null;

In dit voorbeeld wordt een nieuw kenmerk toegevoegd aan de tabel personal_info: het salaris van een werknemer. De geld argument specificeert dat het salaris van een werknemer wordt opgeslagen in een dollar- en centformaat. eindelijk, de nul trefwoord vertelt de database dat het OK is dat dit veld geen waarde bevat voor een bepaalde werknemer.

Laten vallen

Het laatste commando van de Data Definition Language, laten vallen, verwijdert volledige database-objecten uit ons DBMS. Gebruik de volgende opdracht om bijvoorbeeld de tabel personal_info die we hebben gemaakt permanent te verwijderen:

DROP TABLE personal_info;

Op dezelfde manier zou de onderstaande opdracht worden gebruikt om de volledige werknemersdatabase te verwijderen:

DROP DATABASE medewerkers;

Gebruik deze opdracht met zorg. De laten vallen commando verwijdert volledige datastructuren uit uw database. Als u afzonderlijke records wilt verwijderen, gebruikt u de verwijderen beheersing van de taal voor gegevensmanipulatie.

Taalcommando's voor gegevensmanipulatie

De Data Manipulation Language wordt gebruikt om database-informatie op te halen, in te voegen en te wijzigen. Deze DML-commando's bieden het typische raamwerk voor routinematige interactie met de database.

Invoegen

De invoegen commando voegt records toe aan een bestaande tabel. Terugkerend naar het voorbeeld personal_info uit de vorige sectie, stel je voor dat onze HR-afdeling een nieuwe medewerker aan zijn database moet toevoegen. Gebruik een opdracht die lijkt op deze:

INSERT INTO persoonlijke_info
waarden('bart','simpson',12345,$45000);

Houd er rekening mee dat er vier waarden zijn opgegeven voor de record. Deze komen overeen met de tabelattributen in de volgorde waarin ze zijn gedefinieerd: Voornaam, achternaam, werknemer_id en salaris.

Selecteer

De selecteer commando is het meest gebruikte commando in SQL. Het haalt specifieke informatie op uit een operationele database. Bekijk een paar voorbeelden, wederom met behulp van de personal_info tabel uit de medewerkersdatabase.

De onderstaande opdracht haalt alle informatie op in de tabel personal_info. De asterisk is een jokerteken in SQL.

KIES *
VAN persoonlijke_info;

U kunt ook de attributen beperken die uit de database worden opgehaald door op te geven: wat wordt geselecteerd. De afdeling Human Resources kan bijvoorbeeld een lijst met de achternamen van alle werknemers in het bedrijf eisen. De volgende SQL-opdracht zou alleen die informatie ophalen:

SELECT achternaam
VAN persoonlijke_info;

De waar clausule beperkt de records die worden opgehaald tot de records die voldoen aan gespecificeerde criteria. De CEO is mogelijk geïnteresseerd in het bekijken van de personeelsdossiers van alle hoogbetaalde werknemers. Met de volgende opdracht worden alle gegevens in personal_info opgehaald voor records met een salariswaarde van meer dan $ 50.000:

KIES *
VAN persoonlijke_info
WAAR salaris > $ 50000;

Bijwerken

De bijwerken commando wijzigt de informatie in een tabel, in bulk of afzonderlijk. Stel dat het bedrijf alle werknemers jaarlijks een verhoging van de kosten van levensonderhoud van 3 procent geeft. Het volgende SQL-commando past deze hobbel toe op alle werknemers die in de database zijn opgeslagen:

UPDATE persoonlijke_info
SET salaris = salaris * 1,03;

Wanneer de nieuwe werknemer Bart Simpson prestaties laat zien die verder gaan dan zijn plicht, wil het management zijn geweldige prestaties erkennen met een verhoging van $ 5.000. De WHERE-clausule kiest Bart voor deze verhoging:

UPDATE persoonlijke_info
SET salaris = salaris + 5000
WAAR werknemer_id = 12345;

Verwijderen

Laten we tot slot eens kijken naar de verwijderen opdracht. U zult zien dat de syntaxis van deze opdracht vergelijkbaar is met die van de andere DML-opdrachten. Het DELETE-commando, met a waar clausule, verwijder een record uit een tabel:

VERWIJDEREN VAN persoonlijke_info
WAAR werknemer_id = 12345;

DML ondersteunt ook aggregatievelden. In een selecteer statement, wiskundige operatoren zoals som en tellen gegevens samenvatten in een query. Bijvoorbeeld de vraag:

selecteer count(*) van personal_info;

telt het aantal records in de tabel.

Database joins

EEN doe mee statement combineert gegevens in verschillende tabellen om grote hoeveelheden gegevens efficiënt te verwerken. Deze verklaringen zijn waar de ware kracht van een database ligt.

Het gebruik van een basis doe mee bewerking om gegevens uit twee tabellen te combineren, gaat u verder met het voorbeeld met behulp van de tabel personal_info en voegt u een extra tabel toe aan de mix. Stel dat je een tafel hebt met de naam disciplinaire maatregelen die is gemaakt met de volgende verklaring:

MAAK TABEL disciplinaire_actie (action_id int niet null, employee_id int niet null, opmerkingen char (500));

Deze tabel bevat de resultaten van disciplinaire maatregelen voor medewerkers van het bedrijf. Het bevat geen andere informatie over de werknemer dan het personeelsnummer.

Stel dat u bent belast met het maken van een rapport met de disciplinaire maatregelen die zijn genomen tegen alle werknemers met een salaris van meer dan $ 40.000. Het gebruik van een JOIN-bewerking is in dit geval eenvoudig. Haal deze informatie op met de volgende opdracht:

SELECT persoonlijke_info.voornaam, persoonlijke_info.achternaam, disciplinaire_actie.comments
VAN personal_info INNER WORD LID disciplinaire_action ON personal_info.employee_id = disciplinaire_action.employee_id
WAAR persoonlijke_info.salaris > 40000;

Soorten joins

Join-typen in SQL

Joins zijn er in verschillende smaken. In de SQL-instructie, de eerste tabel (meestal genoemd Tabel A of de Linker tafel) voegt zich bij de tweede tafel (meestal genoemd Tabel B of de Rechter tafel) op een positiebewuste manier. Als u dus de volgorde van de tabellen in de join-instructie wijzigt, zullen de resultaten van de bewerking verschillen. De belangrijkste join-typen zijn:

  • Innerlijke join: Komt alleen overeen met records waarbij de Aan voorwaarde komt overeen met dezelfde records in beide tabellen.
  • buitenste join: Komt alleen overeen met records uit beide tabellen die uitsluiten de resultaten geïdentificeerd in de Aan staat.
  • Rechts meedoen: Komt overeen met alle records uit Tabel B plus de records uit Tabel A die overeenkomen met de Aan staat.
  • Linker deelnemen: Komt overeen met alle records uit Tabel A plus de records uit Tabel B die overeenkomen met de Aan staat.
  • Cross-join: Komt overeen met alle records alsof de tabellen identiek zijn. Dit proces genereert iets genaamd Cartesiaans product. Cross-joins zijn vaak ongewenst, omdat ze overeenkomen met elke rij van tabel A, afzonderlijk, met elke rij van tabel B. Dus als tabel A vijf records biedt en tabel B 9 records, biedt een cross-join-query 45 resulterende rijen.
instagram story viewer