Data Definition Language: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica |
Funzionalità collegamenti suggeriti: 3 collegamenti inseriti. |
||
(5 versioni intermedie di 4 utenti non mostrate) | |||
Riga 3:
== Domini ==
=== Create Domain ===
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 ====
<syntaxhighlight lang="sql">
CREATE DOMAIN nome_dominio AS tipo [ ValoreImpostato ] [ Vincolo ] { DefSchema }
</syntaxhighlight>
Si crea un tipo di nome ''nome_dominio'' partendo da un precedente ''tipo'', 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 ===
Riga 16:
==== Sintassi del comando Drop Domain ====
<syntaxhighlight lang="sql">
DROP DOMAIN nome_dominio [CASCADE|RESTRICT]
</syntaxhighlight>
Se si specifica {{code|CASCADE}}, tutte le colonne delle tabelle che appartengono a tale dominio verranno cancellate con esso. Se si specifica {{code|RESTRICT}}, che è il valore predefinito, questa operazione non verrà eseguita.
== Schemi ==
=== Create schema ===
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 ====
<syntaxhighlight lang="sql">
CREATE SCHEMA [ NomeSchema ] [ [ autorization ] Autorizzazione ] { DefElementoSchema }
</syntaxhighlight>
''Autorizzazione'' è il nome dell'utente proprietario dello schema; se mancante si assume che sia l'utente che ha lanciato il comando. Il ''NomeSchema'' può 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 nostra [[base di dati]].
=== Drop Schema ===
Cancella uno schema già definito.
==== Sintassi del comando Drop Schema ====
<syntaxhighlight lang="sql">
DROP SCHEMA nome_schema [CASCADE|RESTRICT]
</syntaxhighlight>
Se si specifica {{code|CASCADE}}, tutti gli oggetti che fanno parte dello schema verranno cancellati. Se si specifica {{code|RESTRICT}}, che è il valore predefinito, gli oggetti che fanno parte dello schema verranno preservati.
== Database ==
=== Create database ===
Il comando
==== Sintassi del comando create database ====
La [[sintassi]] è la seguente:
<syntaxhighlight lang="sql">
</syntaxhighlight>
Se nell'esecuzione del comando si specifica {{code|[IF NOT EXISTS]}} si crea il database solo se non esiste, in caso contrario non verrà restituito alcun errore. La stringa ''create_specification'' permette di inserire delle opzioni nella creazione del database. Tramite {{code|CHARACTER SET}} si inserisce il set di caratteri supportato nel database. Tramite {{code|COLLATE}} si possono definire i dati di default del database.
=== Alter database ===
Il comando {{code|ALTER DATABASE}} serve a modificare un database esistente. Non esiste nello standard SQL, ma la maggior parte dei DBMS lo implementa.
==== Sintassi del comando alter database ====
La sintassi è la seguente:
<syntaxhighlight lang="sql">
</syntaxhighlight>
=== Drop database ===
Il comando
==== Sintassi del comando drop database ====
La sintassi è la seguente:
<syntaxhighlight lang="sql">
DROP DATABASE nome_database
</syntaxhighlight>
== Tabelle ==
=== Create table ===
Il comando
<br />
Il nome della tabella può essere scritto indifferentemente in MAIUSCOLO o in minuscolo, in ogni caso, però, è necessario che rispetti le seguenti regole:
Oltre a definire gli attributi di una tabella è possibile definire dei vincoli.
<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 [[SQL#Select|select]]): nel secondo caso la struttura della tabella è definita implicitamente dal numero di [[colonna (basi di dati)|colonne]] (o campi) estratti dalla select, dal [[tipo di dato (basi di dati)|tipo di dato]] di ciascuna colonna e dai nomi delle rispettive colonne estratte dalla select (o dagli [[alias (basi di dati)|alias]] ad esse applicati).
Nel caso in cui la tabella venga popolata in fase di creazione, la [[SQL#La transazione|transazione]] viene automaticamente conclusa da un comando di [[SQL#Commit|
==== Vincoli d'integrità ====
Per implementare i [[
===== Vincoli
*
*
*
===== Vincoli
Per la gestione di questo tipo di vincoli si utilizza la
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 ====
* Creazione semplice (l'aggiunta di una {{code|CONSTRAINT}} è opzionale):
<syntaxhighlight lang="sql">
CREATE TABLE nome_tabella(
nome_colonna1 tipo di dato CONSTRAINT,
nome_colonna2 tipo di dato CONSTRAINT,
nome_colonna3 tipo di dato CONSTRAINT,
...
nome_colonnaN tipo di dato CONSTRAINT);
</syntaxhighlight>
* Creazione mediante select:
<syntaxhighlight lang="sql">
CREATE TABLE nome_tabella
AS
SELECT...;
</syntaxhighlight>
=== Alter table ===
* Il comando
* L'operatore {{code|ADD}} consente di inserire una nuova colonna su una tabella esistente oppure di aggiungere delle constraint alle colonne della tabella.
* L'operatore
* L'operatore {{code|DROP}} consente di eliminare la constraint dalla colonna.
==== Sintassi del comando alter table ====
===== Operatore add =====
* Inserimento di una nuova colonna:
<syntaxhighlight lang="sql">
ALTER TABLE nome_tabella
ADD nome_colonna_nuova tipo_di_dato CONSTRAINT;
</syntaxhighlight>
* Aggiunta di una chiave primaria (primary key):
<syntaxhighlight lang="sql">
ALTER TABLE nome_tabella
ADD CONSTRAINT nome_tabella_pk
PRIMARY KEY (nome_colonna)); /*che funge da chiave primaria*/
</syntaxhighlight>
* Aggiunta di un indice:
<syntaxhighlight lang="sql">
ALTER TABLE nome_tabella
ADD CONSTRAINT nome_tabella_pk
ADD INDEX nome_indice (nome_colonna)
</syntaxhighlight>
* Aggiunta di una chiave esterna (foreign key) ereditata da un'altra tabella:
<syntaxhighlight lang="sql">
ALTER TABLE nome_tabella_figlia
ADD CONSTRAINT nome_tabella_figlia_fk
REFERENCES nome_tabella_padre (nome_colonna)); /*che funge da chiave primaria sulla tabella padre*/
</syntaxhighlight>
===== Operatore modify =====
* Modifica del tipo di dato di una colonna:
<syntaxhighlight lang="sql">
ALTER TABLE nome_tabella
MODIFY nome_colonna tipo di dato nuovo; /*il tipo di dato nuovo deve essere compatibile*/
</syntaxhighlight>
* Modifica della constraint di una colonna:
<syntaxhighlight lang="sql">
ALTER TABLE nome_tabella
MODIFY nome_colonna CONSTRAINT nuova;
</syntaxhighlight>
===== Operatore drop =====
* Eliminazione della chiave primaria:
<syntaxhighlight lang="sql">
ALTER TABLE nome_tabella
DROP PRIMARY KEY;
</syntaxhighlight>
* Eliminazione della chiave esterna:
<syntaxhighlight lang="sql">
ALTER TABLE nome_tabella_figlia
DROP CONSTRAINT nome_tabella_figlia_fk;
</syntaxhighlight>
=== Drop table ===
Il comando
==== Sintassi del comando Drop table ====
<syntaxhighlight lang="sql">
DROP TABLE nome_tabella [CASCADE|RESTRICT]
</syntaxhighlight>
=== Rename ===
Il comando
==== Sintassi del comando
<syntaxhighlight lang="sql">
RENAME nome_tabella TO nuovo_nome_tabella;
</syntaxhighlight>
== Indici ==
=== Create Index ===
È una scorciatoia per evitare
==== Sintassi del comando Create Index ====
<syntaxhighlight lang="sql">
CREATE [UNIQUE] INDEX nome_indice
ON nome_tabella (nome_colonna [ASC|DESC])
</syntaxhighlight>
Se si specifica
Se si specifica {{code|ASC}} i valori all'interno dell'indice saranno in ordine ascendente, se si specifica {{code|DESC}} saranno in ordine discendente; il valore predefinito è il primo.
=== Drop Index ===
È una scorciatoia per evitare
==== Sintassi del comando
<syntaxhighlight lang="sql">
DROP INDEX nome_indice
ON nome_tabella
</syntaxhighlight>
== Strumenti per la gestione ==
Line 200 ⟶ 222:
* [[Data Control Language]] (DCL)
== Collegamenti esterni ==
* {{Collegamenti esterni}}
* {{FOLDOC}}
{{Portale|Informatica}}
[[Categoria:SQL]]
|