SQL的子查询:
|| 知识点很简单,主要是练习(之前笔记有练习)
– MySQL学习笔记(实操)(6)
– MySQL学习笔记(实操)(7)
SQL的联结:
|| 什么是联结:两张表通过其中有关系的列进行联结,在有些时候,比复杂的子查询嵌套会更方便
|| 所有联结都需要两个要素,1,被联接的表 2,联结方式 3,联结关系
|| 联结方式一:where 联结 (使用情景:常用于等值联结)
|| 联结方式二:内联结 (使用情景:常用于等值联结)
( join 或 inner join )
mysql> select * from score inner join course on score.course_id = course.course_id;
+------------+-----------+--------+-----------+-------------+------------+
| student_id | course_id | degree | course_id | course_name | teacher_id |
+------------+-----------+--------+-----------+-------------+------------+
| 103 | 3-105 | 92 | 3-105 | 计算机导论 | 825 |
| 105 | 3-105 | 88 | 3-105 | 计算机导论 | 825 |
| 109 | 3-105 | 76 | 3-105 | 计算机导论 | 825 |
| 103 | 3-245 | 86 | 3-245 | 操作系统 | 804 |
| 105 | 3-245 | 75 | 3-245 | 操作系统 | 804 |
| 109 | 3-245 | 68 | 3-245 | 操作系统 | 804 |
| 103 | 6-166 | 85 | 6-166 | 数字电路 | 856 |
| 105 | 6-166 | 79 | 6-166 | 数字电路 | 856 |
| 109 | 6-166 | 81 | 6-166 | 数字电路 | 856 |
+------------+-----------+--------+-----------+-------------+------------+
|| 联结方式三:外联结 (使用情景:需要包含没有关联行的那些行)
1,左联结:(left join 或 left outer join )
同内联结,只不过会将左表全部取出,右表用null补全
2,右联接 (right join 或 right outer join)
同内联结,只不过会将右表全部取出,左表用null补全
3,完全外联结 (full join 或 full outer join)-------> (mysql版本不一定支持)
左联结加右联结 **左union右**
|| 联结方式四:自联结 (表的复制, 使用情景把一个表中的一项记录与该表的其余记录或其余记录的汇总一一作比较)
|| 联结方式五(了解即可,基操):自然联结
标准的联结返回所有数据,相同的列也会多次出现。自然联结排除多次出现,使每个列只返回一次这个需要自己在select语句中手动检索所需要列,不写重复列
SQL中的事务:
|| 事务的定义:事务( transaction )是一组SQL语句,事务是最小的不可分割的工作单元,事务可以保证一个业务的完整性。
个人理解:事务就看作是一组在集成开发软件工具下的SQL语句;
正常的SQL语句可以看作是在IDE下写的SQL语句
|| 事务的四大特征: ACID
A,原子性
C,一致性
I,隔离性
D,持久性:事务一旦结束则无法返回
|| 事务处理的作用:(transaction processing)可以用来维护数据库的完整性,它保证了事务(成批的MySQL操作)要么完全执行,要么完全不执行。
如果没有错误发生,整组语句提交给(写到)数据库表。
如果发生错误,则进行回退(撤销)以恢复数据库到某个已知且安全的状态。
有关事务的一些处理操作:
|| 手动开启事务处理 (mysql 通过开启自动提交默认关闭了事务处理)
1.set autocomit=0
2.begin;
3,start transaction;
|| rollback 回退全部事务(check异常与中断)
一条 rollback 语句回退手动开启之后的所有语句,一般用于INSERT 、 UPDATE 和 DELETE (语句执行后,事务会自动关闭)
|| commit 手动提交全部事务 (return)(语句执行后,事务会自动关闭)
|| 使用保留点,部分事务回退与手动提交 savepoint flag1 + rollback to flag1