oracle —— 三、查询

学习:https://www.lanqiao.cn/courses/1048

一、模糊查询

  1. like配合通配符可以实现模糊查询,一般针对字符类型
selec * from tb_name where col_name like 'XXX';
  1. 常见通配符:
通配符 解释
% 零、一或多个字符
_ 一个字符

二、常见函数

用途 函数
去空格 trim(), ltrim(), rtrim()
大小写 upper(), lower()
字符串转时间 to_date('19991010', 'yyyymmdd')
字符串转数值 to_number('1990')
字符串连接 concat(char1, char2)
时间中提取字符串 to_char(sysdate, 'mmmm')
数值计算 sin(), cos(), tan(), abs(), pi(), exp(), sqrt()
聚集函数 avg() max() min() sum() count(),avg(distinct 字段)可以忽略重复的值不计入其中

三、计算字段

方式 实现
拼接字段 select后的字段可以用"||"来拼接数字、字符串
算术计算字段 select后的字段之间还可以用+-*/进行计算

四、分组排序

子句 作用
group by 可以配合聚合函数进行统计
having 从得到的结果中筛选
order by 排序,默认升序,添加desc就是逆序
rownum 限制返回行数,用在where子句中,如where rownum < 5

五、子查询

直接给出例子:
学生表(student)

学号(s_id) 姓名(s_name) 性别(s_sex) 年龄(s_age)
1001 shiyanlou1001 man 10
1002 shiyanlou1002 woman 20
1003 shiyanlou1003 man 18
1004 shiyanlou1004 woman 40
1005 shiyanlou1005 man 17
选课表(sc)
学号(s_id) 课程号(c_id) 成绩(grade)
-------- --------- ---------
1001 3 70
1001 1 20
1002 1 100
1001 4 96
-- 分两步查询选课程号1的学生的年龄
SELECT s_id FROM sc WHERE c_id=1;
SELECT s_id,s_age FROM student WHERE s_id IN (1001,1002);
-- 用子查询解决
SELECT s_id,s_age FROM student WHERE s_id IN (SELECT s_id FROM sc WHERE c_id=1);

五、连接

连接 描述
cross join 笛卡尔连接,将两张表所有可能的组合全部现实出来
inner join ... on ... 内连接,只返回满足条件的行
full/left/right join ... on ... 在内连接的基础上,显示两张表/左表/右表全部的行,不满足条件的列会显示空值
nature join 将两张表中相同名称相同类型的列合并

六、视图

1.创建视图

create view v_name 
as
select ...

2.删除视图

drop view v_name;

七、总给


图片地址:https://dn-simplecloud.shiyanlou.com/uid/276733/1518160126706.png

posted @ 2021-03-04 16:29  叶落未落  阅读(88)  评论(0)    收藏  举报