Curs de bază limbaj SQL. Limbajul SQL

Serghei Vorobyov
Inginer principal de testare
SQL. Curs de bază
www.aplana.ru

Conţinut
● Partea 1: Introducere în SQL
● Partea 2. Limbajul de definire a datelor
● Partea 3. Limbajul de manipulare a datelor
● Partea 4. DRL. Interogări simple.
● Partea 5. Selectarea datelor din mai multe tabele.
● Partea 6. Funcții agregate. Gruparea datelor.
● Partea 7. Subinterogări.
● Partea 8. Funcții pentru lucrul cu șiruri, date și numere.
23

SQL. Curs de bază
Partea 1: Introducere în SQL
www.aplana.ru

Introducere în SQL
SQL (limbaj de interogare structurat)
interogări") este un limbaj de calculator universal folosit pentru
crearea, modificarea și gestionarea datelor în baze de date relaționale
date.
43

Introducere în SQL
Baza de date – o listă sau un set de liste legate cu
informație
Sistem de management al bazelor de date (DBMS) – special
software care gestionează aceste liste
53

Baze de date relaționale și non-relaționale
Baza de date relațională – o bază de date bazată pe un model relațional
date:
Datele din baza de date sunt un set de tabele;
Datele îndeplinesc anumite condiții de integritate;
Acceptă operatorii de manipulare a mesei
(de exemplu, selectarea sau copierea unui tabel).
Baze de date non-relaționale – ierarhice, de rețea,
orientat pe obiecte, NoSQL.
63

Prin ce diferă bazele de date de foile de calcul?
1. Stocarea unui număr mare de rânduri
ÎN foi de calcul numărul de linii este limitat.
Baza de date stochează milioane de rânduri.
2. Serviciu simultan pentru mulți utilizatori
3. Securitate.
Utilizatorilor li se acordă privilegii numai pentru
anumite tabele și acțiuni.
4. Proprietăţi relaţionale.
Datele sunt stocate în tabele diferite, între tabele
există conexiuni.
5. Constrângeri pentru asigurarea calității datelor.
73

Masa
Rând (rând) – un rând orizontal de celule alocate pentru fiecare
obiect de masă.
Înregistrare – date într-o linie.
Coloană – conține informații de un singur tip.
Câmp – intersecția unei coloane și a unui rând.
83

Elementele de bază ale interfeței SQL
SGBD
93
Nume
Decodare
InterBase/FireBird
PSQL
SQL procedural
IBM DB2
SQL PL
Limbajul procedural SQL
Doamna SQL Server/Sybase ASE
T-SQL
Transact-SQL
MySQL
SQL/PSM
SQL/Persistent Stocat
Modul
Oracol
PL/SQL
Limbajul procedural/SQL
(pe baza limbajului Ada)
PostgreSQL
PL/pgSQL
Procedural
Limbaj/PostgreSQL
(foarte asemănător cu Oracle
PL/SQL)

10.

Diferențele în sintaxa funcțiilor DBMS
MSSQL
DB2
NUMERIC
NUMĂR
NUMERIC
DATEADD
MONTH_ADD
(Data + 10 ZILE)
EOLUNA
ULTIMA ZI
ULTIMA ZI
DATEDIFF
MONTH_BETWEEN
TIMESTAMPDIFF
SUPERIOR
SUPERIOR
UCASE/SUPER
CONVERTIT
TO_CHAR
TO_CHAR
INITCAP
INITCAP
-
103
Oracol

11.

Sintaxa SQL
Funcțiile și numele obiectelor nu fac distincție între majuscule și minuscule:
SELECT = SELECT.
Cu toate acestea, atunci când căutați prin câmpuri de text, se face distincția între majuscule și minuscule
SQL nu este sensibil la întreruperile de linie
Lipsesc caracterele obligatorii de sfârșit de linie
Sprijină comentarii --o singură linie și
/*multilinie */
Se obișnuiește să se încheie fiecare tranzacție cu punct și virgulă, dar
Când executați comenzi individuale, utilizarea lor nu este
Neapărat
113

12.

Tipuri de date
CHAR(n) – șiruri de lungime constantă (până la 256 de octeți în MS SQL Server), adică
a introdus mai puține date în linie - dimensiunea nu se va modifica
VARCHAR(n) – șiruri de lungime variabilă, adică necesită atât de multă memorie
câte date
INTEGER – număr fără virgulă zecimală
NUMERIC (m,n) – folosit pentru a stoca zero și pozitiv sau
numere negative fixe și flotante. MPRECISION (numărul total de cifre), n – SCALE (numărul de cifre din dreapta
punct zecimal). m/n – parametri opționali
DATA - data în formatul aaaa-mm-zz (ISO), zz/ll/aaaa (ANSI), zz-LU-aa.
BOOLEAN – tip de date logic: adevărat/fals sau 1/0.
De asemenea, valoarea câmpului poate fi NULL - înseamnă că nu există valori -
celulă goală.
123

13.

tip DATE
În mod implicit, puteți reprezenta o dată în baza de date în formatul DD-MONYYYY (de exemplu, '01-FEB-1900'):
INSERT INTO table1 (id, data_work) valorile (1, '01-FEB-1900').
De asemenea, puteți utiliza cuvântul cheie DATE. Mai mult, deja pentru
format de dată AAAA-LL-ZZ (de exemplu, „1900-02-01”):
INSERT INTO table1 (id, data_work) valorile (1, DATE '1900-02-01').
De asemenea, puteți utiliza alternativ tipul de dată+ora TIMESTAMP
pentru a seta nu numai data, ci și ora:
INSERT INTO table1 (id, date_work) valorile (1, '01-FEB-1900-10.50.01'),
acestea.
1 februarie 1900 10 ore, 50 minute și 1 secundă (format zz-LU-aa
-hh.mm.ss.nnnnn)
133

14.

Conversia tipurilor de date în MSSQL
CONVERT(tip de date, șir, stil) – conversia unuia
format de date la altul
În personaje:
CONVERT(VARCHAR(20), GETDATE())
La întălnire
CONVERTĂ(DATETIME, „14-11-2015”, 105)
În număr
CONVERTĂ(NUMERIC, '1234657890")
143

15.

Conversia tipurilor de date în Oracle
TO_CHAR(valoare de intrare, format) – conversie date,
numere, ori într-un șir.
Format: „LUNA ZZ”, „LUNA ZZ, AAAA”, „ZZ/LL/AAAA”, „ZI LUNI, AAA AD”
AN
$9,999.00
etc.
TO_CHAR(SYSDATE, „MONTH DD”)
TO_DATE(valoare de intrare, format) – conversia unui șir în
Data. Format: ZZ-LUNI-AAAA
Lună zz, AAAA , HH:MI p.m.
etc.
TO_DATE(„02-JAN-2012”, „ZZ-LUN-AAAA”)
TO_NUMBER(valoare de intrare, format) – conversia unui șir într-un număr.
TO_NUMBER(„123”)
153

16.

Alte obiecte de bază de date
Vizualizările sunt obiecte de bază de date care nu conțin
propriile tabele, dar conținutul lor este preluat din alte tabele
sau vizualizări prin executarea unei interogări.
Schema este un grup numit de obiecte de bază de date înrudite.
Index – un obiect creat pentru a crește
Performanța căutării. Tabel ascuns care conține unul
sau mai multe coloane importante din tabel și indicatori de rând
Mese.
Constrângere – condiții care trebuie îndeplinite
intrările introduse de utilizator.
163

17.

Alte obiecte de bază de date
Procedură stocată – un obiect de bază de date,
care este un set de instrucțiuni SQL. Stocat în baza de date.
Apelarea unei proceduri determină execuția conținutului conținut în ea.
instrucțiuni.
Funcție - similară cu o procedură stocată, dar returnează
valoare care poate fi folosită într-un mod mai mare
operator
Trigger - o procedură care se efectuează automat,
când are loc un eveniment specificat.
Cursor – un link către zona de memorie contextuală. Folosind
cursor, puteți procesa separat fiecare linie asociată cu
instrucțiunea nim SQL.
173

18.

Secțiuni ale limbajului SQL
1. DDL - Data Defenition Language (limbaj de definire a obiectelor bazei de date).
CREAȚI, ALTERAȚI, RIDĂȚI, etc.
2. DCL - Data Control Language (limbaj de control al datelor).
Acordați, revocați
3. DML - Limbajul de manipulare a datelor
date). INSERT, UPDATE, DELETE
4. Preluare date - preluare date SELECT
5. Controlul tranzacțiilor (limbaj pentru menținerea procesului de tranzacție).
COMMIT, ROLLBACK, SAVEPOINT.
183

19.

SQL. Curs de bază
Partea 2. Limbajul de definire a datelor
www.aplana.ru

20.

Limbajul de definire a datelor
1.
CREATE TABLE (crearea tabelelor)
Sintaxa generala:
CREATE TABLE nume_tabel (
field1 Field type1,
field2 Field type2,
..., câmpN Tip câmp N);
CREATE TABLE person_info (
person_id INTEGER NOT NULL,
prenume VARCHAR(15) NOT NULL,
last_name VARCHAR(20) NOT NULL,
gen CHAR(1),
data de nastere,
salariu NUMERIC(7,2));
203

21.

Limbajul de definire a datelor
2. ALTER TABLE (mesele de schimbare)
ALTER TABLE nume_tabel (ADD<имя столбца> <определение столбца>}|
(MODIFICA<имя столбца> <Определение столбца>)| (COLOANĂ DE PIDURĂ<имя
coloana>)
3. DROP TABLE (eliminarea tabelelor)
DROP TABLE nume_tabel (CASCADE CONSTRAINTS);
4. TRUNCATE TABLE (mese de curățare)
TRUNCATE TABLE nume_tabel
213

22.

SQL. Curs de bază
Partea 3. Limbajul de manipulare a datelor
www.aplana.ru

23.

Limbajul de manipulare a datelor
1. INSERT - Inserați o singură înregistrare.
INSERT INTO table_name VALUES (valoarea câmpului1, valoarea câmpului2,...,
valoare fieldN);
INSERT INTO table_name (câmp1, câmp3,...) VALUES (câmp1 valoare, câmp2 valoare,...,
valoare fieldN);
INSERT INTO person_info VALUES (1, „John”, „Smith”, „M”, „15-OCT-1973”,
45568.56);
INSERT INTO person_info (person_id, prenume, prenume) VALUES (5, Sarah", 'Connor");
Cu succes.
INSERT INTO person_info VALUES (NULL, „Jane”, „Smith”, „F”, „8-AUG-1987”,
NUL);
Eroare deoarece person_id nu poate fi NULL.
233

24.

Limbajul de manipulare a datelor
Inserarea unui grup de înregistrări
INSERT INTO table_name
SELECTAȚI...;
CREAȚI TABEL t2 (
first_1 VARCHAR(15),
last_1 VARCHAR(20),
ziua de naștere_1 DATE);
INSERT ÎN t2
SELECTează prenume, prenume, ziua de naștere
FROM persoană_info;
243

25.

Limbajul de manipulare a datelor
INSERT INTO person_info VALUES (2, „Sara”, „Doe”, „F”, „9-OCT-1986”,
29789.56);

29789.56);
Cu succes.
INSERT INTO person_info VALUES (3, „Sara”, „Doe”, „F”, „9-OCT-1986”,
29789.56);
Acum să ștergem a doua intrare cu person_id=2
DELETE FROM person_info WHERE person_id = 2
253

26.

Limbajul de manipulare a datelor
Integritatea datelor
Integritatea entității - definește un rând de tabel ca o instanță unică
vreo entitate.
Cheie primară - o coloană sau un grup de coloane este unică
identificând fiecare intrare.
O cheie externă este o reflectare a relațiilor dintre tabele. Subordonat
tabelul trebuie să aibă o coloană identică (sau un grup de coloane) de stocat
valori care identifică în mod unic înregistrările principale.
Integritate referenţială - nu ar trebui să existe înregistrări în tabelele subordonate
care face referire la înregistrări de tabel principal inexistente.
263

27.

Limbajul de manipulare a datelor
273

28.

Limbajul de manipulare a datelor
Cheia principala
ALTER TABLE nume_tabel
ADĂUGAȚI CHEIE PRIMARĂ(nume_coloană);
ALTER TABLE person_info
ADĂUGAȚI CHEIE PRIMARĂ(persoană_id);
Valorile cheii primare implică o identificare unică
înregistrările, respectiv, valorile nu pot fi repetate.
Și din nou vom încerca să adăugăm o intrare cu person_id=2:
INSERT INTO person_info VALUES (2, „Rita”, „Blow”, „F”, „9-OCT-1975”,
29789.56);
283

29.

Cheie externă
ALTER TABLE subtable_name
ADD CONSTRAINT nume_constrângere FOREIGN KEY (nume_coloană
subordonat
tabele) REFERINȚE nume_tabel_principal;
CREATE TABLE adresa_persoană (
person_id INTEGER,
adresa VARCHAR(200));
ALTER TABLE adresa_persoană
ADĂUGAȚI CONSTRAINT person_fk_address
CHEIE STRĂINĂ (person_id)
REFERINȚE info_personă;
293

30.

Limbajul de manipulare a datelor
INSERT INTO person_address VALUES (1, „Moscova, strada Arbat, 67-14”);
INSERT INTO person_address VALUES (2, „Moscova, strada Arbat, 67-14”);
Cu succes.
INSERT INTO person_address VALUES (4, „Zelenograd,Green street, 23”);
Eroare. Încercarea de a introduce o înregistrare subordonată când nu există
fișa de bază corespunzătoare.
INSERT INTO person_address VALUES (3, „Zelenograd,Green street, 23”);
303

31.

Conectarea tabelelor în timpul creării
După cum am discutat mai devreme, este utilizat pe scară largă pentru a crea
chei primare (CHEIE PRIMARĂ) și străine (CHEIE străină).
prin comenzi pentru modificarea structurii tabelelor existente. De asemenea
Puteți adăuga aceste construcții atunci când creați un tabel:
CREATE TABLE tab1(
id integer CHEIE PRIMARĂ,
…..
313

32.

Limbajul de manipulare a datelor
2. UPDATE - Modificarea valorilor coloanelor din tabel
A) Modificarea tuturor valorilor coloanelor din tabel
ACTUALIZAȚI
A STABILIT =
UPDATE adresa_persoană
SET adresa = „Volgograd, prima stradă, 15-20”
B) Modificarea valorilor specifice tabelului
ACTUALIZAȚI
A STABILIT =
UNDE =
UPDATE person_address SET adresa = „Volgograd, prima stradă, 15-20”
WHERE person_id = 3;
ACTUALIZAȚI
A STABILIT =
UNDE = [operator]
UPDATE person_info SET salariu = salariu * 2
WHERE person_id = 3;
323

33.

Limbajul de manipulare a datelor
3. DELETE - Ștergerea rândurilor dintr-un tabel
A) Eliminarea tuturor valorilor coloanelor din tabel
ȘTERGERE DIN
B) Ștergerea anumitor valori din tabel
ȘTERGERE DIN
UNDE =
333

34.

Sarcina practică nr. 1
1. Creați o bază de date prezentată în Fig. 1 (creați tabele și o cheie străină)
2. Introduceți următoarele date în tabele.
Departament: (1, „Marketing”), (2, „RD”)
Emp: (1, 1, „James”, 1000), (2, 2, „Smith”, 2000)
3. Creați un tabel dept_arch cu aceeași structură ca și tabelul dept.
4. Inserați toate datele din tabelul dept în tabelul dept_arch.
343

35.

Sarcina practică nr. 1 (continuare)
5. Creșteți salariul angajatului Smith cu 15%.
6. Asigurați-vă că următoarea înregistrare nu poate fi introdusă în tabelul departamentului: (2, „Vânzări”). De ce?
7. Asigurați-vă că următoarea înregistrare nu poate fi introdusă în tabelul emp: (3, 4, „Negru”, 3000,
"Activ"). De ce?
8. Schimbați numele departamentului RD în RandD (tabelul departamentului).
9. Eliminați intrarea cu emp_id = 1 din tabelul emp.
12. Eliminați toate intrările din tabelul emp.
13. Aruncă tabelul emp.
353

36.

SQL. Curs de bază
Partea 4. DRL. Interogări simple
www.aplana.ru

37.

Baza noastră de date de formare
373

38.

Limbajul de recuperare a datelor
SELECT – selectarea datelor. Această secțiune este necesară în cerere și
permite:
SELECT field1,...fieldN FROM table1, .., tableN WHERE condiție
383
Definiți o listă de coloane de ieșire
Activați coloanele calculate
Activați constantele
Redenumiți coloanele de ieșire
Specificați principiul procesării rândurilor duplicate
Activați funcțiile agregate

39.

Limbajul de recuperare a datelor
1.
Definirea unei liste de coloane de ieșire
Lista coloanelor de ieșire poate fi specificată în mai multe moduri:
. Specificați simbolul * pentru a indica includerea tuturor coloanelor în rezultatele interogării
cereri într-o succesiune naturală.
. Listați numai pe cei de care aveți nevoie în ordinea dorită<имена столбцов>.
SELECT cod_persoana, prenume, prenume FROM persoana;
--Putem schimba ordinea coloanelor
SELECTează prenume, prenume, cod_persoană FROM persoană;
393

40.

Concatenare
Conectarea a două sau mai multe părți de text.
SELECT product_name + " a fost vândut de " + agent de vânzări FROM cumpărare;
403

41.

Limbajul de recuperare a datelor
2. Activarea coloanelor calculate
Coloanele de interogare calculate pot fi:
. Rezultatele expresiilor aritmetice simple (+, -, /, *_ sau
concatenare de șiruri (+).
. Rezultatele funcțiilor de agregare (AVG|SUM|MAX|MIN|
NUMARA)
413

42.

Limbajul de recuperare a datelor
3. Activarea constantelor
Coloanele pot fi constante ale numerelor și
tipuri de caractere.
SELECTAȚI „Există un astfel de cod”, cod_persoană, „pentru”, prenume, prenume
DE LA persoana
423

43.

Limbajul de recuperare a datelor
4.
Redenumirea coloanelor de ieșire
Calculat, precum și orice alte coloane, dacă se dorește,
puteți atribui un nume unic folosind un cuvânt cheie
LA FEL DE:<выражение>LA FEL DE<новое имя>
SELECT product_name + " a fost vândut de " + agent de vânzări AS SOLDBY
DIN cumpărare;
Puteți seta aliasuri fără a utiliza un cuvânt cheie, dar cu restricții:
SELECT product_name + " a fost vândut de " + agent de vânzări SOLDBY
DIN cumpărare;
SELECT product_name + " a fost vândut de " + agent de vânzări "Sold By"
DIN cumpărare;
433

44.

Limbajul de recuperare a datelor
5. Indicarea principiului prelucrării duplicatelor
DISTINCT – interzice apariția liniilor duplicate în ieșire
mulți. Poate fi specificat o dată pentru fiecare instrucțiune SELECT.
În practică, setul de ieșire este format inițial,
aranjate, iar apoi duplicatele sunt eliminate din acesta
sensuri. Acest lucru durează de obicei mult timp și nu trebuie făcut
abuz.
SELECTARE DISTINCT * FROM persoană
ALL (implicit) – asigură includerea în
rezultatele interogării și valorile duplicate
443

45.

Limbajul de recuperare a datelor
6.
Activarea funcțiilor agregate
Funcții de agregare (mult, statistice sau
de bază) sunt concepute pentru a calcula unele valori pentru
un set dat de șiruri. Sunt utilizate următoarele agregate
Caracteristici:
AVG|SUM(<выражение) – подсчитывает среднее значение | сумму от
<выражение>.
MIN|MAX(<выражение>) – găsește maximul | valoarea minima.
COUNT(*|<имя столбца>) – numără numărul de linii
Dar mai multe despre asta mai târziu
453

46.

Limbajul de recuperare a datelor
UNDE – selecția datelor care îndeplinesc anumite
conditii.
SELECTARE câmp1,... câmpN FROM tabel1, .., tabelM WHERE
condiție1,...condițieY
463

47.

Limbajul de recuperare a datelor
Exemple:
SELECTAȚI * FROM produs WHERE laststockdate IS NULL;
SELECTAȚI * FROM produs WHERE laststockdate NU ESTE NUL;
SELECTAȚI nume_produs, preț_produs, cantitate_disponibilă
FROM product WHERE cantitate_disponibila > 150;
SELECTAȚI nume_produs, preț_produs FROM produs
WHERE nume_produs<>„Zinculator pătrat”;
473

48.

Limbajul de recuperare a datelor
Există și condiții mai complexe:
A lovit în multe
<конструктор значений строки>IN (<подзапрос>|<набор конструкторов
valori de șir>)
Este definit un set de valori la care obiectul de comparație a fost scris anterior
cuvântul cheie IN, poate aparține sau nu. Dacă subinterogarea nu este
returnează șiruri de caractere, apoi predicatul evaluează la FALSE.
Exemple de lucru cu seturi:
SELECTAȚI * FROM buy WHERE vânzător IN ("CA", "BB");
SELECTAȚI * FROM achiziție WHERE vânzătorul NU ÎN ("CA", "BB");
SELECTAȚI * FROM achiziționarea WHERE (agent de vânzări + nume_produs) în ((„CA” + „Small
Widget"), ("GA" + "Chrome Phoobar"))
483

49.

Limbajul de recuperare a datelor
Accesorii gama
<конструктор значений строки>ÎNTRE<конструктор
valorile rândului 1>ȘI<конструктор значений строки 2>
Predicatul BETWEEN este similar cu predicatul IN, dar în loc de elemente
al mulțimii definește limitele inclusive în care nu [ar trebui].
atinge valoarea care se verifică.
UNDE
product_price NU INTRE 1 SI 80;
493

50.

Limbajul de recuperare a datelor
Operatori booleeni
<предикат>(ȘI|SAU|NU)<предикат>
Note: Operatorii booleeni leagă unul sau mai multe predicate la formular
valoare logică unică TRUE|FALSE. Folosind predicate cu
Operatori booleeni, puteți crește semnificativ selectivul
capacitatea de a selecta rânduri în rezultatele interogării.
Atunci când utilizați operatori booleeni, în special operatorul NOT, ar trebui
foloseste paranteze pentru redactare corectă condiții (ȘI
executat înainte de SAU).

„%Widget” SAU product_price< 20;
SELECTAȚI nume_produs, preț_produs FROM produs WHERE nume_produs LIKE
„%Widget” ȘI product_price< 20;
503

51.

Limbajul de recuperare a datelor

SELECTAȚI lista de câmpuri DIN lista de tabele WHERE valoarea de verificat LIKE
(model) (ESCAPE (nume de trecere));
Orice caracter - _
SELECT cod_persoana, prenume, prenume FROM persoana WHERE cod_persoana LIKE "_A";
Orice subșir - %
SELECT numere_produs FROM produs WHERE nume_produs LIKE "%Chrome%";
Dacă trebuie să găsiți text cu simbolul % (de exemplu, numele unui produs
ab%cdef):
WHERE product_name LIKE „ab$%c%” ESCAPE „$”;
Primul % este citit ca un caracter în nume, al doilea ca orice șir.
513

52.

Limbajul de recuperare a datelor
LIKE operator de căutare aproximativă
… unde al doilea nume ca „%ov%”
… unde patronimic precum „I%”
… unde patronimic precum „%vich”
… unde Numele de familie ca „____ov”
523

53.

Limbajul de recuperare a datelor
LIKE operator de căutare aproximativă

selectați product_name din achiziție
unde product_name ca „%Widget”
selectați product_name din achiziție
unde product_name ca „%$%Widget”
evada "$"
533

54.

Limbajul de recuperare a datelor
Triere
SELECTAȚI lista de coloane FROM lista de tabele WHERE condiție
ORDER BY lista de coloane ASC (DESC);
Descendentă:
SELECTAȚI nume_produs, preț_produs FROM produs
ORDER BY product_price DESC;
Ascendent:
SELECTAȚI nume_produs, preț_produs FROM produs
ORDER BY nume_produs ASC;
543

55.

Sarcina practică nr. 2
1. Scrieți o interogare care să arate întregul tabel de achiziții.
2. Scrieți o interogare care selectează coloanele product_name și cantitate din
Achiziționați mese.
3. Scrieți o interogare care selectează aceste coloane în ordine inversă.
4. Scrieți o interogare care imprimă persoană pentru fiecare rând din tabel
următorul text:
a început munca *. Coloana rezultată
atribuiți aliasul „Lucrul început”.
5. Scrieți o interogare care să afișeze numele produselor product_name
(produs de masă), pentru care prețul nu este definit (NULL).
6. Scrieți o interogare care să afișeze numele produsului nume_produs
(tabel de cumpărare), din care s-au vândut de la 3 la 23 de bucăți.
* MSSQL nu acceptă unirea coloanelor cu tipuri de date varchar și date. Utilizați operatorul
convecție: CONVERT(VARCHAR, hiredate)
3

56.

Sarcina practică nr. 2 (continuare)
7. Scrieți o interogare care să afișeze numele angajaților al căror
angajat in 1, 15 si 28 februarie 2010.
8. Scrieți o interogare care să afișeze numele produselor
product_name (tabel de achiziții) vândut de angajați ale căror nume încep cu „B”.
9. Scrieți o interogare care să afișeze numele produselor
product_name (tabel de achiziții) vândut de angajați ale căror nume de familie nu încep cu
„B”.
10. Scrieți o interogare care să afișeze numele de familie și data angajării
angajații ale căror nume de familie încep cu „B” și care sunt acceptați
să lucreze înainte de 1 martie 2010.
11. Scrieți o interogare care să afișeze numele produselor
product_name și ultima dată de livrare laststockdate (tabel
produs), ale căror nume sunt Small Widget, Medium Widget și Large
Widget sau cele fără ultima dată de livrare.
Sortați după data ultimei livrări în ordine descrescătoare.
563

57.

SQL. Curs de bază
Partea 5. Preluarea datelor din mai multe tabele
www.aplana.ru

58.

Preluarea datelor din mai multe tabele
SELECTează nume_tabel_1.nume_coloană, nume_tabel_2.
nume_coloană
FROM table_name_1, table_name_2;

DIN cumpărare, persoană;
Produs cartezian - o combinație fără
Clauza WHERE, care rezultă în fiecare rând
un tabel este combinat cu fiecare rând al celuilalt
Mese.
583

59.

Preluarea datelor din mai multe tabele cu o condiție
SELECTează nume_tabel_1.nume_coloană, nume_tabel_2. nume_coloană
FROM table_name_1, table_name_2
UNDE main_table_name.primary_key =
subtable_name.foreign_key;
SELECTAȚI buy.product_name, person.first_name, person.last_name
DIN cumpărare, persoană
WHERE person.person_code = buy.salesperson;
593

60.

Tipuri de conexiune
Există și alte modalități de a conecta tabele prin chei:
<таблица А> [<тип соединения>] A TE ALATURA<таблица B>PE<предикат>
<тип соединения>reprezintă unul dintre argumentele: INTERIOR|(STÂNGA|DREAPTA|
DEPLIN)
INTERIOR – include rânduri care au coloane cu date care se potrivesc
tabele îmbinate. Folosit implicit.
LEFT – include toate rândurile tabelului A (tabelul din stânga) și toate potrivirile
valorile din tabelul B. Coloanele de rânduri care nu se potrivesc sunt umplute cu valori NULL.
DREAPTA – include toate rândurile tabelului B (tabelul din dreapta) și toate potrivirile
valorile tabelului A. opțiune inversă pentru îmbinare stânga.
FULL – include toate rândurile ambelor tabele. Coloane de rând care se potrivesc
sunt umplute cu valori reale, iar rândurile care nu se potrivesc sunt umplute cu valori NULL.
EXTERIOR (extern) – un cuvânt calificativ care înseamnă că liniile care nu se potrivesc de la
ale mesei conducătoare sunt incluse împreună cu cele potrivite.
603

61.

Opțiuni de alăturare la tabel
abordare
telefon
INNER JOIN
SELECT * FROM adresa INNER JOIN telefon ON adresa.ClientID=phone.ClientID
613

62.

Opțiuni de alăturare la tabel
abordare
telefon
SELECT * FROM adresa, telefon WHERE address.clientID=phone.ClientID
623

63.

Opțiuni de alăturare la tabel
abordare
telefon
LEFT JOIN
SELECTAȚI * DIN adresă LEFT JOIN phone ON address.ClientID=phone.ClientID
633

64.

Opțiuni de alăturare la tabel
abordare
telefon
ÎNSCRIEȚI DREPT
SELECTAȚI * FROM adresa DREAPTA JOIN telefon ON address.ClientID=phone.ClientID
643

65.

Opțiuni de alăturare la tabel
abordare
telefon
ALĂTURAREA COMPLETĂ
SELECTAȚI * FROM adresa FULL JOIN telefon ON adresa.ClientID=phone.ClientID
653

66.

Alăturați-vă operatorilor
UNION returnează toate rândurile din ambele instrucțiuni SELECT; repetitiv
valorile sunt eliminate.
UNION ALL returnează toate rândurile din ambele instrucțiuni SELECT; repetitiv
valorile sunt afișate.
INTERSECT returnează rândurile care sunt returnate atât primul cât și al doilea
cu instrucțiunea SELECT.
EXCEPT returnează rândurile care sunt returnate de prima instrucțiune SELECT,
excluzând cele returnate prin a doua declarație.
Numărul și ordinea coloanelor returnate de SELECT din ambele tabele trebuie
coincide.
663

67.

Alăturați-vă operatorilor
SELECTează numele_produsului
DE LA cumpărare
ORDER BY product_name
673
SELECTează numele_produsului
FROM buy_archive
ORDER BY product_name
SELECTează numele_produsului
DE LA cumpărare
UNIUNE
SELECTează numele_produsului
FROM buy_archive
ORDER BY product_name

68.

Alăturați-vă operatorilor
SELECTează numele_produsului
Achizitie de la M
U N I O N TOATE
SELECTează numele_produsului
DIN M buy_archive
SĂ PENTRU 1
683
SELECTează numele_produsului
Achizitie de la M
CU EXCEPTIA
SELECTează numele_produsului
DIN M buy_archive
SĂ PENTRU 1
SELECTează numele_produsului
Achizitie de la M
ÎN TERSECT
SELECTează numele_produsului
DIN M buy_archive
SĂ PENTRU 1

69.

Alias ​​în zona FROM
Când se utilizează baze de date mari cu scheme, este obișnuit
utilizarea pseudonimelor:
SELECT purc.product_name, prod.laststockdate, pers.first_name,
pers.nume
DIN cumpărare ca purc,
Persoana ca persoane,
Produs produs
WHERE cod_pers.pers = purc.salesperson AND
prod.product_name = purc.product_name;
693

70.

Sarcina practică nr. 3
1. Scrieți o interogare care să afișeze produsul cartezian al tabelelor de produse
și cumpărare.
2. Scrieți o interogare care să afișeze numele produsului vândut
nume_produs, cantitate (tabel de achiziții) și
quantity_on_hand (tabel de produse).
3.Scrieți o interogare care să afișeze numele produsului nume_produs
(tabel de achiziții), data ultimei livrări data ultimul stoc (tabel
produs) și numele vânzătorului (tabel de persoane).
4. Scrieți o interogare care să afișeze coloanele nume_produs, prenume,
numele de familie al îmbinării exterioare a tabelelor de achiziții și persoane. Utilizați pentru mese
porecle scurte.
703

71.

Sarcina practică nr. 3 (continuare)
5. Scrieți o interogare care să afișeze toate codurile de achiziție care nu se repetă
vânzători
agent de vânzări din tabelul buy_archive.
6. Scrieți o interogare care să afișeze codurile doar ale acelor agenți de vânzări de la
tabele de achiziții, care sunt, de asemenea, conținute în tabelul buy_archive.
7. Scrieți o interogare care să afișeze toate codurile (inclusiv duplicatele).
vânzător de vânzări din tabelele buy și purchase_archive.
713

72.

SQL. Curs de bază
Partea 6. Funcții agregate. Gruparea
date.
www.aplana.ru

73.

Operatori matematici
Operator matematic – simboluri care denotă operații (+, -, *, /)
Calcule folosind datele din tabele.
SELECT numere_produs, preț_produs * 1,07 FROM produs;
SELECTAȚI nume_produs, preț_produs * cantitate_disponibilă
DIN produs;
SELECTAȚI numele_produsului, prețul_produsului * 1,07 * cantitate_disponibilă_prețul_produsului * cantitate_disponibilă
DIN produs;
SELECTAȚI nume_produs, preț_produs * (cantitate_disponibilă + 10)
DIN produs;
733

74.

Operatori matematici
Funcții de agregare (funcții de set, statistice sau de bază)
sunt concepute pentru a calcula anumite valori pentru un anumit set
linii.
1. SUMA - însumează valorile și returnează totalul.
SELECTARE SUMA(cantitate)
DIN cumpărare;
2. AVG – returnează valoarea medie pentru valoarea specificată
coloană.
SELECTAȚI AVG(preț_produs)
DIN produs;
743

75.

Operatori matematici
3. MIN – returnează valoarea minimă din coloana specificată.
SELECTARE MIN(preț_produs)
DIN produs;
4. MAX - returnează valoarea maximă din coloana specificată.
SELECTARE MAX (preț_produs)
DIN produs;
753

76.

Operatori matematici
5. COUNT – numără înregistrările.
SELECTARE NUMĂR (*)
DIN cumpărare; --numărul de rânduri inclusiv valorile NULL
SELECTAȚI COUNT(nume_produs)
FROM buy;--valori în coloană, ignorând valorile NULL
763

77.

A SE GRUPA CU
Această secțiune este destinată să combine rezultatele interogării în grupuri și să calculeze
pentru fiecare dintre ele valori statistice. Uneori se folosește termenul
"masa grupata"
SELECT numele_produsului, SUMA(cantitate)
DE LA cumpărare
GROUP BY nume_produs;
Puteți include mai multe funcții de grup într-o instrucțiune SELECT.
SELECT numere_produs, SUM(cantitate) „Total vândut”, COUNT(cantitate) Tranzacții
DE LA cumpărare
GROUP BY nume_produs;
773

78.

AVÂND
HAVING – este o subsecțiune concepută pentru a limita numărul
rânduri din tabelul grupat și face parte din clauza GROUP BY.
Predicatul acestei secțiuni se bazează pe același reguli semantice, la fel de
în clauza WHERE, dar numai
acele coloane care sunt specificate în clauza GROUP BY. Restul poate
Utilizați numai în interiorul funcțiilor de agregare. Aceasta sectiune
limitează alcătuirea grupurilor (subgrupurilor) de linii în care se împarte
rezultatul interogării. Grupurile (subgrupurile) le includ numai pe cele din
set de șiruri posibile ale căror valori satisfac condițiile
AVÂND predicat de secțiune. În interiorul secțiunii HAVING poți folosi
interogări imbricate cu funcții de agregare, precum și înrudite
subinterogări.
783

79.

AVÂND
Adică, rezumând ceea ce a fost descris mai sus, putem restrânge
atribuirea subsecțiunii la:
Cu construcția HAVING poți
grupuri de filtrare.
HAVING funcționează în același mod pentru grupuri ca și WHERE pentru înregistrările individuale.
SELECT numere_produs, SUM(cantitate) „Vândut total”,
COUNT(cantitate) Tranzacții
DE LA cumpărare
GROUP BY nume_produs
AVÂND SUMA(cantitate)< 5;
793

80.

Sarcina practică nr. 4
1. Scrieți o interogare care să arate care va fi prețul produsului product_price
crestere cu 15%.
2. Scrieți o interogare care să arate câte produse există în tabelul de produse.
3.Scrieți o interogare care să arate pentru ce cantitate de produse (tabel de produse)
pretul este indicat.
4. Scrieți o interogare care să afișeze prețul minim și maxim al produselor produs_preț.
5. Scrieți o interogare care să arate cât s-a primit din vânzările fiecărui produs
nume.
6. Scrieți o interogare care să arate cât s-a primit din vânzările fiecărui produs
nume. Afișați numai acele înregistrări pentru care valoarea vânzărilor este mai mare de 125.
803

81.

SQL. Curs de bază
Partea 7. Subinterogări
www.aplana.ru

82.

Subinterogări
O subinterogare este o interogare SELECT obișnuită imbricată într-o instrucțiune
SELECTAȚI
ACTUALIZAȚI
sau
ȘTERGE.
Este folosit ca sursă de date pentru clauza FROM sau
UNDE a operatorului părinte.
823

83.

Subinterogări
Există câteva limitări în utilizarea subinterogărilor:
833
O subinterogare trebuie să selecteze doar o coloană (cu excepția unei subinterogări cu
predicatul EXISTĂ), iar tipul de date al rezultatului său trebuie să se potrivească cu tipul
valoarea datelor specificată în predicat.
În unele cazuri, puteți utiliza cuvântul cheie DISTINCT pentru a garanta
obținerea unei singure valori.
Nu puteți include o clauză ORDER BY sau UNION într-o subinterogare.
Subinterogarea poate fi situată fie în stânga, fie în dreapta condiției de căutare.
Subinterogările pot folosi funcții de agregare fără partiționare
A SE GRUPA CU

84.

Subinterogări cu un singur rând
O subinterogare cu un singur rând este o subinterogare care returnează doar o valoare.
Simbolurile de comparație sunt folosite cu rezultatul unei subinterogări (=,<>, <, <=,
>, >=)
SELECTAȚI * DIN produs
WHERE laststockdate = (SELECTARE laststockdate
FROM product WHERE product_name = "Small Widget");
Exemplu (folosind o funcție de agregare într-o subinterogare cu un singur rând):
SELECTAȚI * DIN produs WHERE preț_produs >
(SELECTARE AVG(preț_produs) FROM produs);
843

85.

Subinterogări cu mai multe rânduri
O subinterogare cu mai multe rânduri este o subinterogare care returnează doar >=1
sens.
Pentru astfel de subinterogări nu puteți compara
folosirea semnelor egale/inegale; trebuie utilizată funcția
ÎN.
SELECTAȚI * DIN produs
WHERE product_name IN
(SELECT DISTINCT nume_produs FROM achiziție);
UPDATE produs SET product_price = product_price * 0,9
WHERE product_name NOT IN (SELECT DISTINCT nume_produs
DIN achiziție);
853

86.

EXISTĂ
EXISTS folosește o subinterogare ca argument și
evaluează la adevărat dacă subinterogarea conține
output, altfel ca fals.
Subinterogarea este executată o dată și poate conține
mai multe coloane deoarece valorile lor nu sunt verificate,
dar rezultatul prezenței rândurilor este pur și simplu înregistrat.
Note despre predicatul EXISTĂ:
EXISTĂ este un predicat care returnează TRUE sau FALSE și
poate fi folosit singur sau împreună cu alți booleeni
expresii.
863

87.

EXISTĂ
SELECTAȚI * DIN produs
UNDE EXISTA
(SELECTAȚI * DIN achiziție
WHERE product.product_name = buy.product_name);
873

88.


ALL - se va face comparatie cu toate inregistrarile care
returnează o subinterogare (sau doar cu toate valorile din set). Adevărat
va reveni numai dacă toate înregistrările le returnează
subinterogarea va îndeplini condiția pe care o specificați.
SELECTAȚI * DIN produs
WHERE product_price >= ALL (SELECTARE product.product_price
DIN achiziție, produs


Interogarea va returna toate produsele din tabelul de produse al căror preț este mai mare decât sau
egal cu prețul fiecărui articol vândut de un angajat cu codul „GA”.
883

89.

Condiții de grup (operatori de comparație).
ORICE - comparația va returna adevărată dacă condiția este îndeplinită de cel puțin unul
o înregistrare dintr-o subinterogare (sau set).
SELECTAȚI * FROM produs WHERE preț_produs > Orice (SELECT
produs.preț_produs
DIN achiziție, produs
WHERE buy.product_name = product.product_name
AND buy.salesperson = "GA");
Interogarea va returna toate înregistrările din tabelul de produse pentru care este prețul produsului
mai mult decât prețul oricărui produs vândut de un angajat cu codul „GA”.
UNELE - face la fel ca ORICE. Complet interschimbabil.
893

90.

Sarcina practică nr. 5
1. Scrieți o interogare care returnează toți angajații care au fost angajați în același timp
în aceeași zi cu angajatul John Smith.
2. Scrieți o interogare care returnează toate produsele al căror preț este sub prețul mediu.
3. Scrieți o interogare care returnează toate produsele care au fost vândute de mai multe ori
ori.
4. Imprimați prețul mărfurilor care au fost vândute de mai multe ori, majorat cu 15%.
5. Folosind condiția EXISTS, scrieți o interogare care returnează toți angajații
care au vândut ceva măcar o dată.
6. Scrieți o interogare care returnează toate produsele din tabelul de produse al căror preț
mai mic decât prețul oricărui articol vândut de un angajat cu codul „GA”.
7. scrieți o interogare care va returna toate produsele din tabelul de produse al căror preț este mai mic
prețurile la cel puțin un produs vândut de un angajat cu codul „GA”. Asigura-te ca
Operatorii SOME și ANY sunt interschimbabili.
903

91.

SQL. Curs de bază
Partea 8. Funcții pentru lucrul cu șiruri, date și
numere
www.aplana.ru

92.

Funcții pentru lucrul cu numere
ROUND - rotunjește numerele la orice precizie specificată.
ROUND(input_value, număr de zecimale)
SELECT numere_produs, ROUND(preț_produs, 0)
DIN produs;
SELECT ROUND(1234.5678, 3) --MSSQL
SELECTARE ROUND(1234,5678, 3) FROM DUAL;
Funcția ROUND
ROUND(1234,5678,4)
ROUND(1234,5678, 3)
ROUND(1234,5678, 2)
ROUND(1234,5678,1)
ROUND(1234,5678,0)
ROUND(1234,5678, -1)
ROUND (1234,5678,-2)
ROUND(1234,5678,-3)
923
Valoare returnată
1234.5678
1234.568
1234.57
1234.6
1235
1230
1200
1000
--Oracol

93.

Funcții pentru lucrul cu numere
TRUNC - trunchiază un număr, reducându-i precizia.
Funcția TRUNC
Valoare returnată
TRUNC(1234,5678,4)
1234.5678
TRUNC(1234,5678,3)
1234.567
TRUNC(1234,5678, 2) 1234,56
TRUNC(1234,5678,1)
1234.5
TRUNC(1234,5678,0)
1234
TRUNC(1234,5678,-1)
1230
TRUNC(1234,5678, -2) 1200
TRUNC(1234,5678, -3) 1000
933

94.

Mese auxiliare
Mese auxiliare (facute).
Pentru a efectua funcții fără a fi legat de anumite tabele dintr-un număr de SGBD
este necesar să specificați o tabelă de servicii, deoarece SQL implică
selectați...din construcție.
Oracle - DUAL
DB2-SYSDUMMY1
SYBASE – MANECIN
MySQL - DUAL
MSSQL - lipsește. MSSQL recunoaște interogările de serviciu fără
trebuie să specificați un tabel inactiv.
943

95.

Funcții pentru lucrul cu date
GETDATE – returnează data curentă.
select getdate();
DATEADD – Returnează data obținută ca sumă a datei inițiale
data și intervalul adăugat la data dată o parte a datei
Data.
ADD_MONTHS(valoare, cantitate, data de începere)
SELECT DATEADD(luna, 1, GETDATE());
SELECT DATEADD(an, -2, GETDATE());
953

96.

Funcții pentru lucrul cu date
EOMONTH – returnează ultima zi a oricărei luni specificate
în data transmisă acestuia (MSSQL 2012+).
EOMONTH(data)
SELECTAȚI EOLUNA(GETDATE());
SELECT EOMONTH("2015-03-15");
SELECTează prenume, prenume, data angajării, EOMONTH(data angajării)+1
DIN persoană;
963

97.

Funcții pentru lucrul cu date
DATEDIFF – Returnează numărul de unități care separă două date.
DATEDIFF(valoare, data de început, data de încheiere)
SELECT DATEDIFF(milisecundă, GETDATE(), SYSDATETIME());
SELECT DATEDIFF(LUNA, „17-AUG-2012”, GETDATE());
973

98.

Funcții pentru lucrul cu text
UPPER – pune toate caracterele într-un șir cu majuscule.
LOWER - pune toate caracterele din șir cu litere mici.
INITCAP (oracol) – schimbă majusculele unui șir în mixt (prima literă a fiecăruia
cuvintele vor fi cu litere mari, restul cuvântului va fi cu litere mici).
SELECTARE UPPER(nume_produs) FROM produs;
SELECTARE LOWER(nume_produs) FROM produs;
SELECT INITCAP(„acest TEXT avea majuscule imprevizibile”) FROM DUAL;
983

99.

Funcții pentru lucrul cu text
LEN – definește lungimea liniei.
SELECT numele_produsului, LEN(numele_produsului) LENGTH
DIN produs
WHERE LEN(nume_produs) > 15;
993

100.

Funcții pentru lucrul cu text
SUBSTRING – trunchiază valoarea din parametru.
SUBSTRING(text_sursă, poziția caracterului de început,
Personaje)
SUBSTRING(linia 1, a, [,b])
Returnează partea din „Linia 1” care începe cu numărul caracterului a,
și având lungimea b caractere. Dacă a = 0, aceasta este echivalentă cu
a = 1 (începutul liniei) dacă b este caractere pozitive returnate
de la stanga la dreapta. Dacă b este negativ atunci începând de la capătul liniei și
se numără de la dreapta la stânga! Dacă b lipsește, atunci implicit
toate caracterele sunt returnate până la sfârșitul rândului
100
3

101.

Funcții pentru lucrul cu text
SELECTARE SUBSTRING(id_articol, 1, 3) LOCATION,
SUBSTRING(item_id, 5, 3) ITEM_NUMBER
FROM element_vechi;
101
3

102.

Funcții pentru lucrul cu text
CHARINDEX - găsește poziția elementelor de separare a caracterului (sau a caracterelor).
linii
CHARINDEX(linia 1, linia 2, [,a])
Returnează locația „linia 1” la „linia 2”. „linia 2” este vizualizată
in stanga, incepand din pozitia a. Dacă a este negativ, atunci „linia 2” este privită
pe dreapta. Valoarea implicită pentru a este 1, ceea ce duce la o poziție
prima apariție, „linia 1”, în „linia 2”. Dacă i se dă a, „linia 1” nu este
găsit, returnează 0
102
3

103.

Funcții pentru lucrul cu text
CHARINDEX(caracter_căutare, text_căutare, poziție
_caracter_începător)
SELECT item_desc, CHARINDEX(",", item_desc, 1)
FROM element_vechi;
103
3

104.

Funcția Nesting
SELECT item_desc, SUBSTRING(item_desc, 1, CHARINDEX(",", item_desc, 1))
CATEGORIE
FROM element_vechi;
104
3

105.

Funcția Nesting
105
3
SELECT item_desc,
SUBSTRING(item_desc, 1, CHARINDEX(",", item_desc, 1)-1) CATEGORY,
SUBSTRING(item_desc, CHARINDEX(",", item_desc, 1)+2, 99) ITEM_SIZE
FROM element_vechi;

106.

Sarcina practică nr. 6
1. Folosesc funcții pentru a lucra cu date și numere, număr,
câți ani ai?
2. Tipăriți rândul „CUtiu FUNCȚII TEXT” în partea de sus și
literă mică.
3. Aflați lungimea acestui șir.
4. Lucrând cu coloana buy.product_name, rezultă:
primele trei personaje
toate caracterele rămase începând cu a patra
linie completă
106
3

107.

Resurse utile
http://sqlfiddle.com/ - un instrument care emulează o bază de date goală:
vă permite să efectuați o parte semnificativă a DML, DDR și DR
cereri. Suporta 5 dialecte majore
http://www.sql-tutorial.ru/ - tutorial interactiv despre SQL activat
Rusă
http://www.sql-ex.ru/ - portal interactiv pentru soluții
Sarcini SQL
https://dev.mysql.com/downloads/mysql/ - SQL gratuit
server pentru diferite sisteme de operare
https://www.mysql.com/products/workbench/ - gratuit
instrument pentru lucrul cu serverul MySql
107
3

108.

Vă mulțumim pentru atenție!
Intrebarile tale?
Compania Aplana
Serghei Vorobyov
Inginer principal de testare
+7-917-556-13-49
www.aplana.ru

SQL (pronunțat în mod obișnuit „SEQUEL”) înseamnă „ Limbajul structurat Cereri." Este un limbaj care vă oferă posibilitatea de a crea și de a lucra în baze de date relaționale, care sunt colecții de informații conexe stocate în tabele. Dacă vă întrebați de unde să începeți să învățați SQL, atunci veniți la noi. Compania noastră vă oferă cursuri de SQL, precum și lecții de SQL pentru începători, după ce ați studiat crearea unei baze de date. date SQLÎl poți produce singur. Învățarea SQL este o activitate foarte promițătoare. Acesta include cursuri SQL, cursuri de baze de date SQL și cursuri de interogare SQL. Este posibil să urmați cursuri de limbaj SQL și să efectuați instruire SQL de la zero, precum și să urmați cursuri de programare SQL folosind instruirea SQL online, primind practică exclusivă

Lumea bazelor de date devine din ce în ce mai unificată, ceea ce a condus la necesitatea creării unui limbaj standard care să poată fi folosit pentru a funcționa într-un număr mare de tipuri diferite de medii de computer. Un limbaj standard va permite utilizatorilor cu instruire SQL sau cursuri SQL Server care cunosc un set de comenzi să le folosească pentru a crea, găsi, modifica și comunica informații, indiferent unde lucrează.

În lumea noastră computerizată din ce în ce mai interconectată, un utilizator echipat cu un astfel de limbaj are un avantaj extraordinar în utilizarea și rezumarea informațiilor dintr-o gamă largă de surse într-un număr mare de moduri. Prin urmare, instruirea SQL Server și formarea interogărilor SQL sunt foarte importante.

Eleganța și independența sa față de tehnologia informatică, precum și sprijinul oferit de liderii din industrie în tehnologia bazelor de date relaționale, au făcut din SQL, și probabil va rămâne în viitorul apropiat, limbajul standard dominant. Din acest motiv, oricine dorește să lucreze cu baze de date ar trebui să cunoască SQL, să urmeze un curs SQL de bază sau să învețe SQL de la zero și să urmeze un curs SQL de bază.

Standardul SQL este definit de ANSI (American National Standards Institute) și timp dat acceptat și de ISO (Organizația Internațională pentru Standardizare). Cu toate acestea, majoritatea programelor comerciale de baze de date extind SQL fără notificare ANSI, adăugând diferite alte caracteristici la limbaj care cred că le va fi foarte util. Uneori, ele încalcă oarecum standardul de limbaj, deși ideile bune tind să se dezvolte și în curând devin standarde de „piață” de sine stătătoare datorită utilității lor. Și puteți învăța toate aceste caracteristici urmând cursuri de formare SQL în biroul nostru sau luând cursuri de formare SQL online.

Înainte de a putea utiliza SQL, trebuie să înțelegeți ce sunt bazele de date relaționale și cum sunt dezvoltate, precum și să urmați un curs de instruire SQL și să învățați lecții de SQL Server, astfel încât dezvoltarea unei baze de date SQL să nu pară o sarcină descurajantă.

După cum am subliniat mai devreme, SQL înseamnă Structured Query Language. Studiu interogări SQL iar crearea de interogări la baza de date este probabil cel mai des folosit aspect al SQL. De fapt, pentru categoria de utilizatori SQL, este puțin probabil ca cineva să folosească limbajul pentru altceva. Din acest motiv, vom începe studiul nostru despre limbajul SQL cu o discuție despre interogarea și modul în care este executată în acest limbaj.

O interogare este o comandă pe care o dați programului dumneavoastră de bază de date care îi spune să imprime anumite informații din tabele în memorie. Aceste informații sunt de obicei trimise direct către ecranul computerului sau terminalul pe care îl utilizați, deși în majoritatea cazurilor pot fi trimise și către o imprimantă, salvate într-un fișier (ca obiect în memoria computerului) sau prezentate ca informații generale pentru o altă comandă sau proces.

Interogările sunt în general considerate a fi parte a limbajului DML. Cu toate acestea, deoarece interogarea nu modifică informațiile din tabele, ci pur și simplu le afișează utilizatorului, vom considera interogările ca o categorie separată dintre comenzile DML care efectuează o acțiune, mai degrabă decât să afișeze pur și simplu conținutul bazei de date.

Toate interogările SQL constau într-o singură comandă. Structura acestei comenzi este înșelător de simplă, deoarece trebuie să o extindeți pentru a efectua evaluări extrem de complexe și manipulări de date. Această comandă se numește SELECT.

Limbajul SQL. Curs de bază.

Acest tutorial, scris de Evgeny Morgunov, prezintă elementele de bază ale limbajului SQL - acesta este un curs de bază. Mai mult, limbajul este considerat în raport cu un anumit sistem de management al bazelor de date (DBMS) - PostgreSQL. Implementarea limbajului SQL în fiecare SGBD respectă standardul într-o măsură sau alta, dar pe lângă funcțiile și capacitățile standardizate, fiecare SGBD oferă și propriul său extensii suplimentare limba. PostgreSQL oferă foarte sprijin bun Standard de limbaj SQL și oferă, de asemenea, caracteristici suplimentare interesante și utile practic. Unul dintre principalele avantaje ale PostgreSQL este extensibilitatea. Aceasta înseamnă, de exemplu, că utilizatorul (care este un expert în baze de date, desigur) își poate dezvolta propriile tipuri de date. Aceste tipuri de date vor avea toate proprietățile tipurilor de date încorporate și pot fi puse în funcțiune fără a opri serverul. În plus, PostgreSQL este un produs gratuit și open source. cod sursa, care este disponibil pe un număr mare de platforme.

Tutorialul acoperă nu numai toate comenzile SQL de bază, ci și alte subiecte, cum ar fi indici și tranzacții. Manualul este scris în așa fel încât să poată fi folosit atât sub îndrumarea unui profesor, cât și independent. Se presupune că studenții au acces la un SGBD deja instalat, așa că procedura de instalare PostgreSQL nu este discutată în detaliu, ci sunt date doar instrucțiuni despre unde să găsească instrucțiunile de instalare. Acest tutorial este conceput pentru a vă oferi abilități practice în utilizarea limbajului SQL. Materialul educațional este prezentat în așa fel încât cititorul să dobândească cunoștințe foarte importante ca urmare a îndeplinirii sarcinilor situate la sfârșitul fiecărui capitol.

Este posibil ca aceste cunoștințe să nu fie prezentate în textul principal al capitolelor. Se presupune că o parte semnificativă a sarcinilor va fi efectuată de către cititor în mod independent, folosind documentația pentru SGBD PostgreSQL, dar adesea sunt date instrucțiuni pentru implementarea lor.

Manualul este destinat studenților care studiază în domeniile 03/09/01 - „Informatică și Informatică”, 03/09/02 - „Sisteme și tehnologii informaționale”, 03/09/03 - „Informatică aplicată”, 03/ 09/04 - „Inginerie software” și 02/03.03 - „Suport matematic și administrarea sistemelor informaționale”. Poate fi util unei game largi de studenți și profesioniști care doresc să se familiarizeze cu elementele de bază ale limbajului SQL în mediul sistemului de management al bazei de date PostgreSQL.

Editor - Postgres Professional

Anul publicării - 2017

Format carte - PDF

Transcriere

2 Postgres Professional Company E. P. Morgunov LIMBAJUL SQL. CURS DE BAZĂ DE INSTRUIRE ȘI MANUAL PRACTIC Moscova 2017

3 UDC BBK M79 M79 Morgunov, E. P. Limbajul SQL. Curs de bază: educativ-practic. indemnizație / E. P. Morgunov; editat de E. V. Rogova, P. V. Luzanova; Postgres Professional. M., p. Acest ghid educațional și practic reprezintă prima parte de bază a cursului de formare în limbaj SQL oferit de compania rusă Postgres Professional. Materialul de instruire este prezentat pe baza utilizării sistemului de management al bazei de date PostgreSQL. Manualul poate fi folosit atât sub îndrumarea unui profesor cât și pentru auto-studiu Limbajul SQL. Manualul este destinat studenților care studiază în domeniile „Informatică și Informatică”, „Sisteme și tehnologii informaționale”, „Informatică aplicată”, „Inginerie software” și „Suport matematic și administrare a sistemelor informaționale”. Poate fi util unei game largi de studenți și profesioniști care doresc să se familiarizeze cu elementele de bază ale limbajului SQL în mediul sistemului de management al bazei de date PostgreSQL. UDC BBK Postgres Professional, 2017 E. P. Morgunov, 2017

4 Cuprins Introducere 5 1 Introducere în bazele de date și SQL Ce sunt bazele de date și de ce sunt necesare Concepte de bază ale modelului relațional Ce este un limbaj Descriere SQL domeniul de subiect și baza de antrenament date Întrebări de controlși sarcini Crearea unui mediu de lucru Instalarea unui SGBD Programul psql Terminal interactiv PostgreSQL Implementarea unei baze de date de antrenament Întrebări și sarcini de testare Operații de bază cu tabele 22 Întrebări și sarcini de testare Tipuri de date SGBD PostgreSQL Tipuri numerice Tipuri de caractere (șir) Tipuri de dată/oră Tipuri boolean Matrice Tipuri JSON Provocări și provocări Definirea datelor Limbajul de bază Valori implicite și Constrângeri de integritate Crearea și eliminarea tabelelor Modificarea tabelelor Vizualizări Scheme de baze de date Provocări și provocări Interogări Avansate SELECT Funcții de comandă Uniri Agregare și grupare Subinterogări Provocări și provocări Modificarea datelor Inserarea rândurilor în tabele Actualizarea rândurilor în tabele Eliminarea rândurilor din tabele Întrebări și sarcini de testare

5 8 Indici Informații generale Indici pe mai multe coloane Indici unici Indici bazați pe expresii Indici parțiali Test și exerciții Tranzacții Nivel de izolare CITIȚI NECOMMITIT Nivel de izolare CITIȚI ANGAJAT Nivel de izolare REPETABLE READ Nivel de izolare SERIALIZABLE Exemplu de tranzacție Blocare Chestionare și exerciții Îmbunătățirea performanței Concepte Tehnici de scanare a tabelelor Tehnici de gestionare a planificatorilor de rânduri interogări Întrebări și sarcini de testare Surse recomandate 255 4

6 Introducere În prezent, termenul „bază de date” este cunoscut de mulți oameni, chiar și cei departe de dezvoltarea profesională programe de calculator . Bazele de date au devenit o tehnologie foarte răspândită, care, la rândul său, necesită mai mulți oameni să le proiecteze și să le întrețină. Pe parcursul evoluției teoriei și practicii bazelor de date, modelul de date relaționale a devenit standardul de facto, iar în cadrul acestui model s-a format un limbaj de programare specializat care permite efectuarea tuturor operațiunilor necesare cu Structured Query Language ( date SQL). Astfel, o componentă importantă a calificărilor unui profesionist în baze de date este competența în limbajul SQL. Acest tutorial acoperă elementele de bază ale limbajului SQL și este un curs de bază. Mai mult, limbajul este considerat în relație cu un anumit sistem de management al bazelor de date (DBMS) PostgreSQL. Implementarea limbajului SQL în fiecare SGBD respectă standardul într-o măsură sau alta, dar pe lângă funcțiile și capabilitățile standardizate, fiecare SGBD oferă și propriile extensii de limbaj suplimentare. PostgreSQL oferă suport foarte bun pentru standardul limbajului SQL și oferă, de asemenea, caracteristici suplimentare interesante și utile practic. Unul dintre principalele avantaje ale PostgreSQL este extensibilitatea. Aceasta înseamnă, de exemplu, că utilizatorul (care este un expert în baze de date, desigur) își poate dezvolta propriile tipuri de date. Aceste tipuri de date vor avea toate proprietățile tipurilor de date încorporate și pot fi puse în funcțiune fără a opri serverul. În plus, PostgreSQL este un produs gratuit și open source care este disponibil pe un număr mare de platforme. Tutorialul acoperă nu numai toate comenzile SQL de bază, ci și alte subiecte, cum ar fi indici și tranzacții. Manualul este scris în așa fel încât să poată fi folosit atât sub îndrumarea unui profesor, cât și independent. Se presupune că studenții au acces la un SGBD deja instalat, așa că procedura de instalare PostgreSQL nu este discutată în detaliu, ci sunt date doar instrucțiuni despre unde să găsească instrucțiunile de instalare. Acest tutorial este conceput pentru a vă oferi abilități practice în utilizarea limbajului SQL. Materialul educațional este prezentat în așa fel încât cititorul să dobândească cunoștințe foarte importante ca urmare a îndeplinirii sarcinilor situate la sfârșitul fiecărui capitol. Este posibil ca aceste cunoștințe să nu fie prezentate în textul principal al capitolelor. Se presupune că o parte semnificativă a sarcinilor va fi efectuată de către cititor în mod independent, folosind documentația pentru SGBD PostgreSQL, dar adesea sunt date instrucțiuni pentru implementarea lor. Sarcinile prezentate în manual variază în funcție de nivelul de dificultate. Cele mai dificile dintre ele, precum și cele care necesită mult timp pentru finalizare, sunt marcate cu un asterisc. Temele pot fi finalizate pe măsură ce studiați materialul educațional dintr-un anumit capitol. Cu toate acestea, unele dintre ele sunt de natură complexă, așa că pentru a le finaliza trebuie să studiați întregul capitol sau cel puțin câteva dintre secțiunile acestuia. 5

7 Deși manualul are o orientare practică și nu este un curs teoretic, primul capitol conturează pe scurt, la nivel elementar, conceptele de bază ale teoriei bazelor de date și ale modelului relațional. Acest lucru se face astfel încât studenții să înceapă să stăpânească practic limbajul SQL fără întârziere, încă din primele zile ale semestrului academic, chiar înainte de momentul în care aceste concepte sunt discutate temeinic în cadrul cursului de curs. La facultati tehnologia InformatieiÎn universitățile ruse, bazele de date sunt studiate în mod tradițional în al doilea sau al treilea an. În plus, această disciplină se acordă de obicei un semestru. Cu toate acestea, numărul de ore de studiu academic poate varia. Dacă programa alocă 36 de ore pentru orele practice la această disciplină, atunci recomandăm următoarea alocare de timp pentru studierea materialului din manual. Capitolul 1. Introducere în baze de date și SQL Capitolul 2. Crearea unui banc de lucru Capitolul 3. Operații de bază pe tabel Capitolul 4. Tipuri de date PostgreSQL Capitolul 5. Noțiuni de bază pentru limbajul de definire a datelor Capitolul 6. Interogări Capitolul 7. Modificarea datelor Capitolul 8. Indici Capitolul 9. Tranzacții Capitolul 10: Îmbunătățirea productivității 1 oră 1 oră 4 ore 4 ore 4 ore 8 ore 4 ore 2 ore 4 ore 4 ore Capitolele 1 și 2 pot fi finalizate într-o clasă de două ore, deoarece PostgreSQL trebuie deja instalat în sala de clasă în prealabil. Capitolul 3 oferă o scurtă prezentare generală a caracteristicilor de bază ale limbajului SQL, iar după finalizarea acestuia, studenții ar trebui să fie capabili să înțeleagă modalități simple de a folosi toate comenzile de bază din limbaj. Acest capitol nu este foarte dificil, dar este voluminos, așa că sunt alocate patru ore pentru a-l studia. Capitolul 4 acoperă tipurile de date de bază utilizate în PostgreSQL. Acesta este un capitol lung, dar o parte semnificativă a acestuia constă în teme și exerciții. Se așteaptă ca studenții să învețe numai conceptele de bază ale utilizării tipurilor de date în patru ore. Și pentru ca cunoștințele să fie consolidate, se recomandă să faceți referire la materialul din acest capitol (inclusiv exerciții) în procesul de studiu a capitolelor rămase din manual, dacă este necesar, pentru a clarifica anumite caracteristici ale aplicației tipuri specifice. Vă recomandăm să împărțiți timpul alocat studierii acestui capitol astfel: două ore pentru primele patru paragrafe despre tipurile numerice și șir, tipuri de dată/oră și tipul logic, alte două ore pentru matrice și tipul json/jsonb. Pentru a rula interogări într-o bază de date, trebuie să înțelegeți bine structura și relațiile dintre tabel. Prin urmare, capitolul 5, care acoperă elementele de bază ale limbajului de definire a datelor, este foarte important din punctul de vedere al unui studiu detaliat al tabelelor din baza de date a transportului aerian și pregătirea pentru stăpânirea capitolului 6. Deoarece materialul din capitol se bazează pe faptul că baza de date este deja implementată pe computerul studentului, introduceți Nu sunt necesare comenzi pentru a crea tabele. Acest lucru vă permite să reduceți timpul petrecut studiind capitolul. Manualul adoptă abordarea de a acoperi mai întâi comenzile de definire a datelor și apoi comenzile de manipulare a datelor. Prin urmare, Capitolul 5, Fundamentele limbajului pentru definirea datelor, precede Capitolul 6

8 Capitolul 6 „Interogări”. Cu toate acestea, abordarea aleasă nu este implementată prea rigid: prezentarea generală Capitolul 3 acoperă comenzile de bază, inclusiv interogări simple. Și interogările sunt deja un limbaj pentru manipularea datelor. Pentru capitolul 5 sunt alocate patru ore. În timpul primelor două ore de curs, ar trebui să studiați primele două paragrafe, care acoperă probleme precum constrângerile de integritate și crearea și ștergerea tabelelor. A doua lecție de două ore ar trebui să fie dedicată studierii celor trei paragrafe rămase. Ei vorbesc despre modalități de modificare a tabelelor, precum și despre vizualizări și scheme de baze de date. Capitolul 6 este capitolul central al manualului, deci sunt alocate opt ore pentru studiul lui, adică mai multe decât pentru studiul altor capitole. Este format din patru paragrafe. Prima dintre ele este dedicată diverselor caracteristici suplimentare comenzi SELECT. Este despre, în special, despre lucruri precum clauze LIMIT și OFFSET, operatorul LIKE și expresii regulate în condițiile clauzei WHERE și alte caracteristici. Cu toate acestea, materialul din această secțiune nu este dificil; este suficient să petreceți o oră pentru a-l studia. Al doilea paragraf vorbește despre modalități de alăturare a meselor. Acesta este un subiect mai complex și necesită două ore pentru a studia. Al treilea paragraf este despre agregare și grupare. Se adresează unui astfel de important și subiect interesant, cum ar fi funcțiile ferestrei. Această secțiune necesită și o lecție de două ore. Cea mai dificilă secțiune a acestui capitol este a patra. Este vorba despre subinterogări. În special, acoperă un subiect atât de important și interesant, cum ar fi Common Table Expressions CTE. Pentru a studia materialul din acest paragraf, trebuie să alocați trei ore. Capitolul 7 conține toate comenzile pentru modificarea datelor: inserarea rândurilor, actualizarea rândurilor și ștergerea rândurilor. Deoarece capitolele anterioare au folosit deja aceste comenzi pentru a rezolva probleme simple, acest capitol acoperă modalități mai complexe de utilizare a acestora. Există o mulțime de exerciții în el, ele alcătuiesc jumătate din volumul său. Se recomandă să petreceți două ore învățând cum să inserați rânduri în tabele și alte două ore învățând cum să actualizați și să ștergeți rândurile. Capitolul 8 este despre indici și este scurt, așa că poate fi completat într-o lecție de două ore. Întrucât indexurile sunt strâns legate de problemele de performanță, adică de viteza de execuție a interogărilor, ar fi indicat, după studierea ultimului capitol, să revenim la capitolul 8 și să privim comenzile și interogările prezentate acolo, știind deja despre comanda EXPLAIN. . Capitolul 9 este dedicat tranzacțiilor.Mecanismele de executare a acestora au multe subtilități, așa că atunci când studiem acest capitol este necesar să experimentăm și să încercăm să explicăm rezultatele obținute. Ultimul capitol 10 se referă la îmbunătățirea productivității. Acest capitol poate părea prea abstract și complex pentru un curs SQL pentru începători, dar este totuși foarte important. Elevii trebuie să învețe să citească planurile de execuție a interogărilor și să înțeleagă scopul fiecărei operațiuni reprezentate în plan. Și stăpânirea artei optimizării interogărilor va necesita mult timp și experiență, nu va veni imediat. În cazul în care în programa de studii sunt alocate 54 de ore pentru orele practice la disciplina „Baze de date”, puteți modifica distribuția propusă a orelor de formare. În special, capitolul 4 poate petrece mai mult timp pe tipurile de date 7

9 json/jsonb și matrice. Capitolul 6 analizează mai îndeaproape funcțiile ferestrelor și expresiile comune de tabel. Când studiem Capitolul 9 despre tranzacții, ar fi util să dezvolti o aplicație simplă care să folosească tranzacții și să experimentezi cu aplicația rulând mai multe sesiuni în paralel, variind în același timp nivelurile de izolare a tranzacțiilor. Ca parte a Capitolului 10, este logic să revenim la comenzile și interogările din Capitolul 8 și să le examinăm planurile de execuție folosind comanda EXPLAIN. Datorită timpului suplimentar, puteți lua în considerare toate sarcinile și exercițiile de complexitate crescută (marcate cu un asterisc). Astfel, distribuția timpului ar putea fi următoarea: Capitolul 1. Introducere în baze de date și SQL Capitolul 2. Crearea unui mediu de lucru Capitolul 3. Operații de bază cu tabele Capitolul 4. Tipuri de date PostgreSQL Capitolul 5. Noțiuni de bază pentru limbajul de definire a datelor Capitolul 6. Interogări Capitolul 7 Modificarea datelor Capitolul 8. Indici Capitolul 9. Tranzacții Capitolul 10. Îmbunătățirea productivității 1 oră 1 oră 4 ore 6 ore 6 ore 12 ore 6 ore 4 ore 8 ore 6 ore Tutorialul folosește diferite tipuri de fonturi pentru a evidenția fragmente de text în funcție de destinațiile lor. Comenzile introduse de utilizator ca în mediu sistem de operare, și în mediul utilitar psql, sunt evidențiate cu font monospațiu aldine. De exemplu: psql -d demo -U postgres sau SELECT avg(total_amount) FROM bookings; Rezultatele comenzilor sistemului de operare și comenzilor SQL executate în mediul utilitar psql sunt tipărite cu font monospace. De exemplu, ca răspuns la comanda EXPLAIN SELECT * FROM avioane; Pe ecran vor fi afișate următoarele: PLAN DE ÎNTREBĂRI Seq Scanare pe aeronavă (cost= rânduri=9 lățime=52) (1 rând) Sperăm că studierea materialului prezentat în manual vă va ajuta să vă îmbunătățiți nivelul de calificare și să vă extindeți orizonturile profesionale . 8

10 1 Introducere în baze de date și SQL Acest capitol este introductiv. În el vom vorbi despre elementele de bază ale bazelor de date, ce este modelul relațional și de ce este nevoie de limbajul SQL. Un subiect foarte important în acest capitol va fi o descriere a domeniului subiectului pe baza căreia va fi concepută o bază de date de instruire, care va servi drept platformă pentru învățarea limbajului SQL. Acest manual este destinat în primul rând pentru stăpânirea practică a limbajului SQL și nu pentru studiul teoriei bazelor de date, prin urmare, pentru a studia teoria, trebuie să vă referiți la surse autorizate, a căror listă este dată la sfârșitul manualului. 1.1 Ce sunt bazele de date și de ce sunt necesare? Tehnologiile de baze de date nu au existat întotdeauna. Cu toate acestea, chiar înainte de implementarea lor, oamenii colectau și procesau și date. O modalitate de stocare a datelor era așa-numitele fișiere plate, care aveau o structură foarte simplă: datele erau stocate sub formă de înregistrări împărțite în câmpuri cu lungime fixă. În viața reală, de multe ori apar relații complexe între elementele de date care trebuie transferate într-o bază de date electronică. Când se utilizează fișiere plate, aceste relații sunt dificil de organizat și chiar mai dificil de menținut atunci când elementele individuale de date sunt modificate sau șterse. Unul dintre conceptele principale în teoria bazelor de date este modelul de date. Putem spune că caracterizează modul în care sunt organizate datele și principalele metode de accesare a acestora. În primul rând, au fost propuse modele de date ierarhice și de rețea. Totuși, în cursul evoluției teoriilor și ideilor, a fost dezvoltat un model de date relaționale, care acum este dominant. Prin urmare, în prezent predomină bazele de date de tip relațional. Trăsătura lor caracteristică este faptul că datele sunt percepute de utilizator ca tabele. Utilizatorul are la dispoziție operatori pentru preluarea datelor din tabele, precum și pentru introducerea de date noi, actualizarea și ștergerea datelor existente. Unul dintre avantajele unei baze de date relaționale este capacitatea sa de a menține relații între elementele de date, scutind programatorul de nevoia de a se angaja în această muncă de rutină și foarte consumatoare de timp. În acele vremuri, când tehnologiile bazelor de date relaționale nu erau încă răspândite, programatorii trebuiau să implementeze manual operațiuni în limbaje procedurale, care se numesc acum actualizări în cascadă ale cheilor străine sau ștergeri în cascadă ale înregistrărilor din tabelele (fișiere) subordonate. Aici cuvântul „manual” înseamnă că pentru a efectua aceste operații a fost necesar să se scrie cod constând din comenzi elementare pentru a ajunge la fiecare înregistrare care este actualizată sau ștearsă. Acea abordare a lucrului cu bazele de date a fost numită navigare; programatorul a indicat programului un algoritm specific pentru căutarea înregistrărilor. Să luăm ca exemplu o situație simplă: într-o bază de date construită pe baza de fișiere, informațiile despre studenți și notele lor la examen sunt stocate, iar datele personale ale studenților sunt stocate într-un singur fișier, să-l numim „Studenti”, iar notele examenului într-un alt fișier, pe care să-l numim „Evaluări”. Dacă trebuie să ștergeți informații despre un anumit student și lucrările sale de examen 9

11 note, atunci va trebui nu numai să efectuați operația de ștergere a unei anumite înregistrări din fișierul „Studenți”, ci și să organizați suplimentar un ciclu pentru a căuta și șterge acele înregistrări din fișierul „Note” al căror câmp cheie are aceeași valoare ca și câmpul din înregistrarea ștearsă din fișierul „Studenți”. Când lucrează cu baze de date relaționale, programatorul este eliberat de programare la nivel „atomic”, deoarece limbajele moderne pentru „comunicarea” cu aceste baze de date sunt declarative. Aceasta înseamnă că pentru a obține un rezultat, este suficient doar să indicați ceea ce trebuie obținut, dar nu este necesar să prescrieți metoda de obținere a rezultatului, adică cum să-l obțineți. Un sistem de baze de date este un sistem computerizat conceput pentru stocarea, prelucrarea și emiterea de informații la cererea utilizatorilor. Un astfel de sistem include software și hardware, datele în sine și utilizatori. Sisteme moderne bazele de date sunt, de regulă, multi-utilizator. În astfel de sisteme, mai mulți utilizatori pot accesa simultan baza de date. Software-ul principal este un sistem de gestionare a bazelor de date. În engleză se numește sistem de management al bazelor de date (DBMS). Pe lângă SGBD, un sistem de baze de date poate include utilități, instrumente pentru dezvoltarea aplicațiilor (programe), instrumente de proiectare a bazelor de date, generatoare de rapoarte etc. Utilizatorii sistemelor de baze de date sunt împărțiți într-un număr de categorii. Prima categorie este programatorii de aplicații. A doua categorie o reprezintă utilizatorii finali, pentru care se face toată munca. Ei pot accesa baza de date folosind programe de aplicație sau aplicații universale care sunt incluse în software SGBD în sine. Majoritatea SGBD-urilor au ceea ce se numește un procesor de limbaj de interogare, care permite utilizatorului să introducă comenzi de limbaj de nivel înalt (cum ar fi SQL). A treia categorie de utilizatori sunt administratorii bazelor de date. Responsabilitățile acestora includ: crearea unei baze de date, alegerea modalităților optime de acces la aceasta, delimitarea puterilor diferiților utilizatori de a accesa anumite informații din baza de date, executarea Rezervă copie baze de date etc. Un sistem de baze de date poate fi împărțit în două componente principale: un server și un set de clienți (sau front-end). Serverul este DBMS. Clienții sunt diverse aplicații scrise de programatori de aplicații sau aplicații încorporate furnizate împreună cu SGBD. Un server poate servi mai mulți clienți. SGBD-urile moderne includ un dicționar de date. Aceasta este partea din baza de date care descrie datele în sine stocate în ea. Dicționarul de date ajută SGB-ul să își îndeplinească funcțiile. 1.2 Concepte de bază ale modelului relaţional Fiecare domeniu tehnologic are propria terminologie. Există termeni de bază pe care se bazează toate discuțiile ulterioare. Se folosesc astfel de termeni

12 sunt prezente și în sectorul bazelor de date. Acum vom vorbi pe scurt despre ele. În epoca de dinaintea nașterii teoriei relaționale, bazele de date erau în mod tradițional privite ca o colecție de fișiere alcătuite din înregistrări, iar înregistrările erau la rândul lor subdivizate în câmpuri individuale. Câmpul era o unitate elementară de date. În bazele de date relaționale, utilizatorul percepe datele sub formă de tabele. Prin urmare, termenul „fișier” corespunde termenului „tabel”, în loc de termenul „înregistrare” se folosește termenul „rând”, iar în locul termenului „câmp” termenul „coloană” (sau „coloană”) este folosit. Astfel, tabelele constau din rânduri și coloane, la intersecția cărora trebuie să existe valori „atomice” care nu pot fi defalcate în elemente mai mici fără a pierde sensul. În teoria formală a bazelor de date relaționale, aceste tabele sunt numite relații, motiv pentru care bazele de date sunt numite relaționale. Raportul este un termen matematic. La determinarea proprietăților unor astfel de relații se folosește teoria mulțimilor. În ceea ce privește această teorie, rândurile de tabel vor fi numite tupluri, iar coloanele vor fi numite atribute. O relație are un cap, care constă din atribute, și un corp, care este format din tupluri. Numărul de atribute se numește gradul relației, iar numărul de tupluri se numește număr cardinal. Pe lângă teoria mulțimilor, unul dintre fundamentele teoriei relaționale este o astfel de ramură a logicii matematice precum calculul predicatelor. Astfel, în teoria și practica bazelor de date, există trei grupuri de termeni. Uneori, termenii din diferite grupuri sunt folosiți ca sinonime, de exemplu, înregistrare și șir. După cum am spus mai sus, în bazele de date relaționale utilizatorul percepe datele sub formă de tabele. Să luăm în considerare un sistem simplu cu doar două tabele. Primul „Elevi”: cartea de note Nume complet Seria documentelor Numărul documentului Ivanov Ivan Petrovich Klimov Andrey Ivanovich Novikov Nikolay Yuryevich Și a doua „Realizare”: Cartea de note Subiectul Anul universitar Semestrul Evaluare Fizica 2016 / Matematică 2016 / Fizica 2016 / Fizica / Când 2016 lucrând cu baze de date, de multe ori trebuie să urmați diverse restricții care pot fi determinate de specificul unui anumit domeniu. Simplificand situatia reala, acceptam urmatoarele restrictii: 11

13 Numărul cărții de înregistrare este format din cinci cifre și nu poate fi negativ (diferite universități folosesc diverse scheme atribuirea numerelor caietelor de note; aceste scheme pot fi mult mai complexe decât cea pe care am adoptat-o ​​și pot lua în considerare, de exemplu, anul în care studentul a intrat la universitate); seria actului de identitate este un număr din patru cifre, iar numărul actului de identitate este un număr din șase cifre; numărul semestrului poate lua doar două valori: 1 (semestrul de toamnă) și 2 (semestrul de primăvară); nota poate lua doar trei valori: 3 (satisfăcător), 4 (bun) și 5 (excelent): alte note nu sunt acceptate pentru includerea în carnetele de note. Pentru a identifica rândurile din tabele și pentru a lega tabelele între ele, se folosesc așa-numitele chei. O cheie candidată este o combinație de atribute de tabel care identifică în mod unic rândurile din ea. O cheie poate consta, de asemenea, dintr-un singur atribut de tabel. De exemplu, în tabelul „Elevi”, un astfel de identificator ar putea fi atributul „Numărul caietului de note”. Două dintre atributele sale luate împreună pot servi și ca potențială cheie pentru acest tabel: „Seria documentului de identitate” și „Numărul documentului de identitate”. Nici unul dintre ele singur nu poate fi folosit ca un identificator unic. În acest caz, cheia va fi compusă. Este important ca potențiala cheie să nu fie redundantă, adică niciun subset de atribute incluse în ea nu ar trebui să aibă proprietatea de unicitate. O cheie candidată care include cele două atribute menționate nu este redundantă. Cheile sunt necesare pentru adresarea la nivel de rând (înregistrare). Dacă într-un tabel există mai multe chei candidate, una dintre ele este selectată ca așa-numită cheie primară, iar restul vor fi chei alternative. Să ne uităm la tabelele „Studenți” și „Realizări”. Să presupunem că în tabelul „Studenți” nu există un rând cu numărul 55900 de carte de note, atunci nu are sens să includeți o linie cu acest număr de carte de note în tabelul „Progres”. Astfel, valorile coloanei „Numărul cărții de note” din tabelul „Realizări” trebuie să fie în concordanță cu valorile aceleiași coloane din tabelul „Elevi”. Atributul Gradebook Number din tabelul Academic Progress este un exemplu de ceea ce se numește o cheie externă. Tabelul care conține cheia externă se numește tabel de referință. Tabelul care conține cheia candidată corespunzătoare se numește tabel de referință. În astfel de cazuri, se spune că cheia străină se referă la o cheie candidată din tabelul de referință. O cheie externă poate fi compusă, adică poate include mai mult de un atribut. O cheie străină nu trebuie să fie unică. Problema asigurării faptului că o bază de date nu conține valori ale cheilor străine nevalide este cunoscută ca problema integrității referențiale. Constrângerea conform căreia valorile cheilor străine trebuie să se potrivească cu valorile cheilor candidate se numește constrângere de integritate referențială. SGBD-ul este responsabil pentru aplicarea constrângerilor de integritate referenţială, iar dezvoltatorului i se cere doar să specifice atributele care servesc ca 12 externe.

14 chei. Proiectarea bazei de date necesită adesea ca, atunci când un rând este șters dintr-un tabel de referință, rândurile corespunzătoare din tabelul de referință trebuie, de asemenea, să fie șterse și că, atunci când valoarea unei coloane la care face referire o cheie străină se modifică, valorile cheii străine din tabelul referit trebuie modificat. Această abordare se numește ștergere în cascadă (actualizare). Uneori sunt folosite și alte abordări. De exemplu, în loc să ștergeți rânduri din tabelul de referință, acele rânduri sunt pur și simplu înlocuite cu valorile atributelor incluse în cheia externă cu așa-numitele valori NULL. Acestea sunt valori speciale care înseamnă „nimic” sau nicio valoare și nu sunt la fel cu „null” sau „șirul gol”. Valoarea NULL este utilizată în bazele de date și ca valoare implicită atunci când utilizatorul nu a introdus nicio valoare specifică. Cheile primare nu pot conține valori NULL. Tranzacția este unul dintre cele mai importante concepte din teoria bazelor de date. Înseamnă un ansamblu de operațiuni pe o bază de date, considerată ca o unitate de lucru unică și indivizibilă, efectuate în totalitate sau deloc efectuate dacă în timpul tranzacției intervine o defecțiune. Astfel, tranzacțiile reprezintă un mijloc de asigurare a consistenței datelor. În baza noastră de date, o tranzacție poate fi, de exemplu, două operațiuni: ștergerea unui rând din tabelul „Studenți” și ștergerea rândurilor legate de cheile străine din tabelul „Realizări”. 1.3 Ce este limbajul SQL Limbajul SQL este un limbaj non-procedural care este mijloace standard lucrul cu date în toate SGBD-urile relaționale. Operatorii (comenzile) scrise în acest limbaj indică doar SGBD ce rezultat trebuie obținut, dar nu descriu procedura pentru obținerea acestui rezultat. SGBD-ul însuși determină metoda de executare a comenzii utilizatorului. Limbajul SQL distinge în mod tradițional un grup de operatori de definire a datelor (Data Definition Language DDL), un grup de operatori de manipulare a datelor (Data Manipulation Language DML) și un grup de operatori care gestionează privilegiile de acces la obiectele bazei de date (Data Control Language DCL). Instrucțiunile limbajului de definire a datelor (DDL) includ comenzi pentru crearea, modificarea și ștergerea tabelelor, vizualizărilor și a altor obiecte de bază de date. Aceste comenzi acoperă în detaliu capitolele 5 și 8. Instrucțiunile limbajului de manipulare a datelor (DML) includ comenzi pentru preluarea rândurilor din tabele, inserarea rândurilor în tabele, actualizarea rândurilor și ștergerea rândurilor. Aceste comenzi sunt discutate în detaliu în Capitolele 6 și 7. Instrucțiunile DCL nu sunt discutate în tutorial, deoarece PostgreSQL vă permite să faceți fără a le folosi în stadiul inițial de învățare a limbajului SQL. 13

15 1.4 Descrierea disciplinei și a bazei de date de instruire Pentru a afișa toate capacitățile principale ale limbajului SQL, avem nevoie de o bază de date. Această bază de date nu ar trebui să fie prea complexă, astfel încât să nu necesite prea mult timp pentru studiu. Dar, în același timp, trebuie să fie suficient de variat, astfel încât cererile către acesta să pară plauzibile, aproape la fel ca în munca reală. Vom alege transportul aerian de pasageri ca domeniu de subiect. Descrierea inițială și descrierea bazei de date privind transportul aerian pot fi găsite la ru/docs/postgrespro/current/demodb-bookings.html. Sperăm că această zonă este familiară pentru mulți cititori ai tutorialului nostru. Desigur, în scopuri educaționale, situația reală este simplificată în mod deliberat, dar toate lucrurile fundamentale sunt păstrate. Deci, o anumită companie aeriană rusă operează transportul aerian de pasageri. Are propria sa flotă de avioane diverse modele. Fiecare model de aeronavă are un cod specific atribuit de Asociația Internațională a Transporturilor Aeriene (IATA). În acest caz, vom presupune că aeronavele de același model au același aspect al cabinei, adică ordinea de amplasare a scaunelor și numerotarea scaunelor în cabinele din clasa business și clasa economică. De exemplu, dacă acesta este un model Sukhoi SuperJet-100, atunci scaunul 2A este clasa business, iar scaunul 20D este clasa economică. Clasa business și clasa economică sunt soiuri ale așa-numitei clase de servicii. Compania noastră aeriană operează zboruri între aeroporturile rusești. Fiecărui aeroport i se atribuie un cod unic de trei litere, folosind doar majuscule ale alfabetului latin. Aceste coduri sunt atribuite nu de compania aeriană în sine, ci de organizații speciale care gestionează transportul aerian de pasageri. Adesea, numele aeroportului nu coincide cu numele orașului căruia îi aparține aeroportul. De exemplu, în orașul Novosibirsk aeroportul se numește Tolmachevo, în orașul Ekaterinburg Koltsovo și în Sankt Petersburg Pulkovo. În plus, unele orașe au mai mult de un aeroport. Ca exemplu, îmi amintesc imediat Moscova cu aeroporturile sale Domodedovo, Sheremetyevo și Vnukovo. Să mai adăugăm un detaliu important: fiecare aeroport este caracterizat coordonate geografice longitudine și latitudine și fus orar. Se formează rute de zbor între orașe. Desigur, fiecare astfel de rută necesită indicarea nu numai a orașului, ci și a aeroportului, deoarece, așa cum am spus deja, într-un oraș pot exista mai multe aeroporturi. Pentru a simplifica realitatea, vom decide că rutele nu vor avea escale, adică vor avea doar un aeroport de plecare și un aeroport de destinație. Fiecare traseu are un număr din șase cifre, inclusiv numere și litere din alfabetul latin. Pe baza listei de rute, se generează un program de zbor (sau zboruri). Programul indică ora programată de plecare și ora programată de sosire, precum și tipul de aeronavă care operează zborul. Atunci când zborul funcționează efectiv, este necesar să se țină cont Informații suplimentare, și anume: ora efectivă de plecare și ora efectivă de sosire, precum și starea zborului. Starea zborului poate lua un număr de valori: 14

16 Programat (posibilitatea de rezervare se deschide cu o luna inainte); La timp (înregistrarea se deschide cu o zi înainte); Întârziat (zborul întârziat); Plecat; A sosit (a sosit); Anulat. Acum să ne întoarcem la pasageri. Zborul începe cu rezervarea unui bilet. În prezent, este o practică comună emiterea de bilete electronice. Fiecare astfel de bilet are un număr unic format din 13 cifre. Mai multe bilete pot fi emise în cadrul unei singure proceduri de rezervare, dar fiecare astfel de procedură are un număr unic de rezervare din șase cifre (cifr), format din majuscule ale alfabetului latin și numere. În plus, pentru fiecare procedură de rezervare se înregistrează data rezervării și se calculează costul total al biletelor emise. Fiecare bilet, pe lângă numărul său de treisprezece cifre, conține identificatorul pasagerului, precum și numele și prenumele acestuia (în transcriere latină) și informațiile de contact. Numărul documentului de identificare al pasagerului este utilizat ca identificator al pasagerului. Desigur, un pasager își poate schimba documentul, și uneori chiar numele de familie și prenumele, în timpul scurs între rezervarea biletelor în zile diferite, așa că este imposibil să spunem cu siguranță că au fost emise anumite bilete pentru același pasager. În fiecare bilet electronic Mai mult de un zbor poate fi inclus. Experții numesc aceste segmente de înregistrări de zbor. Un exemplu de prezență a mai multor segmente este următorul: Krasnoyarsk Moscova, Moscova Anapa, Anapa Moscova, Moscova Krasnoyarsk. În același timp, este posibilă eliberarea mai multor bilete pentru diferiți pasageri în cadrul unei singure rezervări. Pentru fiecare zbor sunt indicate numărul zborului, aeroporturile de plecare și destinație, orele de plecare și de sosire, precum și costul zborului. În plus, este indicată așa-numita clasă de serviciu: economică, de afaceri etc. Când un pasager ajunge la aeroportul de plecare și face check-in pentru un bilet, se eliberează așa-numita carte de îmbarcare. Acest cupon este asociat unui bilet de avion: cuponul indică același număr pe care îl are și biletul electronic al acestui pasager. În plus, biletul indică numărul zborului și numărul locului din avion. Este indicat și numărul cărții de îmbarcare, un număr secvenţial atribuit în timpul procesului de check-in pentru biletele pentru un anumit zbor. Să vă reamintim că fiecare loc din cabina aeronavei corespunde unei anumite clase de servicii. Aceasta informatie luate în considerare la înregistrarea biletelor și la eliberarea cărților de îmbarcare. Dacă, de exemplu, un pasager a achiziționat un bilet de clasă economică, atunci cartea sa de îmbarcare va indica numărul locului în cabina clasei economice, dar nu și în cabina clasei business. Urmând descrierea dată domeniului subiectului, puteți proiecta o bază de date model destinată învățării limbajului SQL. Deoarece tutorialul nostru este destinat în primul rând învățării limbajului SQL și nu pentru a stăpâni arta proiectării bazelor de date, vom arăta doar diagrama 15

17 Rezervări Rezervări Aeroporturi Aeroporturi # book_ref * book_date * total_amount # airport_code * airport_name * oraș * longitudine * latitudine * fus orar Bilete Bilete # ticket_no * book_ref * passenger_id * passenger_name contact_data Ticket_flights Zboruri # ticket_no # flight_id * flight_id * priceid flightconditions * no flight_conditions * scheduled_departure * scheduled_arrival * departure_airport * arrival_airport * status * aircraft_code actual_departure actual_arrival Aeronave Aeronave # aircraft_code * model * gama Boarding_passes Boarding_passes Locuri Locuri # ticket_no # flight_id * boarding_no * seat_no # aircraft_code data highlighted the seat_no show the rate_code the seat_no date_no , precum și conexiunile și atributele acestora. Vom arăta tipuri specifice de date, chei primare și străine, precum și restricții impuse atributelor și tabelelor în capitolele următoare când ne uităm la comenzile SQL concepute pentru a crea fizic tabele în baza de date. Diagrama de mai sus poate fi găsită pe site-ul web Postgres Professional la adresele indicate la începutul acestei secțiuni. Întrebări și sarcini de testare 1. Ce grupuri de operatori se disting ca parte a limbajului SQL? 2. Dați o definiție informală a conceptelor de bază ale modelului de date relaționale: relație, tuplu, atribut. 3. De ce sunt necesare cheile externe în tabelele relaționale? 4. Ce este o cheie de candidat? 5.* Furnizați un exemplu de cheie candidat redundantă pentru unul dintre tabelele din baza de date a companiei aeriene și explicați de ce ar fi redundantă. 16

18 6.* Implementarea actuală a bazei de date privind transportul aerian presupune că aeronavele de același model pot avea doar un aspect de cabină. Să ne imaginăm că conducerea decide că este necesar să se țină cont de posibilitatea de a avea layout-uri diferite pentru fiecare model. Ce tabele vor trebui modificate în acest caz și cum? Va trebui să creez tabele suplimentare? 17

19 2 Crearea unui mediu de lucru Înainte de a începe să învățați direct limbajul SQL, trebuie să obțineți acces la serverul PostgreSQL. Acest lucru se poate face, de exemplu, într-un laborator de informatică sau prin contact server la distanta prin terminal. Cu toate acestea, puteți crea mediu de lucru pentru tine și pe cont propriu calculator local, setare versiunea completa SGBD PostgreSQL, adică programe server și client. În acest caz, veți avea mult mai multă putere de a configura și utiliza PostgreSQL. În partea finală a capitolului, vă vom arăta cum să implementați o bază de date de instruire pentru transportul aerian, plină cu date credibile pregătite special. 2.1 Instalarea SGBD Deoarece acest tutorial este destinat învățării limbajului SQL, și nu elementele de bază ale administrării SGBD PostgreSQL, ne vom limita la instrucțiuni scurte despre unde să găsim instrucțiuni de instalare. Trebuie să începeți prin a alege distribuția DBMS pe care doriți să o instalați. Puteți alege opțiunea originală PostgreSQL sau cea oferită de Postgres Professional. Se numește Postgres Pro și conține nu numai toate funcțiile și modulele incluse în distribuția standard, ci și dezvoltări suplimentare realizate de Postgres Professional. Aceste distribuții sunt la fel de potrivite pentru a învăța elementele de bază ale limbajului SQL. Cu toate acestea, documentația în limba rusă este inclusă numai cu PostgreSQL. După ce vă decideți asupra unei anumite distribuții DBMS, trebuie să selectați un sistem de operare. PostgreSQL acceptă multe sisteme, inclusiv versiuni diferite Linux, precum și Windows. Este recomandat să instalați cea mai recentă versiune stabilă a SGBD. Dacă decideți să utilizați distribuția originală PostgreSQL, atunci puteți găsi instrucțiuni pentru instalarea acesteia pe diferite sisteme de operare la următoarea adresă.Dacă ați ales distribuția PostgreSQL, atunci ar trebui să mergeți aici: cel mai recent. După instalarea atât PostgreSQL, cât și PostgreSQL în Mediul Windows vor trebui luate măsuri suplimentare pentru a se asigura că utilizarea alfabetului rus în terminalul interactiv psql nu cauzează probleme. Utilitarul psql este discutat în secțiunea următoare. În timpul procesului de instalare, va fi creat un cont de utilizator DBMS numit postgres. Nu este nevoie să creați conturi suplimentare pentru a studia acest manual. 18

20 După ce ați instalat una sau alta distribuție PostgreSQL, trebuie să învățați cum să porniți un server de baze de date, deoarece altfel este imposibil să lucrați cu datele. Cum se face acest lucru este descris în detaliu în documentația din secțiunea 18.3 „Pornirea serverului de baze de date”. Puteți găsi această secțiune la current/server-start.html. Când instalați un SGBD într-un mediu Windows, este creat un serviciu pentru pornire automată Serverul PostgreSQL la încărcarea sistemului de operare. După ce ați terminat de lucrat cu serverul, trebuie să îl opriți (opriți) corect. Procedura de rezolvare a unei astfel de situații este descrisă în documentația din secțiunea 18.5 „Oprirea serverului”. Puteți găsi această secțiune la postgresql/9.6/server-shutdown.html. 2.2 Programul psql terminal interactiv PostgreSQL Pentru a accesa serverul de baze de date, pachetul PostgreSQL include un terminal interactiv psql. Pentru a-l rula, trebuie să introduceți comanda psql Când rulați utilitarul psql într-un mediu Windows, literele alfabetului rus pot fi afișate incorect. Pentru a elimina acest lucru, va trebui să schimbați fontul pe Lucida Console în proprietățile ferestrei în care rulează psql și să utilizați comanda chcp pentru a modifica pagina de coduri pe CP1251: chcp 1251 În mediul utilitar psql, puteți introduce nu numai comenzi în limbaj SQL, ci și diverse comenzi de serviciu acceptate de utilitarul însuși. Pentru a obține ajutor rapid pentru toate comenzile de serviciu, introduceți \? Multe astfel de comenzi încep cu caractere \d. De exemplu, pentru a vizualiza o listă cu toate tabelele și vederile create în baza de date la care sunteți conectat în prezent, introduceți comanda \dt Dacă sunteți interesat de definiția (cu alte cuvinte, structura) unui anumit tabel de bază de date, pt. de exemplu, studenți, trebuie să introduceți comanda \d elevi Pentru a obține o listă cu toate comenzile SQL, trebuie să rulați comanda \h Pentru a afișa o descriere a unei anumite comenzi SQL, de exemplu, CREATE TABLE, trebuie să faceți acest lucru : \h CREAȚI TABELUL 19

21 Acest utilitar vă permite să reduceți cantitatea de introducere manuală prin completarea comenzii introduse folosind psql. De exemplu, când introduceți o comandă SQL, puteți utiliza tasta Tab pentru a completa cuvântul cheie al comenzii introdus sau numele tabelului bazei de date. De exemplu, când introduceți comanda CREATE TABLE..., puteți introduce caracterele „cr” și apăsați tasta Tab. psql va completa acest cuvânt pentru a „crea”. Puteți face același lucru cu cuvântul TABLE. Pentru a o introduce, trebuie doar să introduceți literele „ta” și să apăsați tasta Tab. Dacă introduceți prea puține litere pentru ca psql să identifice în mod unic cuvântul cheie, completarea nu va avea loc. Dar, în acest caz, puteți apăsa tasta Tab de două ori și puteți obține o listă cu toate Cuvinte cheie, începând cu combinația de litere pe care ați introdus-o. 2.3 Implementarea bazei de date de instruire După finalizarea instalării serverului de baze de date, putem trece direct la întrebarea cum să implementăm baza de date de instruire pentru transportul aerian de marfă pregătită de Postgres Professional pe clusterul dumneavoastră PostgreSQL. Site-ul companiei are o secțiune dedicată acestei baze de date, care poate fi găsită accesând link-ul.Este oferit în trei versiuni, diferind doar prin cantitatea de date: versiunea cea mai compactă conține date pentru o lună, versiunea de dimensiuni medii acoperă o perioadă de trei luni, iar versiunea cea mai completă include date pentru un an întreg. Toate datele au fost generate folosind algoritmi speciali pentru a asigura „plauzibilitatea” acestora. Vă recomandăm să începeți cu versiunea compactă a bazei de date de transport aerian și, după ce ați câștigat ceva experiență în scrierea interogărilor SQL, veți instala versiunea completă și, odată cu ea, veți putea „simți” mai bine diferitele complexități ale lucrului cu mari dimensiuni. volumele de date, de exemplu, evaluează impactul indicilor asupra accesului rapid la date. Primul pas pentru implementarea unei baze de date este descărcarea formularului ei arhivat. copie de rezervă urmați linkul zip. Apoi trebuie să extrageți fișierul din arhivă: unzip demo_small.zip Fișierul extras se numește demo_small.sql. Vom crea acum o bază de date numită demo în clusterul dvs. PostgreSQL. Cea mai scurtă versiune a comenzii va fi aceasta: psql -f demo_small.sql -U postgres Dacă doriți să redirecționați ieșirea mesajelor pe care SGBD-ul le generează în timpul funcționării de pe ecran către fișiere, atunci puteți face acest lucru: psql -f demo_small .sql -U postgres > demo.log 2>demo.err Puteți separa ieșirea standard și ieșirea de eroare standard. Mesajele obișnuite vor fi redirecționate către fișierul demo.log, iar mesajele de eroare către fișierul demo.err. Vă rugăm să rețineți că între numărul 2 care indică descriptorul dispozitiv standard ieșirea mesajului de eroare și semnul „>” care indică redirecționarea ieșirii nu trebuie să conțină un spațiu. 20

22 Dacă este mai convenabil pentru dvs. să colectați toate mesajele într-un singur fișier comun, atunci trebuie să faceți acest lucru: psql -f demo_small.sql -U postgres > demo.log 2>&1 Vă rugăm să rețineți că întreaga expresie 2>&1 la sfarsitul comenzii se scrie fara spatii. Acesta spune sistemului de operare că mesajele de eroare trebuie trimise în același loc în care sunt afișate mesajele normale. Dacă fișierul nostru SQL era foarte mare, atunci am putea rula comanda în fundal punând la sfârșit Linie de comanda simbolul „&” și monitorizați progresul procesului în timp real folosind comanda coadă. psql -f demo_small.sql -U postgres > demo.log 2>&1 & tail -f demo.log Selectați una dintre opțiunile de comandă sugerate pentru a implementa baza de date și a rula comanda. Totul este gata! Vă puteți conecta la noua bază de date: psql -d demo -U postgres Întrebări și sarcini de testare 1. Finalizați procedura de instalare a SGBD PostgreSQL în mediul sistemului de operare ales. 2. Familiarizați-vă cu utilitarul psql folosind ajutorul încorporat, precum și folosirea ajutorului apelat folosind comanda psql --help 3. În plus față de utilitarul psql, există și alte programe universale pentru a lucra cu un server de baze de date PostgreSQL, de exemplu, pgadmin. Este un utilitar GUI puternic. Instalați singur programul pgadmin și învățați tehnicile de bază pentru a lucra cu el. 4. Implementați baza de date exemplu. Încercați să vă conectați la el folosind utilitarul psql. Pentru a ieși din utilitar, utilizați comanda \q. 21

23 3 Operații de bază cu tabele Limbajul SQL este foarte divers, el include o serie de comenzi, care, la rândul lor, au uneori mulți parametri și cuvinte cheie. Dar vom începe cu o scurtă prezentare a principalelor caracteristici ale limbajului SQL. În acest capitol, veți învăța cum să introduceți date într-o bază de date, să aflați modalitățile de bază de extragere a informațiilor din baza de date, adică eșantionarea, și, de asemenea, să aflați cum puteți face modificări la informațiile stocate în baza de date și puteți șterge datele care sunt nu mai este necesar.necesar. În practica studiului limbi straine există o tradiție bună. Deja în prima lecție, elevul învață câteva structuri gramaticale de bază și cuvinte care îi permit să spună câteva dintre cele mai simple, dar totuși practic utile fraze. Vom urma această tradiție. ÎN aceasta sectiune Acest tutorial vă va prezenta comenzile SQL de bază care vă vor permite să efectuați operațiuni de bază. Veți afla comenzi mai complexe (și interesante) în capitolele următoare. Să spunem câteva cuvinte despre abordarea noastră față de muncă. În principiu, există două moduri posibile de a organiza munca unui student. Prima metodă este aceasta: studentul folosește o bază de date care conține deja toate tabelele necesare și alte obiecte de bază de date pregătite în prealabil de autorul manualului sau de un alt specialist calificat. În același timp, un anumit set de date necesare a fost deja introdus în tabele, astfel încât să puteți trece imediat la executarea interogărilor împotriva acestor tabele. Metoda descrisă pare foarte atractivă deoarece necesită mai puțin efort în stadiul inițial de stăpânire a limbajului SQL. Cu toate acestea, în opinia noastră, o altă metodă este mai corectă. Probabil că necesită mai multă muncă, dar atunci când îl utilizați, veți obține, după cum se spune, o mai bună înțelegere a procesului de creare a tabelelor și de introducere a înregistrărilor în aceste tabele. Și prin rularea diferitelor interogări la baza de date, vă va fi mai ușor să evaluați corectitudinea rezultatului interogării, deoarece ați introdus singur toate datele și, prin urmare, puteți ghici în mod rezonabil ce rezultate vă așteptați să vedeți pe ecran. Desigur, prima metodă poate fi foarte utilă atunci când învățați caracteristici mai complexe, avansate ale limbajului SQL, care sunt greu de înțeles fără a utiliza cantități mari de date și este irațional să introduceți manual cantități mari de date în baza de date. Ar fi mult mai rațional să le creăm automat folosind software. În capitolul 1, am descris tematica, așa că acum putem începe să creăm direct tabele în baza de date. Pentru a efectua toate comenzile și operațiunile ulterioare, vom folosi utilitarul psql, care este inclus în livrarea standard a SGBD-ului PostgreSQL. Baza de date demonstrativă ar trebui să fie deja implementată pe computerul dvs. Procesul de creare a acestuia este descris în Capitolul 2. Acum rulați utilitarul psql și conectați-vă la această bază de date cu cont utilizator postgres: psql -d demo --U postgres Pentru a crea tabele în SQL, utilizați comanda CREATE TABLE. Sintaxa sa completă este prezentată în documentația PostgreSQL, dar sintaxa simplificată este: 22


Compania Profesională Postgres E. P. Morgunov PostgreSQL. Bazele limbajului SQL Manual Sankt Petersburg „BHV-Petersburg” 2018 UDC 004.655 BBK 32.973.26-018.2 M79 Morgunov, E. P. M79 PostgreSQL. Bazele

Limbajul SQL Cursul 6 Indici E. P. Morgunov Sibirsky Universitate de statȘtiință și tehnologie numită după academicianul M. F. Reshetnev, Institutul de Informatică și Telecomunicații din Krasnoyarsk [email protected]

Bratchikov I.L. 41. Bazele proiectării bazelor de date. Metode pentru construirea unui SGBD. SQL, exemple de implementare. Fundamentele bazelor de date moderne. 1. Definiții de bază. Terminologie. În literatură puteți găsi

Tema 10. Fundamentele tehnologiei bazelor de date Tehnologia bazelor de date este una dintre realizările cheie ale informaticii, folosită pentru a construi sisteme informatice informatice și aplicații care implementează informații.

CONCEPTE DE BAZĂ ALE BAZELE DE DATE 1. Selectați procedura corectă la proiectarea unei baze de date a) Rezolvarea problemei transferului de date b) Analiza domeniului subiectului, ținând cont de cerințele utilizatorilor finali c)

Introducere Această carte este destinată dezvoltatorilor care utilizează Oracle ca sistem de gestionare a bazelor de date (DBMS). Prin urmare, această carte nu dedică mult spațiu abordării problemelor

Opțiunea 1 Alegeți răspunsul corect. Există un singur răspuns corect posibil. 1. Un sistem informaţional este a) Orice sistem de procesare a informaţiilor b) Sistem de prelucrare informații text

Limbajul SQL Cursul 3 Bazele limbajului de definire a datelor E. P. Morgunov Universitatea de Stat Siberian de Știință și Tehnologie numită după academicianul M. F. Reshetnev Krasnoyarsk Institutul de Informatică și Telecomunicații

Limbajul SQL Cursul 5 Schimbarea datelor E. P. Morgunov Universitatea de Stat Siberian de Știință și Tehnologie numită după Academicianul M. F. Reshetnev Krasnoyarsk Institutul de Informatică și Telecomunicații [email protected]

➀ Sisteme informatice și bănci de date. Cea mai importantă condiție pentru asigurarea funcționării eficiente a oricărei organizații este prezența unui sistem informațional dezvoltat. Un sistem informatic este un sistem

Capitolul 1. Introducere Cum funcționează baza de date Microsoft Access Proiectarea unei structuri de date Etape de lucru cu o bază de date Să începem Interfața utilizator Access 2007 Configurarea elementelor

Capitolul 3. Instalarea și lansarea versiunii multi-utilizator Cerințe și condiții...1 Procedura de instalare a SbiS++ în rețea...2 Instalarea și configurarea serverului și clientului Pervasive.SQL...3 Instalarea programului...4 Pregătirea

BANCA DE TESTARE SARCINI Disciplina academica Directie Nivel de pregatire Departamentul B1.B.12 Managementul datelor 03/09/02 Sisteme si tehnologii informatice licenta in Metode si mijloace de masurare si automatizare

Baze de date Dezvoltarea tehnologiei informatice s-a realizat în două direcţii principale: utilizarea tehnologiei informatice pentru efectuarea calculelor numerice; utilizarea tehnologiei informatice

Universitatea Tehnică de Stat din Moscova numită după filiala N. E. Bauman Kaluga Yu. E. Gagarin, S. V. Ponomarev APLICAREA LIMBAJULUI SQL ÎN ACCESUL MS Manual educațional și metodologic UDC 681.3.06 BBK 32.973

1. Informații și date 2. Concepte de bază ale sistemelor de baze de date Informații sisteme informatice cu bazele de date acestea sunt sisteme informatice, matematice, software, limbaj, organizatorice

PDM PAS Versiunea SUITE 5.0 Instrucțiuni de instalare pentru PDM STEP Suite Instrucțiuni pentru programatorul de sistem. Partea 1 Centrul de cercetare JSC „Logistică aplicată” 2019 PDM STEP Suite v.5.0. Instrucțiuni pentru programatorul de sistem

1 din 6 Curs 1. Arhitectura sistemului de baze de date. Funcțiile unui administrator de sistem de baze de date într-un sistem de informații corporative. Obiecte baze de date. 1.1. Arhitectura sistemului de baze de date ANSI/SPARC...1

CUPRINS INTRODUCERE... 3 1 CERCETAREA DOMENIULUI SUBIECTULUI ȘI EXPUNEREA PROBLEMEI... 4 2 CONSTRUIREA UNUI MODEL INFOLOGIC... 5 3 PROIECTAREA BAZEI DE DATE DATALOGICE... 6 3.1 Selectarea unui sistem de control

ÎN conditii moderne Când se automatizează întreprinderile, trebuie să se confrunte cu cerințe diferite și adesea diametral opuse pentru contabilizarea acelorași secțiuni ale contabilității. Conform documentatiei

Disciplina academică „Baze de date și managementul acestora” pentru studenții specialității Informatică aplicată (diplomă de licență) 080800.62 Curs 15 MODELE DE ORGANIZARE A ACCESULUI LA BAZELE DE DATE Întrebări educaționale: 1. Arhitectură

Limbajul SQL Cursul 7 Tranzacții E. P. Morgunov Universitatea de Stat Siberian de Știință și Tehnologie numită după Academicianul M. F. Reshetnev Krasnoyarsk Institutul de Informatică și Telecomunicații [email protected]

Tehnologii informatice computerizate Modulul 13. caracteristici generale Accesați DBMS 1 OBIECTIVELE MODULULUI După studierea modulului veţi putea: să vorbiţi despre funcţionalitate Acces DBMS; cunoașteți caracteristicile

Sistem electronic de gestionare a documentelor A r h i v a r u s Manual de instalare Moscova, 2008 2 REZUMAT Acest document oferă o descriere a pachetului de livrare al produsului software „EUFRAT-Document Flow”

BAZELE DE DATE (DB). SISTEME DE CONTROL OBD Dispoziții generale Scopul oricărui sistem informațional este de a prelucra date despre obiecte din lumea reală. În sensul larg al cuvântului, o bază de date este o colecție de informații despre

Introducere în baze de date. Introducere în SQL. Sumy Educational Center Software Quality Assurance (QA) Netcracker 2016 1 Veți afla despre următoarele Ce este o bază de date Clasificarea bazelor de date DBMS Clienți DBMS

1.1. Bazele lucrului cu baze de date 1.1.1. Baze de date și sisteme de gestionare a bazelor de date. Modele de date O bază de date (DB) este o colecție numită de date structurate legate de un anumit

Se pare că a fost destul de recent, dar ce schimbări semnificative au avut loc de atunci! În timp ce autorul se pregătea pentru publicarea cărții Professional SQL Server 7.0 Programming la începutul anului 1999

Introducere în teoria bazelor de date Cursul 1 Schema cursului Concepte de bază Organizarea datelor într-o bază de date Tipuri de modele de date Arhitectura bazelor de date Clasificarea bazelor de date Server 2008. Curs 1 2 Concepte de bază Server 2008. Prelegere

Anexa 4 Subsistemul de management al proceselor și calculelor CUPRINS 1. Informații generale... 2 2. Modelarea stărilor și proceselor de lucru... 2 2.1. Gestionarea listei grupurilor de stat... 2 2.2. Creare

Ghid de instalare Softacom CRM Versiunea 2.1. 1 „Ghid de instalare Softacom CRM”. Conține o descriere a procesului de instalare a sistemului. Cuprins 1 INTRODUCERE... 3 1.1 Informații generale despre sistem... 3 1.2 Caracteristici

Lucrare de laborator 4 „Crearea de conexiuni între tabele” Scopul lucrării: studierea tehnologiei de creare a structurii unei baze de date relaționale în Microsoft Office Acces 2007 1. Scurtă informare teoretică Word

Backup logică Subiecte Backup logică și fizică Copierea tabelelor individuale Copiere de rezervă și restaurare a bazelor de date și a clusterelor 2 Tipuri de backup Copiere de rezervă logică

ACCES MICROSOFT: RELATII, CÂMPURI CALCULATE, CREAREA UNUI BUTON DB FORM I. RELATII TABELE Bazele de date moderne constau de obicei din multe tabele interconectate. Unul dintre obiectivele creării unei structuri bune

UNIVERSITATEA NAȚIONALĂ DE AVIATIE Departamentul de Informatică Aplicată Cursuri Tema: Microsoft Access DBMS Crearea și prelucrarea bazelor de date Scopul lucrării: stăpânirea teoretică și practică a tehnicilor de lucru de bază

Tranzacții și acces concurent: comparație a implementărilor în PostgreSQL și Oracle Egor Rogov, Postgres Professional De ce toate acestea? rezultatul cererii De ce toate acestea? rezultatul cererii Tranzacții Atomicity all

@DB, DBMS 1. Structura de date, care se caracterizează prin subordonarea obiectelor de nivel inferior față de obiectele de nivel superior, se numește A. tabulară B. relațională *C. ierarhic D. reţea 2. Distinctiv

Ghid de instalare VOGBIT 2010 Cuprins Introducere... 4 Cerințe pentru software și hardware... 5 Secvența de instalare... 6 Instalarea programului... 7 Solicitarea și obținerea unei licențe...

Etapele dezvoltării bazei de date De regulă, neprofesioniștii lucrează cu baze de date, astfel încât se pot formula următoarele cerințe pentru baza de date. Dezvoltatorii, atunci când creează o bază de date, ar trebui să se concentreze pe acestea

Sistemul de gestionare a bazelor de date Accesați datele Interpretat de Nazlygul Niyazovna Chibinova, student al Facultății de Limbi Străine de la Institutul Yelabuga din Kazan (Privozhsky) Federal University. Științific

Informatica Cursul 5 MS Access Sisteme informatice Aplicatii pentru stocarea, completarea, editarea si utilizarea unor cantitati mari de date In cel mai simplu caz, folosirea inseamna acces

Cuprins Prefaţă...3 Partea I. Baze de date, SGBD şi modele de date Capitolul 1. Scopul tehnologiei bazelor de date. Funcții și componente principale ale sistemelor de gestionare a bazelor de date.................................. ..........

Laborator de monitorizare și automatizare a procesului de învățământ. Ghidul Administratorului pentru Site-ul de Asistență pentru Procesul Educațional Versiunea 3 din 18/12/15. Korotkov D.S., Zhuchok I.O. Permite dezactivarea

Capitolul 6 Teoria bazelor de date 6.1. Concepte generale 6.2. Modele de date 6.3. Baze de date relaționale 6.4. Modele și baze de date post-relaționale 6.5. Proiectare baze de date Sisteme informatice moderne,

Lucrări de laborator 9 Investigarea capacităților Microsoft Access 2007 pentru generarea de interogări cu folosind SQL. Scop: 1. Aflați cum să formați interogări folosind SQL în Microsoft Access

Complex pentru intocmirea documentelor informative aeronautice Crearea unei baze de date aeronautice Prevederi generale Principala sursa de informatii aeronautice a complexului este baza de date relationala de informatii aeronautice

1. Mijloace estimate de control curent. Întrebări transmise pentru sondaj (pentru discuție) la secțiunile disciplinei academice: Secțiunea 1. Introducere în băncile de date 1. Conceptul de bancă de date (DB). Componentele BnD. 1.1. Informațional

Cursul 2 1 Conform dicționarului: Arhitecturi ale sistemelor informaționale Un sistem informațional este o colecție ordonată organizațional de documente (matrice de documente) și tehnologii informaționale, inclusiv utilizarea

J. Bowman, S. Emerson, M. Darnovsky GHID PRACTIC PENTRU SQL Această carte vă va ajuta chiar și atunci când cel mai bun manual de utilizare este inutil. Subiectele care sunt adesea ratate sunt tratate aici.

Sistem electronic de gestionare a documentelor A r h i v a r i s Manual de instalare Moscova, 2009 2 REZUMAT Acest document oferă o descriere a pachetului de livrare al produsului software „EUFRAT-Document Flow”.

Acțiune