一、简单查询:
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、关系运算符:
>,<,<=,>=,=,<>,!=
可以比较数据类型:数值型
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、关系运算符:
>,<,<=,>=,=,<>,!=
可以比较数据类型:数值型