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练习与答案的更多相关文章

  1. oracle数据库元数据SQL查询

    oracle数据库经典SQL查询 .查看表空间的名称及大小 select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_size from ...

  2. linux/windows系统oracle数据库简单冷备同步

    linux/windows系统oracle数据库简单冷备同步 我们有一个财务系统比较看重财务数据的安全性,同时我们拥有两套系统,一个生产环境(linux),一个应急备份环境(windows).备份环境 ...

  3. ORACLE 数据库简单测试

    ORACLE 数据库简单测试 操作系统:Windows 7 – ORACLE:oracle database 10.2.0.4 一.目的 测试 启动监听程序.数据库  非同一个用户的情况,用户是否可以 ...

  4. 搜索表字段包含某字符串的SQL和监控Oracle数据库的SQL。

    1.第一个SQL 背景:需要找到SQL Server数据库中,包含某个字符串的表,输出表和包含该字符串的列. )='=' --这里填要搜索的字符串 DECLARE @sql NVARCHAR(MAX) ...

  5. Oracle数据库 基础SQL语句练习

    一.说明 第一次使用Oracle,想做一些练习,熟悉一些oracle. 表:使用的是scott用户,默认的表 具体表讲解,可以参考该文档:https://www.cnblogs.com/xjcheng ...

  6. [数据库]简单SQL语句总结

    1.在查询结果中显示列名:a.用as关键字:select name as '姓名'   from students order by ageb.直接表示:select name '姓名'   from ...

  7. [转载]Oracle数据库基础--SQL查询经典例题

    Oracle基础练习题,采用Oracle数据库自带的表,适合初学者,其中包括了一些简单的查询,已经具有Oracle自身特点的单行函数的应用 本文使用的实例表结构与表的数据如下: emp员工表结构如下: ...

  8. Oracle数据库基础--SQL查询经典例题

    Oracle基础练习题,采用Oracle数据库自带的表,适合初学者,其中包括了一些简单的查询,已经具有Oracle自身特点的单行函数的应用 本文使用的实例表结构与表的数据如下: emp员工表结构如下: ...

  9. Oracle数据库高效sql语句的整理

    业务需求说明:由于之前公司后台APP端有一个document表,该表中包含了所有的信息,新的需求就是通过该表创建出一个新的用户表(usertable)和一个档案表(document,该表只保留原doc ...

  10. Oracle数据库常用Sql语句大全

    一,数据控制语句 (DML) 部分 1.INSERT  (往数据表里插入记录的语句) INSERT INTO 表名(字段名1, 字段名2, ……) VALUES ( 值1, 值2, ……); INSE ...

随机推荐

  1. 小任务之使用SVG画柱状图~

    function drawBar(data) { var barGraph = document.querySelector("#bar-graph"); var graphWid ...

  2. csharp:Optical Character Recognition

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.D ...

  3. OpenStack系列

    一.概述 云计算介绍 OpenStack各组件详解和通信流程 二.keystone系列 三.glance系列 四.nova系列 虚拟化介绍 kvm介绍 五.neutron系列 六.horizon系列 ...

  4. Linux-学习笔记(PHP向)<一>

    Linux常用命令 使用PHP服务器端脚本编程语言进行网站开发,需要在lamp环境下进行,Linux作为”四剑客”之一是有必要了解熟悉的,而Linux系统并不像windows操作系统那样,以图形化的界 ...

  5. C语言字符串操作函数 - strcpy、strcmp、strcat、反转、回文

    原文:http://www.cnblogs.com/JCSU/articles/1305401.html C语言字符串操作函数 1. 字符串反转 - strRev2. 字符串复制 - strcpy3. ...

  6. Jmeter运营活动并发测试—巧用集合点

    在运营活动测试过程中,经常需要对秒杀活动或定时抽奖活动进行并发测试.那么怎样快速便捷的模拟多用户同时参与活动,抽取奖品,进行并发测试呢?尤其是,当奖品总数N<用户总数M时,代码是否会存在奖品多发 ...

  7. libgdx for eclipse开发环境搭建

    1.安装jdk1.7以上 2.下载libgdx1.2.0 下载地址:https://libgdx.badlogicgames.com/releases 3.下载项目创建工具(老版本的) 下载地址:ht ...

  8. java面试题----IO流种类及接口方法

    java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类? Java中的流分为两种,一种是字节流,另一种是字符流,分别由四个抽象类来表示(每种流包括输入和输出两种 ...

  9. SQL Server ->> 间接实现COUNT(DISTINCT XXX) OVER(PARTITION BY YYY)

    SQL Server 2005版本开始支持了窗口函数(Windowing Function)和OVER字句.SQL Server 2012版本开始支持了窗口函数的ORDER BY字句实现连续/累计聚合 ...

  10. 记开发个人图书收藏清单小程序开发(四)DB设计

    早上起来,又改动了一下: 主要是,将非常用信息全部拆分出来,让Table尽量的小,小到不能继续拆分了,这样区分DB逻辑.增加了FileBank存储Book的封面图片,统一管理图片资源. 新添加的Typ ...