Mysql第二章 完整性約束條件

2021-08-21 05:48:59 字數 3478 閱讀 6156

目錄

1:什麼是完整性約束?為什麼使用完整性約束?

2:約束分類(按照功能劃分)

3:使用案例

3.1:primary key主鍵測試

3.2:auto_increment測試

3.3:not null(非空約束,插入不能給空值)

3.4:default(列的預設約束)

3.5:unique key(唯一索引,乙個表中可以有多個,同樣的值不能重複,但是null除外)

資料完整性約束是為了防止不合規範的資料進入資料庫,在使用者進行增加、修改、刪除等操作的時候自動按照一定約束條件進行檢查,是不合規範的資料不能進入資料庫,保證資料的完整和一致性。側面也能提高程式執行效率,降低程式複雜性。

1.unsigned(表示沒有負數從零開始,應用於mysql的數值型別)

2.zerofill(當數值型別的資料長度不夠時,會自動把0填充到數字前至資料的約定長度,自動新增unsigned)

3.not null(非空約束,插入不能給空值)

4.default(列的預設約束)

5.primary key(主鍵,標識資料唯一性,不能重複自動禁止為空)

6.unique key(唯一索引,乙個表中可以有多個,同樣的值不能重複,但是null除外)

7.auto_increment(用於數值型別自動增長,預設從1開始)

8.foreign key(外來鍵約束)

create table test_primary_key(

id int primary key,   不加unsigned

username varchar(20)

);insert test_primary_key(id,name) values(1,'張三');     執行結果成功

insert test_primary_key(id,name) values(0,'張三');     執行結果成功

insert test_primary_key(id,name) values(-1,'張三');    執行結果成功

create table test_primary_key1(

id int unsigned primary key,

name varchar(20)

insert test_primary_key1(id,name) values(1,'張三');  執行結果成功

insert test_primary_key1(id,name) values(0,'張三');  執行結果成功

insert test_primary_key1(id,name) values(-1,'張三');  執行結果失敗

create table test_auto_increment(

id int unsigned key auto_increment,

username varchar(20)

);insert test_auto_increment(username) values('a');執行結果成功

insert test_auto_increment(username) values('b');執行結果成功

insert test_auto_increment(username) values('c');執行結果成功

insert test_auto_increment(id,username) values(15,'g');執行結果成功

insert test_auto_increment(username) values('c');執行結果成功

insert test_auto_increment(id,username) values(null,'e');執行結果成功

insert test_auto_increment(id,username) values(default,'f');執行結果成功

create table test_not_null(

a varchar(20),

b varchar(20) not null

insert test_not_null(a,b) values('','');  真確

insert test_not_null(a,b) values(null,null); 錯誤

insert test_not_null(a,b) values(null,'abc'); 正確

insert test_not_null(a) values('test'); 錯誤

create table test_default(

id int unsigned auto_increment key,

username varchar(20) not null,

age tinyint unsigned default 18,

email varchar(50) not null default '[email protected]'

);insert test_default(username) values('a');  成功顯示預設值

insert test_default(username,age,email) values('b',30,'[email protected]'); 成功覆蓋

insert test_default(username,age,email) values('c',null,'[email protected]'); 成功覆蓋

insert test_default(username,age,email) values('d',null,null); 錯誤郵箱無法插入空值

insert test_default(username,age,email) values('d',null,''); 成功覆蓋

insert test_default(username,age,email) values('d',null,default);  成功覆蓋

unique key

的用途:主要是用來防止資料插入的時候重複的例如使用者表的身份證號碼等。主鍵(只能有乙個)=unique key(可以多個)+不等於空

create table test_unique(

id int unsigned auto_increment key,

username varchar(20) not null unique key,

email varchar(50) unique key,

card char(18) unique key

);insert test_unique(username,email,card) values('a','[email protected]','1'); 成功

insert test_unique(username,email,card) values('a','[email protected]','12'); 失敗username重複

insert test_unique(username,email,card) values('b',null,null); 成功

insert test_unique(username,email,card) values('c',null,null); 成功

完整性約束條件 自增長

預設從1開始,每次增加1 乙個表中只能有乙個自增長字段 被標註自增長的字段只能是主鍵 自增長的只能是整型 除了手動指定,null,default 都可以代替自增長欄位所需要輸入的數字。mysql create table user3 id smallint keyauto increment,nam...

MySQL完整性約束

create database adrui show databases use adrui not null 非空約束,插入資料該欄位不能為空 primary key 主鍵約束 主鍵約束相當於非空約束 唯一約束,auto increment是mysql擴充套件的字段值自加的約束,約束字段資料型別必...

Mysql 完整性約束

定義 完整性約束是對字段進行限制,從而符合該欄位達到我們期望的效果比如字段含有預設值,不能是null等,主要有唯 一 自增 主鍵 外來鍵約束 唯一約束 唯一約束可以有多個但索引列的值必須唯一,索引列的值允許有空值。如果能確定某個資料列將只包含彼此各不相同的值,在為這個資料列建立索引的時候就應該使用關...