Oracle数据库,简单SQL练习与答案
1.数据
--创建职员表
create table tbEmp
(
eID number primary key, --职员编号
eName varchar2(20) not null, --职员姓名
eSex varchar2(2) not null --职员性别
check(esex in ('男','女')),
eAge number not null check(eage>=18), --职员年龄
eAddr varchar2(50) not null, --职员地址
eTel varchar2(30) not null, --职员电话
eEmail varchar2(30) null, --职员邮箱
eJoinTime date not null --入职时间
);
insert into tbemp
(eID,ename,esex,eage,eaddr,etel,eemail,ejointime)
values
(1,'赵龙','男',25,'湖南省长沙市伍家岭江南苑9栋203号','0731-4230123','zl@163.net','5-10月-2005');
insert into tbemp
(eID,ename,esex,eage,eaddr,etel,eemail,ejointime)
values
(2,'李云','女',23,'湖南省长沙市东风路东风新村21栋502号','0731-4145268','ly@163.net','3-7月-2003');
insert into tbemp
(eID,ename,esex,eage,eaddr,etel,eemail,ejointime)
values
(3,'孙一成','男',24,'湖南省株洲市601厂宿舍15栋308号','0732-8342567','syc@163.net','2-11月-2002');
insert into tbemp
(eID,ename,esex,eage,eaddr,etel,eemail,ejointime)
values
(4,'林笑','男',27,'湖南省郴洲市人民医院20栋301号','0735-2245214','lx@163.net','5-1月-2006');
insert into tbemp
(eID,ename,esex,eage,eaddr,etel,eemail,ejointime)
values
(5,'卫晴','女',23,'湖南省长沙市望月湖12栋403号','0731-8325124','wq@163.net','5-3月-2007');
commit;
2.习题
--1. 查询所有职员的所有信息
select * from tbemp;
--2. 查询所有职员的姓名,电话,地址
select ename,etel,eaddr from tbemp;
--3. 查询所有女职员的详细信息
select * from tbemp where esex = '女'
--4. 查询年龄在24到26岁之间的职员的姓名,性别
select ename,esex from tbemp where eage between 24 and 26
--5. 查询家住长沙的女职员的姓名,电话,地址
select ename,etel,eaddr from tbemp where esex = '女' and eaddr like '%长沙市%'
--6. 查询李云,孙一成,林笑的电话,地址
select ename,etel,eaddr from tbemp where ename in ('李云','孙一成','林笑');
--7. 查询郴洲和株洲的职员的姓名,性别,年龄
select ename,esex,eage from tbemp where eaddr like '%郴洲%' or eaddr like '%株洲%';
--8. 查询家住长沙,年龄在25到28岁之间的男职员的姓名
select ename from tbemp where eaddr like '%长沙%' and (eage between 25 and 28) and esex = '男';
--9. 查询邮件地址为空的职员
select * from tbemp where eemail is null;
--10.查询入职时间超过两年的员工 ----这里涉及日期的运算,当前时间-入职时间---------------------------
select * from tbemp where months_between(sysdate,ejointime)/12 > 2
--11.查出1月份入职的员工
select * from tbemp where Extract(month from ejointime) = 1;
--12.将所有email为163.net的邮箱改为126.com ----修改查询出来的结果,字符串替换函数-------------------
select * from tbemp where eemail like '%163.net%'
--13.找出年龄最小的两位长沙员工------------分页查询--------------------
--1.分页写法 三层嵌套,上两层是分页处理,最里面一层是解决rownum分页和order by在一起导致排序错误
select a1.* from
(select a2.*,rownum as rn from
(select * from tbemp order by eage) a2
where rownum <= 2) a1
where rn >= 1;
--14.查找员工信息,要求结果集表达方式为
--字段名:个人信息
--内容描述:'员工1,赵龙,今年25岁,家住湖南省长沙市伍家岭江南苑9栋203号'
select '员工'||eid||','||ename||',今年'||eage||'岁,家住'||eaddr as 员工介绍 from tbemp;
--15.求所有员工的年龄总和
select sum(eage) as 年龄总和 from tbemp;
--16.分别求男,女员工年龄总和
select esex as 性别,sum(eage) as 年龄总和 from tbemp group by esex;
3.总结
1.基本SQL格式

2.日期的运算
a.日期运算:
后面时间-前面时间
日期相减默认结果是相差天数
months_between(后面时间-前面时间)
months_between默认返回结果是相差月数
b.取日期的值
Extract函数
Extract(year from sysdate)
3.分页查询
rownum:oracle特有关键字,用于分页
a.嵌套实现分页查询
分页查询采用两条查询嵌套,内部查询用来指定上界,且结果集返回rownum,外部查询指定下界
b.排序和分页联合使用的问题
rownum分页与order by在一起使用分页排序,会导致排序错误,解决方法:多嵌套一层select
select a1.* from
(select a2.*,rownum as rn from
(select * from tbemp order by eage) a2
where rownum <= 2) a1
where rn >= 1;
Oracle数据库,简单SQL练习与答案的更多相关文章
- oracle数据库元数据SQL查询
oracle数据库经典SQL查询 .查看表空间的名称及大小 select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_size from ...
- linux/windows系统oracle数据库简单冷备同步
linux/windows系统oracle数据库简单冷备同步 我们有一个财务系统比较看重财务数据的安全性,同时我们拥有两套系统,一个生产环境(linux),一个应急备份环境(windows).备份环境 ...
- ORACLE 数据库简单测试
ORACLE 数据库简单测试 操作系统:Windows 7 – ORACLE:oracle database 10.2.0.4 一.目的 测试 启动监听程序.数据库 非同一个用户的情况,用户是否可以 ...
- 搜索表字段包含某字符串的SQL和监控Oracle数据库的SQL。
1.第一个SQL 背景:需要找到SQL Server数据库中,包含某个字符串的表,输出表和包含该字符串的列. )='=' --这里填要搜索的字符串 DECLARE @sql NVARCHAR(MAX) ...
- Oracle数据库 基础SQL语句练习
一.说明 第一次使用Oracle,想做一些练习,熟悉一些oracle. 表:使用的是scott用户,默认的表 具体表讲解,可以参考该文档:https://www.cnblogs.com/xjcheng ...
- [数据库]简单SQL语句总结
1.在查询结果中显示列名:a.用as关键字:select name as '姓名' from students order by ageb.直接表示:select name '姓名' from ...
- [转载]Oracle数据库基础--SQL查询经典例题
Oracle基础练习题,采用Oracle数据库自带的表,适合初学者,其中包括了一些简单的查询,已经具有Oracle自身特点的单行函数的应用 本文使用的实例表结构与表的数据如下: emp员工表结构如下: ...
- Oracle数据库基础--SQL查询经典例题
Oracle基础练习题,采用Oracle数据库自带的表,适合初学者,其中包括了一些简单的查询,已经具有Oracle自身特点的单行函数的应用 本文使用的实例表结构与表的数据如下: emp员工表结构如下: ...
- Oracle数据库高效sql语句的整理
业务需求说明:由于之前公司后台APP端有一个document表,该表中包含了所有的信息,新的需求就是通过该表创建出一个新的用户表(usertable)和一个档案表(document,该表只保留原doc ...
- Oracle数据库常用Sql语句大全
一,数据控制语句 (DML) 部分 1.INSERT (往数据表里插入记录的语句) INSERT INTO 表名(字段名1, 字段名2, ……) VALUES ( 值1, 值2, ……); INSE ...
随机推荐
- 小任务之使用SVG画柱状图~
function drawBar(data) { var barGraph = document.querySelector("#bar-graph"); var graphWid ...
- csharp:Optical Character Recognition
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.D ...
- OpenStack系列
一.概述 云计算介绍 OpenStack各组件详解和通信流程 二.keystone系列 三.glance系列 四.nova系列 虚拟化介绍 kvm介绍 五.neutron系列 六.horizon系列 ...
- Linux-学习笔记(PHP向)<一>
Linux常用命令 使用PHP服务器端脚本编程语言进行网站开发,需要在lamp环境下进行,Linux作为”四剑客”之一是有必要了解熟悉的,而Linux系统并不像windows操作系统那样,以图形化的界 ...
- C语言字符串操作函数 - strcpy、strcmp、strcat、反转、回文
原文:http://www.cnblogs.com/JCSU/articles/1305401.html C语言字符串操作函数 1. 字符串反转 - strRev2. 字符串复制 - strcpy3. ...
- Jmeter运营活动并发测试—巧用集合点
在运营活动测试过程中,经常需要对秒杀活动或定时抽奖活动进行并发测试.那么怎样快速便捷的模拟多用户同时参与活动,抽取奖品,进行并发测试呢?尤其是,当奖品总数N<用户总数M时,代码是否会存在奖品多发 ...
- libgdx for eclipse开发环境搭建
1.安装jdk1.7以上 2.下载libgdx1.2.0 下载地址:https://libgdx.badlogicgames.com/releases 3.下载项目创建工具(老版本的) 下载地址:ht ...
- java面试题----IO流种类及接口方法
java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类? Java中的流分为两种,一种是字节流,另一种是字符流,分别由四个抽象类来表示(每种流包括输入和输出两种 ...
- SQL Server ->> 间接实现COUNT(DISTINCT XXX) OVER(PARTITION BY YYY)
SQL Server 2005版本开始支持了窗口函数(Windowing Function)和OVER字句.SQL Server 2012版本开始支持了窗口函数的ORDER BY字句实现连续/累计聚合 ...
- 记开发个人图书收藏清单小程序开发(四)DB设计
早上起来,又改动了一下: 主要是,将非常用信息全部拆分出来,让Table尽量的小,小到不能继续拆分了,这样区分DB逻辑.增加了FileBank存储Book的封面图片,统一管理图片资源. 新添加的Typ ...