黑猴子的家 mysql 列級約束

2021-09-11 16:37:55 字數 1681 閱讀 6097

1、常見約束

not null:非空

該字段的值是必填的,如果不設定該約束,該欄位預設是可以為空

default:預設

該字段有預設值

check:檢查,mysql語法支援,但效果不支援

該字段值可以加以限制,比如年齡可以控制在0-120之間

primary key:主鍵

該字段值不可以重複

1、不可以為空

2、乙個表中只能有乙個主鍵,但是可以多個欄位做組合主鍵

unique:唯一約束

該字段值不可以重複

1、可以為空

2、乙個表中可以有多個唯一鍵,可以有組合唯一鍵

foreign key:外來鍵

用於限制多表的關係

1、從表的該字段值必須來自於主表的關聯列的值

2、從表和主表的關聯列的型別必須一樣

3、主表的關聯列必須是主鍵

4、在從表中設定外來鍵

5、乙個表中可以新增多個外來鍵

6、插入資料時,先插入主表

刪除資料時,先刪除從表

分類: 位置 支援

列級約束 列的後面 除了外來鍵

表級約束 表的後面 除了非空和預設

★★★★★★★★★★★建立表時新增約束 ★★★★★★★★★★★ √

create table 表名(

欄位名 字段型別 列級約束,

欄位名 字段型別 列級約束,

表級約束

)

2、新增列級約束

use test;

drop table if exists stuinfo;

create table stuinfo(

id int not null unique,#非空約束+主鍵約束

stuname varchar(20) unique,#唯一約束

gender char default '男',#預設約束

age int unsigned check (age between 0 and 120)#檢查約束

);desc stuinfo;

select * from stuinfo;

3、插入預設值

insert into stuinfo(id,stuname,age) values(3,'lily',12);

insert into stuinfo values(5,'jack',default,900);

4、關於插入null

insert into stuinfo values(7,null,default,900);
5、關於插入多個唯一或主鍵

drop table if exists stuinfo;

create table stuinfo(

id int not null unique,#非空約束+主鍵約束

stuname varchar(20) unique,#唯一約束

gender char default '男',#預設約束

age int unsigned check (age between 0 and 120)#檢查約束

);

黑猴子的家 mysql 標識列

1 標識列總結 標識列又稱為自增長列 語法auto increment 特點 設定為標識列的字段,值不用手動插入,自動會有序列值,不用擔心重複問題 1 標識列字段的型別必須為數值型 2 標識列欄位必須為乙個key 主鍵或唯一或外來鍵 3 乙個表中至多有乙個標識列 4 如果用delete刪除,標識列的...

mysql 列約束 MySQL 列級約束和表級約束

一,六大約束 not null 非空 primary key 主鍵 unique 唯一 check 檢查約束,mysql 不支援,語法不報錯但無效果 foreign key 外來鍵.限制兩表關係,通常在從表引入外來鍵約束,引入主表中某列的值,保證從表該字段的值必須 於主表關聯列的值 default預...

黑猴子的家 mysql 事物簡述

1 事務的概念 事務 一組邏輯操作單元,使資料從一種狀態變換到另一種狀態。事務處理 事務操作 保證所有事務都作為乙個工作單元來執行,即使出現了故障,都不能改變這種執行方式。當在乙個事務中執行多個操作時,要麼所有的事務都被提交 commit 那麼這些修改就永久地儲存下來 要麼資料庫管理系統將放棄所作的...