JavaWebDay02
課程大綱
1、DQL 資料庫表記錄的查詢(排序、聚合、分組、分頁)
2、限制(非空、唯一、主鍵、外鍵)
3、多表關系(一對多、多對多、一對一)
4、範式
5、資料庫備份還原
第一章 DQL 資料庫表記錄的查詢
1、排序查詢
A.基礎文法:
ORDER BY 列名稱 排序規則
B.排序規則:
ASC 升序(從小到大) 預設的
DESC 降序
C.案例:
-- 按照數學成績升序排列
SELECT * FROM 學生表 ORDER BY 數學成績 ASC ;
-- 先按照數學成績升序排,數學成績相同就按英語成績降序
SELECT * FROM 學生表 ORDER BY 數學成績 ASC , 英語成績 DESC;
2、聚合函數
A.常用的聚合函數
a. COUNT(列名) -- 求個數
b. MAX(列名) -- 求最大值
c. MIN(列名) -- 求最小值
d. SUM(列名) -- 求和
e. AVG(列名) -- 求平均值
B.注意事項
聚合函數排除為NULL值的列.解決方案:
a.不采用 為NULL的列
b.函數 IFNULL(列名,0)
C.例如: 統計學生表當中,數學成績的平均分
SELECT AVG(IFNULL(數學成績,0)) FROM 學生表;
3、分組查詢 GROUP BY
A.基礎格式
GROUP BY 分組的字段
B.注意事項
a.分組之後,查詢的結果是 分組的字段 或者是 聚合函數
b.兩個差別 WHERE 和 HAVING
WHERE 分組之前的條件篩選,不滿足條件,不參與分組. 後面不能跟聚合函數
HAVING 分組之後的條件篩選,不滿足條件,不會顯示出來. 後面直接跟聚合函數
C.案例
-- 根據性别進行分組,查詢學生表當中的性别和對應的人數
SELECT 性别,COUNT(主鍵id) FROM 學生表 GROUP BY 性别;
-- 從學生表當中查詢成績大于80,對性别分組要求人數大于2,顯示最後的結果
SELECT COUNT(主鍵id) FROM 學生表 WHERE 成績>80 GROUP BY 性别 HAVING COUNT(主鍵ID)>2;
4、分頁查詢 LIMIT
A.基礎格式
LIMIT 起始位置,每頁條數
B.計算公式
起始位置 = (目前頁數-1)*每頁條數
C.案例: 每頁條數顯示4條,在第6頁的寫法
SELECT * FROM 表名稱 LIMIT 20,4; -- (6-1)*4 =20
第二章 限制
限制的作用:(為什麼要加上限制)
保證資料的完整性正确性。(可以校驗資料是否是"重複的"是否是"不是空值"等)
對于每一種限制而言:
(1) 在建立表的時候,添加限制
(2)在表建立之後,添加限制
(3)删除限制
1、非空限制
A.名稱
NOT NULL
B.效果
不能添加為空的資料.("姓名","商品編号")
C.三種操作的方式
a.建立表的時候,添加非空限制
CREATE TABLE 表名稱 (列名1 資料類型1,列名2 資料類型2 NOT NULL);
b.表建立完畢之後,再添加非空限制
ALTER TABLE 表名稱 MODIFY 列名稱 資料類型 NOT NULL;
c.删除非空限制
ALTER TABLE 表名稱 MODIFY 列名稱 資料類型;
2、唯一限制
A.名稱
UNIQUE
B.效果
不能添加重複的資料,NULL隻能有一個.("手機号碼","身份證","郵箱")
C.三種操作的方式
a.建立表的時候,添加唯一限制
CREATE TABLE 表名稱 (列名1 資料類型1,列名2 資料類型2 UNIQUE);
b.表建立完畢之後,再添加唯一限制【條件:不能有重複的】
ALTER TABLE 表名稱 MODIFY 列名稱 資料類型 UNIQUE;
c.删除唯一限制
ALTER TABLE 表名稱 DROP INDEX 列名稱;
3、主鍵限制
A.名稱
PRIMARY KEY 主鍵的關鍵字
AUTO_INCREMENT 自動增長的關鍵字(根據上一行的資料進行自動增長)
B.效果
主鍵效果: 非空并且唯一,而且在一張表當中隻能有一個主鍵
自動增長: 在上一行的基礎上,自動加上1
C.三種操作的方式
a.建立表的時候,添加主鍵限制
CREATE TABLE 表名稱 (列名1 資料類型1 PRIMARY KEY AUTO_INCREMENT,列名2 資料類型2);
b.表建立完畢之後,再添加主鍵限制【條件:不能有重複的】
ALTER TABLE 表名稱 MODIFY 列名稱 資料類型 PRIMARY KEY AUTO_INCREMENT;
c.删除主鍵限制
ALTER TABLE 表名稱 DROP PRIMARY KEY; -- 删除主鍵限制
ALTER TABLE 表名稱 MODIFY 自動增長的列名稱 自動增長的資料類型; -- 删除自動增長的效果
4、外鍵限制
A.名稱
FOREIGN KEY
B.效果
讓兩個表之間産生關聯,自己表的"外鍵"連上别人表的"主鍵"
C.三種操作的方式
a.建立表的時候,添加外鍵限制
CREATE TABLE 表名稱(
列名1 資料類型1,
列名2 資料類型2,
CONSTRAINT 外鍵别名 FOREIGN KEY (外鍵列名稱) REFERENCES 其他表名稱(其他表主鍵)
);
b.表建立完畢之後,再添加外鍵限制
ALTER TABLE 表名稱 ADD CONSTRAINT 外鍵别名 FOREIGN KEY (外鍵列名)
REFERENCES 其他表名(其他表主鍵);
c.删除外鍵限制
ALTER TABLE 表名稱 DROP FOREIGN KEY 外鍵别名;
D.外鍵級聯操作
a.級聯的含義:
多個表主外鍵關系删除和修改的時候,彼此之間會受到影響
b.兩個級聯的關鍵字
級聯更新 ON UPDATE CASCADE
級聯删除 ON DELETE CASCADE
c.添加級聯操作的文法
ALTER TABLE 表名稱 ADD CONSTRAINT 外鍵别名 FOREIGN KEY (外鍵列名稱)
REFERENCES 其他表名稱(其他表主鍵) ON UPDATE CASCADE ON DELETE CASCADE;
第三章 多表關系
1、一對多
A.生活執行個體:
部門和員工之間的關系
B.建表原則:
一是主鍵,多是外鍵.多的外鍵指向一的主鍵
2、多對多
A.生活執行個體:
學生和課程之間的關系
B.建表原則:
設計一個"中間表",至少包含兩個字段(兩個表的主鍵)
3、一對一 (了解即可)
A.生活執行個體:
人和身份證的關系
B.建表原則:
在任意一方添加外鍵(唯一限制 UNIQUE )指向另一方的主鍵
第四章 範式
1、範式的含義
設計資料庫的時候,遵循的規範
2、範式的分類
在同一張表當中,不要存在兩行資料當中都是相同的。使勁抽
A. 第一範式(1NF) 每一項都是不可以分割的原子資料.不能存在合并項
B. 第二範式(2NF) 抽取了核心直接依賴關系,其他間接關系放在一邊
C. 第三範式(3NF) 再次抽取間接表當中的依賴關系.
D. 巴斯-科德範式(BCNF)
E. 第四範式(4NF)
F. 第五範式(5NF)
第五章 資料庫備份還原
1、指令行備份和還原
A.備份資料庫
mysqldump -u使用者名 -p密碼 資料庫名稱 > 儲存的路徑
B.還原資料庫
a.登入資料庫
b.建立資料庫
c.使用資料庫
d.執行檔案 source 檔案路徑
2、圖形化界面備份和還原
參考筆記、可以參考 川鍋的 CHM格式筆記"D往期課程b資料庫進階"