約束是一種限制,它通過對錶的行或列的資料做出限制,來確保表的資料的完整性、唯一性。
mysql中,常用的幾種約束:
primary key 主鍵
主鍵約束相當於 唯一約束 + 非空約束 的組合,主鍵約束列不允許重複,也不允許出現空值。
每個表最多隻允許乙個主鍵,建立主鍵約束可以在列級別建立,也可以在表級別建立。
當建立主鍵的約束時,系統缺省會在所在的列和列組合上建立對應的唯一索引。
--基本使用
create table user(
idintprimary key,
name varchar(20)
);--刪除主鍵約束
alter table user drop primary key;--新增主鍵約束
alter table user add primary key(id,name);--修改主鍵約束
alter table user modify idint primary key;
foreign key外來鍵
外來鍵約束是保證乙個或兩個表之間的參照完整性,外來鍵是構建於乙個表的兩個字段或是兩個表的兩個字段之間的參照關係
--基本使用--主表
create table type(
idintprimary key,
type varchar(20)
);--副表
create table tag(
idintprimary key,
name varchar(20),
type_idint,
foreign key (type_id) references type(id)
);--多列外來鍵組合,必須用表級別約束語法--主表
create table classes(
idint,
name varchar(20),
numberint,
primary key(name,number)
);--副表
create table student(
idintauto_increment primary key,
name varchar(20),
classes_name varchar(20),
classes_numberint,/*表級別聯合外來鍵*/foreign key(classes_name, classes_number) references classes(name, number)
);--刪除外來鍵約束
alter table student drop foreign key student_id;--增加外來鍵約束
alter table student add foreign key(classes_name, classes_number) references classes(name, number);
unique唯一
唯一約束是指定table的列或列組合不能重複,保證資料的唯一性。
唯一約束不允許出現重複的值,但是可以為多個null。
同乙個表可以有多個唯一約束,多個列組合的約束。
在建立唯一約束時,如果不給唯一約束名稱,就預設和列名相同。
唯一約束不僅可以在乙個表內建立,而且可以同時多表建立組合唯一約束。
--建立表時設定,表示使用者名稱、密碼不能重複
create table user(
idint not null,
name varchar(20),
password varchar(10),
unique(name,password)
);--新增唯一約束
alter table user add unique (name, password);--修改唯一約束
alter table user modify name varchar(25) unique;--刪除約束
alter table user drop index name;
not null非空
非空約束 not null 與 預設值 default
非空約束用於確保當前列的值不為空值,非空約束只能出現在表物件的列上。
null型別特徵:
所有的型別的值都可以是null,包括int、float 等資料型別
--建立table表,id 為非空約束,name 為非空約束 且預設值為abc
create table user(
idint not null,
name varchar(255) not null default 'abc',
***char null);--增加非空約束
alter table user
modify *** varchar(2) not null;--取消非空約束
alter table user modify *** varchar(2) null;--取消非空約束,增加預設值
alter table user modify *** varchar(2) default 'abc' null;
auto_increment自增
create table user(
idintauto_increment primary key,
name varchar(255) not null ,
***char null);
default預設值
create table user(
idintauto_increment primary key,
name varchar(255) not null,
*** varchar(2) default '男');
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中的約束條件
主鍵約束 primary key 1.每個表中只能有乙個主鍵 2.主鍵值必須是非空不重複 3.可以設定單字段主鍵,也可以設定多欄位聯合主鍵 聯合主鍵中多個欄位的取值完全相同時,才違反主鍵約束 新增單字段主鍵約束 create table primary key,新增多欄位聯合主鍵約束 create ...