二)資料定義語言 (Data Definition Language)1.概述 SQL的資料定義功能是針對資料庫三級模式結構的各種資料對象進行定義的。在標準SQL中主要包括表、視圖、索引,在oracle中還包括觸發器、遊標、過程、程式包等。 標準sql語言中不支援對索引定義的操作和修改視圖的操作,只能通過刪除再建立的方法。在orale中可以通過ALTER VIEW進行視圖修改。2.語句詳解1)CREATE建立表、函數、視圖CREATE TABLE <表名>(<列名> <資料類型> [列級完整性條件約束][,<列名> <資料類型> [列級完整性條件約束]]...[,<表級完整性條件約束>]);CREATE TABLE ABC(a varchar2<10>,b char<10>);CREATE VIEW <視圖名>[(<列名>[,<列名>]...)] AS<子查詢>[WITH CHECK OPTION]CREATE [UNIQUE][CLUSTER] INDEX<索引名>ON<表名>(<列名>[<次序>][,<列名>[<次序>]]...)[TABLESPCAE tablespace_name];2)ALTER改變表、函數ALTER TABLE <表名>[ADD <新列名><資料類型>[完整性條件約束]][DROP<完整性條件約束名>][MODIFY<列名><資料類型>]3)DROP刪除DROP TABLE<表名>;DROP VIEW<視圖>;DROP INDEX<索引>;4)執行個體【例1】建立一個名為IT_EMPLOYEES的表,它由編號EMPLOYEE_ID、名FIRST_NAME、姓LAST_NAME、郵箱EMAIL、電話號碼PHONE_NUMBER、部門編號JOB_ID、薪資SALARY和部門經理編號MANAGER_ID八個屬性群組成。create table IT_EMPLOYEES(EMPLOYEE_ID NUMBER(6) not null unique,FIRST_NAME VARCHAR2(20),LAST_NAME VARCHAR2(25) not null,EMAIL VARCHAR2(25),PHONE_NUMBER VARCHAR(20),JOB_ID VARCHAR2(10),SALARY NUMBER(8,2),MANAGER_ID NUMBER(6));【例2】建立程式員的視圖PROG_EMPLOYEES(JOB_ID=’IT_PROG’),其中隱含了視圖的列名.create view prog_employeesasselect employee_id,first_name,last_name,email,phone_number,salary,manager_idfrom it_employeeswhere job_id = 'IT_PROG';【例3】執行下面的CREATE INDEX語句,建立索引:CREATE INDEX IT_LASTNAME ON IT_EMPLOYEES(LAST_NAME);
【例4】將前文建立的視圖PROG_EMPLOYEES刪除.DROP VIEW PROG_EMPLOYEES;
【例5】向IT_EMPLOYEES表中增加“僱員生日”列,其資料類型為日期型:ALTER TABLE IT_EMPLOYEES ADD BIRTHDATE DATE;【例6】將IT_EMPLOYEES表的MANAGER_ID欄位改為8位:ALTER TABLE IT_EMPLOYEES MODIFY MANAGER_ID NUMBER(8);【例7】刪除IT_EMPLOYEES表EMPLOYEE_ID欄位的UNIQUE約束:ALTER TABLE IT_EMPLOYEES DROP UNIQUE(EMPLOYEE_ID);