DQL:查詢(xún)語(yǔ)句
1.排序查詢(xún)
2.聚合函數(shù)
3.分組查詢(xún)
4.分頁(yè)查詢(xún)
2章咧、約束
3倦西、多表之間的關(guān)系
4、范式
5赁严、數(shù)據(jù)庫(kù)的備份和還原
1.排序查詢(xún)
*排序語(yǔ)法:order by 子句
*排序語(yǔ)法:order by 排序字段1 排序方式1调限,排序字段2 排序方式2....
*排序方式:
*ASC:升序,默認(rèn)的误澳,可以不寫(xiě)
SELECT *FROM student2 ORDER BY math ASC;
--按照數(shù)學(xué)成績(jī)排序耻矮,如果數(shù)學(xué)成績(jī)一樣,就按照英語(yǔ)成績(jī)排名
SELECT *FROM student2 ORDER BY math ASC,english ASC;
*DESC:降序忆谓,
SELECT *FROM student2 ORDER BY math DESC;
*注意:如果有多個(gè)排序條件裆装,則當(dāng)前面的條件值一樣時(shí)才會(huì)判斷第二條件
2.聚合函數(shù)
將一列數(shù)據(jù)作為一個(gè)整體,進(jìn)行縱向的計(jì)算倡缠。
*count:計(jì)算個(gè)數(shù)
1.一般選擇非空列:主鍵
2.count(*)
在英語(yǔ)成績(jī)里面有null值哨免,所以在查詢(xún)的時(shí)候八個(gè)數(shù)據(jù)會(huì)自動(dòng)排除null值,
為了能夠保證所有的成績(jī)查詢(xún)到昙沦,
*max:計(jì)算最大值
*min: 計(jì)算最小值
*sum:計(jì)算和
*avg: 計(jì)算平均值
*注意:聚合函數(shù)的計(jì)算琢唾,排除null值
解決方案有兩種:
1.我們選擇不包含null的列
2.使用ifnull
3.分組查詢(xún)
*語(yǔ)法 :group by 分組字段;
*注意:
*分組之后盾饮,查詢(xún)的字段:分組字段采桃、聚合函數(shù)懒熙;
*在where和having 的區(qū)別
*where在分組之前進(jìn)行限定,如果不滿(mǎn)足條件普办,不參與分組
*having 在分組之后進(jìn)行限定工扎,如果不滿(mǎn)足結(jié)果,則不會(huì)被查詢(xún)出來(lái)
*where后不可以跟聚合函數(shù)衔蹲,having可以進(jìn)行聚合函數(shù)的判斷
按照性別分組肢娘,查詢(xún)男女?dāng)?shù)學(xué)的平均分
4.分頁(yè)查詢(xún)
*語(yǔ)法 :limit 開(kāi)始的索引,每頁(yè)查詢(xún)的條數(shù)舆驶;
-- 公式:開(kāi)始的索引 = (當(dāng)前的頁(yè)碼 -1) *每頁(yè)的條數(shù)
*limit 分頁(yè)操作是一個(gè)“方言”橱健,mysql的方言
約束
*概念:對(duì)表中的數(shù)據(jù)進(jìn)行限定,保證數(shù)據(jù)的正確性沙廉、有效性和完整性拘荡。
*分類(lèi):
#1、主鍵約束:primary key
#2蓝仲、非空約束:not null
#3俱病、唯一約束:unique
#4、外鍵約束:foreign key
非空約束:not null袱结,值不能為空
*1.在創(chuàng)建表時(shí)亮隙,添加約束
*2.創(chuàng)建完表以后,添加和刪除約束
唯一約束:unique垢夹,值不能重復(fù)
注意:mysql中唯一約束限定的值可以有多個(gè)null
在創(chuàng)建表之后添加和刪除唯一約束
主鍵約束:primary key
*注意:
1溢吻、含義:非空且唯一
2、一張表只能有一個(gè)字段為主鍵
3果元、主鍵就是表中記錄的唯一標(biāo)識(shí)
在創(chuàng)建表的時(shí)候添加主鍵
create table stu(
id int primary key , -- 給id添加主鍵約束
name varchar(20)
);
刪除主鍵
-- 刪除主鍵
-- 錯(cuò)誤的寫(xiě)法alter table stu modify id int;
ALTER TABLE stu DROP PRIMARY KEY;
創(chuàng)建完表之后添加主鍵
-- 刪除主鍵
-- 錯(cuò)誤的寫(xiě)法alter table stu modify id int;
ALTER TABLE stu DROP PRIMARY KEY;
-- 創(chuàng)建完表之后添加主鍵
ALTER TABLE stu MODIFY id INT PRIMARY KEY;
自動(dòng)增長(zhǎng):
如果某一列是數(shù)值類(lèi)型的促王,使用auto_increment 可以來(lái)完成自動(dòng)增長(zhǎng)
在創(chuàng)建表的時(shí)候添加主鍵,并且完成主鍵的自增長(zhǎng)
CREATE TABLE stu(
id INT PRIMARY KEY AUTO_INCREMENT, -- 給id添加主鍵約束
NAME VARCHAR(20)
);
自動(dòng)增長(zhǎng)是相對(duì)于上一次數(shù)據(jù)的自增
-- 刪除自動(dòng)增長(zhǎng)
ALTER TABLE stu MODIFY id INT;
-- 添加自動(dòng)增長(zhǎng)
ALTER TABLE stu MODIFY id INT AUTO_INCREMENT;
一般情況下而晒,都會(huì)和主鍵連到一塊用蝇狼。
外鍵約束:foreign key
1、在創(chuàng)建表時(shí)倡怎,可以添加外鍵
* 語(yǔ)法:
create table 表名(
...
外鍵列
constraint 外鍵名稱(chēng) foreign key (外鍵列的名稱(chēng)) references 主表的名稱(chēng)(主表列名稱(chēng))
)迅耘;
2、刪除外鍵
ALTER TABLE 表名 DROP FOREIGN KEY 外鍵名稱(chēng)监署;
3颤专、創(chuàng)建表完之后添加外鍵
ALTER TABLE 表名 ADD constraint 外鍵名稱(chēng) foreign key (外鍵列的名稱(chēng)) references 主表的名稱(chēng)(主表列名稱(chēng));
級(jí)聯(lián)操作
使用需謹(jǐn)慎!D品ΑF茱酢!尤其是級(jí)聯(lián)刪除
級(jí)聯(lián)更新
-- 在創(chuàng)建表之后
ALTER TABLE 表名 ADD constraint 外鍵名稱(chēng) foreign key (外鍵列的名稱(chēng)) references 主表的名稱(chēng)(主表列名稱(chēng)) ON UPDATE CASCADE;
在設(shè)置級(jí)聯(lián)更新的時(shí)候設(shè)置級(jí)聯(lián)刪除晓避,可以都設(shè)置簇捍,也可以設(shè)置其中任一只壳,根據(jù)需求。
ALTER TABLE 表名 ADD constraint 外鍵名稱(chēng) foreign key (外鍵列的名稱(chēng)) references 主表的名稱(chēng)(主表列名稱(chēng)) ON UPDATE CASCADE ON DELETE CASCADE;