数据库

数据库

一、查询 select

以如下几张表为例

emp表:

m0IVsK.png

dept表:

m0ImZD.png

salgrade表:

m0IZqO.png
  • (1) 查询所有的员工信息
  • select * from emp;
  • (2)查询所有的员工名字
  • select ename from emp;
  • (3)去重 distinct
  • select distinct deptno from emp;
  • (4)取别名,""原样输出 ,别名是小写的,有特殊符号存在,前后必须添加""。 给字段取别名 (as) 别名,给表取别名: 表名 别名, 注意:表取别名不能出现as
  • select ename as "username", empno "员工 编号" from emp;
  • select ename 员工名称 from emp e;
  • (5)虚表 没有数据,没有字段
  • select 123*456,'hehe' from dual;
  • (6)字符串的拼接 ||
  • select 'SXT-'||ename "尚学堂员工姓名",comm from emp;
  • (7)null 和 数字运算,结果还是null
  • select ename ,comm "原奖金",comm+100 "新奖金" from emp;
  •    null 和 字符串拼接,结果是原串
  • select ename ,comm "原奖金",comm||'100' "新奖金" from emp;
  •    处理null值, nvl(值1,值2) 当值1为null,函数的结果为值2,当值1不为null,函数的结果为值1
  • select nvl(null,0) from dual;

二、条件查询

select 数据 from 表名 where 行过滤条件;

执行流程: from where select

  • (1)查询30部门的员工的 名称和工种
  • select ename, job from emp where deptno=30;
  • (2)=、 !=、 <>、 >、 <、 >=、 <=的使用    查询除了'SMITH'之外的所有人信息
  • select * from emp where ename != 'SMITH';
  • (3) and | or的使用    查询工资在1500~2500之间的员工工种和姓名和工资
  • select * from emp where sal>=1500 and sal<=2500;
  •     查询 岗位 为 CLERK 或部门编号为 20的员工名称 部门编号,工资,工种
  • select * from emp where job = 'CLERK' or deptno=20;
  • (4)not 取反    查询所有可以领奖金的员工信息
  • select * from emp where not comm is null;
  • (5)集合
    • Union,并集(去重)
    • select * from emp where sal>1500 Union select * from emp where comm is not null;
    • Union all全集 不去冲
    • select * from emp where sal>1500 Union all select * from emp where comm is not null;
    • Minus差集    没有员工存在的部门编号
    • select deptno from dept Minus select distinct deptno from emp;
    • Intersect,交集(找出重复) 查询工资大于1500 并且 含有佣金的人员姓名
    • select * from emp where sal>1500 Intersect select * from emp where comm is not null;
    (6)like 模糊匹配(%任意个任意字符 , _一个任意字符)    求所有的员工中姓名以A开头的员工信息
  • select * from emp where ename like 'A%';
  •    求所有的员工中姓名包含A的员工信息
  • select * from emp where ename like '%A%';
  •    使用like做到精确匹配
  • select * from emp where ename like 'ALLEN';
  •    查询所有的员工中姓名第二个字符为A的员工信息
  • select * from emp where ename like '_A%';
  • (7)转义字符的使用    查询名字中带有%员工信息 escape('')指明转义字符
  • select * from emp where ename like '%A%%' escape('A');
  • (8)排序 order by 字段1 desc降序|asc升序默认,字段2 desc降序|asc升序默认...;
  • select * from emp order by sal desc;

三、函数

1、单行函数

(1)、日期函数
  • 1)当前时间sysdate/current_date
  • select sysdate from dual;
  • select current_date from dual;
  • 2)、修改日期(天数+-)    2天以后是几号
  • select sysdate+2 from dual;
  • 3)、修改月份    查询所有员工的试用期期到期(转正的日期) 3个月试用期
  • select hiredate "入职日期",add_months(hiredate,3) "转正日期" from emp;
  • 4)、月份之差     查询所有员工到目前为止一共工作了几个月
  • select hiredate,sysdate,months_between(sysdate,hiredate) from emp;
  • 5)、最后一天    查询当前月的最后一天
  • select last_day(hiredate) from emp;
  • 6)、下一个星期的时间     下一个星期三是几号
  • select next_day(sysdate,'星期三') from dual;
(2)、转换函数
  • 1)to_date(c,m)     字符串以指定格式转换为日期     '2019/8/23 16:49:44'
  • select to_date('2017年8月23日 16:49:44','yyyy"年"mm"月"dd"日" hh24:mi:ss')+1 from dual;
  • 2)to_char(d,m)    日期以指定格式转换为字符串
  • select to_char(sysdate,'yyyy-mm-dd hh24:mi-ss') from dual;
(3)、其他函数
  • 1)decode     判断decode(判定字段,校验字段值1,结果1,校验字段2,结果2。。默认值)     给每个部门后后面添加一个伪列,如果10部门,伪列显示为十,二十,三十...
  • select deptno,dname,loc,decode(deptno,10,'十',20,'二十',30,'三十','四十') from dept;
  • 2)case when then else end
  • select ename,sal "原薪资",deptno,(case deptno when 20 then sal*1.1 else sal end) "涨薪后的薪水" from emp;

2、组函数

  • 1)count :     统计记录数 count() -->* 或一个列名     统计一下一共有多少个员工
  • select count(*) from emp;
  • 2)max min:     最大值 最小值    查询本公司的最高工资和最低工资
  • select max(sal),min(sal) from emp;
  • 3)sum:   求和    计算本公司每个月一共要在工资上花费多少钱
  • select sum(sal) from emp;
  • 4)avg:   平均值    20部门的平均薪资
  • select avg(sal) from emp where deptno=20;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值