oracle简单的几道题.docx

上传人:b****8 文档编号:9957057 上传时间:2023-02-07 格式:DOCX 页数:15 大小:1.55MB
下载 相关 举报
oracle简单的几道题.docx_第1页
第1页 / 共15页
oracle简单的几道题.docx_第2页
第2页 / 共15页
oracle简单的几道题.docx_第3页
第3页 / 共15页
oracle简单的几道题.docx_第4页
第4页 / 共15页
oracle简单的几道题.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

oracle简单的几道题.docx

《oracle简单的几道题.docx》由会员分享,可在线阅读,更多相关《oracle简单的几道题.docx(15页珍藏版)》请在冰豆网上搜索。

oracle简单的几道题.docx

oracle简单的几道题

范例:

设置行数

setlinesize100;

范例:

设置每一页显示的内容

setpagesize30;

所以说,对于以上的系统设置,每次开启一个新的窗口,都需要重新设置。

1、显示当前的用户操作

showuser;

2、连接到其他用户

范例:

连接到system用户

connsystem/manager;

问题:

当用户切换到system用户的时候,还有emp表吗?

回答:

没有,因为在oralce中,每一个用户的表是不一样的,所以在oracle中没有数据库的概念,只有用户的概念,然后在用户下有表的概念,这个和其他数据库不太一样。

所以对掌握oracle数据库,用户的相关操作也就非常的重要了。

范例:

连接到sys用户下

connsys/chang_on_installassysdba;

说明:

如果想要连接超级用户sys,需要加上assysdba的参数,否则出错。

问题:

如果没有连接到任何的用户,会怎样呢?

回答:

如果无法连接到任何的用户,oracle就会断开所有的连接,而不会保留上一个连接。

3、查看当前用户下的所有表的名称

select*fromtab;

实际上就是说所有的表的信息都在tab的表中。

4、查看某一个表的字段信息

descemp;

NUMBER(4):

表示数字,可以存储4位。

NUMBER(7,2):

表示数字是小数,2表示小数的位数,整数位占5位,一共占7位。

NUMBER:

表示数字,位数没有限制。

VARCHAR2(10):

表示字符串,最多可以容纳10个字节。

DATE:

日期类型

雇员表emp

列的名称

类型

描述

EMPNO

NUMBER(4)

雇员的编号

ENAME

VARCHAR2(10)

雇员的名字

JOB

VARCHAR2(9)

雇员的工作

MGR

NUMBER(4)

领导的编号

HIREDATE

DATE

雇佣的日期

SAL

NUMBER(7,2)

基本工资

COMM

NUMBER(7,2)

奖金

DEPTNO

NUMBER

(2)

部门的编号

部门表dept

列的名称

类型

描述

DEPTNO

NUMBER

(2)

部门的编号

DNAME

VARCHAR2(14)

部门的名称

LOC

VARCHAR2(13)

部门的位置

工资等级表salgrade

列的名称

类型

描述

GRADE

NUMBER

等级的编号

LOSAL

NUMBER

此等级的最低的工资

HISAL

NUMBER

此等级的最高的工资

范例:

查看每个员工的基本年薪(sal*12),要求基本年薪需要以中文的形式打印出来

selectename,sal*12as年薪fromemp;

范例:

查看工作的种类,要求消除重复列

selectdistinctjobfromemp;

范例:

查询出工资大于2000(含)的所有的员工的信息,要求打印的形式是:

编号是xxxx的雇员,姓名是:

xxxx,每月的工资是:

xxxx

这里所有的xxxx实际上就是活动的字段,而其他的部分就是固定的信息,在oralce中使用“||”将所有的固定的信息连接在一起。

固定部分的字符使用单引号(’’)扩上,然后输出。

select'编号是'||empno||'的雇员,姓名是:

'||ename||',每月的工资是:

'||salas基本信息

fromemp

wheresal>=2000;

对于比较的符号

<:

小于

>:

大于

>=:

大于等于

<=:

小于等于

<>,!

=:

不等于

空的表示

范例:

现在要求查询出所有领取奖金的雇员的信息。

select*fromempwherecommISNOTNULL;

1、

select*fromempwheresal>1500andcommisnotnull;

2、

select*fromempwheresal>1500orcommisnotnull;

3、

select*fromempwheresal<=1500andcommisnull;

select*fromempwherenot(sal>1500orcommisnotnull);

select*fromempwheresalbetween1500and3000;

select*fromempwhereename=’SMITH’;

说明:

在oracle中,是区分大小写的。

1.

select*fromempwhereempnoin(7369,7521,7839);

2.

select*fromempwhereempnonotin(7369,7521,7839);

3.

select*fromempwhereenamein(‘SMITH’,‘ALLEN’,‘KING’);

1.

SELECT*FROMempWHEREenameLIKE‘_M%’;

2.

SELECT*FROMempWHEREenameLIKE‘%M%’;

3.

select*fromempwherehiredatelike‘%81%’;

如果在字段中有_或者是%的话,该怎么办?

范例:

查询出带有%的所有员工的信息

select*fromempwhereenamelike‘%\%%’escape‘\’;

分析:

本身%就是一个模式的符号,所以不能使用%直接进行匹配,所以在oracle中使用转义字符来进行转换,转义字符可以使用ESCAPE关键字来指定,通常定义的转义字符是‘\’

1.

selectename,salfromemporderbysalasc;

2.

selectempno,ename,sal,hiredatefromemp

orderbysaldesc,hiredateasc;

3.

selectename,sal*12fromemp

orderbysal*12desc;

selectename,sal*12incomefromemp

orderbyincomedesc;

4.

select*fromemp

wheredeptno=20

orderbysaldesc;

习题:

1、查询出员工表中的员工号,员工姓名,每个员工涨100元后的基本年薪(按12个月计算)。

2、查询员工姓名、工作和月薪,要求结果显示为“员工SMITH,工作是CLERK,月薪是800”。

3、查询出员工都属于哪些部门,要求去掉重复值。

4、查询出员工姓名是WARD的详细的信息。

5、查询出工作时间在“81年2月12日”以后,并且工作是MANAGER的员工的详细信息。

6、查询出工资大于等于3000,且部门是20的员工的姓名、工资和部门号。

7、选择部门30中的所有员工。

8、列出所有办事员(CLERK)的姓名,编号和部门编号。

9、找出佣金高于薪金的员工。

10、找出佣金高于薪金60%的员工。

11、找出部门10中所有经理(MANAGER)和部门20中所有办事员(CLERK)的详细信息。

12、找出部门10中所有经理(MANAGER),部门20中所有办事员(CLERK),既不是经理又不是办事员但其薪金大于或等于2000的所有员工的详细资料。

13、找出收取佣金的员工的不同工作,不能有重复行。

14、找出不收取佣金或收取的佣金低于100的员工。

15、显示不带有“R”的员工的姓名。

16、显示员工的详细资料,按姓名排序。

17、显示员工的姓名和受雇日期,根据其服务年限,将最老的员工排在最前面。

18、显示所有员工的姓名、工作和薪金,按工作的降序排序,若工作相同则按薪金排序。

19、查询雇员姓名首字母是S的雇员信息。

20、查询雇员姓名第三个字母是A的雇员信息。

21、查询月薪大于1500元,并且在10号和20号部门工作的员工。

22、查询没有上级管理的员工(经理号为空)的信息。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1