mysql 18位數字 約束 MySQL約束

2021-10-19 03:50:30 字數 3160 閱讀 1569

資料完整性

為了確保資料的完整性和唯一性,關係型資料庫通過約束機制來實現目的。

可靠性 + 準確性 = 資料完整性

資料完整性通常有三種形式:

實體完整性:即表中有乙個主鍵。

域完整性:資料值滿足指定的條件。

引用完整性:表示與引用表的關係和資料約束,即外來鍵。

資料存放在表中

「資料完整性的問題大多是由於設計引起的」

建立表的時候,就應當保證以後資料輸入是正確的

錯誤的資料、不符合要求的資料不允許輸入

建立表:保證資料的完整性=實施完整性約束

列值要求(約束)

輸入的型別是否正確?

年齡欄位的資料型別必須是數字

輸入的格式是否正確?

身份證號碼必須是18位

是否在允許的範圍內?

性別只能是」男」或者」女」

整行要求(約束)

是否存在重複輸入?

學員資訊輸入了兩次

是否符合其他特定要求?

信譽值大於5的使用者才能夠加入會員列表

實體完整性

約束方法:唯一約束、主鍵約束、標識列

域完整性

約束方法:限制資料型別、檢查約束、外來鍵約束、預設值、非空約束

引用完整性

約束方法:外來鍵約束

約束(constraint)

常見的約束條件有6種

主鍵(primary key)約束

外來鍵(foreign key)約束

唯一性(unique)約束

預設值(default)約束

非空(not null)約束

檢查(check)約束

mysql不支援check約束,寫了沒有作用,但不會報錯

約束的詳細介紹

非空約束:用not null約束的字段不能為null值,必須給定具體的資料

例如:建立表,給字段新增非空約束(建立使用者表,使用者名稱不能為空)

create table t_user(

id int(10),

name varchar(32) not null

); --如果沒有插入name欄位資料,則會報錯

取消非空約束:

alter table t_user modify name varchar(32)

建表後新增非空約束

alter table t_user modify id int not null

唯一性(unique)約束:unique約束的字段,具有唯一性,不可重複,但可以為null

create table test_unique(

id int(10),

name varchar(32) not null,

email varchar(128) unique

); #如果email欄位重複插入,則會報錯,但是該欄位可以為null

刪除唯一性約束:

語法:alter table 表名 drop index 欄位名;

例:alter table test_unique drop index email;

建表後新增唯一性約束:

語法:alter table 表名 add unique(欄位名)

例:alter table test_unique add unique(id)

主鍵約束:

主鍵約束相當於非空約束和唯一約束。

每個表只允許擁有乙個主鍵,但是這個主鍵可以由多個資料列組成,這些列組合不能重複

例:建立表test_primary 設定id為主鍵;

create table test_primary(

id int not null primary key,

name varchar(50)

例:建立表test2_primary 設定id為主鍵;

create table test2_primary (

id int not null,

name varchar(50),

constraint test_pk primary key(id)

# 指定主鍵約束為 test_pk ,對大部分資料庫有效 但對於mysql無效,此主鍵約束名仍為primary

主鍵不僅可以是一列,也可以由表中的兩列或多列來共同標識。——復合主鍵

例:建立表test3_primary 設定id和name為復合主鍵;

create table test3_primary(

id int not null,

name varchar(50) not null,

primary key(id,name)

刪除主鍵約束:

語法:alter table 表名 drop primary key;

例:alter table test3_primary drop primary key;

建表後新增主鍵約束:

語法:alter table 表名 add primary key(欄位名)

例:alter table test3_primary add primary key(id) ; --將字段設定為主鍵

預設值約束:

當插入時沒有插入值時,會自動插入預設值

例:建立表test1_default設定name的預設值;

create table test1_default(

id int not null,

name varchar(50) default 'abc'

插入資料的時候,如果不寫入name的值,則預設顯示填入abc

也可以使用自增長的方式來給字段填充值

例:建立表auto_test設定id的值為自增長;

create table auto_test(

id int not null auto_increment primary key,

name varchar(25)

刪除預設值約束

語法:alter table 表名 alter 列名 drop default;

例:alter table test1_default alter name drop default;

建表後新增預設值約束:

語法:alter table 表名 alter 列名 set default '預設值';

例:alter table test1_default alter name set default 'abc';

MySQL(18) 之 常見約束

含義 一種限制,用於限制表中的資料,為了保證表中的資料的準確和可靠性 分類 六大約束 not null 非空,用於保證該字段的值不能為空 比如姓名 學號等 default 預設,用於保證該字段有預設值 比如性別 primary key 主鍵,用於保證該字段的值具有唯一性,並且非空 比如學號 員工編號...

mysql建立約束 MySQL 建立表及其約束

create table tb name 1 建立表的主鍵約束 主鍵是唯一標識某字段的作用,當該字段為主鍵的時候,其值必須是唯一的,且不能為空。mysql create table student id int primary key,stu id int,course id int id為主鍵,所...

mysql 檢查約束 替代 MySQL之檢查約束

定義 mysql檢查約束 check 可以通過 create table 或 alter table 語句實現,根據使用者實際的完整性要求來定義。它可以分別對列或表實施 check 約束。檢查約束使用 check 關鍵字,具體的語法格式如下 check 表示式即為sql 表示式,用於指定需要檢查的限...