视图练习

62. 查询员工表中 salary 前 10 的员工信息.

select last_name, salary
from (select last_name, salary from employees order by salary desc)
where rownum <= 10
	
	说明: rownum "伪列" ---- 数据表本身并没有这样的列, 是 oracle 数据库为每个数据表 "加上的"  列. 
	可以标识行号.默认情况下 rownum 按主索引来排序. 若没有主索引则自然排序.
	 
注意: **对 ROWNUM 只能使用 < 或 <=, 而是用 =, >, >= 都将不能返回任何数据.  

查询员工表中salary前10的员工信息,这是我们刚才做的这个题目,select他,就是top-10,使用这个伪列,这个我们把排序以后

的当成一个新的表,从他这个表里面再进行查询,用到伪列的内容,伪列,数据表本身并没有这样的列,是ORACLE数据库为每个数据

表加上的一个列,可以标识行号,默认情况下它是按照主索引来排序的,没有主索引就按照自然排序,主索引,什么叫主索引,什么是

索引,我们下一节当中讲,实际上,我们这里面的employee_id,他没写,employee_id它是一个主键,当我们把一个列声明为主键的时候,

这个程序ORACLE会自动的把它加上一个主索引,所以这个主索引就是employee_id,我要他和他之间的关系,相当于我得到了一个

新的一个表,然后对他的操作只能用小于,或者小于等于,不能用大于或大于等于,因此当我们查10到20的时候,没有那么简单,

直接加一个and,没那么简单,我们就得再嵌套一层


63. 查询员工表中 salary 10 - 20 的员工信息.    

select *
from(
  select rownum rn, temp.*
  from (
    select last_name, salary
    from employees e
    order by salary desc
  ) temp
)
where rn > 10 and rn < 21

将这个rownum当成一个普通的列,你本身不是不能够大于等于吗,你身份降低了,降成一个普通的列了,就能够让你进行一个大于等于的

操作了,就像讲过去皇帝的女儿,皇帝的女儿很高贵,不能够让他自己去洗衣服做饭的,那你在这个宫里你是这样的,那万一你要是嫁给

一个普通的农夫了,那你是农夫的老婆了,那你还是得洗衣服做饭,你身份现在降低了,不一样了,所以这个rownum也是一样,你是一个

伪列,你不能进行这个操作,我把你身份降低一下,成为一个普通的列了,那你就可以来干这个事了,这里的这个别名是非常必要的,

要不然他又是当成一个新表的一个伪列了,现在不是用的这个伪列,而是用的表里的一个列


64. 对 oralce 数据库中记录进行分页: 每页显示 10 条记录, 查询第 5 页的数据 

select employee_id, last_name, salary
from (
        select rownum rn, employee_id, last_name, salary
        from employees
     ) e
where e.rn <= 50 and e.rn > 40   

注意: **对 oracle 分页必须使用 rownum "伪列"!

select employee_id, last_name, salary
from (
        select rownum rn, employee_id, last_name, salary
        from employees
     ) e
where e.rn <= pageNo * pageSize and e.rn > (pageNo - 1) * pageSize

显示10条数据,显示第5页,那就是40和50之间的,这个叫分页,假设再一般化一下,每一页他不一定显示10条记录,

显示pageSize条记录,显示第某一页,看你要显示第几页,相当于把这个给他一般化一下,比如每页显示20条数据,

查询第5页,那就是20条数据第5页,那就是80到100呗,那就是小于等于5乘以20就是100,大于等于20,所以这个一般化,

这个就完了
1.	使用表employees创建视图employee_vu,其中包括姓名(LAST_NAME),员工号(EMPLOYEE_ID),部门号(DEPARTMENT_ID).
a)	create or replace view employee_vu
b)	as
c)	select last_name,employee_id,department_id
d)	from employees

使用表employees创建视图employee_vu,其中包括姓名,员工号,部门号,那我们来创建一个是这个名字的,create or replace 

view,你创建视图就是用view,你创建table就是table,view起个名字,比如叫employee_vu这个名字的,as select,他里边有叫

last_name,employee_id,还有department_id,就这样吧

create or replace view employee_vu

as

select last_name,employee_id,department_id

from employees

2.	显示视图的结构
desc employee_vu;

显示视图的结构,显示视图的结构这个比较简单,跟我们显示表的结构是一样的

desc employee_vu;

3.	查询视图中的全部内容
SELECT * FROM employee_vu;

你要查询视图里面的信息的话,那你就select * from employee_vu,

select * from employee_vu;

4.	将视图中的数据限定在部门号是80的范围内
a)	create or replace view employee_vu
b)	as
c)	select last_name,employee_id,department_id
d)	from employees
e)	where department_id = 80

将视图的数据限定在部门号是80的范围内,相当于我们对视图进行一个修改了,现在这个范围变小了,

那怎么来修改,修改我们就要加上or replace这个操作,80号部门,那你就加上一个where就可以了,

where department_id等于80

create or replace view employee_vu

as

select last_name,employee_id,department_id

from employees

where department_id = 80

那就改好了,改好以后我们再select * from employee_vu,

select * from employee_vu;

此时的就只有80号部门的人

5.	将视图改变成只读视图

create or replace view employee_vu
as
select last_name,employee_id,department_id
from employees
where department_id = 80
with read only

将视图改成只读视图,不让你进行增删改的操作,这个也相当于我们是再改,你还可以改这个表结构,

相当于我们创建管理表,这个都是增删改,就点类似于数据处理,现在不让你进行数据处理,只让你只读,

你就加上一个with read only就可以了

create or replace view employoee_vu

as

select last_name,employee_id,department_id

from employees

where department_id = 80

with read only

大家你注意,这个语句你一加,是避免你对这个表进行增删改的操作,然后or replace这个命令是可以进行

很多的操作,相当于你重新来创建一个视图了,把原来的视图给他覆盖,是这样子的,大家你会基本的视图的

操作,熟悉刚才我们讲的Top-N分析

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL视图练习题包括以下内容: 1)创建考上Peking University的学生的视图 2)创建考上Tsinghua University的学生的视图 3)对XiaoTian的成绩进行更正,将多录的50分进行修改 4)查看更新过后视图和表的情况 5)查看视图的创建信息 6)删除创建的视图 具体步骤如下: 1)创建考上Peking University的学生的视图: CREATE VIEW peking_students AS SELECT * FROM students WHERE university = 'Peking University'; 2)创建考上Tsinghua University的学生的视图: CREATE VIEW tsinghua_students AS SELECT * FROM students WHERE university = 'Tsinghua University'; 3)对XiaoTian的成绩进行更正,将多录的50分进行修改: UPDATE students SET score = score - 50 WHERE name = 'XiaoTian'; 4)查看更新过后视图和表的情况: SELECT * FROM peking_students; SELECT * FROM students; 5)查看视图的创建信息: SHOW CREATE VIEW peking_students; 6)删除创建的视图: DROP VIEW peking_students; DROP VIEW tsinghua_students;<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [MySQL视图(简介 & 练习)](https://blog.csdn.net/JohnnyG2000/article/details/124543049)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [mysql 查询练习题](https://download.csdn.net/download/qq_40717644/10857398)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值