Exists子查詢的語句
Select………………from表名 不相關子查詢,只查找裏面的內容
exists 和 in 是可以互換使用的,但in是逐個去查詢,速度慢;而exists速度很快,它查詢的結果只有兩種:TRUE 或者FALSE,要麼返回真,要麼返回假 所以exists就分爲了相關子查詢、不相關子查詢
子查詢的注意事項:
任何允許使用表達式的地方都可以用子查詢
嵌套在父查詢SELECT語句的子查詢可以包括:
SELECT語句FROM語句WHERE語句GROUP BY 語句HAVING 語句只出現在子查詢中而沒有出現在父查詢中的列,不可以包含在輸出列中
對連接分內連接和外鏈接
內連接使用比較運算符根據每個表的通用列中的值匹配兩個表的行。
滿足三大範式
第一範式 每列保持原子性
第二範式 除主鍵以外的其他字段,每個表只能做一件事情。
訂單表:訂單編號、訂單日期、 價格
1 2018/1/1 200
2 2018/1/6 100
訂單是主鍵沒有重複的。
訂單明細表:產品編號、訂單編號、價格。
1 1 20
2 1 50
把兩個合爲一個訂單表作爲組件
子查詢功能比較強大。
事物具備的屬性:原子性、一致性、隔離性、持久性(對處理後的數據持久保持)。
原子性(Atomiccity): 事務是一個完整的操作,每一步都是不可以分的
一致性(Consistency): 當事務完成時,數據處於同一狀態
隔離性(Isolation): 併發事務之間彼此隔離、獨立,它不會以任何方式依賴或影響了其他事務
持久性(Durability): 事務完成後,對處理後的數據持久保持
開始事物、提交事物、撤銷(回退)事物。
#轉賬---張二給轉麗麗500元,求轉賬後兩人個護的金額
USE mybank;
CREATE TABLE `bank`(
`customerName` CHAR(10), #用戶名
`currentMoney` DECIMAL(10,2) #當前餘額
);
VALUES('張二',1000);
INSERT INTO `bank`(`customerName`,`currentMoney`) VALUES('麗麗',1);
UPDATE `bank` SET `currentmoney` = `currentmoney` - 500
WHERE `customerName` = ' 麗麗' ;
UPDATE `bank` SET `currentmoney` = `currentmoney` +500
WHERE `customerName` = '麗麗' ;
多表連接查詢
1.內連接(INNER JOIN)和外連接---左外連接(LEFT JOIN)和右外連接(RIGHT JOIN)
查詢學生的學號、姓名、成績
SELECT studentNo,studentName,studentResult FROM student
INNER JOIN result ON student. studentNo = result.studentNo
使用INNER JOIN 內連,連接的兩張表,兩者必須要有共同匹配的內容!!!
LEFT JOIN 左側的爲主表 ;RIGHT JOIN 右側的爲 主表