關於MySQL的約束

2021-08-20 12:39:12 字數 3158 閱讀 5076

對於乙個列所建立的約束,稱之為列級約束,而對於兩個或兩個以上的列所建立的約束,我們稱之為表級約束,列級約束在使用的時候,既可以在列定義的時候宣告,也可以在列定義以後宣告,而表級的約束只能在列定義以後來宣告,在實際開發中,用列級約束比較多,表級約束很少用,除此之外,在所有的約束中,並不是說每種約束都存在著表級或列級約束,其中,not null 非空約束,default約束這兩種約束就不存在表級約束,它們只有列級約束,而對於其他的三種,像主鍵,唯一,外來鍵,它們都可以存在表級和列級約束。

主鍵約束相當於   唯一約束 + 非空約束  的組合,主鍵約束列不允許重複,也不允許出現空值。每個表最多隻允許乙個主鍵,建立主鍵約束可以在列級別建立,也可以在表級別建立。當建立主鍵的約束時,系統缺省會在所在的列和列組合上建立對應的唯一索引。

常用語句

create table emp(

id int primary key,

name varchar(20)

alter table emp add primary key (id);

復合主鍵:

create table emp(

id int,

name varchar(20),

pwd varchar(10),

primary key(id,name)

alter table emp add primary key (id,name);

alter table emp modify id int primary key;

3) 刪除主鍵約束

alter table emp drop primary key;

2、外來鍵約束 foreign key

外來鍵約束是保證乙個或兩個表之間的參照完整性,外來鍵是構建於乙個表的兩個字段或是兩個表的兩個字段之間的參照關係

常用語句

1)建立外來鍵約束

基本用法

主表create table class(

id int primary key,

name varchar(20)

);從表

create table student(

id int primary key,

name varchar(20),

class_id int,

foreign key (class_id) references class (id)

);多列外來鍵組合,必須用表級別的約束語法

主表create table class (

id int,

name varchar(20),

number int,

primary key (name,number)

);從表

create table students(

id int auto_increment primary key,

name varchar(20),

class_name varchar(20),

class_number int,

foreign key (class_name,class_number) references class (name,number)

);2)增加外來鍵約束

alter table student add foreign key (class_name,class_number) references class (name,number);

3)刪除外來鍵約束

alter table  student drop foreign key (class_id);  

3、 唯一約束unique

唯一約束是指定table的列或列組合不能重複,保證資料的唯一性。唯一約束不允許出現重複的值,但是可以為多個null。同乙個表可以有多個唯一約束,多個列組合的約束。在建立唯一約束時,如果不給唯一約束名稱,就預設和列名相同。唯一約束不僅可以在乙個表內建立,而且可以同時多表建立組合唯一約束。

1) 建立表時設定

create table emp(

id int not null,

name varchar(20),

password varchar(10),

unique (name,password)

);2)新增唯一約束

alter table emp add unique (name,password);

3)修改唯一約束

alter table emp modify name varchar (25) unique;

4)刪除唯一約束

alter table emp drop index name;

4、非空約束 not null  與  預設值 default

非空約束用於確保當前列的值不為空值,非空約束只能出現在表物件的列上。

null型別特徵:所有的型別的值都可以是null,包括int、float 等資料型別

1)建立table表,id為非空約束,name為非空約束,且預設值為『abc』

create table emp (

id int not null,

name varchar(20) not null default 'abc',

*** char

);2)增加非空約束

alter table emp modify *** varchar (2) not null;

3)取消非空約束

alter table emp modify *** varchar (2) null;

4)取消非空約束,增加預設值

alter table emp modify *** varchar(2) default 'abc' null;

mysql怎麼約束 mysql 約束

4 約束 1 對乙個列新增的約束叫列級約束。對兩個或兩個以上的列新增的約束叫做表級約束。2 表級約束只能在字段後面新增,列級約束既可以新增在字段後面,也可以在最後新增。3 非空 預設只存在列級約束。主鍵 唯 一 外來鍵都既有表級約束又有列級約束。4 約束有 primary key 主鍵 unique...

mysql約束 MySQL 約束型別

約束是一種限制,它通過對錶的行或列的資料做出限制,來確保表的資料的完整性 唯一性。mysql中,常用的幾種約束 約束型別 主鍵外來鍵唯一非空自增預設值 關鍵字 primary key foreign key unique not null auto increment default 1 主鍵約束 ...

mysql約束的型別 MySQL約束型別及舉例介紹

約束 約束保證資料的完整性和一致性 約束分為表級約束和列級約束 約束型別包括 not null 非空約束 primary key 主鍵約束 unique key 唯一約束 default 預設約束 foreign 外來鍵約束 1.主鍵約束 primary key 每張資料表只能存在乙個主鍵 主鍵保證...