MySQL 字段約束與索引

2022-09-11 11:48:20 字數 2102 閱讀 2917

mysql的字段約束共四種:

約束名關鍵字

描述主鍵約束

primary key

字段值唯一,且不能為null

非空約束

not null

字段值不能為null

唯一約束

unique

字段值唯一,但可以為null

外來鍵約束

foreign key

保持關聯資料的邏輯性

關於主鍵約束

create table t_emp(

id int primary key auto_increment,

...);

關於非空約束

create table t_emp(

id int primary key auto_increment,

name varchar(20) not null,

married boolean not null default false

);

關於外來鍵約束

外來鍵約束主要用於保證資料的邏輯關係

t_dept:

dep_id

dep_name

tel11

研發部111

12測試部

11213

銷售部113

t_emp:

emp_num

name

***dep_id1張三

男112李四

男12外來鍵約束寫在子表中:

-- 父表:

create table t_dept(

dep_id int usigned primary key,

dep_name varchar(20) not null unique,

tel char(3) unique

);-- 子表:

create table t_emp(

emp_num int usigned primary key,

name varchar(20) not null,

*** char(3) enum('男','女') not null,

dep_id int usigned,

foreign key (dep_id) references t_dept(dep_id)

);

設定外來鍵約束後,若要刪除父表內容,必須先刪除子表相關的內容,這種約束能保證邏輯關係。

但另一方面,多表的相互外來鍵關聯,可能形成外來鍵閉環,導致無法刪除任何一張表的記錄。故可以不設定外來鍵約束,僅依靠應用程式的邏輯來保證。

什麼是資料庫索引?

簡單來說,索引是關聯式資料庫中對某一列或多個列的值進行預排序的資料結構,一般資料庫需要維護索引對應的二叉樹。

為什麼需要索引?

資料庫如果有上萬甚至上億條記錄,想要提高查詢速度,就需要使用索引。

如何建立索引?

①、建立表的時候新增索引

create table table_name(

...,

index [索引名] (欄位名),

...);

索引名是可選項,如果不定義索引名,則使用欄位名作為索引名。

②、在已建立的表中新增索引

# 語法一:

create index 索引名 on 表名(字段);

# 語法二:

alter table 表名 add index [索引名](欄位名)

# 查詢索引

show index from 表名;

# 刪除索引

drop index 索引名 on 表名;

建立索引要遵循什麼原則?

mysql 索引與約束 mysql約束與索引的區別

摘自 一 約束 作用 是為了保證資料的完整性而實現的摘自一套機制,它具體的根據各個不同的資料庫的實現而有不同的工具 約束 這裡主要講解mysql的約束 1 非空約束 not null 指示某列不能儲存null 值 2 唯一約束 unique uk unique約束的字段,要求必須是唯一的,但null...

mysql 索引與約束 mysql索引和約束區別

一 約束 作用 是為了保證資料的完整性而實現的摘自一套機制,它具體的根據各個不同的資料庫的實現而有不同的工具 約束 這裡主要講解mysql的約束 1 非空約束 not null 指示某列不能儲存null 值 2 唯一約束 unique uk unique約束的字段,要求必須是唯一的,但null除外 ...

mysql 字段約束

5.6 操作表的約束 80 5.6.1 mysql支援的完整性約束 81 5.6.2 設定非空約束 not null,nk 81 5.6.3 設定欄位的預設值 default 82 5.6.4 設定唯一約束 unique,uk 84 5.6.5 設定主鍵約束 primary key,pk 85 5....