Mysql 完整性約束

2022-08-30 20:57:21 字數 3181 閱讀 2413

定義:

完整性約束是對字段進行限制,從而符合該欄位達到我們期望的效果比如字段含有預設值,不能是null等, 主要有唯

一、自增、主鍵、外來鍵約束

唯一約束:

唯一約束可以有多個但索引列的值必須唯一,索引列的值允許有空值。

如果能確定某個資料列將只包含彼此各不相同的值,在為這個資料列建立索引的時候就應該使用關鍵字unique。

示例:

create

table

t5( id

intauto_increment,

name

varchar(20) default

null,

primary

key(id),

unique

keyuk_t5_name (name)

);--

建表後新增約束:

alter

table t5 add

constraint uk_t5_name unique

(name);

--如果不需要唯一約束,則可以這樣刪除

alter

table t5 drop

index uk_t5_name;

語法:

--

建立唯一約束:

create

unique

index uk_t5_name on

t5 (name); --

建表後新增約束:

alter

table t5 add

constraint uk_t5_name unique

(name); --

如果不需要唯一約束,則可以這樣刪除

alter

table t5 drop

index uk_t5_name;

自增約束:

mysql 每張表只能有1個自動增長字段,這個自動增長字段通常作為主鍵,也可以用作非主鍵使用,但是請注意將自動增長字段當做非主鍵使用時必須必須為其新增唯一索引,否則系統將會報錯。

mysql>

create

table

t4(

-> id int

notnull

,

-> name varchar(20

),

-> age int

unique

auto_increment

->

);query ok,

0 rows affected (0.13 sec)

主鍵約束:

主鍵是用於唯一標識一條記錄的約束,如同身份證。

主鍵有兩個約束:非空且唯一!

建立主鍵約束兩種方式:

--

方式1create

table

t1( id

intprimary

keyauto_increment,

name

varchar(20));

--方式2

create

table

t2( id

intnot

null

, name

varchar(20

));

主鍵約束的增加和刪除:

新增主鍵 alter

table tab_name add

primary

key(欄位名稱,...)

刪除主鍵

alter

table users drop

primary

key;

create

table test(num int

primary

key auto_increment);

--思考,如何刪除主鍵?

alter

table test modify id int; --

auto_increment沒了,但這樣寫主鍵依然存在,所以還要加上下面這句

alter

table test drop

primary

key;--

僅僅用這句也無法直接刪除主鍵

主鍵注意事項:

注意:

1、一張表中最多只能有乙個主鍵

2、表中如果沒有設定主鍵,預設設定not null的字段為主鍵;此外,表中如果有多個not null的字段,則按順序將第乙個設定not null的字段設為主鍵。

結論:主鍵一定是非空且唯一,但非空且唯一的字段不一定是主鍵。

3、主鍵型別不一定必須是整型

復合主鍵約束:

所謂的復合主鍵 就是指你表的主鍵含有乙個以上的字段。

如果一列不能唯一區分乙個表裡的記錄時,可以考慮多個列組合起來達到區分表記錄的唯一性,形式 

①建立:

create

table

sc (

studentid

int,

courseid

int,

score

int,

primary

key(studentno,courseid)

);

②修改:

alter

table tb_name add

primary

key (欄位1,欄位2,欄位3);

外來鍵約束:

外來鍵的定義語法:

[constraintsymbol]foreignkey[id] (index_col_name, ...)

referencestbl_name (index_col_name, ...)

[ondelete]

[onupdate]

MySQL完整性約束

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

完整性約束

create table student tb id int notnull 非空約束 資料不允許為空 name varchar 255 null 顯式指定允許為空 新增非空約束 alter table 表名 modify column 屬性名 屬性型別 not null alter table s...

完整性約束

資料庫的完整性是指保護資料庫的有效性和正確性,防止資料庫中存在不符合語義的 不正確的資料。sql語言提供了相應的完整性約束機制,以確保將正確的資料儲存到資料庫中。完整性約束的型別 唯一約束 unique 用於表中的非主鍵字段,確保字段不會輸入重複的值,為其創造唯一索引 唯一鍵的值可以是null,但只...