列屬性:
更加保證數(shù)據(jù)的合法性
列屬性包括:NULL/NOT NULL砂缩、default、Primary key(主鍵)甲锡、unique key(唯一鍵)拒名、auto_increment()、comment()
空屬性:
兩個(gè)值:NULL(默認(rèn)的)顾彰、NOT NULL(不為空)
列描述:
comment极阅,描述,沒(méi)有實(shí)際含義涨享,是專(zhuān)門(mén)用來(lái)描述字段筋搏,會(huì)根據(jù)表創(chuàng)建語(yǔ)句保存,用來(lái)給程序員(數(shù)據(jù)庫(kù)管理員)來(lái)進(jìn)行了解的
默認(rèn)值:
default厕隧,在需要真實(shí)數(shù)據(jù)的時(shí)候奔脐,用戶可以選擇性地使用默認(rèn)值
主鍵
定義:
1、主關(guān)鍵字(主鍵吁讨,primary key)是被挑選出來(lái)髓迎,作表的行的惟一標(biāo)識(shí)的候選關(guān)鍵字。
2建丧、一個(gè)表只有一個(gè)主關(guān)鍵字竖般。
3、主關(guān)鍵字又可以稱(chēng)為主鍵茶鹃。
4涣雕、主鍵可以由一個(gè)字段,也可以由多個(gè)字段組成闭翩,分別成為單字段主鍵或多字段主鍵
優(yōu)點(diǎn):主鍵本身不允許為空
缺點(diǎn):只能使用一個(gè)字段作為主鍵
增加主鍵:
方案一:在創(chuàng)建表的時(shí)候挣郭,直接在字段之后,跟primary key關(guān)鍵字(主鍵本身不允許為空)
方案二:在創(chuàng)建表的時(shí)候疗韵,在所有的字段之后兑障,使用primary key(主鍵字段列表)來(lái)創(chuàng)建主鍵,如果有多個(gè)字段作為主鍵蕉汪,可以是復(fù)合主鍵
方案三:當(dāng)表已經(jīng)創(chuàng)建好之后流译,額外追加主鍵(如果追加主鍵時(shí),主鍵不唯一者疤,就會(huì)追加失敻T琛),可以通過(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)
自動(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)
desc 查看列和數(shù)據(jù)的類(lèi)型
默認(rèn)允許自動(dòng)為空,而且可以多個(gè)為空(不參加運(yùn)算)
增加唯一鍵:
方案一:在創(chuàng)建表的時(shí)候俯邓,字段之后直接跟unique / unique key
方案二:在所有的字段之后增加unique key(字段列表)骡楼;
方案三:在創(chuàng)建表之后增加唯一鍵
更新唯一鍵 & 刪除唯一鍵
錯(cuò)誤的刪除方法:alter table 表名 drop unique key;(唯一鍵可以有多個(gè))
alter table 表名 drop index 索引名字(默認(rèn)字段名);(正確)
索引
建立在字段上? ,將已有的數(shù)據(jù)稽鞭,或未來(lái)可能新增的數(shù)據(jù)鸟整,本身會(huì)產(chǎn)生一個(gè)文件,耗費(fèi)磁盤(pán)和空間
意義:
提升查詢(xún)數(shù)據(jù)的效率
約束數(shù)據(jù)的有效性朦蕴、唯一性等
MySQL中提供了多種索引
主鍵索引:primary key
唯一索引:unique key
全文索引:fulltext index
普通索引:index
AVG([distinct] expr)? 求平均值
COUNT({*|[distinct] } expr) 統(tǒng)計(jì)行的數(shù)量
MAX([distinct] expr) 求最大值
MIN([distinct] expr) 求最小值
SUM([distinct] expr 求累加和