Laborator 2

Limbajul de definire a structurilor de date

Subiectul acestei sedinte este invatarea unor elemente de limbaj de definire a structurilor de date. Se definesc, modifica si distrug baze de date, tabele, coloane.

Exercitii

#Creare si stergere baza de date
#Inlocuiti numele numeprenume12 cu numele rezervat pentru dumneavoastra
CREATE DATABASE numeprenume12;
DROP DATABASE numeprenume12;


#Modificarea unei baze de date; se modifica setul de caractere asociat cu baza de date; nu era definit nici un
#set de caractere, se va defini tipul de caractere 'ascii'
CREATE DATABASE numeprenume12;
ALTER  DATABASE numeprenume12
CHARACTER SET = 'ascii';

#Folosirea comenzii ALTER DATABASE; se adauga, pe langa setul de caractere definit anterior, si un altul
ALTER  DATABASE numeprenume12
CHARACTER SET = 'utf8'
COLLATE = 'utf8_bin';

#Lista bazelor de date definite:
SHOW DATABASES;

#Lista tabelelor definite intr-o baza de date
SHOW TABLES FROM numeprenume12;

#Crearea unei tabele
USE numeprenume12;
CREATE TABLE t1
(c1 INT UNIQUE AUTO_INCREMENT,
 c2 INT DEFAULT 1,
 c3 DATE,
 c4 TIME,
 c5 FLOAT,
 c6 DOUBLE,
 c7 CHAR(20),
  PRIMARY KEY (c1));

#Prezentarea structurii unei tabele
describe t1;
SHOW COLUMNS FROM t1;

# Crearea unei tabele (un al doilea exemplu)
# Se defineste si o cheie primara, compusa
CREATE TABLE numeprenume12.persoana
(nume char(10),
 prenume char(10),
 adresa char(30),
 telefon int,
 PRIMARY KEY (nume, prenume));

# Descrierea structurii tabelei create
describe numeprenume12.persoana;

# Crearea unei tabele (un al treilea exemplu)
# Se defineste o cheie primara, unica, auto-incrementata, este o cheie artificiala
# Se definesc si seturi de caractere pentru fiecare coloana
CREATE TABLE traducere
(token_id INT UNIQUE AUTO_INCREMENT PRIMARY KEY,
 token_nume char(20),
 engleza char(50) CHARACTER SET'ascii',
 romana char(50) CHARACTER SET 'utf8',
 chineza char(50) CHARACTER SET 'big5');

##
## Creare tabela folosind instructiunea select
## Fiecare coloana a noii tabele se selecteaza dintr-o coloana a unei tabele preexistente

CREATE TABLE translation
SELECT token_nume as token_name, engleza as English, romana AS Romanian
FROM traducere;

# Se adauga si o coloana noua
CREATE TABLE translation2
(French char(50))
SELECT token_nume as token_name, engleza as English, romana AS Romanian
FROM traducere;

##
## Creare tabela folosind instructiunea LIKE (pentru duplicarea structurii)
##

CREATE TABLE dictionar
LIKE traducere;

##
## Stergerea unei coloane
##
ALTER TABLE traducere
DROP COLUMN chineza;

##
## Adaugarea unei coloane
##
ALTER TABLE traducere
ADD COLUMN chineza char(50);

##
## Modificarea unei coloane, schimbarea valorii implicite
## pentru o coloana
##
ALTER TABLE traducere
ALTER COLUMN chineza SET DEFAULT 'Necompletat';


#Modificarea unei coloane, se elimina definitia valorii default
ALTER TABLE traducere
ALTER COLUMN chineza DROP DEFAULT;

ALTER TABLE traducere
CHANGE COLUMN chineza japoneza char(50);

#Schimbarea pozitiei unei coloane relativ la celelalte coloane
ALTER TABLE translation2
MODIFY COLUMN French char(60) AFTER Romanian;

#redenumirea unei tabele
ALTER TABLE translation2
RENAME TO translate;


##
## Modificarea unei tabele - adaugarea unei chei
##
ALTER TABLE translation
ADD PRIMARY KEY (token_name);

##
## Modificarea unei tabele - stergere unei chei
##
ALTER TABLE translation
DROP PRIMARY KEY;

##
## Stergerea unei tabele; se foloseste 'IF EXISTS' pentru a testa existenta
##

DROP TABLE IF EXISTS traducere;
DROP TABLE IF EXISTS translation;

Exercitii suplimentare

  1. Creati o tabela agenda cu coloanele: nume, prenume, adresa, varsta, telefon
  2. Inlocuiti coloana telefon cu mobil;
  3. Adaugati o coloana telefon_fix;
  4. Modificati coloana varsta sa aiba valoarea default 20
  5. Modificati tabela sa aiba o coloana id care sa fie valoare intreaga, auto-incrementata, unica
  6. Creati o tabela noua prieteni care sa copieze structura tabelei agenda
  7. Creati o tabela noua friends care sa copieze structura si continutul tabelei agenda