SQL - Cap 2 New

Published on January 2017 | Categories: Documents | Downloads: 45 | Comments: 0 | Views: 285
of 26
Download PDF   Embed   Report

Comments

Content

Cap 2.
Instructiuni SQL de administrare a structurii bazelor de date

Subseturi de instructiuni:
DDL Data Definition Language - configurare
tabele)

infrastructura (BD,

DML Data Manipulation Language - utilizarea informatiilor din BD
DCL Data Control Language - accesibilitate,

InfoAcademy

securitate

2

Data Definition Language
Operatii cu:
A -

Baze de date (BD)

B -

Tabele

InfoAcademy

3

A. Operatii cu BD:
1. Crearea de BD
CREATE DATABASE

nume_BD;

sau
CREATE SCHEMA

nume_BD;

CREATE DATABASE IF NOT EXISTS magazin
CHARACTER SET latin1
COLLATE latin1_general_ci;

InfoAcademy

4

2. Stabilirea BD curente (de lucru)
SELECT * FROM

magazin.useri;

sau 
USE magazin;
SELECT * FROM useri;
- toate referintele ulterioare la nume de tabele, daca nu contin
numele bazei de date vor fi considerate ca apartin acestei baze de
date;
- unele instructiuni opereaza automat pe aceasta baza de date.
Exemplu:
SHOW TABLES; - va afisa
tabelele bazei de date curente
InfoAcademy

5

3. Stergerea de BD
DROP DATABASE IF EXISTS magazin;
ireversibila

- operatie

DROP SCHEMA IF EXISTS magazin;

InfoAcademy

6

4. Vizualizarea BD existente  
SHOW DATABASES; 
SHOW DATABASES LIKE m%;
- returneaza toate BD care incep cu m;
- % inlocuieste zero sau mai multe caractere ;
- “_” inlocuieste un singur caracter. Ex: magazi_.
5. Vizualizarea parametrilor unei BD
SHOW CREATE DATABASE magazin;

InfoAcademy

7

6. Modificarea parametrilor unei BD
ALTER DATABASE magazin CHARACTER SET utf8;
ALTER DATABASE magazin COLLATE utf8_romanian_ci;
ALTER DATABASE magazin CHARACTER SET utf8 COLLATE
utf8_romanian_ci.

InfoAcademy

8

RECAPITULARE
-

Crearea BD;
Utilizarea;
Adresa absoluta, adresa relativa;
Modificarea parametrilor BD;
Stergerea BD;
Vizualizarea listei cu BD existente pe server;
Vizualizarea parametrilor unei BD.
Exercitiul 2.01

InfoAcademy

9

B.

Operatii cu tabele

Notiuni preliminare:
Ce presupune crearea unei tabele
-

numele tabelei;
formatul de stocare - storage engine;
definirea coloanelor;
definirea indecsilor (optional).

InfoAcademy

10

Storage engine 
Se refera la:
- modalitatea de stocare a datelor (HDD / RAM);
- facilitatile oferite TR / RI;
- performante;
Sunt utilizate frecvent in MySQL:
- InnoDB(default)
mare
- MyISAM
- MEMORY

RI / TR HDD viteza mica, siguranta
HDD viteza mica, siguranta mare
RAM viteza mare, siguranta mica

SHOW ENGINES;

- lista cu storage engine acceptate
InfoAcademy

11

Tipuri de date MySQL (introducere) 
- Numerice
- intregi
- TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT
- in virgula fixa
- DECIMAL
- in virgula mobila - FLOAT si DOUBLE
- Data/timp

- DATE, TIME, DATETIME, YEAR si TIMESTAMP

- Sir de octeţi - BINARY, VARBINARY, TINYBLOB, BLOB,
MEDIUMBLOB si LONGBLOB 
- Sir de caractere - CHAR, VARCHAR, TINYTEXT, TEXT,
MEDIUMTEXT si LONGTEXT 
InfoAcademy

12

Definitii de coloane
- numele coloanei - regulile enunţate la capitolul privind
denumirea;
- t ipul de date al coloanei - unul dintre tipurile de date
enumerate anterior;
- eventuale detalii suplimentare - asociate tipului de date al
coloanei (ex: număr de zecimale pentru DECIMAL, lungime maxima
pentru VARCHAR, valori posibile pentru ENUM/SET etc.);
-eventuali modificatori ai coloanei - ex: NULL, DEFAULT,
UNSIGNED;
NULL - indica absenta unei valori, nu reprezinta valoare propriu
InfoAcademy
13
zisa.

Clauza DEFAULT
- stabilita explicit
Ex: Culoare VARCHAR(50) NOT NULL DEFAULT 'roşu'
- stabilita automat, de către server, atunci cand in definiţia
coloanei nu este prezenta clauza DEFAULT. Daca definiţia
coloanei permite NULL, valoarea implicita va fi automat NULL;
- absenta - in modul non-strict, serverul va insera automat o
valoare din oficiu pe acea coloana, aleasa in funcţie de tipul
de date al coloanei (coloanele de tip numeric vor primi
valoarea zero, cele de tip sir de caractere - şirul vid "", cele
de tip ENUM prima valoare din mulţimea de valori permise
etc). In modul strict va fi generata o eroare.
InfoAcademy

14

1. Crearea de tabele
I. - specificând explicit proprietăţile tabelei si lista definiţiilor de
coloane;
II. - copiind structura unei tabele deja existente;
III - pornind de la rezultatul unei interogări. 
I. CREATE TABLE nume_tabela(definitie_coloana_l,
definitie_coloana2,...)
CREATE TABLE Magazie(
Produs VARCHAR(50),
Categorie VARCHAR(20),
U/M VARCHAR(10),
Pret DECIMAL (5,2)
)
InfoAcademy
ENGINE InnoDB;

15

II. CREATE TABLE tabela_noua LIKE nume_tabela_veche
 
CREATE TABLE Depozit_Buc LIKE Magazie;
Sunt copiate structura si indecsii tabelei, NU si cheile externe si
inregistrarile 
III. CREATE TABLE nume_tabela SELECT coloane FR0M alte_tabele
CREATE TABLE Lactate SELECT produs, U/M, pret FROM magazie
WHERE categorie='lactate'
Poate extrage coloane si inregistrari din mai multe tabele, nu
sunt copiaţi indecşii si alti parametri ai tabelei.
InfoAcademy
In toate situatiile este recomandabil
sa folosim clauza:

IF 16
NOT

Crearea unei tabele de tip TEMPORARY
La crearea unei tabele se poate specifica clauza
TEMPORARY.
Rezultatul este crearea unei tabele ce diferă de una
obişnuita prin următoarele caracteristici principale:
-exista atâta timp cat conexiunea clientului care a creat-o
este inca activa. Serverul va şterge automat tabela la
inchiderea conexiunii;
- este vizibila numai pentru clientul care a creat-o. Mai
mulţi clienţi pot crea tabele temporare cu nume identice;
InfoAcademy

17

Crearea unei tabele de tip TEMPORARY
(continuare)
CREATE TEMPORARY TABLE produse1 (Nume
VARCHAR(100), Pret INT);
CREATE TEMPORARY TABLE produse2 like produse1;
CREATE TEMPORARY TABLE produse3 SELECT * FROM
produse1;
O tabela temporara poate primi acelaşi nume cu una
obişnuita deja existent. In acest caz, cea existenta va fi
„mascata", utilizatorul nemaiavand acces la ea pana cand
cea temporara dispare. O eventuala instrucţiune DROP
TABLE va acţiona in astfel de cazuri asupra tabelei
InfoAcademy
18
temporare, neafectand-o pe cea persistenta.

Vizualizarea listei de tabele: 
SHOW TABLES;
SHOW TABLES FROM magazin;
SHOW TABLES FROM magazin LIKE '%user%';
Exercitiul 2.04

InfoAcademy

19

Vizualizarea caracteristicilor tabelei:
Exista diferite instrucţiuni ce pot fi folosite pentru a determina
structura si caracteristicile unei tabele:
SHOW TABLE STATUS. Afişează informaţii despre tabelele nontemporare din baza de date curenta. Cu clauza suplimentara LIKE se
pot filtra numele tabelelor listate.
DESCRIBE NumeTabela sau SHOW COLUMNS FROM
NumeTabela. Instrucţiunea afişează lista coloanelor tabelei
impreuna cu caracteristicile lor (nume, tip de date, indecşi,
acceptare NULL, valoare default).
SHOW CREATE TABLE NumeTabela. Afişează instrucţiunea
exacta ce poate fi folosita pentru a crea o tabela identica cu cea
curenta.
InfoAcademy

20

2. Stergerea sau golirea unei tabele 
DROP TABLE IF EXISTS produse;
DELETE FROM produse;
TRUNCATE produse;

de regula selectiv (clauza WHERE)
sterge toate inregistrarile

Exercitiul 2.06

InfoAcademy

21

3. Modificarea de tabele
a) -

Redenumire

ALTER TABLE nume_tabela RENAME nume_nou;
RENAME TABLE tab_1 TO tab_x [, tab_2 TO tab_y, ... ] ;
- permite mai multe redenumiri intr-o singura instructiune;
b) -

Schimbarea de caracteristici

ALTER TABLE produse ENGINE MyISAM;
c) -

Stergerea de coloane

InfoAcademy
ALTER TABLE produse DROP
C0LUMN denumire;

22

d) -

Modificarea definitiilor de coloane

ALTER TABLE Persoane ADD COLUMN definitie_coloana [pozitie];
ALTER TABLE people ALTER COLUMN an_nastere SET DEFAULT
year(curdate());
ALTER TABLE people ALTER COLUMN an_nastere DROP DEFAULT;
ALTER TABLE NumeTabela CHANGE NumeColoana
DefinitieNouaColoana;
* definitie noua coloana include si
numele, chiar daca nu se schimba
Ex:
ALTER TABLE people CHANGE email mail VARCHAR(200); schimba denumirea
ALTER TABLE people CHANGE
email email VARCHAR(250); - 23
InfoAcademy
pastreaza
denumirea, schimba doar dimensiunea pentru

e) -

Adaugarea de coloane

O coloana poate fi adăugata:
ALTER TABLE produse ADD COLUMN definitie_coloana [poziţie];
- la sfârşitul listei de coloane, in cazul in care nu se specifica poziţia
de adăugare
- la inceput, daca poziţia este FIRST
- imediat dupa coloana specificata, daca poziţia este de forma
AFTER nume_coloana
Exercitiul 2.07

InfoAcademy

24

4. Importul de date din fisiere de tip .TXT
LOAD DATA LOCAL INFILE 'cale...' INTO TABLE
tablename
Optionale [CHARACTER SET charset_name]
[FIELD TERMINATED BY ', ']
[ENCLOSED BY ' “ ' ]
[LINES TERMINATED BY '\r\n' - pentru WIN respectiv
'\n' - pentru linux (implicit)]
[IGNORE n LINES]
(Col1, Col2, ... , Colx) sau (@a,@b, ... , @x)
- Daca nu stim daca fisierul este WIN sau LINUX il deschidem cu
notepad si winpad.
- Daca fisierele sunt identice fisierul este in WIN, altfel LINUX.
- Exista statii pe care functioneaza diferit. Faceti invers ('\r\n' in loc
InfoAcademy
25
de '\n').

Recapitulare:
Alegerea STORAGE ENGINE afecteaza?
Care sunt cele trei moduri de creare a unei tabele?
Care sunt principalele caracteristici ale unei tabele temporare?
Avem o tabela: Persoane. Cum facem sa stergem toate
inregistrarile din ea?
Ce facem ca sa aflam numele unei tabele cand nu-l stim exact?
Cum adaugam o coloana la o tabela existenta? Cum o
modificam?
InfoAcademy
Cum creem o baza de date?
Cum o stergem?

26

Sponsor Documents

Or use your account on DocShare.tips

Hide

Forgot your password?

Or register your new account on DocShare.tips

Hide

Lost your password? Please enter your email address. You will receive a link to create a new password.

Back to log-in

Close