您当前的位置: 首页 >  oracle

程序员一灯

暂无认证

  • 2浏览

    0关注

    152博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Oracle 入门到精通系列【 第 2章】

程序员一灯 发布时间:2021-12-26 16:14:07 ,浏览量:2

  • 🚌一个人可以走的很快,一群人可以走的很远🇨🇳
  • 🎉点赞➕评论➕收藏 ➕关注== 养成习惯(一键四连)📝
  • 🎉欢迎关注💗一起学习👍一起讨论⭐️一起进步📝
  • 🙏作者水平有限,欢迎各位大佬指点,相互学习进步!😆

目录

一、单表查询

(一)简单条件查询

1.精确查询

2.模糊查询

3. and 运算符

4. or 运算符

5. and 与 or 运算符混合使用

6. 范围查询

7. 空值查询

(二)去掉重复记录

(三)排序查询

1.升序排序

2.降序排序

(四)基于伪列的查询

1、ROWID

2、ROWNUM

(五)聚合统计

1. 聚合函数

2. 分组聚合 Group by

3. 分组后条件查询 having

二、连接查询

(一)多表内连接查询

(二)左外连接查询

(三)右外连接查询

三、子查询

(一)where 子句中的子查询

(二)from 子句中的子查询

四、分页查询

(一)简单分页

(二)基于排序的分页

五、单行函数

(一)字符函数

常用字符函数讲解:

(二)数值函数

常用数值函数讲解:

(三)日期函数

常用日期函数讲解:

(四)转换函数

常用转换函数讲解:

(五)其它函数

(六)、case when

六、行列转换

(1)创建表格、插入测试数据

(2)查询每个人的每个科目分数

八、集合运算

(一)什么是集合运算

(二)并集运算

(三)交集运算

(四)差集运算

一、单表查询 (一)简单条件查询 1.精确查询

需求:查询员工号为7369的员工

select * from EMP where empno='7369';

查询结果:

2.模糊查询

需求:查询员工名包含“S”的业主记录

查询语句:

select * from EMP where ename like '%S%';

查询结果:

3. and 运算符

需求:查询员工名包含“S”并且工作包含“C”的记录

select * from EMP where ename like '%S%' and job like '%C%';

查询结果:

4. or 运算符

需求:查询员工名包含“S”或者工作包含“C”的记录

查询语句:

select * from EMP where ename like '%S%' or job like '%C%';

查询结果:

5. and 与 or 运算符混合使用

需求:查询员工名包含“S”或者工作包含“C”的记录,并且员工号为7369的员工记录。

查询语句:

select * from EMP where (ename like '%S%' or job like '%C%') and empno='7369';

查询结果:

因为 and 的优先级比 or 大,所以我们需要用 ( ) 来改变优先级。

6. 范围查询

需求:查询员工薪水大于1000,并且小于3000的记录我们可以用>= 和10000;

二、连接查询 (一)多表内连接查询

(1)需求:查询员工部门名称

select * from emp e,dept d where e.deptno = d.deptno;

(2) 查询各部门的平均薪水及部门编号,部门名称。

SELECT AVG(SAL),DNAME,EMP.DEPTNO FROM EMP,DEPT where EMP.DEPTNO = DEPT.DEPTNO GROUP BY DNAME,EMP.DEPTNO;

(二)左外连接查询

查询员工姓名及领导者姓名

select a.ename AS 员工姓名 ,b.ename AS 领导姓名 from emp a LEFT JOIN emp b on a.mgr = b.empno;

其他例子:

用户表、商品表:根据用户id查询用户所属商品

商品表、图片表:根据商品ID查询商品所属图片

(三)右外连接查询

通上类似,right join

三、子查询 (一)where 子句中的子查询

1. 单行子查询

  • 只返回一条记录
  • 单行操作符

1、查询薪水的最高值

select sal from emp where sal = (select max(sal) from emp);

2、 查询‘SMITH’的领导姓名

SELECT ENAME FROM EMP WHERE EMPNO = (SELECT MGR FROM EMP WHERE ENAME = 'SMITH');

3、 查询部门名称是‘SALES’的员工信息

SELECT * FROM EMP WHERE DEPTNO = (SELECT DEPTNO FROM DEPT WHERE DNAME = 'SALES');

2. 多行子查询

  1. 返回了多条记录
  2. 多行操作符

in 运算符

1、 查询各部门中最高薪水的员工编号,姓名…

select empno , ename,DEPTNO from emp WHERE SAL in (select MAX(SAL) from EMP GROUP BY DEPTNO);

2、 查询各部门最高薪水的员工信息(有坑)(薪水和部门编号都需要匹配)

select * from EMP where (deptno,SAL) in (select deptno,MAX(sal) from emp GROUP BY DEPTNO);

3、 查询各部门最高薪水的员工信息

select * from EMP where (deptno,SAL) in (select deptno,MAX(sal) from emp GROUP BY DEPTNO);

(二)from 子句中的子查询

select * from ( select * from )

select * from ( select * from emp )

四、分页查询

需要准备t_user进行批量插入数据,我们这里循环插入一些数据,使用前面讲解的JDBC进行插入数据


    @Test
    public void add(){
        UserDao userDao = new UserDao();
        for(long i=409;i            
关注
打赏
1645367472
查看更多评论
0.1074s