Utilizarea Tabelelor
21.03.2009
In acest tutorial vei invata cum sa creezi, sa afisezi si sa modifici tabelele in Mysql.
4557 afisari 2 Rating (2 voturi) 20 min

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.
Copyright © 2008-2010 E-LEARN.ro. Toate drepturile rezervate. Conceput si realizat de Neokinetics Software.