Oracle數據庫學習——數據定義語言(DDL)

SQL:

  • SQL 是 Structured Query Language(結構化查詢語言)的首字母縮寫詞;
  • SQL 是數據庫語言,,它可以對數據庫中的數據進行查詢、插入、更新和刪除,並對數據庫中的對象進行控制;
  • SQL已經成爲RDBMS的標準語言,最新標準是ANSI-99,並支持面向對象的數據庫;
  • 關係性數據庫系統對SQL也進行了一些擴展,使之成爲過程性語言,如oralce中的PL/SQL 與微軟的Transact-SQL。


1.SQL 支持下列類別的命令:
數據定義語言(DDL)
數據操縱語言(DML)
事務控制語言(TCL)
數據控制語言(DCL)

2.數據定義語言(DDL)
(1) 數據定義語言用於改變數據庫結構,包括創建、更改和刪除數據庫對象;
(2) 用於操縱表結構的數據定義語言命令有:
——CREATE TABLE
——ALTER TABLE
——TRUNCATE TABLE
——DROP TABLE

2.1 創建表語句:
創建一個表名爲student的表,定義id和name兩種屬性,類型分別爲number,varchar(2);
建表語句語法:
	create table tbName (
列名稱1 列類型 [列參數] [not null default ],
....列2...
....
列名稱N 列類型 [列參數] [not null default ]
)engine myisam/innodb charset utf8/gbk;



2.2 修改表
修改表之增加列:
alter table tbName 
add 列名稱1 列類型 [列參數] [not null default ] #(add之後的舊列名之後的語法和創建表時的列聲明一樣)

修改表之修改列:
alter table tbName
change 舊列名  新列名  列類型 [列參數] [not null default ]
(注:舊列名之後的語法和創建表時的列聲明一樣)




2.3 刪除表:


2.4 DDL – 利用現有的表創建表:
語法:
         CREATE TABLE <new_table_name> AS
          SELECT column_names FROM <old_table_name>;


來看一下舊錶和新表的結構是否完全相同:


——以上這種做法會把舊錶中的所有數據進行復制,以下還有幾種做法可以只是複製表結構,而不會複製舊錶原有的數據:



2.5  表完整性與約束:
完整性:
實體完整性
主鍵約束,保證數據唯一性
域完整性
字段規則,如性別必須是男或女,年齡在0-200
參照完整性
外鍵約束,外鍵對應的記錄必須存在

(1)增加主鍵和外鍵約束:
DEPT                     EMP
deptno   -----------    deptno
dname                    sex
                               empno
語法:
除了以下DOS顯示的一種外,還有一種:
主鍵約束:
—— alter table DEPT add constraint pk_DEPT primary key(deptno);
外鍵約束:
——alter table EMP add constraint fk_d_m foreign key(deptno) references DEPT(deptno);




在增加主鍵約束後,當我們嘗試爲員工表newemp中添加一條(‘cson’,13)數據時,會出現‘未找到父項關鍵字’的錯誤,原因是在當前部門表中給deptno(部門編號)添加了主鍵,而當前部門表中還沒有部門編號爲‘13’的部門信息:




因此,我們首先需要爲部門表deptno添加一條屬性值爲13的部門信息先,然後我們就能在員工表中成功添加之前的那條數據了:





(2)增加check約束:
語法:
Check 約束:
——Alter table emp add constraint ck_emp_sex check(sex=‘男’ or sex=‘女’);

——在沒有給員工表添加check約束前,我們可以給員工表成功插入錯誤的數據,效果如下:


——接下來,我們想要給員工表的sex屬性添加check約束,只能允許用戶給員工的性別信息添加‘男’或‘女’兩中屬性值,不過卻出現瞭如下的錯誤:



——因此,我們首先要刪除原表中的數據先:



——接下來,應該就能成功添加check約束了:


——再試着爲員工表添加一條錯誤數據,就會報出錯誤信息,不允許用戶添加:





(3)唯一性約束:
語法:
Unique唯一約束
Alter table  emp add constraint uk_emp unique(fname,lname);

——爲員工表的ename屬性添加唯一約束:


——接下來給員工表添加一條原先沒有的數據,處理如下:


——當我們插入員工姓名同樣爲‘cson’時,將會出現如下錯誤,且不允許添加:





總結:
以上就是數據庫幾種常見的約束,個人認爲,當我們給數據庫表中的某些字段添加約束條件,可以很好地處理一些用戶的錯誤輸入,可以避免數據的不可用性和冗餘,不僅如此,當我們在後臺操作數據庫的時候,就可以減少後臺驗證性代碼的書寫。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章