常用查询练习及答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.oracle数据库启动的服务(OracleOraDb10g_home1TNSListener,OracleServiceORCL)
2.用客户端sqldeveloper.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 条件
7.DQL 数据查询语句
select 要查询的字段列表from tablename
要查询的字段列表:* 代表查询该表中所有字段或者是要查询的字段的列表格式为(column1,column2,column3....)
1).查询数据库当前的时间oracle的是sysdate
oracle中的虚表dual:查询与具体表没有关系的字段比如数据库当前时间或者是一些表达式时使用
select sydate from dual;
2).查询出所有员工的编号,姓名,职位,月薪,年薪(不包含奖金),入职日期并且给字段起别名
SELECT empno,ename,job,sal,sal*12AS年薪, hiredate 入职日期
FROM emp;
3).查询出所有员工的编号,姓名,职位,月薪,年薪(包含奖金),入职日期并且给字段起别名
含有任何null值的数学表达式最后的结果都为空值
数据中含有空值时往往会增加程序的处理难度,强烈建议在实际当中开发数据库应用系统的时候不要使用空值
需要使用到函数,如果是null就变为0
Nvl(列名|某个值,要变的数值)
SELECT empno,ename,job,sal,sal*12+nvl(comm,0) AS年薪, hiredate 入职日期
FROM emp
4).查询出月薪大于1500的人的编号,姓名,职位,月薪,年薪(不包含奖金),入职日期
SELECT empno,ename,job,sal,sal*12+nvl(comm,0) AS年薪, hiredate 入职日期
FROM emp WHERE sal >1500;
5).查询出奖金为空的人的姓名,职位,月薪,奖金,年薪,入职日期
SELECT empno,ename,job,sal,sal*12+nvl(comm,0) AS年薪, hiredate 入职日期
FROM emp WHERE comm IS NULL;
6).查询出工资大于等于1500小于等于3000的人的姓名,职位,月薪,奖金,年薪(包含奖金),入职日期(两种语句写出) SELECT empno,ename,job,sal,sal*12+nvl(comm,0) AS年薪, hiredate 入职日期
FROM emp WHERE sal>=1500AND sal<=3000;
SELECT empno,ename,job,sal,sal*12+nvl(comm,0)
AS年薪, hiredate 入职日期
FROM emp WHERE sal BETWEEN1500AND3000;
7).查询出编号为7369,7844,7902三个人的信息(两种写法) SELECT empno,ename,job,sal,sal*12+nvl(comm,0) AS年薪, hiredate 入职日期
FROM emp WHERE empno=7369OR empno=7844OR empno=7902;
SELECT empno,ename,job,sal,sal*12+nvl(comm,0) AS年薪, hiredate 入职日期
FROM emp WHERE empno IN(7369,7844,7902);
8).查询出编号不为7369,7844,7902人的信息(两种写法) SELECT empno,ename,job,sal,sal*12+nvl(comm,0) AS年薪, hiredate 入职日期
FROM emp WHERE empno!=7369and empno!=7844and empno<>7902;
SELECT empno,ename,job,sal,sal*12+nvl(comm,0) AS年薪, hiredate 入职日期
FROM emp WHERE empno not IN(7369,7844,7902);
9).查询出名字中包含A的人的信息
SELECT empno,ename,job,sal,sal*12+nvl(comm,0) AS年薪, hiredate 入职日期
FROM emp WHERE ename LIKE'%A%';
10).查询出名字中倒数第三个字符为A的人的信息
模糊查询的时候
%:0个或多个字符
_:1个字符
%A__
SELECT empno,ename,job,sal,sal*12+nvl(comm,0) AS年薪, hiredate 入职日期
FROM emp WHERE ename LIKE'%A__';
SELECT empno,ename,job,sal,sal*12+nvl(comm,0) AS年薪, hiredate 入职日期
FROM emp WHERE substr(ename,-3,1)='A'; 11).查询出薪水大于等于2000小于等于3000并且职位不等于