天天看點

JavaWebDay02_DQL,限制,多表關系,範式,資料庫備份還原JavaWebDay02

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資料庫進階"	  
           

繼續閱讀