主鍵:primary key,主要的鍵,一張表只能有一個字段可以使用對應(yīng)的鍵,用來唯一的約束該字段里面的數(shù)據(jù),不能重復(fù),這種稱之為主鍵
增加主鍵:
方案一:在創(chuàng)建表的時候,直接在字段之后,跟primary key關(guān)鍵字(主鍵本身不允許為空)
方案二:在創(chuàng)建表的時候,在所有的字段之后,使用primary key(主鍵字段列表)來創(chuàng)建主鍵,如果有多個字段作為主鍵,可以是復(fù)合主鍵
方案三:當(dāng)表已經(jīng)創(chuàng)建好之后,額外追加主鍵,可以通過修改表字段屬性,也可以直接追加
alter table 表名 add primary key(字段列表);
主鍵約束:主鍵對應(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 '邏輯主鍵:自增長',
number char(10) not null comment '學(xué)號',
name varchar(10) not null
)
自動增長:auto_increment,當(dāng)對應(yīng)的字段,不給值,或給默認(rèn)值、或給NULL值,會自動的被系統(tǒng)觸發(fā),系統(tǒng)會從當(dāng)前字段中已有的最大值基礎(chǔ)上,再進(jìn)行+1操作,得到一個新的不同的數(shù)據(jù)
特點(diǎn):
任何一個字段要做自增長,前提必須本身就是一個索引
自增長字段必須是數(shù)字,而且是整型
一張表最多只能有一個自增長
修改自增長:alter table 表名 auto_increment=值;
查看自增長對應(yīng)的變量:show variables like 'auto_increment%';
刪除自增長:alter table 表名 modify 字段 類型;
唯一鍵(unique key)
默認(rèn)允許自動為空,而且可以多個為空
增加唯一鍵
方案一:在創(chuàng)建表的時候,字段之后直接跟unique / unique key
方案二:在所有的字段之后增加unique key(字段列表);
方案三:在創(chuàng)建表之后增加唯一鍵
select 選項(xiàng):select對查出來的結(jié)果的處理方式
all:默認(rèn)的,保留所有的結(jié)果
distinct:去重,查出來的結(jié)果,將重復(fù)給去除
字段別名
字段名 [as] 別名;
數(shù)據(jù)源:單表數(shù)據(jù)源、多表數(shù)據(jù)源、查詢語句
單表數(shù)據(jù)源:select * from 表名;
多表數(shù)據(jù)源:select * from 表名1,表名2, ...;
子查詢:select * from (select 語句) as 別名;
where子句:返回結(jié)果0或1,0代表false,1代表true
判斷條件
比較運(yùn)算符:>、<、>=、<=、!=、<>、=、like、between、and、in/not in
邏輯運(yùn)算符:&&(and)、||(or)、!(not)
group by子句
基本語法:group by 字段名 [asc|desc];
統(tǒng)計函數(shù):
count():統(tǒng)計分組后的記錄數(shù),每一組有多少記錄
max():統(tǒng)計每組中最大的值
min():統(tǒng)計最小值
avg():統(tǒng)計平均值
sum():統(tǒng)計和
limit子句
方案一:只用來限制長度,即數(shù)據(jù)量:limit 數(shù)據(jù)量;
方案二:限制起始位置,限制數(shù)量:limit 起始位置,長度;
limit offset,length;
length:每頁顯示的數(shù)據(jù)量,基本不變
offset = (頁碼-1)*每頁顯示量
連接查詢(join)分類:內(nèi)連接、外連接、自然連接、交叉連接
使用方式:左表 join 右表
交叉連接(cross join)
基本語法:左表 cross join 右表; -- 等價于:from 左表,右表;
內(nèi)連接([inner] join)
基本語法:左表 [inner] join 右表 on 左表.字段=右表.字段;
on表示連接條件
增加外鍵
創(chuàng)建表的時候增加外鍵:在所有的表字段之后,使用foreign key(外鍵字段) references 外部表(主鍵字段)
在新增表之后增加外鍵:修改表結(jié)構(gòu),使用alter table 表名 add [constraint 外鍵名字] foreign key(外鍵字段) references 父表(主鍵字段);
修改外鍵&刪除外鍵
alter table 表名 drop foreign key 外鍵名;
外鍵條件
外鍵要存在,首先必須保證表的存儲引擎是innodb
列類型必須與父表的主鍵類型一致
一張表中的外鍵名字不能重復(fù)
增加外鍵的字段數(shù)據(jù)已經(jīng)存在,必須保證數(shù)據(jù)與父表主鍵要求對應(yīng)
外鍵約束
有三種約束模式
district:嚴(yán)格模式(默認(rèn)的)
cascade:級聯(lián)模式
set null:置空模式
語法:foreign key(外鍵字段) references 父表(主鍵字段) on delete 模式 on update 模式;