一.數據庫約束
?約束類型
NOT NULL?- 指示某列不能存儲 NULL 值。?(not null不能為NILL)
UNIQUE?- 保證某列的每行必須有唯一的值。 (unique唯一值)
DEFAULT?- 規定沒有給列賦值時的默認值。 (default為空給定默認值)
PRIMARY KEY?- NOT NULL 和 UNIQUE 的結合。確保某列(或兩個列多個列的結合)有唯一標
識,有助于更容易更快速地找到表中的一個特定的記錄。 (主鍵約束=not null+unique)
FOREIGN KEY?- 保證一個表中的數據匹配另一個表中的值的參照完整性。 (外鍵用于關聯其他表的主鍵或唯一鍵)
CHECK?- 保證列中的值符合指定的條件。對于MySQL數據庫,對CHECK子句進行分析,但忽略
CHECK子句
- PRIMARY KEY常配搭自增長auto_increment來使用。插入數據對應字段不給值時,使用最大 值+1。
- FOREIGN KEY?:foreign key 字段名 references 關聯表名(關聯表列名);
二.表的設計
三.聚合查詢
1.聚合查詢
Count返回查詢到的數據數量:select count(*) from 表名;
sum返回查詢到的數據的總和,不是數字沒有意義:select sum(math) from 表名;
Avg返回查詢到的數據的平均值,不是數字沒有意義:select avg(math) 平均from 表名;
Max返回查詢到的數據的最大值,不是數字沒有意義:select max(max) from 表名;
min返回查詢到的數據的最小值,不是數字沒有意義:select min(math) from 表名;
2.group by(分組)
以每個相同的role為一組,在一個組中分別獲取其中最大、最小、平均值。
select?role,max(salary),min(salary),avg(salary) from?emp?group by?role ;
GROUP BY 子句進行分組以后,需要對分組結果再進行條件過濾時,不能使用 WHERE 語句,而需要用 HAVING
3.HAVING
select?role,max(salary),min(salary),avg(salary) from?emp group by?role having?avg(salary)<1500;
四. 聯合查詢
1.內連接
語法
select 字段 from 表1 別名1 [inner] join 表2 別名2 on 連接條件 and 其他條件;
select 字段 from 表1 別名1,表2 別名2 where 連接條件 and 其他條件
2.外連接
外連接分為左外連接和右外連接。如果聯合查詢,左側的表完全顯示我們就說是左外連接;右側的表完 全顯示我們就說是右外連接。
語法:
-- 左外連接,表1完全顯示
select 字段名??from 表名1 left join 表名2 on 連接條件;
-- 右外連接,表2完全顯示
select 字段 from 表名1 right join 表名2 on?連接條件;
3.自連接
4 .子查詢
子查詢是指嵌入在其他sql語句中的select語句,也叫嵌套查詢信息
-
[NOT] IN關鍵字:
Where a in b表示a獲得b值
-
[NOT] EXISTS關鍵字:
五 合并查詢
為了合并多個select的執行結果,可以使用集合操作符 union,union all。使用UNION 和UNION ALL時,前后查詢的結果集中,字段需要一致。
1.union
該操作符用于取得兩個結果集的并集。當使用該操作符時,會自動去掉結果集中的重復行
2.union all
該操作符用于取得兩個結果集的并集。當使用該操作符時,不會去掉結果集中的重復行
內容重點總結
-
數據庫約束
-
表關系
-
新增