- 结构化查询语言(SQL语言)的分类
- DQL:数据查询语言 select from where
- DML:数据操作语言 update insert delete,用于更新、新增、删除表中的数据
- DDL:数据定义语言 CREATE、DROP、ALTER,用于定义、销毁、修改数据库对象
- DCL:数据控制语言 GRANT和REVOKE,用于进行授权和收回权限
- TPL:事务控制语言 COMMIT和ROLLBACK,用于提交和回滚。
- select * from emp;
- SELECT子句 表示所需检索的数据列。
- FROM子句 表示检索的数据来自哪个表。
- from 表名
- select 列名
- 语句:子句的集合,简单来说就是语句就是由子句组成的 select * from emp;
- 子句:部分的SQL语句 from emp select *
- SQL语句的书写规则:**
- ①对象名和关键字不区分大小写 from/From/FrOm SeleCt/select
- ②关键字最好使用大写
- ③关键字不可以缩写、分开以及跨行书写
- ④可以单行来书写,也可以书写多行,建议分多行书写
1、查询所有员工信息 是通配符表示所有列
select from emp;
SelEct *
from EmP;
2、查询所有员工信息
select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp; --执行速度较快
3、查询所有员工的姓名和入职日期 (选择指定列)
select ename,hiredate from emp;
表结构
oracle中的数据类型
数据库中的数据类型的作用:规定数据列能够存放数据的类型
NUMBER(4)整型 -10^4~10^4-1 NUMBER(7,2)浮点型 12323.11 VARCHAR2(10):字符类型 date:日期类型
EMP:
empno: 雇员编号
ename: 雇员姓名
job: 工作
mgr: 经理编号
hiredate: 入职日期
sal: 工资
comm: 奖金
deptno: 部门编号
select * from dept;
dept
deptno: 部门编号
dname: 部门名称
loc: 部门地点
- 算术运算符 + — * /
- 算术运算符优先级 * /> + -
- 乘除优先于加减
- 相同优先权的表达式按照从左至右的顺序依次计算
- 括弧可以提高优先权,并使表达式的描述更为清晰
4、查询所有员工薪资增长500之后的工资
select empno,ename,sal+500,sal from emp;
5、查询所有员工增长200之后的年薪(不计奖金)
select ename,empno,sal,(sal+200)*12 from emp;
1.员工转正后,月薪上调20%,请查询出所有员工转正后的月薪。
select sal1.2,sal from emp;
2.员工试用期6个月,转正后月薪上调20%,请查询出所有员工工作第一年的年薪所得(不考虑奖金部分,年薪的试用期6个月的月薪+转正后6个月的月薪)
select (sal+sal1.2)*6 from emp;
- 空值NULL
- 空值是指一种无效的、未赋值、未知的或不可用的值。
- 空值不同于零或者空格。
- 注意:和null做算数运算后得到的结果都为null
6、查询所有员工年薪包括奖金部分
select sal,ename,empno,sal12+comm from emp;
select sal,ename,empno,sal12+nvl(comm,0) from emp;
- 排除null对算术运算的影响 nvl(a,b):如果a为null用b替换,否者为a
- 列别名
- 作用:更改结果集列名,增加可阅读性
- 语法:
- 列名 as 别名
- 列名 别名
- 注意:以下三种情况列别名两侧需要添加双引号
- 列别名中包含有空格
- 列别名中要求区分大小写
- 列别名中包含有特殊字符
select sal,ename,empno,sal12+nvl(comm,0) as 年薪 from emp;
select sal,ename,empno,sal12+nvl(comm,0) as yearSal from emp;
select sal,ename,empno,sal12+nvl(comm,0) yearSal from emp;
select sal,ename,empno,sal12+nvl(comm,0) "year Sal" from emp; --列别名有空格
select sal,ename,empno,sal12+nvl(comm,0) "yearSal" from emp; --列别名中要求区分大小写
select sal,ename,empno,sal12+nvl(comm,0) "$yearSal" from emp; --列别名中包含有特殊字符
1.员工试用期6个月,转正后月薪上调20%,请查询出所有员工工作第一年的所有收入(需考虑奖金部分),要求显示列标题为员工姓名,工资收入,奖金收入,总收入。
select sal 工资收入,ename 员工姓名,empno 员工编号,sal*12+nvl(comm,0) 年薪 from emp;
--------------------连接操作符------------------------------
|| 作用:用来连接字符串与列 列与列
列与列
7、查询员工的工资信息,显示的结果为 员工姓名+员工工资(simth800)
select (ename || sal) 工资 from emp;
--字符串与列
8、查询员工的姓名信息,显示的结果为 员工姓名是员工(simth是员工)
select ename || '是员工' from emp;
----------------------原义字符------------------------------
- 原义字符串是包含在SELECT列表中的一个字符、一个数字或一个日期。
- 日期和字符字面值必须用单引号引起来。
- 每个原义字符串都会在每个数据行输出中出现
9、查询员工的姓名信息,显示的结果为 员工姓名是员工(simth是员工)
select ename || '是员工' from emp;
select ename || 6666 from emp;
10、查询员工的工资信息,显示的结果为 员工姓名+员工工资是+员工工资(simth的工资是800)
select ename || '的工资是' || sal 工资 from emp;
--------------------------消除重复行---------------------------
- 在SELECT字句中使用关键字DISTINCT可消除重复行
11、查询有员工的部门
select distinct deptno from emp;
select from emp;
select from dept;
--------------------------查看表结构----------------------
注意:desc 表名命令必须去命令行窗口才能执行
desc 表名
1.员工试用期6个月,转正后月薪上调20%,请查询出所有员工工作第一年的所有收入(需考虑奖金部分),要求显示格式为:XXX的第一年总收入为XXX。
select sal,ename,empno,ename || '的第一年总收入为' || (sal*12+nvl(comm,0)) from emp;
2.查询员工表中一共有哪几种岗位类型。
select distinct job from emp;