定義規則:對字段的規則,比如必填項,預設值等。
確保完整性:確保資料的完整性,可以限制一些錯誤或無效的資訊的插入。
非空約束
在建立表時設定非空約束
(預設是可以為null的)
create
table table_name (
column_name datatype not
null,.
..);
在修改表時新增非空約束
alter
table table_name
modify column_name datatype not
null
;
在修改表時去除非空約束
alter
table table_name
modify column_name datatype null
;
主鍵約束
作用:確保表中每一行資料的唯一性
非空 唯一
一張表只能設計乙個主鍵約束
主鍵約束可以由多個字段構成(聯合主鍵或復合主鍵)
在建立表時設定主鍵約束
--法一: 列級約束
create
table table_name(
column_name datatype primary
key,..
.)--法
二、表級約束:在所有的字段寫完之後,再設定約束
constraint constraint_name
primary
key(column_name1,..
.)
注:建立完約束之後忘記約束名稱了,可以在資料字典user_constraints中查詢
select constraint_name from user_constraints where table_name=
'table_name'
;
在修改表時新增主鍵約束
--在新增時,最好表中是沒有資料的
alter
table table_name
addconstraint constraint_name
primary
key(column_name1,..
.);
更改約束名稱
--該方法還可以修改其他任何約束的名稱
alter
table table_name
rename
constraint old_name to new_name;
刪除約束
alter
table table_name
--禁用/啟用約束
disable
|enable
constraint constraint_name
--刪除約束
drop
constraint constraint_name
--直接用名稱刪除,[casecade]是級聯約束,可以將關聯的其他約束也一起刪掉,一般在刪除外來鍵的時候有效
drop
primary
key[casecade]
注:檢視主鍵是否禁用
select constraint_name ,
status
from user_constraints where table_name =
'table_name'
;
外來鍵約束
唯一乙個涉及兩個表的字段關係的乙個約束
在建立表時設定外來鍵約束
--法一:列級約束
--1.設定外來鍵約束時,主表的字段必須是主鍵
--2.主從表中相應額欄位必須是同一種資料型別
--3.從表 中外鍵字段的值必須來自 主表 中相應欄位的值,或者為null值
create
table table1(從表)
(column_name datatype references
table2(column_name),.
.. (主表));
--法二:表級約束,表建立時定義完所有字段之後,
--[on delete cascade]級聯刪除:主表中的一條資料被刪除之後,從表中使用這條資料的字段的資料也會被刪除
constraint constraint_name foreign
key(column_name)
references
table_name(column_name)[on
delete
cascade
] (主表)
在修改表時新增外來鍵約束
alter
table table_name
addconstraint constraint_name foreign
ket(column_name)
references
table_name(column_name)[on
delete
cascade
](主表)
刪除外來鍵約束
alter
table table_name
--禁用外來鍵約束
disable
|enable
constraint constraint_name
--徹底刪除外來鍵約束
drop
constraint constraint_name
唯一約束
作用:保證欄位的唯一性
唯一約束和主鍵約束的區別:
1.在建立表時設定唯一約束
--列級約束
create
table table_name
(column_name datatype unique,.
..);
--表級約束
--如果乙個表裡要建立多個唯一約束,就要寫多條如下語句,因為每個唯一約束的名稱時不一樣的。
constraint constraint_name
unique
(column_name)
在修改表時新增唯一約束
alter
table table_name
addconstraint constraint_name
unique
(column_name)
;
刪除唯一約束
alter
table table_name
--禁用/啟用唯一約束
disable
|enable constraint_name
--徹底刪除唯一約束
drop
constraint constraint_name
檢查約束
作用:使表中的值具有實際意義
在建立表時設定檢查約束
--列級約束, 約束名是系統自定義的
--expressions表示式, 如工資大於0:salary>0
create
table table_name
(column_name datatype check
(expressions),.
..);
--表級約束
--如果乙個表裡要建立多個唯一約束,就要寫多條如下語句,因為每個唯一約束的名稱時不一樣的。
constraint constraint_name
check
(expressions)
在修改表時新增檢查約束
alter
table table_name
addconstraint constraint_name
check
(expressions)
;
刪除檢查約束
alter
table table_name
--暫時禁用/啟用唯一約束
disable
|enable constraint_name
--徹底刪除唯一約束
drop
constraint constraint_name
小結:
主鍵約束每張表只能有乙個,可以由多個字段構成。
外來鍵約束是唯一乙個涉及兩個表關係的約束。
在建立表時設定約束,非空約束只能在列級設定,不能在表級設定,非空約束是沒有名字的。
資料字典:user_constraints
刪除主鍵約束有一種特殊的寫法,不同於其他,因為主鍵乙個只有唯一乙個:drop primary key
注:慕課網學習筆記
Linux學習筆記0 0 2
刪除目錄或檔案的方法,我學習了兩個乙個是使用rmdir命令另乙個是使用rm命令。下面對這兩個命令進行簡要講解。1.1 rmdir 命令 rmdir 命令的作用就是從乙個目錄中刪除乙個或者多個空的子目錄。簡單粗暴的說,你只能刪除你包含的乙個或者多個空資料夾。看下面例項 1rmdir test 刪除 t...
Python學習筆記002
002講2020 7 7 第乙個遊戲程式 print 我愛魚c工作室 temp input 不妨猜一下小甲魚現在心裡想的是哪個數字 guess int temp if guess 8 print 恭喜你,猜對了 print 猜中了也沒有獎勵哦 else print 猜錯啦,我現在小甲魚現在心裡想的是...
「菜鳥」基礎學習之 002
迴圈語句 for 1.語法 for 迴圈變數 in 可迭代物件 語句塊else 語句塊 當迴圈條件不滿足時,執行 2.range 作用 建立可迭代物件,返回的物件型別為 range 傳參 有三種情況 一.傳遞1個引數時 range int 建立 從0到int的可迭代物件,但取不到int 如 rang...