1.查询当前用户下所有表名
- select table_name from user_tables;
2.行转列
- 统计每个部门下的人数
- 行转列
语法:case when…then…else…end
我们只想要一列显示一个结果,所以在前面加个max
3.时间截取
dual是一张虚拟表,当你只有一个字段,可以使用这个虚拟表做测试
4.数据合并
语法:
merge into 表1 using 表2 on 条件
when matched then
when not matched then
- 先创建两张表,插入数据。
- 将B表合并到A表,如果A表存在相同记录,在覆盖更新,如果没有则插入。
可以看到1122记录的sal被替换成B表的3000,1144的ename和sal也被B表替换。
新增插入了EE和FF。
5.递归
语法:
select …from table [where 条件]
start with 条件
connect by —用于指定父行和子行的关系
[prior 字段1 = 字段2] —prior在等号左边,向下取
[字段1 = prior字段2];—prior在等号右边,向上取
- 在中国地级市表中 取 104001008002 南关区 所有上级城市
- 中南地区的所有下级省份,城市,区县
- 查看中南地区的所有下级城市列表,城市level属于3
- 显示地区,省份,城市,区县
当c_id的长度等于6时,为省份。我们只要进行多个自连接,c_id=superior_c_id,就能显示所有地区详细信息。