MySQL中規(guī)定:任何一條記錄最長(zhǎng)不能超過(guò)65535個(gè)字節(jié)
varchar永遠(yuǎn)達(dá)不到理論值
utf8下varchar的實(shí)際頂配:21844字符
GBK下varchar的實(shí)際頂配:32766字符
列屬性:真正約束字段的是數(shù)據(jù)類型,但是這種約束很單一冰悠,需要有一些額外的約束浙炼,來(lái)更加保證數(shù)據(jù)的合法性栗涂,這就需要列屬性
列屬性包括:NULL/NOT NULL、default镀岛、Primary key、unique key、auto_increment灾搏、comment
空屬性:
兩個(gè)值:NULL(默認(rèn)的)、NOT
NULL(不為空)
主鍵:primary key立润,主要的鍵狂窑,一張表只能有一個(gè)字段可以使用對(duì)應(yīng)的鍵,用來(lái)唯一的約束該字段里面的數(shù)據(jù)桑腮,不能重復(fù)泉哈,這種稱之為主鍵
增加主鍵:
方案一:在創(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;
主鍵分類:業(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 字段 類型;
唯一鍵(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)表中的記錄
索引的意義:
提升查詢數(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)多次