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 右侧的为 主表



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