Sunteți pe pagina 1din 24

Baze de date

Cursul 3 - SQL
S.l.dr.ing Radu Parpala
Cuprins
01 SQL
Introducere în limbajul de interogare SQL.

02 Obiecte în baza de date


Tablespace, Tabele, vederi,

03 DDL
Comenzi SQL – DDL (Data Definition Language)

04 DCL
Comenzi SQL – DCL (Data Control Language)
SQL
SQL – Structured Query Language – este un limbaj de interogare structurat utilizat pentru
manipularea datelor în sistemele de gestiune a bazelor de date relaționale. Este bazat pe algebra
relațională, este primul limbaj care aplica principiile lui Edgar Codd.
Limbajul SQL este utilizat de majoritatea sistemelor de baze de date relaționale, deși este un limbaj
standardizat exista mai multe versiuni (dialecte) disponibile.

Instrucțiunile limbajului SQL sunt împărțite în 3 categorii distincte:

DDL – Data Definition Language: Contine comenzi care permit modificarea obiectelor din
baza de date
DCL – Data Control Language: Conține un set de comenzi pentru controlul accesului la baza
de date
DML – Data Manipulation Language: Conține comenzi pentru manipularea datelor
Limbajul de interogare SQL
Prima versiune comercială ANSI

A apărut prima versiune comercială a limbajului SQL a fost standardizat de


SQL – dezvoltată de Larry Ellison care a fondat către American National
Relational Software Incorporated - ORACLE Standard Institute (ANSI)

1979 1986

1970 1983 1987

Primii pași DB2 ISO


SQL a fost dezvoltat inițial în cadrul A apărut DB2 succesorul A fost inclus în standardele
companiei IBM de către cercetătorii sistemelor bazate pe System institutului International
Donald D. Chamberil și Raymond F. R: System/38 și SQL/DB Organization for
Beyonce pe baza modelului relațional Standardisation
dezvoltat de Edgar F Codd. Denumirea
inițială a fost SEQUEL
DDL – Data Definition Language
CREATE – Permite crearea obiectelor în baza de date
• Scheme (schemas)
• Tabele (table)
• Spațiu tabele (tablespace)
• Vederi (views)
• Funcții (user defined function)
• Indexi (Indexes)
• Proceduri stocate (Stored procedures)
• Declansatori (triggers)

DROP – Permite stergerea obiectelor din baza de date

ALTER – Permite modificarea unor obiecte din baza de date ( Tabele, vederi, spații tabel)

RENAME – Permite modificarea denumirii obiectelor din baza de date


Obiecte în baza de date

Din punctul de vedere al utilizatorului final o bază de date reprezintă o


colecție de tabele. Pentru un utilizator avansat o bază de date conține o
colecție de obiecte cu rol în stocarea și gestionarea informațiilor.
• Tables
• Views
• Indexes
• Schemas
• Triggers
• Stored procedures
• Buffer pools
• Tablespaces
O BIECTE
101001101001000010101
0011110111011011011010
101000011100101011001
010100111010100010101
0001011010110110110100

Î N B A Z A 010101110001010100010
1000101110101100010011
010011010010000101010

DE DATE 0111101110110110110101
010000111001010110010
101001110101000101010
Spațiu tabel 0010110101101101101001

Index
Tabel
Tabel
Vedere

Tabel
Vedere

Container Container Container


BIG DATA
Obiecte în baza de date - Schema
• Schemele reprezintă o modalitate logică de a
grupa obiectele în baza de date
• Schema reprezintă prima parte din denumirea
unui obiect în baza de date
(DB2ADMIN.MATERIE)
• Folosind scheme diferite este posibil sa definim
două obiecte cu același nume în baza de date
• Schemele sunt folosite pentru a restrictiona sau a
permite accesul la obiectele din baza de date
• In IBM DB2 există o serie de scheme predefinite,
create în momentul creări bazei de date ce conțin
obiectele necesare pentru gestionarea bazei de
date.
Obiecte în baza de date - Tabelul
• Tabelele sunt obiectele din baza de date care conțin informații.
• Datele în tabele sunt structurate pe rânduri și coloane, un tabel conține
informații despre o entitate fizică sau logică. Fiecare rând dintr-un tabel
reprezintă o înregistrare, fiecare înregistrare constă din unul sau mai multe
câmpuri.
• Tabele pot fi:
• Permanente
• Temporare
SYSTEM CATALOG TABLES
• SYSCAT.TABLES

• SYSCAT.COLUMNS

• SYSCAT.INDEXES
Obiecte în baza de date - Vederea
• Vederea reprezintă un tabel virtual bazat pe o interogare SQL.
• Vederile nu stochează informații în baza de date.
• O vedere poate include una sau mai multe coloane din unul sau mai multe
tabele salvate în baza de date.
• Vederile pot fi utilizate pentru a restricționa accesul la informațiile stocate în
tabele.
• O vedere este bazată pe o instrucțiune SELECT care este executată de
fiecare dată când vederea este interogată.
Obiecte în baza de date - Indexul
• Un index este o structură de căutare rapidă în baza de date, este folosită automat de sistemul de
gestionare a bazelor de date.

• Sistemul de management al bazelor de date creează automat un index pentru cheia primară din fiecare
tabel.

• Indecșii sunt necesari atunci când se realizează frecvent anumite căutări în bazele de date.

• Orice modificare a unui tabel presupune modificarea indecșilor definiți pe baza acelui tabel.

• Este recomandată folosirea indecșilor pentru coloanele utilizate frecvent în interogări, pentru coloanele
care conțin numeroase valori NULL, pentru tabelele cu foarte multe înregistrări.
SQL – DDL - CREATE
Crearea unei baze de date noi

• CREATE DATABASE
database_name
[BUFFERPOOL bpname]
[CCSID ASCII/EBCDIC/UNICODE]

• CREATE DATABASE SAMPLE;


SQL – DDL - CREATE

• Verificarea schemei curente:


values (current schema);

• Crearea unei scheme noi:


create schema hr_dep;

• Stergerea unei scheme:


drop schema hr_dep;
SQL – DDL - CREATE
CREATE TABLE nume tabel (
Nume_coloană DATA_TYPE [Optiuni coloană]
[,nume_coloană DATA_TYPE Optiuni coloană]
[,definire constrângere] );

CREATE TABLE angajat (legitimatie INTEGER, nume VARCHAR (16), prenume VARCHAR(25), department INTEGER);

Optiuni coloană:
NOT NULL
DEFINIȚIE CONSTRÂNGERE
DEFINIȚIE SECVENȚĂ DE GENERARE

DEFINIȚIE Constrângere
PRIMARY KEY
UNIQUE
REFERENCES – FOREIGN KEY
CHECK
SQL – DDL - CREATE
CREATE TABLE angajat (
nr_leg Integer NOT NULL PRIMARY KEY,
prenume varchar (16) NOT NULL,
nume varchar (25),
email varchar(20),
department char(3) DEFAULT 'A00'
REFERENCES department(dep_id) ,
CHECK (email like '%_@%_.%_’));

CREATE TABLE angajat (


nr_leg integer NOT NULL PRIMARY KEY,
prenume varchar (16),
nume varchar(25),
department integer REFERENCES department(dep_id) on UPDATE NO ACTION ON DELETE NO
ACTION ENFORCED ENABE QUERRY OPTIMISATION)
SQL – DDL - CREATE
Definire secvență de generare:

DEFAULT value

GENERATED ALWAYS / BY DEFAULT as IDENTITY

GENERATED ALWAYS / BY DEFAULT FOR EACH ROW ON UPDATE AS ROW CHANGE TIMESTAMP

GENERATED ALWAYS AS (NULL/Constant/Value)

CREATE TABLE departament (


id_departament integer NOT NULL generated always as identity (START with 10 increment by 10),
nume varchar(30) not null ,
manager integer,
PRIMARY KEY (id_departament), FOREIGN KEY (manager) references manager (id_manager));
SQL – DDL - CREATE
CREATE TABLE angajat2 AS (
SELECT nr_legitimatie, prenume, nume
FROM angajat
WHERE departament = 'A00') WITH NO DATA;

CREATE TABLE angajat2 LIKE angajat


SQL – DDL - CREATE

create view emp_persdata as select create view emp_RD as


first_name, Last_name, email, phone_number select first_name, last_name, job_id, salary
from employee; from employee where department_Id = 'RD‘;
SQL – DDL - CREATE

• Create index
create index radu.empno on radu.empmdc (empno asc);

• Drop index
drop index radu.empno
SQL – DDL – ALTER
ADD COLUMN
alter table department add column locatie varchar(40) default 'iasi’;

ADD CONSTRAINT
alter table angajati add constraint pk_ang primary key (id_angajat);

RENAME COLUMN
alter table department rename column locatie to addresa;

DROP COLUMN
alter table department drop column adresa;
SQL – DDL – ALTER
DROP CONSTRAINT
alter table angajati drop constraint pk_ang;

SET NOT NULL


alter table department alter column dep_id set not null
alter table department alter column dep_id drop not null;

SET DATA TYPE


alter table department alter column dep_id set data type char(3);
SQL – DDL – GRANT
GRANT ALL [PRIVILEGES]/ALTER/DELETE/INSERT/SELECT/UPDATE(column_list)/TRIGGER
ON [TABLE] nume_tabel/nume_vedere
TO utilizator [WITH GRANT OPTION]

GRANT SELECT ON angajat TO student;

GRANT UPDATE ON TABLE radu.ord TO USER db2admin;

GRANT ALL ON TABLE Departamente TO utilizator, programator WITH GRANT OPTION;

GRANT UPDATE (nr_dep, denumire) ON TABLE departament TO bogdan


SQL – DDL – REVOKE
REVOKE authorization
FROM nume_utilizator
[BY nume_utilizator]
[INCLUDING DEPENDENT PRIVILEGES/
NOT INCLUDING DEPENDENT PRIVILEGES]
[RESTRICT]

REVOKE INDEX, INSERT, SELECT ON TABLE RADU.ORG


FROM USER DB2ADMIN;

S-ar putea să vă placă și