Cum se configurează smartphone-uri și PC-uri. Portal informativ
  • Acasă
  • Windows 10
  • Structura comenzii SQL. Introducere în managementul bazelor de date relaționale

Structura comenzii SQL. Introducere în managementul bazelor de date relaționale

Limba interogări structurate Structure Query Language (SQL) a fost creat ca rezultat al dezvoltării model relațional date și este în prezent standardul de facto pentru limbajul SGBD-urilor relaționale. Limbajul SQL acceptat astăzi o sumă imensă SGBD de diferite tipuri.

Numele limbajului SQL este de obicei pronunțat „es-qu-el”. Uneori este folosit numele mnemonic „See-Quel”.

Limbajul SQL oferă utilizatorului (cu efort minim din partea sa) urmatoarele posibilitati:

Creați baze de date și tabele cu descriere completa structurile lor

Efectuați operațiuni de bază de manipulare a datelor: inserarea, modificarea, ștergerea datelor

Rulați atât interogări simple, cât și complexe.

Limbajul SQL este complet relațional.

Structura și sintaxa comenzilor sale sunt destul de simple, iar limbajul în sine este universal, adică sintaxa și structura comenzilor sale nu se schimbă la trecerea de la un SGBD la altul.

Limbajul SQL are două componente principale:

DDL (Data Definition Language) pentru definirea structurilor bazei de date și controlul accesului la date

Limbajul DML (Data Manipulation Language) conceput pentru preluarea și actualizarea datelor.

SQL este un limbaj non-procedural, ceea ce înseamnă că atunci când îl utilizați, trebuie să specificați ce informații trebuie obținute, nu cum pot fi obținute. Comenzile SQL sunt cuvinte obișnuite în limba engleză (SELECT, INSERT etc.). Să ne uităm mai întâi la instrucțiunile SQL DML:

SELECT - selectarea datelor din baza de date

INSERT - inserarea datelor într-un tabel

UPDATE - actualizarea datelor dintr-un tabel

DELETE - ștergerea datelor dintr-un tabel

instrucțiunea SELECT

Operatorul SELECT efectuează acțiuni echivalente cu următoarele operații de algebră relațională: selecție, proiecție și unire.

Cea mai simplă interogare SQL care o folosește arată astfel:

SELECT col_name FROM tbl

Cuvântul cheie select este urmat de o listă de coloane separate prin virgulă ale căror date vor fi returnate de interogare. Cuvântul cheie from specifică din ce tabel (sau vizualizare) sunt preluate datele.

Rezultatul unei interogări select este întotdeauna un tabel numit tabel cu rezultate. Mai mult, rezultatele unei interogări executate folosind instrucțiunea select pot fi folosite pentru a crea masa noua. Dacă rezultatele a două interogări la mese diferite au același format, pot fi combinate într-un singur tabel. De asemenea, tabelul obținut în urma unei interogări poate face obiectul unor interogări ulterioare.

Pentru a selecta toate coloanele și toate rândurile unui tabel, trebuie doar să faceți interogare SELECT* DIN tbl;

Luați în considerare tabelul Produs, care conține informații despre prețul tipuri diferite produse:

Solicitați rezultatul

SELECT * FROM Produs;

va fi întregul tabel de produse.

Puteți selecta anumite coloane din tabel folosind o interogare

SELECT col1, col2, … , coln FROM tbl;

Deci, rezultatul cererii

SELECTează tipul, prețul din produs;

va fi o masă

La lista coloanelor din selectează declarația De asemenea, recurg dacă este necesar să se schimbe ordinea coloanelor din tabelul rezultat:

Pentru a selecta doar acele rânduri de tabel care îndeplinesc anumite restricții, o specială cuvânt cheie unde urmat de condiție logică. Dacă o înregistrare îndeplinește această condiție, este inclusă în rezultat. În caz contrar, intrarea este eliminată.

De exemplu, selectarea acelor produse din tabelul Produs al căror preț satisface condiția Preț<3200, можно осуществить, используя запрос

SELECTAȚI * FROM Produs unde Preț<3200;

Rezultatul lui:

Condiția poate fi compusă și combinată folosind operatorii logici NOT , AND, OR, XOR, de exemplu: unde id_ Price>500 AND Price<3500. Допускается также использование выражений в условии: where Price>(1+1) și constantele șirului de caractere: unde name= "autoweights".

Utilizarea constructului BETWEEN var1 AND var2 vă permite să verificați dacă valorile oricărei expresii se încadrează în intervalul de la var1 la var2 (inclusiv aceste valori):

SELECTAȚI * FROM Produs la care Prețul INTRE 3000 SI 3500;

Similar cu operatorul NOT BETWEEN, există operatorul NOT IN.

Numele de coloane specificate în clauza SELECT pot fi redenumite. Pentru aceasta se folosește cuvântul cheie AS, care, totuși, poate fi omis, întrucât este implicit subînțeles. De exemplu, cerere

SELECT Tip AS model, Type_id AS num FROM Product unde Type_id =3

va reveni (numele de alias trebuie scrise fără ghilimele):

Operatorul LIKE este conceput pentru a compara un șir cu un model:

SELECT * FROM tbl unde col_name LIKE "abc"

Această interogare returnează numai acele înregistrări care conțin valoarea șirului abc în coloana col_name.

Eșantionului i se permite să utilizeze două caractere joker: „_” și „%”. Primul dintre ele înlocuiește un caracter arbitrar din șablon, iar al doilea înlocuiește o secvență de caractere arbitrare. Deci, „abc%” se potrivește cu orice șir care începe cu abc, „abc_” se potrivește unui șir de 4 caractere care începe cu abc, „%z” se potrivește cu orice șir care se termină cu z și, în final, „%z%” - secvențe de caractere care conțin z.

Puteți găsi toate înregistrările din tabelul Produs în care valoarea Tip începe cu litera „a” astfel:

SELECT * FROM Produs unde Tip LIKE „a%”;

cântare de camion

Dacă șirul de căutare conține un caracter wildcard, atunci trebuie să specificați caracterul de escape în clauza ESCAPE. Acest caracter de control trebuie să fie utilizat în modelul înainte de caracterul wildcard, indicând faptul că caracterul wildcard trebuie tratat ca un caracter obișnuit. De exemplu, dacă ar trebui să căutați toate valorile într-un câmp care conține caracterul „_”, atunci modelul „%_%” ar avea ca rezultat returnarea tuturor înregistrărilor din tabel. În acest caz, șablonul trebuie scris după cum urmează:

"%|_%" ESCAPE "|"

Pentru a verifica valoarea conformității cu șirul „20%” puteți utiliza următorul operator:

LIKE „20#%” ESCAPE „#”

Operatorul IS NULL vă permite să verificați absența (prezența) unei valori NULL în câmpurile unui tabel. Utilizarea operatorilor de comparație obișnuiți în aceste cazuri poate produce rezultate incorecte, deoarece compararea cu rezultatele NULL în NECUNOSCUT. Astfel, condiția de selecție ar trebui să arate astfel:

unde col_name ESTE NULL, în loc de unde col_name=NULL.

Rezultatul implicit al selecției returnează înregistrările în aceeași ordine în care sunt stocate în baza de date. Dacă doriți să sortați înregistrările după una dintre coloane, trebuie să utilizați clauza ORDER BY, urmată de numele acelei coloane:

SELECT * FROM tbl ORDER BY col_name;

Această interogare va returna înregistrările în ordinea crescătoare a valorii atributului col_name.

De asemenea, puteți sorta înregistrările după mai multe coloane. Pentru a face acest lucru, numele lor trebuie specificate după ORDER BY separate prin virgule:

SELECTAȚI * FROM tbl ORDER BY col_name1, col_name2.

Înregistrările vor fi sortate după câmpul col_name1; dacă există mai multe înregistrări cu o valoare potrivită în coloana col_name1, acestea vor fi sortate după câmpul col_name2.

Dacă doriți să sortați înregistrările în ordine inversă (de exemplu, descrescătoare după dată), trebuie să specificați ORDER BY col_name DESC.

Pentru sortarea directă, există cuvântul cheie ASC, care este acceptat ca valoare implicită.

Dacă rezultatul eșantionului conține sute sau mii de înregistrări, producția și procesarea acestora durează considerabil.

Prin urmare, informațiile sunt adesea împărțite în pagini și prezentate utilizatorului în porțiuni. Paginarea este utilizată folosind cuvântul cheie limită urmat de numărul de intrări de afișat. Următoarea interogare preia primele 10 înregistrări în timp ce sortează simultan înapoi în câmpul col_name1:

SELECTAȚI * FROM tbl ORDER BY col_name1 DESC LIMIT 10

Pentru a prelua următoarele 10 înregistrări, utilizați cuvântul cheie limit cu două valori: prima specifică poziția din care trebuie tipărit rezultatul, iar a doua specifică numărul de înregistrări de preluat:

SELECT * FROM tbl ORDER BY col_name1 DESC LIMIT 10,10

Pentru a prelua următoarele 10 înregistrări, trebuie să utilizați construcția LIMIT 20, 10.

SQL este un limbaj de interogare structurat. SQL nu există fără baze de date – nu poți scrie programe în el, iar în acest sens nu este un limbaj de programare precum PHP, dar atunci când ai de-a face cu un anumit SGBD, nu te mai poți descurca fără cunoștințe de SQL. Puteți scrie interogări simple pe el sau puteți efectua tranzacții mari constând din mai multe interogări complexe. O interogare SQL este un fel de comandă către o bază de date. O astfel de comandă poate solicita returnarea informațiilor care îndeplinesc anumite criterii sau poate oferi instrucțiuni de ștergere a oricăror înregistrări etc. O comandă SQL este un șir simplu, de exemplu:

SELECTAȚI * DIN departamentul Staff WHERE

Interogările SQL sunt de obicei aproape de o expresie simplă în Limba engleză. Comanda de mai sus poate fi tradusă în rusă după cum urmează

SELECTAȚI TOTUL DIN Staff WHERE clwjiertme"

Este o comandă complet de înțeles, este doar păcat că este scrisă exclusiv în engleză. Ca rezultat al executării unei astfel de interogări, DBMS va returna toate înregistrările din tabelul Staff în care câmpul depart* Mit_id este egal cu trei. În exemplul nostru, această interogare selectează de fapt numai programatori din întreaga bază de angajați.

Dacă nu ați mai lucrat cu un SGBD, atunci este posibil să aveți o întrebare rezonabilă: unde și cum puteți executa această interogare? Există trei moduri de a executa interogări SQL.

1. Mediu interactiv pentru interacțiunea cu SGBD. Pentru majoritatea serverelor DBMS, există programe client (încorporate sau furnizate de terți), în mediul de lucru al cărora puteți scrie interogări SQL, le puteți executa și obține rezultatul. De obicei, astfel de instrumente sunt folosite de administratorii bazelor de date și nu au legătură directă cu programarea PHP. Un exemplu de program client pentru lucrul cu MySQL este programul MySQL Administrator (http: /www.mysgl.coin/product-s/administratoT/) sau foarte popularul sistem PHP phpMyAdmin (http: / /www. phpmyadi'ln. r»et /itummjiage/index.php). Pentru a începe, va fi suficient un kit de distribuție deja instalat, care are o interfață de consolă. Pe Linux, trebuie să tastați comanda mysql din linia de comandă pentru a deschide o fereastră care vă solicită să introduceți interogări SQL, iar pe Windows, pentru a lansa aceeași interfață, trebuie să rulați fișierul mysql. exe din directorul bin.

2. Interogări SQL statice. De obicei, astfel de interogări sunt scrise în cadrul procedurilor stocate în bazele de date în sine sau codificate în aplicațiile în sine. O interogare SQL statică este predefinită și se modifică numai dacă programul sau codul procedurii stocate este rescris manual. Din PHP, o astfel de interogare SQL este executată folosind funcții speciale, despre care vor fi discutate mai târziu.

3. Interogări SQL dinamice. Acest tip include interogări care nu pot fi complet definite la scrierea unei aplicații. i" exemplu, atunci când scrie un program pentru a obține o listă de angajați" mt diferite divizii ale întreprinderii, programatorul nu știe, ci "> despre diviziile din companie și care angajați vor fi incluși în ele i„. Desigur , aceste date pot fi scrise în program strict, dar atunci când Prima modificare a structurii companiei, programul poate fi aruncat sau va trebui să fie rescris. Interogări dinamice vă permit să creați po-grame care sunt flexibile la modificările datelor. În PHP, astfel de solicitări sunt efectuate de aproape aceleași funcții ca și cele statice, doar că au capacitatea de a trece niște parametri.

Ca un rezumat al celor trei puncte descrise mai sus, putem spune că interogările SQL sunt executate din programe administrative speciale sau în diverse moduri din scripturi PHP.

Deoarece un SGBD rezolvă multe probleme, SQL este, de asemenea, forțat să fie un limbaj multifuncțional. Există mai multe tipuri de operații care pot fi< \ ществлять с помощью SQL.

1. Definirea structurii bazei de date. Acest tip include interogări care creează și modifică tabele și indecși. Acestea sunt de obicei comenzi CRE; „E TA’ LE, ALI’R TA’ LE, ‘ ” ’.TE INDEX Etc.

2. Manipularea datelor. Acest tip include interogări de inserare (mutare), ștergere sau modificare a datelor din tabele. Acestea sunt cele trei comenzi principale: INSERT. ȘTERGEȚI ȘI ACTUALIZAȚI.

3. Selectarea datelor Aceasta include o singură comandă SELECT. Nu aduce modificări datelor în sine, dar vă permite să le preluați din baza de date. Deși o singură comandă este folosită pentru a prelua date, aceasta are o funcție foarte mari oportunitățiși este folosit foarte des în aplicații.

4. Managementul serverului DBMS. Acest tip include în principal interogări pentru a gestiona utilizatorii și drepturile lor de acces (de exemplu, comanda GRANT).

Cunoașterea bună a SQL facilitează foarte mult munca unui programator atunci când lucrează cu o bază de date. Aplicațiile pot fi mici, dar au funcționalități grozave doar datorită faptului că SQL preia multe sarcini.

Ca în orice altă zonă a IT, există standarde în SQL - acestea sunt ANSI SQL. Abrevierea ANSI înseamnă Institutul Național de Standarde din America. Cu toate acestea, nu în ultimul rând din cauza diferențelor de funcționalitate ale SGBD-urilor SQL în sine pentru diferite

SGBD-urile sunt încă diferite unele de altele. Pe acest moment Aproape fiecare DBMS are propriul său dialect, care de obicei nu diferă mult de standardul general, dar are propriile sale caracteristici. De exemplu, limbajul PL/SQL este compatibil cu Oracle și PostgreSQL și pentru lucrul cu MS SQL Server Se folosește T-SQL.

Pentru munca ulterioară cu bazele de date, vă recomandăm să studiați imediat standardul cu care intenționați să lucrați în viitor. Pentru majoritatea dezvoltatorilor Web în acest moment, funcționalitatea SGBD-ului MySQL este suficientă (și poate fi folosită gratuit), așa că în această carte toate exemplele cu MySQL vor fi date, în consecință, în dialectul acestui SGBD. Documentația despre limbajul de interogare pentru MySQL poate fi găsită la www.mysql.com.

Ești nou în programare sau pur și simplu ai evitat să înveți SQL în trecut? Atunci ai dat peste la adresa corectă, deoarece orice dezvoltator se confruntă în cele din urmă cu nevoia de a cunoaște acest limbaj de interogare. Este posibil să nu fiți designerul principal al bazei de date, dar este aproape imposibil să evitați să lucrați cu ele. Sper asta scurtă recenzie sintaxa interogărilor SQL de bază va ajuta dezvoltatorul interesat și oricine are nevoie de ea.

Ce este o bază de date SQL?

Limbajul de interogare structurat ( S structurat Q uery L limbaj) este un standard de comunicare pentru baze de date care este acceptat de ANSI. Cel mai ultima versiune– SQL-99 totuși nou standard este deja în dezvoltare. Majoritatea bazelor de date aderă ferm la standardul ANSI-92. S-au discutat multe despre introducerea mai multor standarde moderne, dar furnizorii de baze de date comerciale se îndepărtează de acest lucru cu noi concepte pentru stocarea datelor stocate. Aproape fiecare bază de date folosește unele set unic sintaxă, deși foarte asemănătoare cu standardul ANSI. În cele mai multe cazuri, această sintaxă este o extensie a standardului de bază, deși există cazuri în care această sintaxă produce rezultate diferite pentru diferite baze de date. Este întotdeauna o idee bună să revizuiți documentația bazei de date, mai ales dacă obțineți rezultate neașteptate.

Dacă sunteți nou în SQL, există câteva concepte de bază pe care trebuie să le înțelegeți.

În termeni generali, „bază de date” este numele generic pentru sistem de management al bazelor de date relaționale(RDBMS). Pentru unele sisteme, „bază de date” se referă și la un grup de tabele, date, informații de configurare care sunt în mod inerent parte separată din alte modele similare. În acest caz, fiecare instalare baza de date SQL datele pot consta din mai multe baze de date. În alte sisteme, ele sunt denumite tabele.

Un tabel este o structură de bază de date care constă din coloane conținând linii date. De obicei, tabelele sunt create pentru a conține informatii aferente. În aceeași bază de date pot fi create mai multe tabele.

Fiecare coloană reprezintă un atribut sau un set de atribute ale obiectelor, cum ar fi numerele de identificare a angajaților, înălțimea, culoarea mașinii etc. Termenul folosit adesea pentru a se referi la o coloană este camp indicând numele, de exemplu „în câmpul Nume”. Câmpul șir este element minim Mese. Fiecare coloană dintr-un tabel are un nume, un tip de date și o dimensiune specifică. Numele coloanelor trebuie să fie unice în tabel.

Fiecare rând (sau înregistrare) este o colecție de atribute obiect specific, de exemplu, linia poate conține un număr de identificare angajat, cuantumul salariului său, anul nașterii, etc. Rândurile de tabel nu au nume. Pentru a accesa un anumit rând, utilizatorul trebuie să specifice un atribut (sau un set de atribute) care îl identifică în mod unic.

Unul dintre operațiuni critice, care se efectuează atunci când se lucrează cu date, este selecția informațiilor stocate în baza de date. Pentru a face acest lucru, utilizatorul trebuie să execute cerere(interogare).

Acum să ne uităm la principalele tipuri de interogări de baze de date care se concentrează pe manipularea datelor din baza de date. Pentru scopurile noastre, toate exemplele sunt furnizate în SQL standard pentru a se potrivi oricărui mediu.

Tipuri de interogări de date

Există patru tipuri principale de interogări de date în SQL, care sunt denumite limbaj de manipulare a datelor(Limbaj de manipulare a datelor sau DML):

  • SELECTAȚI– selectați rânduri din tabele;
  • INTRODUCE– adăugați rânduri la tabel;
  • ACTUALIZAȚI– schimbați rândurile din tabel;
  • ȘTERGE– ștergeți rânduri din tabel;

Fiecare dintre aceste interogări are diverși operatoriși funcții care sunt utilizate pentru a efectua unele acțiuni cu datele. Interogarea SELECT are cel mai mult un numar mare de Opțiuni. Există, de asemenea, tipuri de interogare suplimentare utilizate împreună cu SELECT, cum ar fi JOIN și UNION. Dar pentru moment, ne vom concentra doar pe interogările de bază.

Folosind o interogare SELECT pentru a selecta datele dorite

Pentru a prelua informațiile stocate în baza de date, se utilizează o interogare SELECT. Acțiune de bază Această interogare este limitată la un singur tabel, deși există modele care permit eșantionarea din mai multe tabele simultan. Pentru a obține toate rândurile de date pentru anumite coloane, se utilizează o interogare ca aceasta:

SELECT coloana1, coloana2 FROM table_name;

De asemenea, puteți obține toate coloanele dintr-un tabel folosind wildcard *:

SELECT * FROM table_name;

Acest lucru poate fi util dacă intenționați să selectați date cu un anumit starea UNDE. Următoarea interogare va returna toate coloanele din toate rândurile în care „coloana1” conține valoarea „3”:

Pe lângă = (egal), există următorii operatori condiționali:

În plus, puteți utiliza condițiile BITWEEN și LIKE pentru a compara cu condiția WHERE, precum și combinații ale operatorilor AND și OR.

Ce înseamnă în traducerea rusă: selectați toate rândurile din tabelul table_name, unde valoarea coloanei de vârstă este mai mare sau egală cu 18, iar valoarea coloanei LastName este în intervalul alfabetic de la Ivanov la Sidorov inclusiv, sau valoarea din coloana Companie este Motorola.

Folosind o interogare INSERT pentru a insera date noi

Interogarea INSERT este folosită pentru creare linie nouă date. Pentru a actualiza datele existente sau câmpurile de rând goale, trebuie să utilizați Solicitare UPDATE.

Exemplu de sintaxă a interogării INSERT:

INSERT INTO table_name (coloana1, coloana2, coloana3) VALORI ("data1", "data2", "data3");

Dacă urmează să inserați toate valorile în ordinea în care apar coloanele din tabel, puteți omite numele coloanelor, deși acest lucru este de preferat pentru lizibilitate. De asemenea, dacă enumerați coloane, nu trebuie să le enumerați în ordinea în care apar în baza de date, atâta timp cât valorile pe care le introduceți se potrivesc cu acea ordine. Nu ar trebui să enumerați coloanele care nu conțin informații.

Se schimbă deja informatii existenteîn baza de date într-un mod foarte asemănător.

Interogarea UPDATE și condiția WHERE

UPDATE este folosit pentru a schimba valorile existente sau eliberați un câmp în șir, astfel încât noile valori să se potrivească tip existent date și să furnizeze valori acceptabile. Dacă nu doriți să modificați valorile în toate rândurile, atunci trebuie să utilizați clauza WHERE.

Puteți folosi WHERE pe orice coloană, inclusiv pe cea pe care doriți să o modificați. Acesta este utilizat atunci când este necesar să înlocuiți o anumită valoare cu alta.

Atenție! Interogarea DELETE șterge rânduri întregi

O interogare DELETE șterge complet un rând din baza de date. Dacă doriți să ștergeți un singur câmp, atunci trebuie să utilizați o solicitare UPDATE și să setați acest câmp la o valoare care va fi analogă cu NULL din programul dvs. Fii atent și limitează-ți DELETE cerere clauza WHERE, altfel puteți pierde întregul conținut al tabelului.

Odată ce un rând a fost șters din baza de date, acesta nu poate fi restaurat, așa că este indicat să aveți o coloană numită „IsActive”, sau ceva de genul acesta, pe care o puteți schimba în null, ceea ce va indica faptul că vizualizarea datelor din acel rând este blocat.

Acum cunoașteți elementele de bază ale interogărilor SQL

SQL este un limbaj de bază de date și am acoperit cele mai importante și comenzi de bază, folosit în interogări de date. Există o mulțime de concepte de bază care nu au fost acoperite (SUM și COUNT, de exemplu), dar cele câteva comenzi pe care am reușit să le enumerăm mai sus ar trebui să vă încurajeze să deveniți activ și să aprofundați în minunatul limbaj de interogare numit SQL.

SQL yavl. instrument destinat pentru prelucrarea și citirea datelor conținute în calculator. DB. SQL este, în primul rând, logic informațional. limbaj, destinat pentru a descrie, modifica și prelua date stocate în baze de date relaționale. SQL este abrevierea pentru Limbajul de interogare structurat) . SQL este folosit pentru a organiza interacțiunea utilizatorului cu baza de date. De fapt, SQL funcționează doar cu baze de date relaționale tip . Se numește programul de calculator care gestionează baza de date Sistemul de gestionare a bazelor de date, sau SGBD . Dacă utilizatorul are nevoie citește datele din baza de date, le solicită din DBMS cu pom. SQL. SGBD procesează cererea, găsește datele necesare și le trimite utilizatorului. Procesul de solicitare a datelor și de obținere a unui rezultat este numit cerere la baza de date: de aici și numele - limbaj de interogare structurat. În ciuda faptului că citirea datelor este încă una dintre cele mai importante. important Funcții SQL, acum acest limbaj este folosit pentru a implementa toate funcţionalitate, pisică. SGBD-ul oferă utilizatorului, și anume:

Organizarea datelor. SQL oferă utilizatorului posibilitatea de a schimba structura prezentării datelor, precum și de a stabili relații între elementele bazei de date.

Citirea datelor. SQL oferă unui utilizator sau aplicație capacitatea de a citi și utiliza datele conținute într-o bază de date.

Procesarea datelor. SQL oferă utilizatorului sau aplicației capacitatea de a... schimba baza de date, de ex. adăugați-i date noi, precum și ștergeți sau actualizați datele existente.

Controlul accesului. Cu asistent SQL poate limita capacitatea utilizatorului de a citi și modifica datele și le poate proteja de accesul neautorizat.

Partajarea date. SQL coordonează partajarea datelor între utilizatori și lucrătorii concurenți, astfel încât aceștia să nu interfereze unul cu celălalt.

Integritatea datelor. SQL vă permite să asigurați integritatea bazelor de date, protejându-le împotriva distrugerii din cauza modificărilor inconsecvente sau a defecțiunii sistemului.

Astfel, SQL este un limbaj suficient de puternic pentru a interacționa cu SGBD.

Avantajele SQL.

SQL este un limbaj ușor de înțeles și, în același timp, un instrument software versatil de gestionare a datelor.

Următoarele caracteristici au adus succesul limbajului SQL:

Independență față de SGBD specific;

Portabilitatea de la un sistem de calcul la altul;

Disponibilitatea standardelor;

Cadrul relațional;

Structură de nivel înalt;

Abilitatea de a efectua interogări interactive speciale:

Securitate acces la software la baze de date;

Posibilitatea de prezentare a datelor diferite;

Completitudine ca limbaj conceput pentru a lucra cu baze de date;

Posibilitatea determinării dinamice a datelor;

Suport arhitectură client/server.

Toți factorii de mai sus sunt motivul pentru care SQL a devenit instrumentul standard pentru gestionarea datelor pe computerele personale.

37 Structuri de bază ale propozițiilor limbajului în interogări

Fiecare instrucțiune SQL este cerere sau accesul la baza de date, ceea ce duce la o modificare a bazei de date. În funcție de modificările care apar în baza de date, se disting următoarele tipuri de interogări:

Solicitări de creare sau modificare a obiectelor noi sau existente în baza de date (în acest caz, cererea descrie tipul și structura obiectului creat sau modificat);

Cereri de date;

Solicitări de adăugare de date noi (înregistrări)

Solicitări de ștergere a datelor;

Apeluri către SGBD.

Orice cerere este un program scris în limbajul de interogare structurat SQL. De fapt, un program SQL este o expresie de interogare pentru un eșantion de date în limba engleză, scrisă într-o structură specifică, pe care SGBD-ul o convertește apoi în rezultatul necesar.

În majoritatea SGBD-urilor, propoziția se termină cu „;” iar SGBD nu procesează informații până când nu întâlnește „;”. Propozițiile sunt alcătuite din fraze și încep cu un cuvânt înregistrat. Fiecare frază are un nume.

Numirile unora operatori SQL de bază:

SELECTAȚI(selectați) – (selectați) datele din coloanele specificate și (dacă este necesar) efectuează transformarea acestora în conformitate cu expresiile și (sau) funcțiile specificate înainte de ieșire; DIN– indică tabelul din care au fost selectate câmpurile; UNDE– creează o condiție pentru selectarea datelor din înregistrări; COMANDA PENTRU– sortează înregistrările într-o ordine dată; A SE GRUPA CU– grupează înregistrările care se potrivesc la executarea interogărilor rezumative; DISTINCTROW– exclude înregistrările duplicate din setul de rezultate; TRANSFORMA– evaluează expresii în interogări încrucișate; PIVOT– Definește titlurile coloanelor din tabelul de interogări încrucișate.

Despre propunere SELECTAȚI. Toate solicitările pentru obținerea aproape orice cantitate de date de la unul sau mai multe. tabelele sunt realizate folosind o singură clauză SELECT. ÎN caz general Rezultatul implementării clauzei SELECT este un alt tabel. Operația SELECT poate fi aplicată din nou acestui nou tabel (de lucru), etc., de exemplu. astfel de operațiuni pot fi imbricate unele în altele. Este de interes istoric faptul că este posibilitatea de incl. o clauză SELECT în alta a fost motivația utilizării. adjectivul „structurat” în numele limbajului SQL. În desenele utilizate. simboluri: asterisc (*) pentru a indica „toate” – folosite. în sensul obișnuit pentru programare, adică „toate cazurile care îndeplinesc definiția”; (,) - Spaniolă pentru a separa elementele listei; () - înseamnă că construcțiile, concluzie. între paranteze, yavl. opțional ; linie dreaptă (|) – numerar. alegere dintre două sau mai multe posibilități etc.

36-37. Special - stilul limbajului SQL . Structuri de bază propoziții de limbă în interogări (a/c)

SQL - Limbajul de interogare structurat. Producția de informații - mai unificată. Acest lucru a condus la necesitatea creării unui limbaj standard care ar putea

SELECT în SQL (pentru un tabel): SELECTAȚI(selectați) câmpurile specificate

DIN(din) tabel specificat

UNDE(unde) o condiție specificată este adevărată

SELECTAȚI list_of_elements (câmpuri) pentru a fi selectat

FROM table_list (sau vizualizare)

]

Folosind calificativul AS

Acest calificator înlocuiește numele coloanei existente în tabelul rezultat cu cel specificat.

Funcții agregate

Funcțiile de agregare includ funcțiile sum (SUM), max (SUM) și min (MIN). valorile coloanei, media aritmică (AVG) și numărul de rânduri care îndeplinesc o anumită condiție (COUNT).

SELECT count(*), sumă (buget), avg (buget),

min (buget), max (buget)

WHERE head_dept = 100

calculați: numărul de departamente care sunt subdiviziuni ale departamentului 100 (Marketing și vânzări), bugetele lor totale, medii, minime și maxime COUNT SUM MEDIA MIN MAX

5 3800000.00 760000.00 500000.00 1500000.00

Clauza FROM a comenzii SELECT

Clauza FROM listează toate obiectele (unul sau mai multe) din care sunt preluate datele. Fiecare tabel sau vedere la care se face referire în interogare trebuie să fie listat în clauza FROM.

Tipuri de predicate utilizate în clauza WHERE :

comparaţie folosind operatori relaţionali

Egal<>nu este egal!= nu este egal > mai mare decât< меньше

>= mai mare sau egal cu<= меньше или равно

ÎNTRE ÎN LIKE CONTINING ESTE NUL

Operații de comparație Dacă domeniile sunt definite în baza de date, atunci articolele comparate trebuie să aparțină aceluiași domeniu.

SELECTează prenume, prenume, nr_departament,

UNDE job_tara<>"STATELE UNITE ALE AMERICII"

ÎNTRE

Predicatul BETWEEN specifică intervalul de valori pentru care expresia evaluează drept adevărat. De asemenea, este permisă utilizarea construcției NOT BETWEEN.

UNDE salariu INTRE 20000 SI 30000

obțineți o listă cu angajații al căror salariu anual este mai mare de 20.000 și mai mic de 30.000 FIRST_NAME LAST_NAME SALARY

Ann Bennet 22935.00

Kelly Brown 27000,00

Este posibil ca valorile care definesc intervalele inferioare și superioare să nu fie valorile reale din baza de date. Și acest lucru este foarte convenabil - pentru că nu putem indica întotdeauna valorile exacte ale intervalelor!

SELECTează prenume, prenume, salariu

UNDE prenume ÎNTRE „Nel” ȘI „Osb”

obțineți o listă cu angajații ale căror nume de familie sunt între „Nel” și „Osb” SALARIU FIRST_NAME LAST_NAME

Robert Nelson 105900.00

Carol Nordstrom 42742,50

Sue Anne O'Brien 31275.00

SELECTează prenume, prenume, data_închiriere

ÎN Predicatul IN verifică dacă valoarea specificată care precede cuvântul cheie „IN” (de exemplu, o valoare de coloană sau o funcție a unei coloane) este inclusă în lista specificată în paranteze. Dacă valoarea dată care este testată este egală cu orice element din listă, atunci predicatul se evaluează la adevărat. De asemenea, este permisă utilizarea construcției NOT IN.

SELECTează prenume, prenume, cod_post

WHERE job_code IN ("VP", "Admin", "Finan")

CA Predicatul LIKE este folosit numai cu date de caractere. Acesta verifică dacă valoarea caracterului dată se potrivește cu șirul cu masca specificată. Toate caracterele permise (inclusiv litere mari și mici), precum și caracterele speciale, sunt folosite ca mască:

% - înlocuiește orice număr de caractere (inclusiv 0),

Înlocuiește un singur caracter.

De asemenea, este permisă utilizarea constructului NOT LIKE.

SELECTează prenume, prenume

WHERE last_name LIKE „F%”

obțineți o listă cu angajații ale căror nume încep cu litera „F” FIRST_NAME LAST_NAME

Operatori logici Operatorii logici includ binecunoscuții operatori AND, OR, NOT, care vă permit să efectuați diverse operații logice: înmulțire logică (ȘI, „intersecția condițiilor”), adunare logică (OR, „uniunea condițiilor”), negație logică ( NU, „negarea condițiilor”). În exemplele noastre am folosit deja operatorul AND. Utilizarea acestor operatori vă permite să „personalizați” în mod flexibil condițiile de selectare a înregistrărilor.

Conexiune ( A TE ALATURA ) Operația de îmbinare este utilizată în SQL pentru a afișa informațiile conexe stocate în mai multe tabele într-o singură interogare. Legarea se face de obicei folosind cheia primară a unui tabel și cheia externă a altui tabel - pentru fiecare pereche de tabele. Este foarte important să țineți cont de toate câmpurile cheii externe, altfel rezultatul va fi distorsionat. Câmpurile care trebuie unite pot (dar nu sunt obligatorii!) să fie prezente în lista de elemente selectabile. Clauza WHERE poate conține mai multe condiții de îmbinare. Condiția de îmbinare poate fi combinată și cu alte predicate din clauza WHERE.

02/07/07 11.6K

Introducere în managementul bazelor de date relaționale

sql este adesea numit limba esperanto pentru sistemele de management al bazelor de date (DBMS). Într-adevăr, nu există nicio altă limbă în lume pentru a lucra cu baze de date care ar fi atât de larg utilizate în programe. Primul standard de sol a apărut în 1986 și acum a câștigat recunoașterea universală. Poate fi folosit chiar și atunci când lucrați cu SGBD-uri non-relaționale. Spre deosebire de alte instrumente software, precum limbajele C și Cobol, care sunt apanajul programatorilor profesioniști, sql este folosit de specialiști dintr-o varietate de domenii. Programatori, administratori DBMS, analiști de afaceri - toți procesează cu succes datele folosind sql. Cunoașterea acestui limbaj este utilă pentru toți cei care au de-a face cu baza de date.

În acest articol ne vom uita la conceptele de bază ale sql. Să-i spunem povestea de fundal (și să risipim câteva mituri pe parcurs). Te vei familiariza cu modelul relațional și vei putea dobândi primele abilități în lucrul cu sql, care te vor ajuta la stăpânirea în continuare a limbajului.

Este greu să înveți SQL? Depinde cât de adânc vei ajunge. Pentru a deveni profesionist, trebuie să studiezi mult. Limbajul sql a început să apară în 1974 ca subiect al unei scurte lucrări de cercetare de 23 de pagini și a parcurs un drum lung de atunci. Textul standardului actual - documentul oficial „standardul internațional al bazei de date limba sql” (denumit în mod obișnuit sql-92) - conține peste șase sute de pagini, dar nu spune nimic despre caracteristicile specifice ale versiunilor de sol implementate în SGBD-uri. de la Microsoft, Oracle, Sybase etc. Limbajul este atât de dezvoltat și divers încât doar enumerarea capabilităților sale ar necesita mai multe articole de jurnal, iar dacă adunați tot ce a fost scris pe tema sol, veți obține o bibliotecă cu mai multe volume.

Cu toate acestea, pentru utilizatorul obișnuit nu este deloc necesar să cunoască sql complet. Așa cum un turist care se află într-o țară în care vorbește o limbă de neînțeles trebuie doar să învețe câteva expresii comune și reguli gramaticale, așa în SQL - știind puțin, poți obține multe rezultate utile. În acest articol ne vom uita comenzi de bază sql, regulile de stabilire a criteriilor de selectare a datelor și vom arăta cum să obținem rezultate. Ca rezultat, veți putea crea singur tabele și veți putea introduce informații în ele, puteți crea interogări și puteți lucra cu rapoarte. Aceste cunoștințe pot deveni baza pentru dezvoltarea independentă ulterioară a SQL.

Ce este sql?

sql este un limbaj specializat non-procedural care vă permite să descrieți date, să preluați și să procesați informații din SGBD-urile relaționale. Specializarea înseamnă că sol este destinat numai lucrului cu baza de date; Nu puteți crea un sistem de aplicații cu drepturi depline folosind doar această limbă - aceasta va necesita utilizarea altor limbi în care puteți încorpora comenzi SQL. Prin urmare, sql este numit și un instrument de limbaj auxiliar pentru procesarea datelor. O limbă auxiliară este folosită numai împreună cu alte limbi.

Un limbaj de aplicație cu scop general are de obicei facilități pentru crearea de proceduri, dar SQL nu. Cu ajutorul acestuia, nu puteți specifica cum ar trebui efectuată o anumită sarcină, dar puteți determina doar ce anume este aceasta. Cu alte cuvinte, atunci când lucrăm cu sql, ne interesează rezultatele, nu procedurile de obținere a acestora.

Cea mai semnificativă proprietate a sql este capacitatea de a accesa baze de date relaționale. Mulți cred chiar că expresiile „bază de date procesată folosind sql” și „bază de date relațională” sunt sinonime. Cu toate acestea, veți vedea în curând că există o diferență între ele. Standardul sql-92 nici măcar nu are termenul de relație.

Ce este un SGBD relațional?

Fără a intra în detalii, un SGBD relațional este un sistem bazat pe un model de management al datelor relaționale.

Conceptul de model relațional a fost propus pentru prima dată în lucrarea Dr. E. F. Codd, publicată în 1970. Acesta descria un aparat matematic pentru structurarea și manipularea datelor și, de asemenea, propunea un model abstract pentru reprezentarea oricărei informații din lumea reală. Anterior, atunci când se folosea o bază de date, era necesar să se țină cont de caracteristicile specifice de stocare a informațiilor în ea. Dacă structura internă a bazei de date s-a schimbat (de exemplu, pentru a îmbunătăți performanța), a fost necesară relucrarea programelor de aplicație, chiar dacă nu s-au produs modificări la nivel logic. Modelul relațional a făcut posibilă separarea caracteristicilor private ale stocării datelor de la nivelul programului de aplicație. De fapt, modelul nu descrie în niciun fel cum sunt stocate și accesate informațiile. Ceea ce se ia în considerare este modul în care aceste informații sunt percepute de către utilizator. Datorită apariției modelului relațional, abordarea managementului datelor s-a schimbat calitativ: dintr-o artă s-a transformat într-o știință, ceea ce a dus la dezvoltarea revoluționară a industriei.

Concepte de bază ale modelului relațional

Conform modelului relațional, o relație este un tabel cu date. O relație poate avea unul sau mai multe atribute (trăsături) corespunzătoare coloanelor acestui tabel și un set (eventual gol) de date, care sunt seturi ale acestor atribute (se numesc tuple n-are, sau înregistrări) și care corespund cu rândurile mesei.

Pentru orice tuplu, valorile atributelor trebuie să aparțină așa-numitelor domenii. De fapt, un domeniu este un anumit set de date care definește setul tuturor valorilor valide.

Să ne uităm la un exemplu. Să existe un domeniu Zilele săptămânii care să conțină valori de luni până duminică. Dacă o relație are un atribut WeekDay corespunzător acestui domeniu, atunci orice tuplu din relație trebuie să aibă una dintre valorile enumerate în coloana WeekDay. Nu au voie să apară valorile ianuarie sau pisică.

Vă rugăm să rețineți: atributul trebuie să aibă una dintre valorile valide. Specificarea mai multor valori simultan este interzisă. Astfel, pe lângă cerința ca valorile atributelor să aparțină unui anumit domeniu, trebuie îndeplinită condiția atomicității acestuia. Aceasta înseamnă că aceste semnificații nu pot fi descompuse, adică nu pot fi împărțite în părți mai mici fără a pierde sensul de bază. De exemplu, dacă valoarea atributului conținea simultan luni și marți, atunci se pot distinge două părți, păstrând sensul inițial - Ziua săptămânii; prin urmare, această valoare de atribut nu este atomică. Cu toate acestea, dacă încercați să despărțiți semnificația „luni” în părți, veți obține un set de litere individuale - de la „P” la „K”; sensul inițial se pierde, deci sensul „luni” este atomic.

Relațiile au și alte proprietăți. Cea mai semnificativă dintre ele este proprietatea matematică a operațiilor închise. Aceasta înseamnă că, în urma efectuării oricărei operații asupra unei relații, trebuie să apară o nouă relație. Această proprietate vă permite să obțineți rezultate previzibile atunci când efectuați operații matematice asupra relațiilor. În plus, devine posibilă reprezentarea operațiunilor sub formă de expresii abstracte cu diferite niveluri de imbricare.

În lucrarea sa originală, Dr. Codd a definit un set de opt operatori numit algebră relațională. Patru operatori – uniunea, multiplicarea logică, diferența și produsul cartezian – au fost transferați din teoria mulțimilor tradiționale; restul operatorilor au fost creați special pentru a se ocupa de relații. Lucrările ulterioare ale Dr. Codd, Chris Date și alți cercetători au propus operatori suplimentari. Mai târziu în acest articol, ne vom uita la trei operatori relaționali: proiectați, selectați sau restricționați și alăturați.

sql și model relațional

Acum că ești familiarizat cu modelul relațional, să uităm de el. Desigur, nu pentru totdeauna, ci doar pentru a explica următoarele: deși modelul relațional propus de Dr. Codd a fost folosit în dezvoltarea sql, nu există o corespondență completă sau literală între cele două (acesta este unul dintre motive). de ce standardul sql-92 nu are termenul de atitudine). De exemplu, conceptele unui tabel sql și o relație nu sunt echivalente, deoarece tabelele pot avea mai multe rânduri identice simultan, în timp ce tupluri identice nu au voie să apară în relații. În plus, SQL nu prevede utilizarea domeniilor relaționale, deși tipurile de date joacă un rol într-o oarecare măsură (unii susținători influenți ai modelului relațional încearcă acum să insiste pentru includerea domeniilor relaționale în viitorul standard SQL).

Din păcate, inconsecvența dintre sql și modelul relațional a dat naștere de-a lungul anilor la multe neînțelegeri și dispute. Dar, deoarece subiectul principal al articolului este studiul sql și nu modelul relațional, aceste probleme nu sunt discutate aici. Nu uitați că există diferențe între termenii folosiți în SQL și modelul relațional. În continuare, în articol vor fi folosiți numai termenii acceptați în sql. În loc de relații, atribute și tupluri, vom folosi analogii lor sql: tabele, coloane și rânduri.

Sql static și dinamic

Este posibil să fiți deja familiarizați cu termeni precum SQL static și dinamic. O interogare sql este statică dacă este compilată și optimizată într-o etapă anterioară execuției programului. Am menționat deja o formă de SQL static când am vorbit despre încorporarea comenzilor sql în programele C sau Cobol (există un alt nume pentru astfel de expresii - embedded sql). După cum probabil ghiciți, o interogare SQL dinamică este compilată și optimizată în timpul execuției programului. De regulă, utilizatorii obișnuiți folosesc SQL dinamic, care le permite să creeze interogări în conformitate cu nevoile lor imediate. Una dintre opțiunile de utilizare a interogărilor SQL dinamice este apelul lor interactiv sau direct (există chiar și un termen special - directsql), atunci când interogările trimise spre procesare sunt introduse interactiv din terminal. Există anumite diferențe între SQL static și dinamic în sintaxa constructelor utilizate și a caracteristicilor de execuție, dar aceste probleme depășesc domeniul de aplicare al articolului. Remarcăm doar că, pentru claritatea înțelegerii, exemplele sunt date sub formă de interogări sql directe, deoarece acest lucru permite nu numai programatorilor, ci și majorității utilizatorilor finali, să învețe cum să folosească sql.

Cum să înveți sql

Acum sunteți gata să scrieți primele interogări SQL. Dacă aveți acces la baza de date prin sql și doriți să folosiți exemplele noastre în practică, atunci luați în considerare următoarele: trebuie să vă conectați ca utilizator cu drepturi nelimitate și veți avea nevoie de instrumente software pentru procesarea interactivă a interogărilor SQL (dacă suntem vorbind despre o bază de date de rețea, ar trebui să discutați cu administratorul bazei de date despre acordarea drepturilor corespunzătoare). Dacă nu aveți acces la baza de date prin sql, nu vă faceți griji: toate exemplele sunt foarte simple și le puteți da seama „uscate”, fără a merge la mașină.

Pentru a efectua orice acțiune în sql, trebuie să executați o expresie în limbajul sql. Există mai multe tipuri de expresii, dar printre ele se pot distinge trei grupuri principale: comenzi ddl (limbaj de definire a datelor), comenzi dml (limbaj de manipulare a datelor) și instrumente de control al datelor. Astfel, într-un fel, sql combină trei limbi diferite.

Limbajul de descriere a datelor Comenzi

Să începem cu una dintre comenzile principale ddl - create table. Există mai multe tipuri de tabele în sql, principalele sunt de două tipuri: de bază (de bază) și selective (vizualizări). Tabelele de bază sunt cele legate de date reale; selective sunt tabele „virtuale” care sunt create pe baza informațiilor obținute din tabele de bază; dar pentru utilizatori formularele arată ca niște tabele obișnuite. Comanda create table este concepută pentru a crea tabele de bază.

În comanda create table, trebuie să specificați numele tabelului, să specificați lista de coloane și tipurile de date pe care le conțin. Alte elemente opționale pot fi, de asemenea, prezente ca parametri, dar mai întâi să ne uităm doar la parametrii de bază. Să arătăm cea mai simplă formă sintactică pentru această comandă:

creați tableTableName(ColumnDataType) ;

create și table sunt cuvinte cheie SQL; TableName, Column și DataType sunt parametri formali, în loc de care utilizatorul introduce valori reale de fiecare dată. Parametrii Column și DataType sunt încadrați în paranteze. În sql, parantezele sunt utilizate în mod obișnuit pentru a grupa elemente individuale. În acest caz, vă permit să combinați definiții pentru o coloană. Punctul și virgulă de sfârșit este un separator de comandă. Trebuie să încheie orice expresie în limbajul sql.

Să ne uităm la un exemplu. Să presupunem că trebuie să creați un tabel pentru a stoca date despre toate întâlnirile. Pentru a face acest lucru, introduceți comanda în sql:

creați întâlniri de masă (date_date_programare);

După executarea acestei comenzi, va fi creat un tabel numit programări, unde există o coloană, appointment_date, în care se pot scrie date de tipul date. Deoarece nu au fost introduse date încă, numărul de rânduri din tabel este zero (comanda de creare a tabelului definește doar tabelul; valorile reale sunt introduse cu comanda de inserare, care este discutată mai târziu).

Parametrii appointments și appointment_date sunt numiți identificatori deoarece specifică nume pentru anumite obiecte de bază de date, în acest caz nume pentru un tabel și, respectiv, o coloană. Există două tipuri de identificatori în SQL: regulați și delimitați. Identificatorii evidențiați sunt încadrați între ghilimele duble și sunt sensibile la majuscule. Identificatorii obișnuiți nu se disting prin caractere limitate, iar scrierea lor nu face distincție între majuscule și minuscule. Acest articol folosește numai identificatori obișnuiți.

Caracterele folosite pentru a construi identificatorii trebuie să îndeplinească anumite reguli. Identificatorii obișnuiți pot folosi doar litere (nu neapărat latine, ci și alte alfabete), cifre și caracterul de subliniere. Identificatorul nu trebuie să conțină semne de punctuație, spații sau caractere speciale (#, @, % sau!); în plus, nu poate începe cu un număr sau cu un caracter de subliniere. Puteți utiliza cuvinte cheie SQL separate pentru identificatori, dar acest lucru nu este recomandat. Un identificator este destinat să desemneze un obiect, deci trebuie să aibă un nume unic (într-un anumit context): nu puteți crea un tabel cu un nume care se găsește deja în baza de date; Nu puteți avea coloane cu aceleași nume în același tabel. Apropo, rețineți că întâlnirile și întâlnirile sunt aceleași nume pentru sql. Numai schimbarea majusculei literelor nu poate crea un nou identificator.

Deși un tabel poate avea doar o coloană, în practică sunt de obicei necesare tabele cu mai multe coloane. Comanda pentru a crea un astfel de tabel în general arată astfel:

creați tableTableName(ColumnDataType[ ( , ColumnDataType )]) ;

Parantezele pătrate sunt folosite pentru a desemna elemente opționale, parantezele conțin elemente care pot reprezenta o listă de constructe cu o singură cale (atunci când introduceți o comandă SQL reală, nu sunt plasate nici una, nici celelalte paranteze). Această sintaxă vă permite să specificați orice număr de coloane. Rețineți că al doilea element este precedat de o virgulă. Dacă există mai mulți parametri în listă, aceștia sunt separați unul de celălalt prin virgule.

creați tabelul appointments2 (dată_întâlnire, oră, oră, descriere varchar (256)) ;

Această comandă creează tabelul appointments2 (noul tabel trebuie să aibă un alt nume, deoarece tabelul de întâlniri este deja prezent în baza de date). Ca și primul tabel, are o coloană appointment_date pentru a înregistra datele programărilor; În plus, a apărut o coloană appointment_time pentru a înregistra ora acestor întâlniri. Parametrul de descriere este un șir de text care poate conține până la 256 de caractere. Acest parametru este specificat ca varchar (prescurtare pentru caracterul care variază) deoarece nu se știe dinainte cât spațiu va fi necesar pentru intrare, dar este clar că descrierea nu va lua mai mult de 256 de caractere. Când descrieți un parametru de tip șir de caractere (și alte tipuri), este indicată lungimea parametrului. Valoarea acestuia este specificată în paranteze în dreapta numelui tipului.

Poate ați observat că în cele două exemple discutate, intrarea comenzii este formatată diferit. Dacă în primul caz comanda este plasată complet pe o linie, atunci în al doilea după prima paranteză deschisă introducerea este continuată pe o linie nouă, iar definiția fiecărei coloane ulterioare începe pe o linie nouă. Nu există cerințe speciale pentru formatarea înregistrărilor în sql. Spărgerea unui record în rânduri îl face mai ușor de citit. Când scrieți comenzi, limbajul sql vă permite nu numai să divizați comanda în linii, ci și să inserați indentări la începutul liniilor și spații între elementele de înregistrare.

Acum că cunoașteți regulile de bază, să ne uităm la un exemplu mai complex de creare a unui tabel cu mai multe coloane. La începutul articolului a fost afișat tabelul angajaților. Conține următoarele coloane: nume, prenume, data angajării, departament, categorie și salariu pe an. Următoarea comandă sql este utilizată pentru a defini acest tabel:

creați angajați de tabel (caracterul nume_de_prenume (13) nu nul, caracterul prenumelui (10) nu nul, data angajării_date, caracterul filială_oficiu (15), grad_nivel mic, salariu zecimal (9, 2));

Echipa întâlnește mai multe elemente noi. În primul rând, există expresia not null la sfârșitul definiției coloanelor last_name și first_name. Cu ajutorul unor astfel de structuri se stabilesc cerințe care trebuie respectate. În acest caz, se indică faptul că la introducere trebuie completate câmpurile last_name și first_name; Nu puteți lăsa aceste coloane goale (acest lucru este destul de logic: cum puteți identifica un angajat fără a-i cunoaște numele?).

În plus, exemplul conține trei tipuri de date noi: caracter, smallint și zecimal. Până acum nu am vorbit prea mult despre tipuri. Deși sql nu are domenii relaționale, are un set de tipuri de date de bază. Aceste informații sunt folosite la alocarea memoriei și la compararea valorilor; într-o anumită măsură restrânge lista de valori posibile de intrare, dar controlul tipului în sql este mai puțin strict decât în ​​alte limbi.

Toate tipurile de date disponibile în sql pot fi împărțite în șase grupuri: șiruri de caractere, valori numerice exacte, valori numerice aproximative, șiruri de biți, date și intervale. Am enumerat toate soiurile, dar acest articol va discuta doar câteva dintre ele în detaliu (șirurile de biți, de exemplu, nu prezintă un interes deosebit pentru utilizatorii obișnuiți).

Apropo, dacă ai crezut că data și ora sunt o greșeală de tipar, te-ai înșelat. Acest grup (datetime) include majoritatea tipurilor de date legate de timp utilizate în sql (parametrii precum intervalele de timp sunt separați într-un grup separat). În exemplul anterior, am întâlnit deja două tipuri de date din grupul dată-oră - data și ora.

Următorul tip de date cu care ești deja familiarizat este caracterul care variază (sau doar varchar); aparține grupului de șiruri de caractere. Dacă varchar este folosit pentru a stoca șiruri de lungime variabilă, atunci tipul char întâlnit în al treilea exemplu este destinat să stocheze șiruri cu un număr fix de caractere. De exemplu, coloana last_name va conține șiruri de 13 caractere, indiferent de numele de familie introduse, fie că este poe sau penworth-chickering (în cazul poe, restul de 10 caractere vor fi umplute cu spații).

Din punctul de vedere al utilizatorului, varchar și char au aceeași semnificație. De ce a fost necesar să se introducă două tipuri? Cert este că, în practică, de obicei, trebuie să cauți un compromis între performanță și economisirea spațiului pe disc. De regulă, utilizarea șirurilor cu o lungime fixă ​​oferă un anumit beneficiu în ceea ce privește viteza de acces, dar dacă lungimea șirului este prea mare, spațiul pe disc este irosit. Dacă în appointments2 rezervați 256 de caractere pentru fiecare linie de comentariu, atunci acest lucru se poate dovedi a fi irațional; cel mai adesea liniile vor fi semnificativ mai scurte. Pe de altă parte, numele de familie variază, de asemenea, în lungime, dar în general necesită aproximativ 13 caractere; în acest caz, pierderile vor fi minime. O regulă bună este: dacă știți că lungimea șirului variază puțin sau este relativ mică, atunci folosiți char; în alte cazuri - varchar.

Următoarele două noi tipuri de date, smallint și decimal, aparțin grupului de valori numerice exacte. smallint este prescurtare pentru mic întreg. SQL oferă, de asemenea, un tip de date întreg. Prezența a două tipuri similare în acest caz se explică prin considerente de economisire a spațiului. În exemplul nostru, valorile parametrului grade_level pot fi reprezentate folosind un număr din două cifre, astfel încât este utilizat tipul smallint; cu toate acestea, în practică nu se știe întotdeauna ce valori maxime pot avea parametrii. Dacă nu există astfel de informații, atunci utilizați un întreg. Cantitatea reală de spațiu alocată pentru stocarea parametrilor mici și întregi și intervalul corespunzător de valori pentru acești parametri este specific fiecărei platforme.

Tipul de date zecimale, folosit în mod obișnuit pentru contabilitatea financiară, vă permite să specificați un model cu numărul necesar de zecimale. Deoarece acest tip este folosit pentru notații numerice precise, garantează precizie atunci când se efectuează operații matematice pe date zecimale. Dacă utilizați tipuri de date din grupul de notații numerice aproximative pentru valori zecimale, de exemplu float (număr cu virgulă mobilă), acest lucru va duce la erori de rotunjire, deci această opțiune nu este potrivită pentru calcule financiare. Pentru a defini parametrii de tip zecimal, se folosește următoarea notație:

unde p este numărul de zecimale, d este numărul de zecimale. În loc de p, scrieți numărul total de cifre semnificative în valorile utilizate, iar în loc de d, scrieți numărul de zecimale.

Bara laterală „Crearea unui tabel” arată un rezumat complet al comenzii de creare a unui tabel. Conține elemente noi și arată formatul pentru toate tipurile de date luate în considerare (În principiu, există și alte tipuri de date, dar nu le luăm în considerare încă).

La început, poate părea că sintaxa comenzilor sql este prea complicată. Dar îl puteți înțelege cu ușurință dacă studiați cu atenție exemplele de mai sus. Un element suplimentar a apărut pe diagramă - o linie verticală; servește la distingerea între modele alternative. Cu alte cuvinte, atunci când definiți fiecare coloană, trebuie să selectați tipul de date adecvat (după cum vă amintiți, parametrii opționali sunt încadrați între paranteze drepte, iar constructele care pot fi repetate de mai multe ori sunt incluse în acolade; aceste caractere speciale nu sunt scrise în comenzi SQL reale). Prima parte a diagramei arată numele complete pentru tipurile de date, a doua conține numele lor prescurtate; în practică, oricare dintre ele poate fi folosit.

Prima parte a articolului este finalizată. Al doilea va fi dedicat studierii comenzilor DML de inserare, selectare, actualizare și ștergere. Condițiile de eșantionare a datelor, operatori de comparare și operatori logici, utilizarea valorilor nule și logica ternară vor fi, de asemenea, acoperite.

Crearea unui tabel. Sintaxa comenzii create table este următoarea: parametrii opționali sunt indicați între paranteze drepte, iar structurile repetate sunt indicate în paranteze.

creați tabel tabel (caracter coloană (lungime) [ constrângere ] | caracter care variază (lungime) [ constrângere ] | dată [ constrângere ] | oră [ constrângere ] | întreg [ constrângere ] | smallint [ constrângere ] | zecimală (precizie, zecimale) [ constrângere ] | float (precizie) [ constrângere ] [( , coloana char (lungime) [ constrângere ] | varchar (lungime) [ constrângere ] | data [ constrângere ] | oră [ constrângere ] | int [ constrângere ] | smallint [ constrângere ] | dec (precizie, zecimale) [constrângere] | float (precizie) [constrângere] )]) ​​​​;

Secretul numelui SQL

La începutul anilor 1970. ibm a început să implementeze modelul de baze de date relaționale propus de Dr. Codd. Donald Chamberlin și un grup de alții de la Unitatea de Cercetare Avansată au creat un limbaj prototip numit limba engleză structurată de interogare, sau pur și simplu o continuare. Ulterior a fost extins și rafinat. Noua versiune propusă de ibm s-a numit sequel/2. A fost folosit ca interfață de programare (api) pentru proiectarea primului sistem de baze de date relaționale de la ibm, system/r. Din motive legate de nuanțe legale, ibm a decis să schimbe numele: în loc de sequel/2, utilizați sql (limbaj de interogare structurat). Această abreviere este adesea pronunțată „see-ku-el”.

Există diferențe semnificative între prototipurile de sequel timpuriu și standardul sql acum recunoscut în diferite organizații. Jim Melton, cel care a pregătit standardul sql-92, a afirmat chiar că mulți oameni greșesc când cred că cuvântul „structurat” reflectă corect specificul acestui limbaj (jim melton și alan r. simon „înțelegerea noului sql: un ghid complet .” san francisco : morgan kaufmann, 1993. isbn: 1-55860-245-3). Prin urmare, de fapt, sql este doar un nume, o succesiune de litere s-q-l și nimic mai mult.

Rău Bun

Cele mai bune articole pe această temă