数据库学习笔记以及基本语法总结(二)

 

emp表格

dept表格

基本select查询语句

-- 查询全部, * 先给解析成每一个字段,再来查询
select * from emp;
select * from dept;
-- 查询全部, 效果同上
select empno, ename, job, mgr, hiredate, sal, comm, deptno
    from emp;
-- 筛选 where
select * from emp
    where  + 条件
   例如:-- 在部门20的人 = 
        -- deptno = 20;
        -- 工资大于3000的人 > >=
        -- sal >= 3000;
        -- 工资小于3000的人 < <=
        -- sal < 3000;
        -- 工资不等于3000的人 <>
        -- sal <> 3000;  
        -- 大于3000或者小于3000  or  and (and优先级更高)
        -- (sal > 3000 or sal < 3000)
        -- and deptno = 20;
        -- job是salesman的    字符串比较 = 大小写敏感,借助函数
        -- lower(job) = 'salesman';
        -- 名字长度超过5位, 借助length函数
        -- length(ename) > 5;
        -- 名字中以 s 开头的人 
        -- like 配合 %:0个或多个*  _:1个,模糊查询
        -- ename like 'S%';
        -- 名字中有 s 的人
        -- ename like '%S%';
        -- 没有领导的人
        -- null值很特殊,不能判断、不能计算,代表无穷大,或者无穷小
        -- mgr is null; -- is not null
        -- 工资大于 3000,1500,1200 任意一个
        -- sal > any (3000, 1500, 1200);
        -- 工资大于 3000,1500,1200 每一个
        -- sal > all (3000, 1500, 1200);
        -- 工资等于 3000,1500,1200 任意一个
        sal in(3000, 1500, 1200);
select ename, 
        sal * 12 + nvl(comm, 0) as salary
    from emp;
-- nvl2(comm, val1, val2): 如果comm为null,取val2,否则取val1
select nvl2(comm, 0, 1000) from emp;
        
-- 查询出来的员工,按照入职时间排序 - 默认升序 asc 降序 desc
select * from emp order by hiredate asc;
select * from emp order by hiredate desc;


-- 分组函数、聚合函数    max min sum avg count
select count(empno) from emp;
-- 分组函数 忽略null值
select count(comm) from emp_hh;
select count(1) from emp;

-- 每个部门最高工资
select deptno, max(sal) from emp 
group by deptno;

-- 注意:错误!ename 14条,max(sal) 1条
-- 结论:select子句中出现的字段,必须同时出现在group by子句中
select ename, max(sal) from emp ;

select deptno, max(sal), min(comm), avg(comm), sum(empno)
from emp 
group by deptno;

-- 通过emp表查询员工部门都有哪些
select deptno from emp;

select distinct deptno from emp; -- 去重复
select distinct deptno , mgr from emp; -- 去重复

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值