文档库 最新最全的文档下载
当前位置:文档库 › 查询语句

查询语句

1.oracle数据库启动的服务(sqlplus,OracleOraDb10g_home1TNSListener,OracleServiceORCL)
2.用客户端PLSQL Developer.exe连接指定数据库的方式
cmd中输入sqlplus进行本机数据库的方式
3.数据库中表和字段的概念
4. sql语句的分类
a) DDL,数据定义语言 create table drop table等
b) *DML,数据操纵语言 insert update delete
c) *DQL,数据查询语言 select
d) DCL,数据控制语言 dba(数据库管理员)

5.ddl语句:建或者 删除表,索引等数据库对象
create table tablename (column1 type,column2 type,column3 type....)
drop table tablename;
6.DML,数据操纵语言 增删改(insert ,delete ,update)
insert into tablename(column1,column2....) values()
delete from tablename where 条件
update tablename set column1=value1,column2=value2 where 条件

DML语句要执行commit的操作才能生效

7.DQL 数据查询语句
select 要查询的字段列表 from tablename
要查询的字段列表:* 代表查询该表中所有字段或者是要查询的字段的列表格式为(column1,column2,column3....)
1).查询数据库当前的时间 oracle的是sysdate
oracle中的虚表dual:查询与具体表没有关系的字段 比如数据库当前时间 或者是一些表达式时使用
select sysdate from dual;
2).查询出所有员工的编号,姓名,职位,月薪,年薪(不包含奖金),入职日期 并且给字段起别名
select * from emp
3).查询出所有员工的编号,姓名,职位,月薪,年薪(包含奖金),入职日期 并且给字段起别名
含有任何null值的数学表达式最后的结果都为空值
数据中含有空值时往往会增加程序的处理难度,强烈建议在实际当中开发数据库应用系统的时候不要使用空值
4).查询出月薪大于1500的人的编号,姓名,职位,月薪,年薪(不包含奖金),入职日期

5).查询出奖金为空的人的姓名,职位,月薪,奖金,年薪,入职日期

6).查询出工资大于等于1500小于等于3000的人的姓名,职位,月薪,奖金,年薪(包含奖金),入职日期(两种语句写出)

7).查询出编号为7369,7844,7902三个人的信息(两种写法)

8).查询出编号不为7369,7844,7902人的信息(两种写法)

9).查询出名字中包含A的人的信息

10).查询出名字中倒数第三个字符为A的人的信息

11).查询出薪水大于等于2000小于等于3000并且职位不等于ANALYST的人的编号,名字,职位,月薪,奖金,年薪

12).查询出入职日期28-9月 -81之后入职并且奖金不为空的人的编号,名字,职位,月薪,奖金,年薪

13).按照员工月薪由高到低的顺序进行排列后的员工的信息

14).查询出薪水大于1500的人的编号,姓名,薪水,年薪 并且按照薪水的降序进行显示

15).查询出薪水在1000到4000之间的人的信息 并且按照入职

时间的先后进行显示

16).查询出薪水在1000到4000并且名字中包含A 并且奖金为空的人的信息 并且按照薪水的降序进行排列

17).求出名字中包含a(不区分大小写)的人的信息
注意:基本函数(lower,upper,substr,to_char,to_date等)可以用在select和from之间的查询字段的列表处 也可以用在where条件语句中

18).查询出薪水在1000到4000并且名字中包含A 并且奖金为空的人的信息 并且按照薪水的降序进行排列

19).查询出名字前两个字符为al的人的信息(两种写法实现)

19-5).查询出名字中后两位字符为er人的信息(两种写法实现)

20).查询出薪水大于1200并且入职日期在1981-04-02之后的人的编号,名字,月薪,年薪(包含奖金),入职日期,格式化中国人能接受的日期形式
select * from emp where sal>1200 and HIredate >to_date('1981-04-02','YYYY-MM-DD');
21).求出名字中包含a并且入职日期在1982-06-01之后入职的人编号,名字,月薪,年薪(包含奖金),入职日期,格式化中国人能接受的日期形式
并且按照月薪的由高到低的顺序进行显示(两种形式 to_char 和to_date)
select empno,ename,nvl(sal+comm,sal)*12,to_char(hiredate,'YYYY-MM-DD')from emp
where ename like '%A%'and hiredate>to_date('1981-08-06','YYYY-MM-DD');
22).查询出月薪在公司的平均工资之上人的信息
组函数(avg,count,max,min,sum)只可以用在查询的列表 不可以用在where的条件语句中
select * from emp where sal>(select avg(sal)from emp);
如果在查询列表出现组函数 那么通常情况下不能单独出现其他字段 除非其他字段也放到相应的组函数中才可

23).求出部门编号为10的所有员工的平均工资
select avg(sal)from emp where deptno='10';
24).求出公司每年总的支出,以及平均薪水,以及总人数
select count(empno),avg(sal),sum(nvl(sal+comm,sal)*12)from emp;
--25).求出公司中每个部门的平均薪水
--在使用group by 时,有一个规则需要遵守,即出现在select列表中的字段,如果没有在组函数中,那么必须出现在group by 子句中。
select deptno,avg(sal) from emp group by deptno;
26).求出每个部门的部门编号,每年总的支出,以及该部门的平均薪水,以及该部门的人数
select deptno,avg(sal),count(empno),sum(nvl(sal+comm,sal)*12) from emp group by deptno;
27).查询出部门平均薪水大于1600的部门的平均薪水,人数以及该部门一年总的支出
select deptno, count(empno),sum(nvl(sal+comm,sal)*12),avg(sal) from emp group by deptno having avg(sal)>1600;
28).求出每个部门的部门编号,每年总的支出,以及该部门的平均薪水,以及该部门的人数 并且按照平均薪水由高到低的顺序进行排列
select deptno,avg(sal),count(empno),sum(nvl(sal+comm,sal)*12) from emp group by deptno order by avg(sal) desc;
小结:sql语句select

的语法
select column1,column2,..... from tablename where 过滤条件(and or) group by column having 分组的限制条件
order by column(最后进行排序)

注意:where过滤条件中只允许使用普通函数 不可以使用组函数 但是having分组限制条件中可以使用组函数

29)*.查询出工资大于1200,并且入职日期在1981-09-09以后的部门里面的人的平均薪水大于2000的部门的平均工资及部门编号 并且将其结果按照平均工资进行降序的排列
select deptno, avg(sal) from emp group by deptno having sal>1200 and HIredate >to_date('1981-09-09','YYYY-MM-DD') and avg(sal)>2000
order by (avg(sal)>2000) desc;
30).查询出公司所有人里面工资在部门编号为30最高工资之上的人信息

31).查询出工资大于公司的平均工资并且入职日期大于1981-02-16,并且名字中包含a的人的编号,名称,月薪,年薪 并且按照年薪进行降序排列

32).公司里面薪水最高的人的编号,名称,工作,入职日期,年薪

33)*.求平均薪水大于1600的部门里面工资大于1200的人所在的部门平均薪水,并且按照平均薪水的降序进行排序
//查询名叫SALES所在的部门
select deptno from dept where dname='SALES';
select * from emp where deptno=(select deptno from dept where dname='SALES');
查询部门名称为30的所有员工的信息
select * from emp where deptno=(select deptno from dept where dname='SALES');
select deptno from dept where dname='SALES';

*/

相关文档