Oracle 课堂1

一、简单查询:
1、查询数据表的所有列:
SELECT * FROM 表名;
SELECT 列名,列名.... FROM 表名;

2、起别名:
SELECT 列名 [AS 别名],列名 别名....
FROM 表名;

---正常
SELECT ename AS 员工姓名,sal salary
FROM emp;

---别名是关键字,别名需要用双引号引起来

SELECT ename "select",sal "from"
FROM emp;

---别名中间存在空格,别名需要用双引号引起来
SELECT ename "employee name",sal
FROM emp;

3、distinct:去重
---查询emp表中的不同职务
SELECT DISTINCT job
FROM emp;

---查询emp表中每个部门的不同职务
SELECT DISTINCT deptno,job
FROM emp;

---查询emp表中不同部门的不同职务
SELECT DISTINCT deptno,DISTINCT job
FROM emp;   ---错误

注意:select后面,多列去重,在所有列的前面写一个distinct关键字即可

4、|| 连接输出
---将每个员工的信息输出为如下格式:
姓名为:xxxx,工资为:xxx。
字符串和日期用单引号引起来的。

SELECT '姓名为:'|| ename || ',工资为:' || sal || '。'  员工信息
FROM emp;

5、四则运算:
---查询员工的姓名和年薪
SELECT ename,sal*12 年薪
FROM emp;

SELECT ename,(sal+comm)*12 年薪
FROM emp;

---当与null值参与运算或是比较时,结果一定为null
nvl(agr1,arg2):判断arg1是否为Null,如果不为null,结果为arg1,如果为null,结果为arg2
SELECT ename,(sal+nvl(comm,0))*12 年薪
FROM emp;

1.员工转正后,月薪上调20%,请查询出所有员工转正后的月薪。
SELECT SAL*1.2 "员工转正后的月薪"
FROM EMP
2.员工试用期6个月,转正后月薪上调20%,请查询出所有员工工作第一年的年薪所得(不考虑奖金部分,年薪的试用期6个月的月薪+转正后6个月的月薪)
SELECT SAL*6+SAL*1.2*6 "工作第一年年薪"
FROM EMP
1.员工试用期6个月,转正后月薪上调20%,请查询出所有员工工作第一年的所有收入(需考虑奖金部分),要求显示列标题为员工姓名,工资收入,奖金收入,总收入。
SELECT ENAME 员工姓名,SAL*6+SAL*1.2*6 工资收入,nvl(comm,0) 奖金收入,(SAL*6+SAL*1.2*6+nvl(comm,0)) 总收入
FROM EMP
1.员工试用期6个月,转正后月薪上调20%,请查询出所有员工工作第一年的所有收入(需考虑奖金部分),要求显示格式为:XXX的第一年总收入为XXX
SELECT ENAME||'的第一年总收入为'||(SAL*6+SAL*1.2*6+nvl(comm,0))
FROM EMP

二、排序:
SELECT 列名 [AS 别名],列名 别名....
FROM 表名
ORDER BY 排序字段 ASC|DESC,排序字段 ASC|DESC...;

排序字段:列名,列的别名,列的顺序号,函数结果

SELECT *
FROM emp
ORDER BY deptno,sal desc;

SELECT ename a,deptno b,sal c
FROM emp
ORDER BY b,c desc;

SELECT ename a,deptno b,sal c
FROM emp
ORDER BY 2,3 desc;

---按照员工的部门编号 升序排序,部门相同按照奖金降序排序

SELECT ename a,deptno b,sal c,comm
FROM emp
ORDER BY 2,nvl(comm,0) desc;

三、限定查询
SELECT 列名 [AS 别名],列名 别名....
FROM 表名
WHERE 条件
ORDER BY 排序字段 ASC|DESC,排序字段 ASC|DESC...;

1、关系运算符:
>,<,<=,>=,=,<>,!=
可以比较数据类型:数值型
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值