Data Definition Language: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Zwobot (discussione | contributi)
m robot Aggiunta: de
Djdomix (discussione | contributi)
Nessun oggetto della modifica
Riga 1:
{{stub informatica}}
'''DDL''' è l'acronimo inglese di '''D'''ata '''D'''efinition '''L'''anguage, ovvero un linguaggio che permette di creare, modificare o nuovieliminare [[oggettogli (Database)|oggetti]] diin un [[database]],. diSono modificarnei comandi DDL a definire la struttura odel database e quindi dei dati ivi contenuti. Ma non fornisce gli strumenti per modificare i dati stessi: per tale scopo di distruggerliusa il DML. L'utente aaadeve bbbavere i permessi necessari per agire sulla struttura del database e questi permessi vengono assegnati tramite il DCL.
===Domini Elementari===
SQL mette a disposizione sei famiglie di domini elementari a partire dai quali si possono definire i domini da associare agli attributi dello schema:
Carattere: singoli caratteri o stringhe, anche di lunghezza variabile
character [ varying ] [ ( Lunghezza ) ]
[ character set NomeFamigliaCaratteri ]
Bit: singoli booleani o stringhe
bit [ varying ] [ ( Lunghezza ) ]
Numerici, esatti e approssimati:
numeric [( Precisione [ , Scala ) ] ]
decimal [( Precisione [ , Scala ) ] ]
integer
smallint
Tipi numerici Approssimati
float [( Precisione )]
real
double precision
Data e ora
date
time [( Precisione )] [with time zone]
timestamp [( Precisione )] [with time zone]
Domini introdotto in SQL:1999
Lo stanadart SQL:1999 ha esteso le famiglie di domini elementari introducendo le tre nuove famiglie boolean, blob e clob.
Boolean permette di rappresentare singoli valori booleani. Costituisce quindi una restrizione del dominio bit. Il dominio bit viene quindi consigliato solo per le situazioni in cui viene richiesto di gestire una stringa di valori binari.
BLOB e CLOB, sono due domini che permettono di rappresentare oggetti di grandi dimensioni costituiti da una sequenza arbitraria di valori binari (BLOB, binary large object) o di caratteri (CLOB character large object).
 
===Create database===
Il comando ''create database'' serve a creare un nuovo database, che potrà contenere tabelle, viste, stored procedure, trigger o altri tipi di oggetti.
 
====Sintassi del comando create database====
La sintassi è la seguente:
CREATE DATABASE nome_database
 
 
===Alter database===
Il comando ''alter database'' serve a modificare un database esistente.
====Sintassi del comando alter database====
La sintassi è la seguente:
 
ALTER {DATABASE | SCHEMA} [db_name]
COLLATE collation_name
 
 
===Drop database===
Il comando ''drop database'' serve a cancellare un database.
 
====Sintassi del comando drop database====
La sintassi è la seguente:
DROP DATABASE nome_database
 
===Create table===
Il comando ''create table'' ha la funzione di creare una nuova [[tabella (Database)|tabella]] (o tavola).
<br>
Il nome della tabella può essere scritto indifferentemente in MAIUSCOLO o in minuscolo, in ogni caso, però, è necessario che rispetti le seguenti regole:
# Può essere formato da lettere e numeri, ma il primo carattere deve sempre essere una lettera;
# Non può superare i 30 caratteri di lunghezza;
# Non può avere lo stesso nome di una tabella o [[vista (Database)|vista]] già esistente sullo stesso [[utente (Database)|utente]] di database.
<br>
La tabella può essere creata vuota (vedi la create table semplice) oppure può essere creata e riempita di dati (vedi la create table mediante [[select]]): nel secondo caso la struttura della tabella è definita implicitamente dal numero di [[colonna (Database)|colonne]] (o campi) estratti dalla select, dal [[tipo di dato (Database)|tipo di dato]] di ciascuna colonna e dai nomi delle rispettive colonne estratte dalla select (o dagli [[alias (Database)|alias]] ad esse applicati).
Nel caso in cui la tabella venga popolata in fase di creazione, la [[DML#la transazione|transazione]] viene automaticamente conclusa da un comando di [[DML#Commit|COMMIT]].
 
====Sintassi del comando create table====
* Create table semplice:
CREATE TABLE ''nome_tabella''(<br>
''nome_colonna1'' ''tipo di dato'' ''[[constraint (Database)|constraint]]'' (opzionale),
''nome_colonna2'' ''tipo di dato'' ''constraint'' (opzionale),
''nome_colonna3'' ''tipo di dato'' ''constraint'' (opzionale),
...
''nome_colonnaN'' ''tipo di dato'' ''constraint'' (opzionale) );
 
* Create table mediante select:
CREATE TABLE ''nome_tabella'' <br>
AS <br>
SELECT ...;
 
===Alter table===
Il comando ''alter table'' ha la funzione di modificare la struttura della tabella.
<br>
L'operatore ''ADD'' consente di inserire una nuova colonna su una tabella esistente oppure di aggiungere delle constraint alle colonne della tabella.
<br>
L'operatore ''MODIFY'' consente di cambiare il tipo di dato e/o la constraint propri di ogni colonna di una tabella.
<br>
L'operatore ''DROP'' consente di eliminare la constraint dalla colonna.
 
====Sintassi del comando alter table====
=====Operatore add=====
* Inserimento di una nuova colonna:
ALTER TABLE ''nome_tabella'' <br>
ADD ''nome_colonna_nuova tipo di dato constraint'';
* Aggiunta di una chiave primaria (primary key):
ALTER TABLE ''nome_tabella'' <br>
ADD CONSTRAINT ''nome_tabella_pk''
PRIMARY KEY (''nome_colonna'' che funge da chiave primaria);
* Aggiunta di una chiave esterna (foreign key) ereditata da un'altra tabella:
ALTER TABLE ''nome_tabella_figlia'' <br>
ADD CONSTRAINT ''nome_tabella_figlia_fk''
FOREIGN KEY (''nome_colonna'' che funge da chiave esterna sulla tabella figlia)
REFERENCES ''nome_tabella_padre'' (''nome_colonna'' che funge da chiave primaria sulla tabella padre);
=====Operatore modify=====
* Modifica del tipo di dato di una colonna:
ALTER TABLE ''nome_tabella'' <br>
MODIFY ''nome_colonna tipo di dato nuovo'';
* Modifica della constraint di una colonna:
ALTER TABLE ''nome_tabella'' <br>
MODIFY ''nome_colonna constraint nuova'';
=====Operatore drop=====
* Eliminazione della chiave primaria:
ALTER TABLE ''nome_tabella'' <br>
DROP PRIMARY KEY;
* Eliminazione della chiave esterna:
ALTER TABLE ''nome_tabella_figlia'' <br>
DROP CONSTRAINT ''nome_tabella_figlia_fk'';
 
===Drop table===
Il comando ''drop table'' consente di distruggere una tabella, eliminandola fisicamente dal database.
<br>
Come tutti i comandi DDL è un'operazione irreversibile, e provoca la perdita di tutti i dati contenuti nella tabellla.
 
====Sintassi del comando alter table====
DROP TABLE ''nome_tabella'';
 
===Rename===
Il comando ''rename'' consente di rinominare una tabella.
 
====Sintassi del comando rename====
RENAME ''nome_tabella'' TO ''nuovo_nome_tabella'';
 
 
 
[[Categoria:Acronimi]]