Data Definition Language

linguaggio che fa parte del linguaggio SQL

IninformaticailData Definition Language(DDL) è unlinguaggio,parte del linguaggioSQL,che permette di creare, modificare o eliminare gli oggetti in undatabaseovvero agire sulloschema di database.Sono i comandi DDL a definire la struttura del database e quindi l'organizzazione logica dei dati in esso contenuti, ma non fornisce gli strumenti per modificare i valori assunti dai dati o per interrogare i dati stessi per il quale si usano rispettivamente ilData Manipulation Languagee ilData Query Language.È utilizzato sia in fase diprogettazione,sia in fase di ristrutturazione del database. Per agire sulla struttura del database l'utente deve avere i permessi necessari, assegnati tramite ilData Control Language(DCL).

Create Domain

modifica

Oltre ai tipi come integer, char, float,... possiamo crearne altri: la creazione è simile ad una ridenominazione di un tipo fondamentale visto tra quelli sopra o di un tipo creato ex novo, ereditandone tutte le caratteristiche.

Sintassi del comando Create Domain

modifica
CREATEDOMAINnome_dominioAStipo[ValoreImpostato][Vincolo]{DefSchema}

Si crea un tipo di nomenome_dominiopartendo da un precedentetipo,impostando un opzionale valore di default ed un insieme di vincoli. Questa operazione permette di definire una ed una sola volta tutte le caratteristiche (vincoli) che possono essere associati ad un attributo, quando questo è utilizzato in più tabelle, evitando così ridondanze.

Drop Domain

modifica

Elimina un dominio definito dall'utente.

Sintassi del comando Drop Domain

modifica
DROPDOMAINnome_dominio[CASCADE|RESTRICT]

Se si specificaCASCADE,tutte le colonne delle tabelle che appartengono a tale dominio verranno cancellate con esso. Se si specificaRESTRICT,che è il valore predefinito, questa operazione non verrà eseguita.

Create schema

modifica

Lo schema è una collezione di tutti gli oggetti che faranno parte della base di dati, cioè domini, tabelle, viste, privilegi, asserzioni. È un po' come la parte dichiarativa di un programma scritto con un linguaggio imperativo: prima creiamo i tipi, le funzioni e le procedure, poi le utilizziamo nel corpo.

Sintassi del comando create schema

modifica
CREATESCHEMA[NomeSchema][[autorization]Autorizzazione]{DefElementoSchema}

Autorizzazioneè il nome dell'utente proprietario dello schema; se mancante si assume che sia l'utente che ha lanciato il comando. IlNomeSchemapuò essere omesso: in tal caso il nome sarà quello dell'utente proprietario. Per ogni utente ci sono delle Autorizzazioni cioè possiamo imporre certi limiti a chi interroga la nostrabase di dati.

Drop Schema

modifica

Cancella uno schema già definito.

Sintassi del comando Drop Schema

modifica
DROPSCHEMAnome_schema[CASCADE|RESTRICT]

Se si specificaCASCADE,tutti gli oggetti che fanno parte dello schema verranno cancellati. Se si specificaRESTRICT,che è il valore predefinito, gli oggetti che fanno parte dello schema verranno preservati.

Database

modifica

Create database

modifica

Il comandoCREATE DATABASEserve a creare un nuovo database, che potrà contenere tabelle, viste,stored procedure,trigger o altri tipi di oggetti.

Sintassi del comando create database

modifica

Lasintassiè la seguente:

CREATE{DATABASE|SCHEMA}nome_database
[create_specification[,create_specification]...]

create_specification:
[DEFAULT]CHARACTERSETcharset_name
|[DEFAULT]COLLATEcollation_name

Se nell'esecuzione del comando si specifica[IF NOT EXISTS]si crea il database solo se non esiste, in caso contrario non verrà restituito alcun errore. La stringacreate_specificationpermette di inserire delle opzioni nella creazione del database. TramiteCHARACTER SETsi inserisce il set di caratteri supportato nel database. TramiteCOLLATEsi possono definire i dati di default del database.

Alter database

modifica

Il comandoALTER DATABASEserve a modificare un database esistente. Non esiste nello standard SQL, ma la maggior parte dei DBMS lo implementa.

Sintassi del comando alter database

modifica

La sintassi è la seguente:

ALTER{DATABASE|SCHEMA}[nome_database]
[DEFAULT]CHARACTERSETcharset_name
|[DEFAULT]COLLATEcollation_name

Drop database

modifica

Il comandoDROP DATABASEserve a cancellare un database. Tale comando non esiste nello standard SQL, ma tutti i DBMS lo implementano.

Sintassi del comando drop database

modifica

La sintassi è la seguente:

DROPDATABASEnome_database

Tabelle

modifica

Create table

modifica

Il comandoCREATE TABLEha la funzione di creare una nuovatabella(o tavola).
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 ovistagià esistente sullo stessoutentedi database.

Oltre a definire gli attributi di una tabella è possibile definire dei vincoli.
La tabella può essere creata vuota (vedi la create table semplice) oppure può essere creata e riempita di dati (vedi la create table medianteselect): nel secondo caso la struttura della tabella è definita implicitamente dal numero dicolonne(o campi) estratti dalla select, daltipo di datodi ciascuna colonna e dai nomi delle rispettive colonne estratte dalla select (o daglialiasad esse applicati). Nel caso in cui la tabella venga popolata in fase di creazione, latransazioneviene automaticamente conclusa da un comando dicommit.

Vincoli d'integrità

modifica

Per implementare ivincoli di integritàcon l'SQLesistono delle parole riservate.

Vincoli intrarelazionali
modifica
  • NOT NULL:Il vincolo not null indica che il valore nullo non è ammesso come valore dell'attributo; in tal caso l'attributo deve sempre essere specificato tipicamente in fase di inserimento. Se all'attributo è però associato un valore di default diverso dal valore nullo, allora diventa possibile effettuare l'inserimento anche senza fornire un valore dell'attributo, in quanto all'attributo viene automaticamente assegnato il valore di default.
  • UNIQUE:Un vincolo unique si applica ad un attributo o un insieme di attributi di una tabella e impone che i valori dell'attributo (o le ennuple di valori sull'insieme di attributi) siano una (super) chiave, cioè righe differenti della tabella non possano comparire su diverse righe senza violare il vincolo in quanto si assume che i valori nulli siano tutti diversi tra loro.
  • PRIMARY KEY:Nella definizione di una tabella è necessario specificare per ogni relazione lachiave primaria,il più importante tra gli identificatori della relazione.SQLpermette così di specificare il vincolo primary key una sola volta per ogni tabella. Il vincolo primary key può essere definito direttamente su un singolo attributo, oppure essere definito elencando più attributi che costituiscono l'identificatore.
Vincoli interrelazionali
modifica

Per la gestione di questo tipo di vincoli si utilizza laFOREIGN KEY(ovverochiave esterna). Questo vincolo crea un legame tra i valori di un attributo della tabella corrente e i valori di un attributo di un'altra tabella che è in relazione alla tabella corrente stessa. Il vincolo impone che per ogni riga della tabella il valore dell'attributo specificato se diverso dal valore nullo sia presente nelle righe della tabella esterna tra i valori corrispondenti dell'attributo.

Sintassi del comando create table

modifica
  • Creazione semplice (l'aggiunta di unaCONSTRAINTè opzionale):
CREATETABLEnome_tabella(
nome_colonna1tipodidatoCONSTRAINT,
nome_colonna2tipodidatoCONSTRAINT,
nome_colonna3tipodidatoCONSTRAINT,
...
nome_colonnaNtipodidatoCONSTRAINT);
  • Creazione mediante select:
CREATETABLEnome_tabella
AS
SELECT...;

Alter table

modifica
  • Il comandoALTER TABLEha la funzione di modificare la struttura della tabella.
  • L'operatoreADDconsente di inserire una nuova colonna su una tabella esistente oppure di aggiungere delle constraint alle colonne della tabella.
  • L'operatoreMODIFYconsente di cambiare il tipo di dato e/o la constraint propri di ogni colonna di una tabella.
  • L'operatoreDROPconsente di eliminare la constraint dalla colonna.

Sintassi del comando alter table

modifica
Operatore add
modifica
  • Inserimento di una nuova colonna:
ALTERTABLEnome_tabella
ADDnome_colonna_nuovatipo_di_datoCONSTRAINT;
  • Aggiunta di una chiave primaria (primary key):
ALTERTABLEnome_tabella
ADDCONSTRAINTnome_tabella_pk
PRIMARYKEY(nome_colonna));/*che funge da chiave primaria*/
  • Aggiunta di un indice:
ALTERTABLEnome_tabella
ADDCONSTRAINTnome_tabella_pk
ADDINDEXnome_indice(nome_colonna)
  • Aggiunta di una chiave esterna (foreign key) ereditata da un'altra tabella:
ALTERTABLEnome_tabella_figlia
ADDCONSTRAINTnome_tabella_figlia_fk
FOREIGNKEY(nome_colonna)/*che funge da chiave esterna sulla tabella figlia*/
REFERENCESnome_tabella_padre(nome_colonna));/*che funge da chiave primaria sulla tabella padre*/
Operatore modify
modifica
  • Modifica del tipo di dato di una colonna:
ALTERTABLEnome_tabella
MODIFYnome_colonnatipodidatonuovo;/*il tipo di dato nuovo deve essere compatibile*/
  • Modifica della constraint di una colonna:
ALTERTABLEnome_tabella
MODIFYnome_colonnaCONSTRAINTnuova;
Operatore drop
modifica
  • Eliminazione della chiave primaria:
ALTERTABLEnome_tabella
DROPPRIMARYKEY;
  • Eliminazione della chiave esterna:
ALTERTABLEnome_tabella_figlia
DROPCONSTRAINTnome_tabella_figlia_fk;

Drop table

modifica

Il comandoDROP TABLEconsente di distruggere una tabella, eliminandola fisicamente dal database. Come tutti i comandi DDL è un'operazione irreversibile, e provoca la perdita di tutti i dati contenuti nella tabella.

Sintassi del comando Drop table

modifica
DROPTABLEnome_tabella[CASCADE|RESTRICT]

Il comandoRENAMEconsente di rinominare i nomi degli attributi di una tabella. Nello standard SQL non esiste, ma molti Dbms lo implementano ad esempio postgres.

Sintassi del comando Rename

modifica
RENAMEnome_tabellaTOnuovo_nome_tabella;

Create Index

modifica

È una scorciatoia per evitare alter table complessi. Aggiunge un indice a una tabella.

Sintassi del comando Create Index

modifica
CREATE[UNIQUE]INDEXnome_indice
ONnome_tabella(nome_colonna[ASC|DESC])

Se si specificaUNIQUE,l'indice è unico, cioè i valori al suo interno non possono essere duplicati.
Se si specificaASCi valori all'interno dell'indice saranno in ordine ascendente, se si specificaDESCsaranno in ordine discendente; il valore predefinito è il primo.

Drop Index

modifica

È una scorciatoia per evitare alter table complessi. Elimina un indice da una tabella.

Sintassi del comando Drop index

modifica
DROPINDEXnome_indice
ONnome_tabella

Strumenti per la gestione

modifica
  • PL/SQL Developer - Distribuito da AllRoundAutomations
  • SQL Server Management Studio - Distribuito da Microsoft
  • SQL Manager Studio - Distribuito da Stevtech

Voci correlate

modifica

Collegamenti esterni

modifica
Portale Informatica:accedi alle voci di Wikipedia che trattano di Informatica