黑马程序员技术交流社区
标题: Oracle练习 [打印本页]
作者: 三胖的减肥之路 时间: 2017-8-9 15:53
标题: Oracle练习
Oracle一、基本使用1、创建表空间mydb
2、创建用户 wateruser
3、通过用户system给用户wateruser赋权
4、创建表t_owners
id number primary key,
name varchar2(30),
addressid number,
housenumber varchar2(30),
watermeter varchar2(30),
adddate date,
ownertypeid number
5、添加字段 REMARK VARCHAR2(20) 和OUTDATE DATE
6、将 OUTDATE的类型从Date改为TimeStamp
7、将字段 OUTDATE 的名称 改为 EXITDATE
8、删除字段 REMARK
9、向表t_owners 中插入三条数据,并提交
10、将 ID 为 1 的业主的登记日期更改为三天前的日期
11、删除业主 ID 为 2 的业主信息
12、清空表的内容(两种方式)
13、删除表 t_owners
14、使用system用户进行整库的导出,导出为water.dmp
15、导入water.dmp的内容
16、导出wateruser用户的内容,导出为wateruser.dmp
17、导入wateruser用户的内容,导入文件是wateruser.dmp
18、导出t_account,a_area表,导出为文件a.dmp
19、导入t_account,a_area表,导入文件是a.dmp
二、查询导入今天作业中的文件 本天练习脚本.sql
1、查询水表编号为 30408 的业主记录
2、查询业主名称包含“刘”的业主记录
3、查询业主名称包含“刘”的并且门牌号包含 5 的业主记录
4、查询业主名称包含“刘”的或者门牌号包含 5 的业主记录
5、查询业主名称包含“刘”的或者门牌号包含5的业主记录,并且地址编号为3的记录。
6、查询台账记录中用水字数大于等于 10000,并且小于等于 20000 的记录。使用>= 和<=来实现
7、查询台账记录中用水字数大于等于 10000,并且小于等于 20000 的记录。使用between...and..来实现
8、查询 T_PRICETABLE 表中 MAXNUM 为空的记录
9、查询 T_PRICETABLE 表中 MAXNUM 不为空的记录
10、查询业主表中的地址 ID,不重复显示
11、对 T_ACCOUNT 表按使用量进行升序排序
12、对 T_ACCOUNT 表按使用量进行降序排序
13、查看T_ACCOUNT 表的rowid和rownum
14、统计 2012 年所有用户的用水量总和
15、统计 2012 年所有用水量(字数)的平均值
16、统计 2012 年最高用水量(字数)
17、统计 2012 年最低用水量(字数)
18、统计业主类型 ID 为 1 的业主数量
19、按区域分组统计水费合计数
20、查询水费合计大于 16900 的区域及水费合计
21、查询显示业主编号,业主名称,业主类型名称
22、查询显示业主编号,业主名称、地址和业主类型
23、查询显示业主编号、业主名称、地址、所属区域、业主分类
24、查询业主的账务记录,显示业主编号、名称、年、月、金额。如果此业主没有账务记录也要列出姓名(两种写法)
25、查询业主的账务记录,显示业主编号、名称、年、月、金额。如果账务记录没有对应的业主信息,也要列出记录(两种写法)
26、查询 2012 年 1 月用水量大于平均值的台账记录
27、查询地址编号为 1 、3、4 的业主记录
28、查询地址含有“花园”的业主的信息
29、查询地址不含有“花园”的业主的信息
30、查询显示业主编号,业主名称,业主类型名称,条件为业主类型为”居民”,使用子查询实现。
31、列出业主信息,包括 ID,名称,所属地址。
32、列出业主信息,包括 ID,名称,所属地址,所属区域。
33、分页查询台账表 T_ACCOUNT,每页 10 条记录
34、分页查询台账表 T_ACCOUNT,每页 10 条记录,按使用字数降序排序。
35、求“MY LOVE”字符串长度
36、求”MY LOVE”字符串中截取出”Y LO”
37、拼接字符串”AB”和”AG”(两种方式)
38、189.754四舍五入的值(无小数)
39、189.754四舍五入的值(保留2位小数)
40、189.754 只要整数(直接舍去,不四舍五入)
41、189.754 保留两位小数(直接舍去,不四舍五入)
42、求9除以2的模(也就是 9除以2的余数)
43、查看当前时间
44、在当前时间的基础上增加两个月
45、求当前月的最后一天
46、从当前时间中求当前月
47、从当前时间中求当前年
48、将数字676转换为字符串
49、将当前日期转换为字符串格式是(yyyy-mm-dd hh:mi:ss)
50、将字符串”2017-02-01”转换为日期
51、将字符串”3424”转换为数字
52、显示价格表中业主类型ID为1的价格记录,如果上限值为NULL,则显示9999999
53、显示价格表中业主类型 ID 为 1 的价格记录,如果上限值为 NULL,显示“不限”.
54、显示下列信息(不要关联查询业主类型表,直接判断 1 2 3 的值)
55、按月份统计 2012 年各个地区的水费
56、按季度统计 2012 年各个地区的水费
57、对 T_ACCOUNT 表的 usenum 字段进行排序,相同的值排名相同,排名跳跃
58、对 T_ACCOUNT 表的 usenum 字段进行排序,相同的值排名相同,排名连续
59、对 T_ACCOUNT 表的 usenum 字段进行排序,返回连续的排名,无论值是否相等
60、使用集合运算的方式实现分页查询
三、常用对象1、创建视图view_emp :业主类型为 1 的业主信息
2、根据地址表(T_ADDRESS)创建视图 view_empCheck :内容为区域 ID为 2 的记录。
3、创建只读视图view_empRead:所有业主信息
4、创建带错误的视图view_empError:所有职员(职员表不存在)信息
5、修改视图view_emp :将业主的名称改为 “老陈”
6、删除视图view_emp
7、创建视图view_owners,查询显示业主编号,业主名称,业主类型名称
8、判断view_owners视图中,哪个表是键保留表
该表的主键列全部显示在视图中,并且它们的值在视图中都是唯一且非空的,他就是键保留表
9、创建视图view_money,按年月统计水费金额
10、创建物化视图mv_address:查询地址 ID,地址名称和所属区域名称
11、刷新物化视图mv_address
12、创建自动刷新的物化视图mv_address2:查询地址 ID,地址名称和所属区域名称
13、创建时不生成数据的物化视图mv_address3:查询地址 ID,地址名称和所属区域名称
14、创建增量刷新的物化视图mv_address4:查询地址 ID,地址名称和所属区域名(创建增量刷新的物化视图的步骤和语句)
15、创建序列IdNumber
16、创建最大值为20初始值为10 每次增长2的不循环序列seq_test1
17、创建最大值为20最小值为5初始值为10 每次增长3的循环序列seq_test2
18、创建最大值为300最小值为10初始值为10每次增长10缓存5的循环序列seq_test3
19、修改序列seq_test1的最大值为300
20、删除序列seq_test1
21、为表 T_OWNERS 创建( 私有 )同义词 名称为 OWNERS
22、为表 T_OWNERS 创建( 公有 )同义词 名称为 OWNERS2
23、在业主表的 name 字段创建普通索引
24、在业主表的水表编号一列创建唯一索引
25、根据地址和门牌号对学员表创建索引
26、我们在 T_OWNERS 表的 ownertypeid 列上建立位图索引
27、使用SCOTT用户,先给SCOTT用户解锁,然后给SCOTT用户赋权
28、创建视图 view_emp,显示雇员表中的 EMPNO ENAME JOB
29、创建带约束的视图 view_emp30,显示部门编号为 30 的雇员信息。
30、创建只读视图,显示部门表中的信息。
31、创建物化视图(自动刷新),显示雇员编号、雇员名称、雇员职位和雇员部门。
32、创建物化视图(手动刷新),查询列出各部门的部门名和部门经理名字。并编写手动刷新命令。
33、编写序列 seq_1 ,从 100 开始 ,增长 10 ,最大值 1000,最小值 10 ,循环 。
34、编写序列 seq_2 ,最大值 100 ,最小值 5,增长值 5 ,不循环。
35、编写序列 SEQ_EMP, 起始值 8000,增长 1 ,不循环,不缓存。
36、编写序列 SEQ_DEPT, 起始值 50,增长 10 ,不循环,缓存 30。
37、根据雇员名称对雇员表建立索引
38、根据部门编号和职位对雇员表建立索引
39、在奖金表根据职位建立位图索引
40、为 EMP 表创建私有同义词
41、为 DEPT 表创建公有同义词
四、编程 1、声明变量水费单价、水费字数、吨数、金额。对水费单价、字数、进行赋值 。吨数根据水费字数换算,规则为水费字数除以1000,并且四舍五入,保留两位小数。计算金额,金额=单价*吨数。输出单价 、数量和金额。
2、设置三个等级的水费 5 吨以下 2.45 元/吨 5 吨到 10 吨部分 3.45 元/吨 ,
超过 10 吨部分 4.45 ,根据使用水费的量来计算阶梯水费。
3、输出从1开始的100个数(三种方式)
4、打印业主类型为 1 的价格表、
5、创建存储函数,根据地址 ID 查询地址名称
6、查询业主 ID,业主名称,业主地址,业主地址使用刚才我们创建的函数
7、创建不带传出参数的存储过程:添加业主信息
8、添加业主信息,传出参数为新增业主的 ID
9、当用户输入本月累计表数后,自动计算出本月使用数
10、当用户修改了业主信息表的数据时记录修改前与修改后的值
11、编写 PL/SQL ,用水吨数 12 吨,业主类型为 1,计算阶梯水费。
12、存储函数综合案例:创建计算阶梯水费的函数,参数为业主类型、吨数。
13、触发器综合案例:当用户输入本月累计数后,自动计算阶梯水费。
14、增加业主信息时,同时在账务表(account)增加一条记录,年份与月份为当前日期的年月,初始值(num0)为 0,其它字段信息(区域)与 t_owners表一致
作者: level 时间: 2017-8-9 22:36
有参考答案吗?
作者: gsf459685651 时间: 2018-1-5 16:42
不知道有没有相关参考答案没??
作者: gsf459685651 时间: 2018-1-5 16:43
不知道有没有相关的参考答案没??
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |