MySQL數(shù)據(jù)庫(kù)的主鍵、自增長(zhǎng)、唯一鍵、的知識(shí)點(diǎn)等...

主鍵:primary key,主要的鍵,一張表只能有一個(gè)字段可以使用對(duì)應(yīng)的鍵,用來(lái)唯一的約束該字段里面的數(shù)據(jù),不能重復(fù),這種稱(chēng)之為主鍵

增加主鍵:

方案一:在創(chuàng)建表的時(shí)候,直接在字段之后,跟primary key關(guān)鍵字(主鍵本身不允許為空)

方案二:在創(chuàng)建表的時(shí)候,在所有的字段之后,使用primary key(主鍵字段列表)來(lái)創(chuàng)建主鍵,如果有多個(gè)字段作為主鍵,可以是復(fù)合主鍵

方案三:當(dāng)表已經(jīng)創(chuàng)建好之后,額外追加主鍵,可以通過(guò)修改表字段屬性,也可以直接追加

alter table 表名 add primary key(字段列表);

主鍵約束:主鍵對(duì)應(yīng)的字段中的數(shù)據(jù)不允許重復(fù),一旦重復(fù),數(shù)據(jù)操作(增和改)失敗

更新主鍵 & 刪除主鍵

alter table 表名 drop primary key;

主鍵分類(lèi):業(yè)務(wù)主鍵、邏輯主鍵

create table my_student(

id int primary key auto_increment comment '邏輯主鍵:自增長(zhǎng)',

number char(10) not null comment '學(xué)號(hào)',

name varchar(10) not null

)

自動(dòng)增長(zhǎng):auto_increment,當(dāng)對(duì)應(yīng)的字段,不給值,或給默認(rèn)值、或給NULL值,會(huì)自動(dòng)的被系統(tǒng)觸發(fā),系統(tǒng)會(huì)從當(dāng)前字段中已有的最大值基礎(chǔ)上,再進(jìn)行+1操作,得到一個(gè)新的不同的數(shù)據(jù)

特點(diǎn):

任何一個(gè)字段要做自增長(zhǎng),前提必須本身就是一個(gè)索引

自增長(zhǎng)字段必須是數(shù)字,而且是整型

一張表最多只能有一個(gè)自增長(zhǎng)

修改自增長(zhǎng):alter table 表名 auto_increment=值;

查看自增長(zhǎng)對(duì)應(yīng)的變量:show variables like 'auto_increment%';

刪除自增長(zhǎng):alter table 表名 modify 字段 類(lèi)型;

唯一鍵(unique key)

默認(rèn)允許自動(dòng)為空,而且可以多個(gè)為空

增加唯一鍵

方案一:在創(chuàng)建表的時(shí)候,字段之后直接跟unique / unique key

方案二:在所有的字段之后增加unique key(字段列表);

方案三:在創(chuàng)建表之后增加唯一鍵


更新唯一鍵 & 刪除唯一鍵

錯(cuò)誤的刪除方法:alter table 表名 drop unique key;

alter table 表名 drop index 索引名字;

索引:系統(tǒng)根據(jù)某種算法,將已有的數(shù)據(jù),或未來(lái)可能新增的數(shù)據(jù),單獨(dú)建立一個(gè)文件,文件能夠?qū)崿F(xiàn)快速的匹配數(shù)據(jù),并且能夠快速地找到對(duì)應(yīng)表中的記錄

索引的意義:

提升查詢(xún)數(shù)據(jù)的效率

約束數(shù)據(jù)的有效性、唯一性等


MySQL中提供了多種索引

主鍵索引:primary key

唯一索引:unique key

全文索引:fulltext index

普通索引:index

創(chuàng)建

create [unique] index 索引名 on 表名(字段名(長(zhǎng)度));

alter 表名 add [unique] index [索引名] on (字段名(長(zhǎng)度));

刪除:drop index [索引名] on 表名;


查看:show index from 表名\G

使用alter命令添加數(shù)據(jù)表的索引

alter table 表名 add primary key (字段列表):添加一個(gè)主鍵,意味著索引值必須是唯一且不為空

alter table 表名 add unique 索引名 (字段列表):創(chuàng)建索引的值必須是唯一的,允許NULL,且NULL可能會(huì)出現(xiàn)多次

alter table 表名 add fulltext 索引名 (字段列表):添加全文索引

alter table 表名 add index 索引名 (字段列表):添加普通索引,索引值可出現(xiàn)多次


小知識(shí)點(diǎn):

-- 向pri1、2表插入數(shù)據(jù)

insert into my_pri1

values ('古天樂(lè)','bc20190001'),

('臭蛋','bc20190002');

insert into my_pri2

values('bc20190001','bc25890001',90),

('bc2019002','bc25890002',85),

('bc2019003','bc25890003',92);

-- 主鍵沖突(重復(fù))

insert into my_pri1

values('劉濤','bc20190002');-- 不可以;主鍵沖突

insert into my_pri2

values('bc20190001','bc25890001',100);-- 不可以;主鍵沖突

-- 刪除主鍵

alter table my_pri3drop primary key;

-- 自增長(zhǎng)

create table my_auto(

idint primary key

auto_increment comment'自動(dòng)增長(zhǎng)',

name varchar(10)not null

)charset utf8;

-- 觸發(fā)自增長(zhǎng)

insert into my_auto(name)

values ('鄧麗君');

insert into my_auto

values (null,'成龍');

insert into my_auto

values (default ,'吳綺莉');

-- 指定數(shù)據(jù)

insert into my_autovalues (6,

'黃曉明');

insert into my_autovalues (null,

'楊穎');

-- 修改表選項(xiàng)的值

alter table my_auto

auto_increment=4;-- 向下修改(改?。?不生效

alter table my_auto

auto_increment=10;-- 向上修改(改大) 生效

-- 查看自增長(zhǎng)變量

show variableslike

'auto_increment%';

-- 修改自增長(zhǎng)的步長(zhǎng)

set auto_increment_increment=5;-- 一次自增5

-- 插入記錄;使用自增長(zhǎng)

insert into my_autovalues(null,

'楊紫');

insert into my_autovalues(null,

'張一山');

-- 刪除自增長(zhǎng)

alter table my_auto modify idint

primary key;-- 錯(cuò)誤;主鍵在理論上是單獨(dú)存在的(系統(tǒng)會(huì)認(rèn)為我們要在加一個(gè)主鍵)

alter table my_auto modify idint;-- 有主鍵的時(shí)候,千萬(wàn)不要在加主鍵

-- 創(chuàng)建一個(gè)唯一鍵

create table my_unique1(

number char (10)unique comment

'學(xué)號(hào):唯一,允許為空',

name varchar (20)not null

)charset utf8;

create table my_unique2(

number char (10)not null comment

'學(xué)號(hào)',

name varchar (20)not null,

-- 增加唯一鍵

unique key(number)

)charset utf8;

create table my_unique3(

idint primary key auto_increment,

number char (10)not null,

name varchar (20)not null

)charset utf8;

-- 追加唯一鍵

alter table my_unique3add unique

key(number);-- 給number增加唯一鍵

alter table my_unique3add unique

key(name);-- 給name增加唯一鍵

-- 插入數(shù)據(jù)

insert into my_unique1

values (null,'大熊'),

('bc20190001','胖虎'),

(null,'靜香');

insert into my_unique1

values ('bc20190001','哆啦A夢(mèng)');

-- 刪除唯一鍵? -----刪除的是索引index

alter table my_unique3drop indexnumber;

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容