Crearea tabelelor
Pentru a crea tabele, utilizeaza instructiunea Create Table, ce are urmatorul format:
CREATE TABLE [IF NOT EXISTS] nume_tabel(
lista_coloane
) type=tip_tabel
MySQL accepta If Not Exist dupa instructiunea Create Table pentru a te impiedica sa creezi un tabel care deja exista in baza de date. nume_tabel reprezinta denumirea tabelului pe care doresti sa-l creezi, fiind urmat de un set de coloane definite in urmatorul mod: nume_coloana tip_de_date(marime) [NOT] NULL. In final, poti preciza tipul motorului de stocare pe care preferi sa-l utilizezi pentru tabel. Daca nu declari in mod explicit tipul motorului de stocare, MySQL va utiliza MyISAM.
In baza de date classicmodels, putem crea un tabel al angajatilor cu instructiunea de mai sus, dupa cum urmeaza:
CREATE TABLE employees (
employeeNumber into(11) NOT NULL,
lastName varchar(50) NOT NULL,
firstName varchar(50) NOT NULL,
extension varchar(10) NOT NULL,
email varchar(100) NOT NULL,
officeCode varchar(10) NOT NULL,
reportsTo int(11) default NULL,
jobTitle varchar(50) NOT NULL,
PRIMARY KEY (employeeNumber)
);
Dupa cum poti observa, numele tabelului employees este urmat de lista coloanelor insotita de caracteristici, cum ar fi tipul, dimensiunea datelor si NOT NULL (daca este cazul). La final poti preciza cheia primara a tabelului, in acest caz employeeNumber. Daca tabelul are mai multe chei primare, le poti separa printr-o virgula. De exemplu, tabelul payments are doua chei primare customerNumber si checkNumber, pe care le poti crea utilizand urmatoarea interogare:
CREATE TABLE payments (
customerNumber int(11) NOT NULL,
checkNumber varchar(50) NOT NULL,
paymentDate datetime NOT NULL,
amount double NOT NULL,
PRIMARY KEY (customerNumber,checkNumber)
);
In mod prestabilit, pentru tabelul creat utilizam motorul de stocare MyISAM.
Listarea tabelelor dintr-o baza de date
Pentru a afisa toate tabelele, utilizeaza instructiunea Show Tables. Aceasta comanda va returna toate denumirile tabelelor din baza de date selectata.
Show Tables
Iata rezultatul pentru baza de date classicmodels:
+-------------------------+
| Tables_in_classicmodels |
+-------------------------+
| customers |
| employees |
| offices |
| orderdetails |
| orders |
| payments |
| productlines |
| products |
+-------------------------+
8 rows in set (0.00 sec)
In anumite situatii, daca trebuie sa vezi caracteristicile unui tabel, poti utiliza instructiunea Describe dupa cum urmeaza: Describe nume_tabel;
De exemplu, poti afisa structura tabelului employees prin aceasta interogare: DESCRIBE employees;
Rezultatul returnat de server este:
+----------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------------+--------------+------+-----+---------+-------+
| employeeNumber | int(11) | NO | PRI | NULL | |
| lastName | varchar(50) | NO | | NULL | |
| firstName | varchar(50) | NO | | NULL | |
| extension | varchar(10) | NO | | NULL | |
| email | varchar(100) | NO | | NULL | |
| officeCode | varchar(10) | NO | | NULL | |
| reportsTo | int(11) | YES | | NULL | |
| jobTitle | varchar(50) | NO | | NULL | |
+----------------+--------------+------+-----+---------+-------+
8 rows in set (0.02 sec)
Modificarea structurii tabelelor
In afara de crearea tabelelor, MySQL iti permite si modificarea structurilor tabelelor existente printr-o multime de optiuni. Iata instructiunea Alter Table:
ALTER [IGNORE] TABLE nume_tabel optiuni[, optiuni...]
optiuni:
ADD [COLUMN] definitie_noua [FIRST | AFTER nume_col ]
sau ADD [COLUMN] (definitie_noua, definitie_noua,...)
sau ADD INDEX [nume_index] (coloana_index,...)
sau ADD PRIMARY KEY (coloana_index,...)
sau ADD UNIQUE [nume_index] (coloana_index,...)
sau ADD FULLTEXT [nume_index] (coloana_index,...)
sau ADD [CONSTRAINT symbol] FOREIGN KEY [nume_index] (coloana_index,...)
[reference_definition]
sau ALTER [COLUMN] nume_col {SET DEFAULT literal | DROP DEFAULT}
sau CHANGE [COLUMN] nume_col_veche definitie_noua
[FIRST | AFTER nume_col]
sau MODIFY [COLUMN] definitie_noua [FIRST | AFTER nume_col]
sau DROP [COLUMN] nume_col
sau DROP PRIMARY KEY
sau DROP INDEX nume_index
sau DISABLE KEYS
sau ENABLE KEYS
sau RENAME [TO] nume_nou_tabel
sau ORDER BY nume_col
sau table_options
Cele mai multe dintre aceste optiuni sunt evidente, vom explica aici cateva:
- Change si Modify sunt identice, iti permit sa modifici definirea coloanelor sau pozitia lor in tabel.
- Drop Column va sterge coloana din tabel in mod permanent iar daca tabelul contine date, toate datele aferente coloanei respective vor fi pierdute.
- Drop Primary Key si Drop Index indeparteaza cheia primara sau indexul coloanei.
- Disable si Enable Keys activeaza sau dezactiveaza actualizarea indecsilor doar pentru tabelele MyISAM.
- Comanda Rename iti permite schimbarea numelui tabelului.
Stergerea tabelelor
Pentru a sterge un tabel din baza de date, poti utiliza instructiunea Drop Table: Drop [Temporary] Table [If Exists] nume_tabel [, nume_tabel,...]
Cuvantul cheie Temporary este utilizat pentru stergerea tabelelor temporare. MySQL iti permite sa stergi mai multe tabele in cadrul aceleiasi comenzi, prin scrierea denumirilor lor separate prin virgula. If Exists se utilizeaza pentru a impiedica stergerea unui tabel care nu exista in baza de date.
Stergerea datelor dintr-un tabel
In unele cazuri, vrei sa stergi toate datele din tabel, in mod rapid si sa resetezi toate coloanele care se actualizeaza in mod automat. Pentru aceasta, MySQL iti ofera instructiunea Truncate: Truncate Table nume_tabel
Iata cateva puncte pe care ar trebui sa ti le amintesti inainte de a utiliza instructiunea Truncate Table:
- Instructiunea Truncate Table sterge un tabel si il recreaza, deci este mai rapida decat instructiunea Delete Table, dar nu este sigura tranzactional.
- Numarul randurilor sterse nu poate fi returnat ca in cazul instructiunii Delete Table.
- Triggerele On Delete nu sunt invocate deoarece Truncate nu utilizeaza instructiunea Delete.
|