--constraint--not null 非空約束create table demo01(empno number(4),ename varchar2(10) not null,job varchar2(10))insert into demo01 values(1234,' ','SALES' ...
表的創建 標準的建表語法 :
CREATE TABLE [schema.] table (column datatype [DEFAULT expr], ... );使用子查詢創建表的語法
CREATE TABLE table [column(,column...)] AS subquery,1.新表的欄位列表必須與子查詢中的欄位列表匹配 2.欄位列表可以省略
create table emp2 as select * from emp;表結構的修改
- alter table ... add ... : 增加新的列
alter table emp add address varchar(20)
新增加的類不能定義為 "not null" ,基本表在增加一列後,原有元組在新增加的列上的值都定義為空值。
- alter table ...drop ... : 刪除原有的列
alter table emp drop column address
- alter table ...modify ... : 修改欄位
alter table emp modify(job varchar(50))
- drop table : 在基本表不需要時,可以使用語句撤銷。
drop table emp cascade constraints
- RENAME : 語句改變表名(視圖),要求必須是表(視圖)的所有者
RENAME old_name TO new_name約束constraint 若定義了約束,並且數據不符合約束,那麼DML操作(INSERT、UPDATE、DELETE)將不能成功執行 約束名 約束描述
- not null 非空
- unique Key 唯一鍵
- primary key 主鍵
- foreign key 外鍵
- check 自定義檢測約束
carete table parent(p1 number primary key); create table child (c1 number primary key ,c2 number references parent(p1));表級約束:從形式上可以看出列級約束的區別了吧。
create table child (c1 nnumber ,c2 number ,primary key(c2), foreign key(c2) references parent(p1));有些時候,列級約束無法實現某種約束的定義,比如聯合主鍵的定義,就要用到表級約束:
create table test(id1 number ,id2 number ,primary key(id1,id2));主鍵約束(PRIMARY KEY) 主鍵不能為空,也不允許出現重覆,即關係要滿足實體完整性規。
- 主鍵從功能上看相當於非空且唯一
- 一個表中只允許一個主鍵
- 主鍵是表中能夠唯一確定一個行數據的欄位
- 主鍵欄位可以是單欄位或者是多欄位的組合
- Oracle 為主鍵創建對應的唯一性索引
- primary key(列)主鍵子句 在表的定義中加上
- primary key主鍵短語 在主屬性的定義之後加上
create table t3( id number(4), constraint t3_pk primary key(id) )
非空約束(not null)
- 確保欄位值不允許為空
- 只能在欄位級定義
CREATE TABLE employees( employee_id number(6), name varchar2(25) not null, salary number(8,2), hire_date date constraint emp_hire_date_nn not null )
唯一性約束(unique)
- 唯一性約束條件確保所在的欄位或者欄位組合不出現重覆值
- 唯一性約束條件的欄位允許出現空值
- Oracle 將為唯一性約束條件創建對應的唯一性索引
create table employees( id number(6), name varchar2(25) not null unique, email varchar2(25), salary number(8,2), hire_date date not null, constraint emp_email_uk unique(email) );
check 約束 check 約束用於對一個屬性的值加以限制 在check 中定義檢查的條件表達式,數據需要符合設置的條件
create table emp3( id number(4) primary key , age number(2) check(age >0 and age <100), salary number(7,2), sex char(1), constraint salary_check check(salary>0) )
在這種約束下,插入記錄或修改記錄時,系統要測試新的記錄的值是否滿足條件 關係模型的三類完整性規則
- 實體完整性規則 這條規則要求關係中在組成主鍵的屬性上不能有空值
- 參照完整性規則 這條規則要求“不引用不存在的實體”
- 用戶定義的完整性規則 反應了某一具體的應用涉及的數據必須滿足的語義要求
alter table tablename
增加
add constraint con_name unique(col)
刪除
drop constraint com_name[cascade]
查詢constraint
select constraint_name,constraint_type from user_constraints where table_name=upper('sxtstu05')或者where owner ='SCOTT' 大寫
select constraint_name,constraint_type from user_constraints where owner ='SCOTT'
select constraint_name,column_name from user_cons_columns where table_name =upper('tablename')