mysql支援的完整性約束
約束是一種限制,它通過對錶的行或列的資料做出限制,來確保表的資料的完整性、唯一性。
mysql中,常用的幾種約束:
約束型別:
主鍵外來鍵
唯一非空
自增預設值
關鍵字:
primary key
foreign key
unique
not null
auto_increment
default
1、主鍵約束 primary key
主鍵約束相當於 唯一約束 + 非空約束 的組合,主鍵約束列不允許重複,也不允許出現空值。
每個表最多隻允許乙個主鍵。
建立主鍵語法:
-- 基本模式
create table 表名(
id int primary key,
name char
-- 刪除主鍵約束
alter table temp drop primary key;
-- 新增主鍵約束
alter table 表名 add primary key(欄位名);
-- 修改主鍵約束
注意:需要將原有的主鍵刪除才能修改主鍵
alter table 表名 modify 主鍵字段 主鍵型別 primary key;
2.外來鍵約束foreign key
外來鍵約束是保證乙個或兩個表之間的參照完整性,外來鍵是構建於乙個表的兩個字段或是兩個表的兩個字段之間的參照關係
語法:-- 基本模式
-- 主表
create table 表1(
id int primary key,
name varchar(20)
-- 副表
create table 表2(
id int,
name varchar(20),
classes_id int,
foreign key(id) references 表1(id)
-- 刪除外來鍵約束
alter table 表名 drop foreign key 外來鍵;
3.唯一約束unique
唯一約束是指定table的列或列組合不能重複,保證資料的唯一性。
建立語法:
-- 建立表時設定
create table 表名(
id int not null ,
name varchar(20),
password varchar(10),
unique(name,password)
-- 新增唯一約束
alter table 表名 add unique (name, password);
-- 修改唯一約束
alter table 表名 modify name varchar(25) unique;
-- 刪除約束
alter table 表名drop index 要刪除欄位名;
4.非空約束not null
非空約束用於確保當前列的值不為空值,非空約束只能出現在表物件的列上。
語法:-- 建立table表,id 為非空約束,name 為非空約束 且預設值為abc
create table 表名(
id int not null,
age int not null default 34
-- 增加非空約束
alter table 表名
modify 字段 字段資料型別 not null;
-- 取消非空約束
alter table 表名modify 欄位名 字段屬性 null;
-- 取消非空約束,增加預設值
alter table 表名 modify 欄位名 字段屬性 default 預設值 null;
5.自增auto_increment
當插入第一條記錄時,自增字段沒有給定乙個具體值,可以寫成default/null,那麼以後插入欄位的時候,該自增字段就是從1開始,每插入一條記錄,該自增字段的值增加1。當插入第一條記錄時,給自增欄位乙個具體值,那麼以後插入的記錄在此自增字段上的值,就在第一條記錄該自增字段的值的基礎上每次增加1。
語法:create table 表名(
id int primary key auto_increment,
MySQL完整性約束
create database adrui show databases use adrui not null 非空約束,插入資料該欄位不能為空 primary key 主鍵約束 主鍵約束相當於非空約束 唯一約束,auto increment是mysql擴充套件的字段值自加的約束,約束字段資料型別必...
Mysql 完整性約束
定義 完整性約束是對字段進行限制,從而符合該欄位達到我們期望的效果比如字段含有預設值,不能是null等,主要有唯 一 自增 主鍵 外來鍵約束 唯一約束 唯一約束可以有多個但索引列的值必須唯一,索引列的值允許有空值。如果能確定某個資料列將只包含彼此各不相同的值,在為這個資料列建立索引的時候就應該使用關...
完整性約束
create table student tb id int notnull 非空約束 資料不允許為空 name varchar 255 null 顯式指定允許為空 新增非空約束 alter table 表名 modify column 屬性名 屬性型別 not null alter table s...