【1】EMP表内容查询

SQL> SELECT * FROM emp;

出错,原因是没有找到该表,因为该表是SCOTT用户的表,所以查询时应该加上scott.emp就可以了

或者复制scott.emp,scott.dept两张表到本账户下:

SQL>create table emp as  select * from scott.emp

SQL>create table dept as select * from scott.dept

【2】显示当前用户

SQL> show user

【3】查看当前用户的所有表

SQL> SELECT * FROM tab;

【4】若想重复执行上一条SQL语句,则在sqlplus命令行下输入"/"即可

【5】查询一张表的结构,例如dept表

SQL> desc dept

【6】在雇员表中查询雇员的编号、姓名、工作

SQL> SELECT empno,ename,job FROM emp;

【7】可以为列名取别名,在Linux下Oracle如果英文别名不加上双引号则会变成大写

SQL> SELECT empno 编号,ename 姓名,job 工作 FROM emp;

【8】查询所有的工作

SQL> SELECT DISTINCT job FROM emp;

工作可能会重复,加上DISTINCT关键字

【9】若要求按照以下的格式进行结果输出,如 NO:7469,Name:SMITH,Job:CLERK

SQL> SELECT 'NO:'||empno||',Name:'||ename||',Job:'||job FROM emp;

【10】要求列出每个雇员的姓名及年薪

SQL> SELECT ename,sal*12 income FROM emp;

这里年薪最好用别名进行标识,可以一眼就能明白

【11】查看每月可以得到奖金的雇员信息

SQL> SELECT * FROM emp WHERE comm is NOT NULL;

【12】要求基本工资大于1500,同时可以领取奖金的雇员信息

SQL> SELECT * FROM emp WHERE sal>1500 AND comm is NOT NULL;

如果是或的是关系,则使用 OR

【13】查询基本工资不大于1500,同时不可以领取奖金的雇员信息

SQL> SELECT * FROM emp WHERE NOT(sal>1500 AND comm is NOT NULL);

【14】查询在1981年雇佣的全部雇员信息,BETWEEN .. AND 包含等于的情况

SQL> SELECT * FROM emp

WHERE hiredate BETWEEN '01-JAN-81' AND '31-DEC-81';

【15】Oracle对大小敏感,所以查询时名字要区分大小写

【16】要求查询出雇员编号不是 7369、7499的雇员信息

SQL> SELECT * FROM emp

WHERE empno NOT IN(7369,7499);

【17】SQL中LIKE语句要注意通配符 % 和 _

SQL> SELECT * FROM emp

WHERE hiredate LIKE '%81%';

【18】查看雇员编号不是7369的雇员信息,使用<>或!=

SQL> SELECT * FROM emp

WHERE empno<>7369;

【19】要求对雇员的工资由低到高进行排序,升序为默认(ASC),降序(DESC)

SQL> SELECT * FROM emp

GROUP BY sal;

【20】查看出部门号为10的雇员信息,查询的信息按照工资从高到低,若工资相等则按雇用日期从早到晚排列

SQL> SELECT * FROM emp

WHERE deptno=10

GROUP BY sal DESC,hiredate ASC;

数据库系统中,每个数据库之间区别最大的就是在函数的支持上,单行函数是最简单的函数,单行函数分为

1、字符函数:接受字符输入并且返回字符或数值

2、数值函数:接受数值输入并返回数值

3、日期函数:对日期型数据进行操作

4、转换函数:将一种数据类型转换为另一种数据类型

5、通用函数:NVL、DECODE 函数

字符函数:

【1】大小写转换 UPPER 和 LOWER

SQL> SELECT UPPER('smith') FROM dual;

【2】将雇员姓名变为开头字母大写,INITCAP

SQL> SELECT INITCAP(ename) FROM emp;

字符函数中有连接函数CONCAT,但不如 || 好用,还有字符串处理的一些函数

字符串截取:substr()

字符串长度:length()

内容替换:replace()

SQL> SELECT substr('hello',1,3),length('hello'),replace('hello','l','x') FROM dual;

这里注意的是Oracle中字符串截取从0和从1开始都是一样的,谨防面试提问

【3】要求显示所有雇员的姓名及姓名的后3个字符

SQL> SELECT ename,SUBSTR(ename,LENGTH(ename)-2) FROM emp;

以上操作显得较为麻烦,substr()函数是可以倒着截取

SQL> SELECT ename,SUBSTR(ename,-3,3) FROM emp;

数值函数:

1、四舍五入:ROUND()

2、截断小数位:TRUNC()

3、取余(取模):MOD

SQL> SELECT ROUND(789.536) FROM dual;

【1】保留2位小数,(如果是-2则对整数进行四舍五入,变为800了)

SQL> SELECT ROUND(783.56,2) FROM dual;

【2】使用MOD()函数进行取余操作

SQL> SELECT MOD(10,3) FROM dual;

日期函数:

1、日期 - 数字 = 日期

2、日期 + 数字 = 日期

3、日期 - 日期 = 数字(天数)

【1】求出当前日期

SQL> SELECT SYSDATE FROM dual;

Oracle提供了以下的日期函数支持:

MONTHS_BETWEEN():求出给定日期范围的月数

ADD_MONTHS():在指定日期上加上指定的月数,求出之后的日期

NEXT_DAY():下一个的今天的日期

LAST_DAY():求出给定日期的最后一天日期

【2】求出从雇用日期到今天所有雇员的雇员编号、姓名和月数

SQL> SELECT empno,ename,ROUND(MONTHS_BETWEEN(SYSDATE,hiredate)) FROM emp;

【3】验证 ADD_MONTHS()、NEXT_DAY()、LAST_DAY()

SQL> SELECT ADD_MONTHS(SYSDATE,4) FROM DUAL;

SQL> SELECT NEXT_DAY(SYSDATE,'MON') FROM DUAL;

SQL> SELECT LAST_DAY(SYSDATE) FROM DUAL;

转换函数:

1、TO_CHAR():  将日期或数值转换成字符串

2、TO_NUMBER():将字符串转换成数字

3、TO_DATE():  将字符串转换成日期

【1】将年月日进行分开,要指定拆分的通配符,yyyy-mm-dd

SQL> SELECT empno,ename,TO_CHAR(hiredate,'yyyy') datetime FROM emp;

【2】将薪水的数字进行格式化,'$99,999'表示美元,'L99,999'表示当地货币

SQL> SELECT empno,ename,TO_CHAR(sal,'99,999) salary FROM emp;

【3】TO_NUMBER()验证

SQL> SELECT TO_NUMBER('123')+TO_NUMBER('123') FROM DUAL;

【4】TO_DATE()验证,如下例子执行后显示为 11-JUL-11

SQL> SELECT TO_DATE('2011-7-11','yyyy-mm-dd') FROM DUAL;

通用函数:

【1】求出每个雇员的年薪(应算上奖金)

SQL> SELECT empno,ename,(sal+comm)*12 FROM emp;

由于comm中有NULL,NULL值计算后还是NULL,正确如下:

SQL> SELECT empno,ename,NVL(comm,0),(sal+NVL(comm,0))*12 income FROM emp;

NVL可以理解为将NULL值转换为具体的内容,这里是0

【2】DECODE()函数,该函数类似于 IF ... ELSEIF...ELSE

语法如下:

DECODE(col/expression,选择1,结果1[,选择2,结果2,...,默认])

验证DECODE()函数

SQL> SELECT empno,ename,hiredate,

DECODE(job,'CLERK','业务员','SALESMAN','销售人员',’MANAGER','经理','ANALYST','分析员','PRESIDENT','总裁') 职位

FROM emp;

SQL简单语句练习:

【1】找出佣金高于薪金的60%的员工

SQL> SELECT * FROM emp WHERE comm>sal*0.6

【2】找出部门10中所有经理(MANAGER)和部门20中所有办事员(CLERK)的详细资料

SQL> SELECT * FROM emp

WHERE (deptno=20 AND job='MANAGER')

OR (deptno=10 AND job='CLERK');

【3】找出既不是经理又不是办事员但其薪金大于或等于2000的所有员工的资料

SQL> SELECT * FROM emp

WHERE job NOT IN('MANAGER','CLERK') AND sal >= 2000;

【4】找出有奖金的员工的不同工作

SQL> SELECT DISTINCT job FROM emp

WHERE comm IS NOT NULL;

【5】找出各月倒数第3天受雇的所有员工

SQL> SELECT * FROM emp

WHERE LAST_DAY(hiredate)-2=hiredate;

【6】找出早于12年前受雇的员工

SQL> SELECT * FROM emp

WHERE MONTHS_BETWEEN(sysdate,hiredate)/12 > 12;

【7】显示刚好为5个字符的员工的姓名

SQL> SELECT ename FROM emp

WHERE length(ename)=5;

【8】显示不带有"R"的员工的姓名

SQL> SELECT ename FROM emp

WHERE ename NOT LIKE '%R%';

【9】显示员工的姓名和受雇日期,将最老的员工排在最前

SQL> SELECT * FROM emp

GROUP BY hiredate;

【10】显示所有员工的姓名,加入公司的年份和月份,按受雇日期所在月排序,若月份相同则按年份排序

SQL> SELECT ename,TO_CHAR(hiredate,'yyyy') year,TO_CHAR(hiredate,'mm') month FROM emp

ORDER BY month,year;

【11】找出在2月受聘的员工

SQL> SELECT * FROM emp

WHERE TO_CHAR(hiredate,'mm')=2;

【12】以年月日方式显示所有员工服务年限

SQL> SELECT Ename,TRUNC(MONTHS_BETWEEN(sysdate,hiredate)/12) year, TRUNC(MOD(MONTHS_BETWEEN(sysdate,hiredate),12)) month,TRUNC(MOD(sysdate-hiredate,30)) day FROM scott.emp;

oracle_SQL实验一相关推荐

  1. 合肥工业大学—SQL Server数据库实验四:数据库的分离和附加

    数据库的分离和附加 1. 数据库分离 2. 数据库附加 1. 数据库分离 当SQL Server服务器运行时,该服务器上所有的数据库自动处于运行状态,而运行中的数据库文件是无法进行数据库文件的拷贝的. ...

  2. 解读模拟摇杆原理及实验

    解读模拟摇杆原理及实验 Interpreting Analog Sticks 当游戏支持控制器时,玩家可能会一直使用模拟摇杆.在整个体验过程中,钉住输入处理可能会对质量产生重大影响.让来看一些核心概念 ...

  3. legend位置 pyecharts_实验|pyecharts数据可视化分析-1

    1. 实验介绍 本实验主要介绍pyecharts基本特点与属性. 1.1. 实验目的 了解pyecharts功能.特点.与安装方式. 1.2. 知识点 pyecharts特点 pyecharts图表 ...

  4. 2019春第二次课程设计实验报告

    2019春第二次课程设计实验报告 一.实验项目名称: 贪吃蛇游戏编写: 二.实验项目功能描述: 这个实验主要是实现游戏的正常运行,实现的目标是对小蛇移动的控制, 同时对小蛇数据的保存,如何实现转弯的效 ...

  5. 汇编语言程序设计 实验九

    实验内容 实验一: 补全程序t1.asm,完成在屏幕上输出内存单元中的十进制两位数 ; 在屏幕上输出内存单元中的十进制两位数 assume cs:code, ds:data data segmentd ...

  6. 20172324 2018-2019-1《程序设计与数据结构》实验2报告

    20172324 2018-2019-1<程序设计与数据结构>实验2报告 课程:<程序设计与数据结构> 班级: 1723 姓名: 曾程 学号:20172324 实验教师:王志强 ...

  7. JAVA第二次验证设计性实验报告

    [实验任务一]:素数输出 (3)实验报告中要求包括程序设计思想.程序流程图.源代码.运行结果截图.编译错误分析等内容. 1.   实验内容 (1)计算并输出3~100之间的素数. (2)编程满足下列要 ...

  8. 20172329 2017-2018-2 《程序设计与数据结构》实验五报告

    这是这学期最后一次实验了,也是学到了很多东西,希望自己可以可以善始善终,加油! 让我们开始这一篇博客吧! 20172329 2017-2018-2 <程序设计与数据结构>实验五报告 课程: ...

  9. 计算机网络实验报告建立校园网,计算机网络实验报告

    设计性实验报告 一.实验目的 通过对网络设备的连通和对拓扑的分析,加深对常见典型局域网拓扑的理解:通过路由建立起网络之间的连接,熟悉交换机.路由器的基本操作命令,了解网络路由的设计与配置. 二.背景描 ...

最新文章

  1. main函数参数,在VS中向命令行添加参数的方法
  2. 解决mysql-5.5导入数据报错
  3. 学习嵌入式系统需要具备的条件、方法及步骤
  4. elasticSearch6源码分析(10)SettingsModule
  5. c语言subscripted_c语言。数组的问题。急!
  6. python两个二维数组加法_对二维数组的多个列进行Numpy平均
  7. 地址转换算法 C++实现
  8. a类网络被谁用了_谁说学考没有用?浙江三位一体报名要求,需要几A几B都在这里...
  9. python request timeout_Python - aiohttp请求不断超时(Python - aiohttp requests continuously time out)...
  10. jQuery 的属性操作方法
  11. JavaScript Date时间对象
  12. Linux补全命令分析,实现Linux下上下键和命令补全
  13. Android activity主题设置为dialog 样式
  14. 网易免费邮箱服务器,网易免费邮箱重新免费开放 POP3/SMTP 服务
  15. 主题讲座:移动互联网时代的创业机会
  16. 特征放缩(Feature scaling)
  17. web安全[网易白帽子课程笔记+体会]-03web安全工具
  18. 网易云易盾推出面向微信小程序的大数据反作弊产品
  19. 搭建ipv6有状态dhcp服务器,思科IPv6技术 IPv6有状态自动配置地址
  20. Codeforces 1089D Eels (看题解)

热门文章

  1. findstr 用法
  2. delphi多线程例子 采用createThread创建多线程
  3. 我的世界服务器聊天显示坐标,我的世界端游怎么显示坐标
  4. trader vn 显示不全_vn station2.5.3启动以后,Vntrader lite窗口打不开,cmd启动出现如下提示,请问怎么解决...
  5. JavaEE开发之SpringBoot框架深入剖析项目实战(魔乐科技)
  6. python scapy教程_scapy学习笔记
  7. 一个简单的SpringMVC需要哪些jar包[Spring4]
  8. VS2015使用git同步代码
  9. P6项目管理流程概述
  10. Matlab中 strcmp函数使用