主鍵: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)的字段,不給值俊抵,或給默認值谁不、或給NULL值,會自動的被系統(tǒng)觸發(fā)徽诲,系統(tǒng)會從當(dāng)前字段中已有的最大值基礎(chǔ)上刹帕,再進行+1操作,得到一個新的不同的數(shù)據(jù)
特點:
任何一個字段要做自增長谎替,前提必須本身就是一個索引
自增長字段必須是數(shù)字偷溺,而且是整型
一張表最多只能有一個自增長
修改自增長:alter table 表名 auto_increment=值;
查看自增長對應(yīng)的變量:show variables like 'auto_increment%';
刪除自增長:alter table 表名 modify 字段 類型;
唯一鍵(unique key)
默認允許自動為空,而且可以多個為空
增加唯一鍵
方案一:在創(chuàng)建表的時候钱贯,字段之后直接跟unique / unique key
方案二:在所有的字段之后增加unique key(字段列表)挫掏;
方案三:在創(chuàng)建表之后增加唯一鍵
select 選項:select對查出來的結(jié)果的處理方式
all:默認的,保留所有的結(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
判斷條件
比較運算符:>霹菊、<剧蚣、>=、<=旋廷、!=鸠按、<>、=饶碘、like目尖、between、and扎运、in/not in
邏輯運算符:&&(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)格模式(默認的)
cascade:級聯(lián)模式
set null:置空模式
語法:foreign key(外鍵字段) references 父表(主鍵字段) on delete 模式 on update 模式;