資料庫表的幾大約束

2021-10-03 10:41:00 字數 2711 閱讀 8078

約束的作用

對錶中的資料進行限制,保證資料的正確性、有效性和完整性。

乙個表如果新增了約束,不正確的資料將無法插入到表中。

約束在建立表的時候新增比較合適。

約束種類

約束名約束關鍵字

主鍵primary key

唯一unique

非空not null

外來鍵foreign key

主鍵作用

用來唯一標識資料庫中的每一條記錄(非空、唯一)
哪個字段應該作為表的主鍵呢?
通常不用業務字段作為主鍵,單獨給每張表設計乙個id欄位,把id設為主鍵。主鍵是給數

據庫和程式使用的,不是給最終的客戶使用的,所以主鍵有沒有含義沒有關係,只要不重

復,非空就行。如:身份證,學號不建議做成主鍵

建立主鍵
-- 在建立表的時候給字段新增主鍵

create table stu(

id int primary key,

name varchar(20),

age int

);-- 插入重複的主鍵值

insert into stu values (1, '關羽', 30);

-- 錯誤**: 1062 duplicate entry '1' for key 'primary'

insert into stu values (1, '關雲長', 20);

-- 插入 null 的主鍵值, column 'id' cannot be null

insert into stu values (null, '關雲長', 20);

刪除主鍵
-- 刪除主鍵

alter table stu drop primary key;

-- 新增主鍵

alter table stu add primary key(id);

主鍵自增(auto_increment )
如果讓我們自己新增很有可能重複,我們通常希望在每次插入新紀錄時,資料庫自動生成主鍵欄位的值。
-- 預設地 auto_increment 的開始值是 1,如果希望修改起始值,請使用下列 sql 語法 

create table tb_name(

列名 int primary key auto_increment

) auto_increment=起始值;

-- 建立好以後修改起始值

alter table tb_name auto_increment=起始值;

表的某一列不能出現重複的值
-- 建立學生表 stu1, 包含字段(id, name),name 這一列設定唯一約束,不能出現同名的學生

create table stu1 (

id int,

name varchar(20) unique

);-- 新增乙個同名的學生

insert into stu1 values (1, '張三');

-- duplicate entry '張三' for key 'name'

insert into stu1 values (2, '張三');

-- 重複插入多個 null 會怎樣?

insert into stu1 values (2, null);

insert into stu1 values (3, null);

-- null 沒有資料,不存在重複的問題

某一列不能為空(null)
-- 建立表學生表 stu2, 包含字段(id,name,gender)其中 name 不能為 null

create table stu2 (

id int,

name varchar(20) not null,

gender char(1)

);-- 新增一條記錄其中姓名不賦值

insert into stu2 values (1,'張三瘋','男');

-- column 'name' cannot be null

insert into stu2 values (2,null,'男');

預設值(default)
-- 建立乙個學生表 stu3,包含字段(id,name,address), 位址預設值是廣州

create table stu3 (

id int,

name varchar(20),

address varchar(20) default '廣州'

);-- 新增一條記錄,使用預設位址

insert into stu3 values (1, '李四', default);

insert into stu3 (id,name) values (2, '李白');

-- 新增一條記錄,不使用預設位址

insert into stu3 values (3, '李四光', '深圳');

一張表中字段設定為外來鍵,可以被其他表所引用。刪除記錄的時候應注意,該外

鍵是否被其他表引用,如果已經被引用,則會刪除失敗。如果採用級聯刪除機制,

那麼就會刪除成功,但是不建議,由於誤刪會導致許多其他不應該被刪掉的資料

被刪掉。

資料庫五大約束

所謂約束,其實就是一種保障,比如乙個屬性新增了主鍵約束,那麼就強制保障了它的唯一性和非空性,請帶著這樣正確的理解去閱讀後文。資料庫有五大約束,分別是 主鍵約束的要求是 唯一,非空 因此主鍵不需要 也不能再設定唯一約束了。另外,主鍵可以設定自動增長,而且,主鍵不一定是自動增長的,但自動增長的一定是主鍵...

資料庫五大約束

資料庫中的五種約束 資料庫中的五種約束及其新增方法 五大約束 1.主鍵約束 primay key coustraint 唯一性,非空性 2.唯一約束 unique counstraint 唯一性,可以空,但只能有乙個 3.檢查約束 check counstraint 對該列資料的範圍 格式的限制 如...

資料庫約束六大約束語句

新增 not null alter table user modify name varchar 20 not null 刪除 not null alter table user modify name varchar 20 新增 unique alter table user add unique...