200 likes | 355 Views
Creazione e manipolazione tabelle. TABELLE una tabella può essere creata in qualsiasi momento,anche quando gli utenti stanno usando il database la struttura della tabella può essere modificata online. REGOLE PER I NOMI
E N D
TABELLE • una tabella può essere creata in qualsiasi • momento,anche quando gli utenti stanno • usando il database • la struttura della tabella può essere modificata • online
REGOLE PER I NOMI Le regole valgono sia per i nomi di colonna che per i nomi di tabella : - devono iniziare con una lettera - la lunghezza varia da 1 a 30 caratteri - può contenere solo caratteri tra A-Z, a-z,0-9, _, $ e # - non è possibile duplicare il nome di un altro oggetto con lo stesso utente
CREATE TABLE CREATE TABLE [schema].tabella (colonna datatype [DEFAULT expr] [,…]); Uno schema è una collezione di oggetti. Se una tabella non appartiene all’utente con cui siamo collegati, il proprietario deve essere specificato SELECT * FROM user_b.employees;
DEFAULT • È possibile specificare una valore di default per le colonne • …hire_date DEFAULT SYSDATE • si possono usare come default caratteri, espressioni o funzioni SQL • Non si possono usare altre colonne o pseudocolonne (SYSDATE, USER) • Il tipo del valore di default deve essere lo stesso della colonna in cui verrà inserito
CREATE TABLE CREATE TABLE dept (deptno NUMBER(2), dname VARCHAR2(14), loc VARCHAR2(13));
CREATE TABLE È possibile creare una tabella e inserire le righe combinando lo statement CREATE TABLE con la clausola AS subquery CREATE TABLE dept80 AS SELECT employee_id, last_name. salary*12 ANNSAL, hire_date FROM employees WHERE department_id = 80;
CREATE TABLE • Il numero delle colonne della tabella in cui inserire e quella sorgente devono avere lo stesso numero di colonne e lo stesso tipo • se nella CREATE TABLE vengono specificate le colonne, il numero di colonne deve essere uguale al numero si colonne nella SELECT list • se non vengono specificate di assumeranno le colonne della SELECT list • creando la tabella in questo modo vengono passati soltanto i tipi delle colonne e non i vincoli di integrità
ALTER TABLE • Utilizzare questo statement per: • aggiungere nuove colonne nelle tabelle • modificare una colonna esistente • definire una DEFAULT value per una nuova colonna • cancellare una colonna
ALTER TABLE ALTER TABLE table ADD (colonna datatype [DEFAULT espr] [, colonna datatype]…); ALTER TABLE table MODIFY (colonna datatype [DEFAULT espr] [, colonna datatype]…); ALTER TABLE table DROP COLUMN (colonna);
ALTER TABLE – aggiungere una colonna ALTER TABLE dept80 ADD (job_id VARCHAR2(9)); La nuova colonna viene inserita come ultima tabella. Non è possibile specificare dove posizionare la colonna.
ALTER TABLE – modificare una colonna • ALTER TABLE dept80 • MODIFY (last_name VARCHAR2(30)); • le modifiche possono avvenire la tipo, alla dimensione, o al vaore di default. • è sempre possibile aumentare la dimensione di una colonna ma è possibile diminuire solo se la tabella è vuota o la colonna contiene solo valori nulli • è possibile cambiare il tipo di una colonna solo se contiene valori nulli • è possibile convertire una colonna CHAR in VARCHAR2 o viceversa solo se la colonna contiene valori nulli o se non viene cambiata la dimensione • cambiare una colonna con un default influirà solo sui record inseriti successivamente l’ALTER TABLE
ALTER TABLE – cancellare una colonna • ALTER TABLE dept80 • DROP COLUMN job_id); • statement valido a partire dalla versione 8i • la colonna non deve essere necessariamente vuota • dopo l’alter table deve rimanere almeno una colonna nella tabella • una volta cancellata la colonna è definitivamente persa
SET UNUSED ALTER TABLE table SET UNUSED (colonna); O ALTER TABLE table SET UNUSED COLUMN; È possibile usare: ALTER TABLE table DROP UNUSED COLUMNS;
SET UNUSED • Lo scopo di UNUSED è preparare la colonna per essere cancellata magari in un momento di basso utilizzo del sistema. • Disponibile dalla versione 8i • Lo stato di UNUSED non rimuove la colonna dalla tabella ma tratta la colonna come se effettivamente non esistesse: • - non è possibile fare restore della tabella • - non è possibile accedere alla colonna • - con la SELECT nonè possibile visualizzare i dati della • colonna • - la colonna non appare nella DESCRIBE • - è possibile aggiungere un’altra colonna con lo stesso • nome
CANCELLARE UNA TABELLA • DROP TABLE dept80; • tutti i dati e la struttura vengono cancellati • tutte le transazioni pendenti sono committate • tutti gli indici sono cancellati • non è possibile fare rollback della DROP TABLE • le viste e i sinonimi non vengono canellati ma sono ivalidi • solo il proprietario della tabella o un utente con il privilegio di DROP ANY TABLE può cancellare una tabella
RINOMINARE UN OGGETTO • RENAME dept TO detail_dept; • usato per cambiare il nome a tabelle, viste, sequence o sinonimi • occorre essere il propietario dell’oggetto
TRUNCATE • TRUNCATE TABLE detail_dept; • cancella tutte le righe di una tabella • rilascia lo spazio di memoria usato dalla tabella • non è possibile fare rollback (è un’istruzione DDL) • occorre essere il proprietario della tabella e avere privilegi di DELETE TABLE per effettuare una truncate • differisce dalla DELETE perché cancella le righe dalla tabella ma la prima non rilascia lo spazio di memoria
TRUNCATE • TRUNCATE TABLE detail_dept; • è molto più veloce della DELETE perché: • - essendo uno statement DDL quindi non genera • informazioni di rollback • - facendo la truncate non partono i trigger di • cancellazione della tabella
AGGIUNGERE COMMENTI A UNA TABELLA • COMMENT ON TABLE | COLUMNS employees • IS ‘Employees Information’; • è possibile aggiungere un commento a tabelle o colonne • i commenti sono disponibili sulle tabellle del dizionario dati: • ALL_COL_COMMENTS • USER_COL_COMMENTS • ALL_TAB_COMMENTS • USER_TAB_COMMENTS