SQL Fundamentals

Leer meer oor DDL, DML en JOINs

Die gestruktureerde navraagstaal is een van die fundamentele boustene van moderne databasisargitektuur. SQL definieer die metodes wat gebruik word om relasionele databasisse op alle groot platforms te skep en te manipuleer. By die eerste oogopslag kan die taal intimiderend en kompleks lyk, maar dit is nie so moeilik nie.

Hierdie inleiding tot die grondliggende faktore agter SQL neem 'n kort oorsig van sommige van die hoof opdragte wat gebruik word om databasisse te skep en te verander.

Oor SQL

Die korrekte uitspraak van SQL is 'n omstrede probleem in die databasis gemeenskap. In sy SQL-standaard het die Amerikaanse Nasionale Standaardeinstituut verklaar dat die amptelike uitspraak "es queue el." Is. Baie databasispersoneel het egter na die slang uitspraak "vervolg" geneem. Die keuse is joune.

SQL kom in baie geure. Oracle databases gebruik sy eie PL / SQL. Microsoft SQL Server maak gebruik van Transact-SQL. Al die variasies is gebaseer op die bedryfstandaard ANSI SQL. Hierdie inleiding gebruik ANSI-voldoenende SQL-opdragte wat op enige moderne relasionele databasisstelsel werk.

DDL en DML

SQL-opdragte kan in twee hoof sub-tale verdeel word. Die Data Definisie Taal (DDL) bevat die opdragte wat gebruik word om databasisse en databasisvoorwerpe te skep en te vernietig. Nadat die databasisstruktuur met DDL gedefinieer is, kan databasisadministrateurs en gebruikers die Data Manipulation Language (DML) gebruik om die data daarin in te voeg, op te haal en te verander.

Data Definisie Taal opdragte

Die Data Definisie Taal word gebruik om databasisse en databasis voorwerpe te skep en te vernietig. Hierdie opdragte word hoofsaaklik deur databasisadministrateurs gebruik tydens die opstel en verwydering van fases van 'n databasisprojek. Hier is 'n blik op die struktuur en gebruik van vier basiese DDL opdragte:

Skep. Deur 'n databasisbestuurstelsel op 'n rekenaar te installeer, kan u baie onafhanklike databasisse skep en bestuur. U kan byvoorbeeld 'n databasis van kliënte kontakte vir u verkoopsafdeling en 'n personeeldatabasis vir u HR-afdeling behou. Die opdrag CREATE word gebruik om elkeen van hierdie databasisse op u platform te vestig. Byvoorbeeld, die opdrag:

SKEP DATABASE werknemers

skep 'n leë databasis met die naam "werknemers" op u DBMS. Na die skep van die databasis, is die volgende stap om tabelle te skep wat data bevat. Nog 'n variant van die opdrag CREATE kan vir hierdie doel gebruik word. Die opdrag:

SKEP TAFEL personal_info (first_name char (20) nie nul, laaste naam char (20) nie nul, employee_id int nie nul nie)

stel 'n tabel getiteld "personal_info" in die huidige databasis. In die voorbeeld bevat die tabel drie eienskappe: eerste naam, laaste naam en werknemer_id saam met 'n paar addisionele inligting.

GEBRUIK. Met die instruksies USE kan u die databasis spesifiseer wat u met u DBMS wil werk. Byvoorbeeld, as u tans in die verkoopsdatabasis werk en sekere opdragte wil uitreik wat die werknemerdatabasis sal beïnvloed, moet u dit voorskryf met die volgende SQL-opdrag:

GEBRUIK werknemers

Dit is belangrik om altyd bewus te wees van die databasis waaraan jy werk voordat SQL-opdragte uitgereik word wat data manipuleer.

ALTER. Sodra jy 'n tabel in 'n databasis geskep het, kan jy die definisie daarvan verander. Met die ALTER-opdrag kan u die struktuur van 'n tafel verander sonder om dit te verwyder en te herskep. Kyk na die volgende opdrag:

ALTER TABLE personal_info ADD salaris geld null

Hierdie voorbeeld voeg 'n nuwe kenmerk by die personal_info-tabel - 'n werknemer se salaris. Die "geld" argument bepaal dat 'n werknemer se salaris gestoor word met behulp van 'n dollar en sent formaat. Ten slotte vertel die "nul" navraag die databasis dat dit goed is dat hierdie veld geen waarde vir enige gegewe werknemer bevat nie.

DROP. Die finale opdrag van die Data Definisie Taal, DROP, stel ons in staat om volledige databasisvoorwerpe uit ons DBMS te verwyder. As ons byvoorbeeld die persoonlike_info-tabel wat ons geskep het permanent wil verwyder, gebruik ons ​​die volgende opdrag:

DROP TABLE personal_info

Net so sal die bevel hieronder gebruik word om die hele werknemer databasis te verwyder:

DROP DATABASE werknemers

Gebruik hierdie opdrag met omsigtigheid. Die DROP-opdrag verwyder hele data strukture uit u databasis. As jy individuele rekords wil verwyder, gebruik die DELETE-opdrag van die Data manipulasie taal.

Data manipulasie taal opdragte

Die Data Manipulation Language (DML) word gebruik om databasisinligting op te haal, in te voeg en te verander. Hierdie opdragte word gebruik deur alle databasisgebruikers tydens die roetine-operasie van die databasis.

INSERT. Die INSERT opdrag in SQL word gebruik om rekords by 'n bestaande tabel te voeg. Terug te keer na die personal_info voorbeeld van die vorige afdeling, stel jou voor dat ons HR-afdeling 'n nuwe werknemer by sy databasis moet byvoeg. Jy kan 'n opdrag soos hierdie een gebruik:

INSERT IN personal_info waardes ('bart', 'simpson', 12345, $ 45000)

Let daarop dat daar vier waardes vir die rekord gespesifiseer is. Dit stem ooreen met die tabel eienskappe in die volgorde wat hulle gedefinieer is: eerste naam, laaste naam, werknemer en salaris.

Te kies. Die SELECT opdrag is die mees gebruikte opdrag in SQL. Dit laat databasisgebruikers toe om die spesifieke inligting wat hulle verlang uit 'n operasionele databasis te kry. Kyk na 'n paar voorbeelde, weer deur die persoonlike_info tabel uit die werknemer databasis te gebruik.

Die onderstaande opdrag haal al die inligting in die personal_info tabel. Let daarop dat die asterisk gebruik word as 'n wildkaart in SQL. Dit beteken letterlik "Kies alles uit die personal_info-tabel."

SELECT * FROM personal_info

Alternatiewelik kan gebruikers die eienskappe wat uit die databasis verkry word, beperk. Byvoorbeeld, die Departement Menslike Hulpbronne mag 'n lys van die laaste name van alle werknemers in die maatskappy benodig. Die volgende SQL-opdrag sal net daardie inligting ophaal:

SELEK laaste naam FROM personal_info

Die WHERE-klousule kan gebruik word om die rekords te beperk wat verkry word aan diegene wat aan bepaalde kriteria voldoen. Die hoof uitvoerende beampte sal dalk belangstel om die personeelrekords van alle hoogbetaalde werknemers te hersien. Die volgende opdrag haal al die data in persoonlike_info vir rekords wat 'n salariswaarde van meer as $ 50,000 het:

KIES * UIT personal_info WAAR salaris> $ 50000

OPDATEER. Die UPDATE-opdrag kan gebruik word om die inligting in 'n tabel te verander, hetsy in grootmaat of individueel. Gestel die maatskappy gee jaarliks ​​aan alle werknemers 'n 3 persent-koste-van-lewende toename in hul salaris. Die volgende SQL-opdrag kan gebruik word om dit vinnig toe te pas op al die werknemers wat in die databasis gestoor is:

UPDATE personal_info SET salaris = salaris * 1.03

Wanneer die nuwe werknemer, Bart Simpson, prestasie bo en behalwe die oproep toon, wil bestuur sy sterre prestasies met 'n $ 5,000-verhoging erken. Die WHERE-klousule kan gebruik word om Bart vir hierdie verhoging uit te sluit:

UPDATE personal_info SET salaris = salaris + $ 5000 WAAR employee_id = 12345

Verwyder. Laastens, kom ons kyk na die DELETE opdrag. U sal vind dat die sintaks van hierdie opdrag soortgelyk is aan die van die ander DML-opdragte. Ongelukkig het ons nuutste korporatiewe verdiensterapport nie die verwagtinge bereik nie en is arme Bart gelos. Die DELETE-opdrag met 'n WHERE-klousule kan gebruik word om sy rekord uit die personal_info-tabel te verwyder:

Vee uit personal_info WAAR employee_id = 12345

sluit aan by

Noudat jy die basiese beginsels van SQL geleer het, is dit tyd om voort te gaan op een van die kragtigste konsepte wat die taal bied - die JOIN-verklaring. Met 'n JOIN-verklaring kan jy data in verskeie tabelle kombineer om groot hoeveelhede data effektief te verwerk. Hierdie stellings is waar die ware krag van 'n databasis woon.

Om die gebruik van 'n basiese JOIN-operasie te verken om data uit twee tabelle te kombineer, gaan voort met die voorbeeld deur die PERSONAL_INFO-tabel te gebruik en voeg 'n bykomende tabel by die mengsel. Gestel jy het 'n tabel genoem DISCIPLINARY_ACTION wat met die volgende stelling geskep is:

SKEP TABEL dissiplinêre_aksie (action_id int nie nul, employee_id int nie nul, kommentaar char (500))

Hierdie tabel bevat die resultate van dissiplinêre optrede op werknemers van die maatskappy. U sal merk dat dit geen inligting bevat oor die werknemer anders as die werknemernommer nie. Dit is maklik om te dink aan baie scenario's waar jy dalk inligting uit die DISCIPLINARY_ACTION- en PERSONAL_INFO-tabelle wil kombineer.

Gestel jy is aangestel om 'n verslag op te stel wat die dissiplinêre stappe wat teen alle werknemers getref is, met 'n salaris van meer as $ 40,000 bevat. Die gebruik van 'n JOIN-operasie, in hierdie geval, is eenvoudig. Ons kan hierdie inligting ophaal deur die volgende opdrag te gebruik:

SELECT personal_info.first_name, personal_info.last_name, dissiplinêre_aksie.kommentaar VANAF persoonlike_info, dissiplinêre_aksie WAAR personal_info.employee_id = disciplinary_action.employee_id EN personal_info.salary> 40000

Die kode spesifiseer die twee tabelle wat ons in die FROM-klousule wil aansluit, en sluit dan 'n verklaring in die WHERE-klousule in om die resultate te beperk tot rekords wat ooreenstem met werknemer-ID's en aan ons kriteria van 'n salaris van meer as $ 40,000 voldoen het.