1.group by
根据表里的字段名分类,相同字段名只显示一行记录,通常与聚集函数max、min合用选择最大值最小值,或者与having合用筛选,结果按照group by的字段排序
例:select * from examine group by e_date;
结果:
+-------------+------------+-----------+------------+---------------+
| e_id | e_name | h_id | e_date | e_teachername |
+-------------+------------+-----------+------------+---------------+
| 21500000201 | 急救学考核 | 215000002 | 2018-07-31 | 邹恩岑 |
| 21000000102 | 心理学 | 210000001 | 2018-08-20 | 陆卫忠 |
| 21500000101 | 护理学考核 | 215000001 | 2018-08-31 | 席雪峰 |
| 21000000101 | 病理学考核 | 210000001 | 2018-09-30 | 南顺丰 |
| 21500000103 | 康复学考核 | 215000001 | 2018-11-01 | 林芳 |
+-------------+------------+-----------+------------+---------------+
2.起别名
起别名分为为表起别名和为字段起别名,使用as关键字其中为字段起别名可以省略as关键字。
给字段起别名,结果中的字段名直接改为别名
例:select e_name as name
from examine group by e_date;
+------------+
| name |
+------------+
| 急救学考核 |
| 心理学 |
| 护理学考核 |
| 病理学考核 |
| 康复学考核 |
+------------+
给表起别名
例:select from examine
where examine.e_name = '心理学';和
select from examine e where e.e_name = '心理学';结果一样
3.连接查询
内连接
查询两张表匹配的内容 on是条件
select e.e_id ,e.e_name from examine e inner join hospital_info h on e.hid = h.h
id;
+-------------+--------------+
| e_id | e_name |
+-------------+--------------+
| 21000000101 | 病理学考核 |
| 21000000102 | 心理学 |
| 21500000101 | 护理学考核 |
| 21500000102 | 临床护理考核 |
| 21500000103 | 康复学考核 |
| 21500000201 | 急救学考核 |
+-------------+--------------+
外连接
分为左外连接和右外链接,表示以左边的表或者右边的表为基础,筛选出基准表中有的内容,非基准表里没有的内容显示为null。
交叉连接
返回两张表的笛卡尔积,效果相当于select * from table1,table2;
4.事务
事务的四个特性:
1.原子性
一组操作是一个整体,要么全部完成,要么全部放弃(回滚)
2.稳定性
操作出错时,有非法外键约束,事务撤回
3.隔离性
事务和事务相对独立
4.可靠性
事务提交后可以永久保存
提交事务 commit
回滚事务 rollback
事务自动提交autocommit = 1 0为关闭自动提交
开启事务 start transition 或者begin
5.事务的隔离级别
查看隔离级别:select @@tx_isolation
设置当前事务的隔离级别: set tx_isolation= “隔离级别”;
事务的隔离级别是为了避免出现脏读,幻读,不可重复读的问题
1.read uncommit 读未提交 什么都不能解决
2.read commit 读已提交 可避免脏读
3.repeatable read 可重复读 可避免脏读,不可重复读
4.serializable 串行化 可避免脏读,幻读,可重复读
6.乐观锁
默认数据不会出错,只有提交修改数据库时才回去判断会不会出错。底层使用version实现,比较修改的时version和取出 数据时version是否相同,另一种实现机制是时间戳。
7.聚集函数
Count()返回满足条件的列数
Max()返回最大
Min()返回最小值
Sun()返回和
Avg()返回平均值
8.索引
索引可以在创建表的时候指定,也可以使用语句创建
9.视图
视图使用create view as select创建
10.having
Where子句后面不能接聚合函数
Having后面接聚合函数
11.order by
排序