Python 高級查詢

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元,求轉賬後兩人個護的金額

         CREATE DATABASE mybank;
         USE mybank;
         CREATE TABLE `bank`(
              `customerName` CHAR(10),      #用戶名  
              `currentMoney` DECIMAL(10,2)  #當前餘額    
          );
         INSERT INTO `bank`(`customerName`,`currentMoney`) 
         VALUES('張二',1000);
         INSERT INTO `bank`(`customerName`,`currentMoney`) VALUES('麗麗',1);
        BEGIN;
         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 右側的爲 主表



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章