接著說昨天語法中提到的drop,delete和truncate的區別 drop用於刪除庫和表,不能用於刪除表記錄 delete和truncate都可以用於刪除表記錄,不能用於刪除庫和表 而delete和truncate之間的區別在: delete可以刪除表中的某一部分記錄,也可以刪除表中的所有記錄, ...
接著說昨天語法中提到的drop,delete和truncate的區別
drop用於刪除庫和表,不能用於刪除表記錄
delete和truncate都可以用於刪除表記錄,不能用於刪除庫和表
而delete和truncate之間的區別在:
delete可以刪除表中的某一部分記錄,也可以刪除表中的所有記錄,而且是一條一條的刪除
truncate只能一次刪除所有的表記錄,刪除時不是一條一條的刪,而是刪除表,再重新創建表
查詢時mysql中常見的函數
ifnull(列,值)
對指定列的值判斷是否為null,如果為null,就用括弧後面的值進行參數替換,查詢不會修改表中的值
count(列或者*)
count函數是對指定的列或者所有列統計行數,*代表所有列
max/min(列名)
max(列名)--對指定的列求最大值
min(列名)--對指定的列求最小值
sum(列)
對指定的列求和
avg(列)
對指定的列求平均值
curdate()
獲取當前時間 格式:年月日
curtime()
獲取當前時間 格式:時分秒
sysdate()/now()
獲取當前時間 格式:年月日 時分秒
其它函數
ceil(數值)--向上取整 floor(數值)--向下取整 round(數值)--向下取整 rand(數值)--隨機數
外鍵和表的關係
外鍵約束
現實生活中有很多數據間往往是有關係,比如員工和部門之間存在一定的關係,學生和老師之間也存在一定的關係,而這些關係需要我們保存起來,那麼:
如何在資料庫中才能保存兩張表數據之間的對應關係?
通常我們可以在其中一張表中添加一個列,用來保存另外一張表的主鍵,從而來保存兩張表的對應關係,而這個列就是這張表的外鍵
什麼是外鍵
所謂的外鍵就是用於通知資料庫兩張表數據之間對應關係的一個列,資料庫會通過外鍵來維護兩張表的對應關係
指定某一列外鍵和不指定外鍵有什麼區別
如果不指定外鍵,只是在其中一張表中添加了一個列用於保存另外一張表的主鍵,同樣可以保存兩張表之間的對應關係,只不過這段關係只有我們開發人員知道,資料庫不知道兩張表之間是有關係的,因此資料庫不會幫我們來維護這段關係
如果指定外鍵,通過外鍵通知資料庫兩張表之間有對應關係,資料庫就會幫我們維護這段關係,比如在指定外鍵後,如果想刪除一個部門,資料庫會在刪除之前檢查該部門下是否還有員工,如果有資料庫就會阻止刪除
添加外鍵的方法
創建表時添加外鍵
創建表過後指定外鍵
刪除外鍵
表關係
一對一
比如學生在固定教室上課,那麼這個教室就只對應這一個班,而這一個班也只對應這一個教室,對於一對一的兩張表,可以在任意一張表中添加列,保存另外一張表的主鍵,從而保存兩張表之間的關係
一對多或多對一
比如你對應的父親只有一個,而你的父親對應的孩子有幾個,對於一對多或多對一的兩張表,可以在多的一方添加列,保存另一方的主鍵,從而保存兩張表之間的關係
多對多
比如上課,教你的老師有多個,而一個老師也教多個學生,對於多對多的關係,可以拆分成多張一對多的關係,無法在兩張表中添加列保存關係,但我們可以添加一張第三方表(專門保存兩張表的關係)保存兩張表的主鍵,從而保存兩張表的關係.
關聯查詢和外連接查詢
笛卡爾積查詢
同時查詢兩張表,其中一張表的記錄是m條,另一張表的記錄是n條,笛卡爾積查詢的結果是m*n條,語法:select * from 表名,表名;
由於笛卡爾積查詢的結果中包含大量錯誤數據,因此我們一般不會直接使用這種查詢,我們可以從笛卡爾積查詢的結果中通過where條件剔除錯誤的激勵,保留正確的記錄,就是我們最終想要的結果
關聯查詢
將兩張或兩張以上的表按照指定條件查詢,將結果顯示在一張表中
語法:select 列 from 表名,表名..... where......;
左外連接查詢
顯示左側表中的所有記錄,如果右側表中沒有對應的記錄就顯示null
語法:select 列 from a left join b on(a.id=b.id) ; on(a.id=b.id)是條件語句
右外連接查詢
顯示右側表中的所有記錄,如果左側表中沒有對應的記錄就顯示null
語法:select 列 from a right join b on(a.id=b.id) ; on(a.id=b.id)是條件語句
子查詢
所謂的子查詢其實就是將一個查詢得出的結果,作為另外一個查詢的條件
語法:select ..... from ...... where .....(select ...... from .......);