SQL基础学习笔记(四)—视图

视图 (view):

视图的作用就是当一个表中的数据并不想对成员全部开放,只针对不同权限的用户开放不同的数据部分,同子图一样,但是子图的修改,父图并

不受影响,而视图,解决了这一问题

依赖于某表创建一个视图

create view empview
as
select employee_id id, last_name name, salary sal
from employees
where department_id = 80

更改数据

update empview
set salary = 10000
where employee_id = 179

(于此同时,employees表中的工号179的人的salary也是10000)

删除数据(注意约束条件,如果有子记录就无法删除)

delete from empview
 where employee_id = 176;

基于多个已存在的表创建视图

create view empview2
as
select employee_id id , last_name name, salary sal ,department_name
from employees e, departments d
where e.department_id = d.department_id

修改视图create or replace

create or replace view empview2
as
select employee_id id , last_name name
from employees e, departments d
where e.department_id = d.department_id

这样就会将原来的视图覆盖

屏蔽DML操作

create or replace view empview2
as
select employee_id id , last_name name
from employees e, departments d
where e.department_id = d.department_id
with read only

这个视图只能读,不能改

复杂视图(有组函数,视图一个或多个)

create or replace view empview3
as
select department_name dept_name,avg(salary) avg_sal
from employees e , departments d
where e.department_id = d.department_id
group by department_name

不存在的列必须起一个别名,且在复杂视图中是不可以使用DML的增删改操作,比如说要改一个平均值,改了之后,那么原来的众多salary改哪个才

能使平均值变为更改后的。

简单视图运行增删改,复杂视图由于使用了组函数,不允许增删改

删除视图

 drop view empview3;

Top-N分析

top表示前多少个,N是代表多少,比如2014最好看的前10名电影,Top-10

比如百度搜索信息,第一页显示前10个,第二页10-20的数据。

从表中获取工资前10的员工id,姓名(rownum(伪列)当前表对应的行号)

select rownum, employee_id , last_name , salary
from   (
       select employee_id , last_name , salary
       from employees
       order by salary desc
       )
where rownum <= 10

这样可以获取前10名,但是麻烦

但是针对于rownum只能是<=  或 < ,而 = ,> ,>=将不能返回任何数据

查询工资排名40-50名之间

给前一个rownum起一个别名,那么rn在外面这个表中,就不是伪列,那么就可以用>,>=,=

select rn , employee_id , last_name , salary
from (
     select rownum, employee_id , last_name , salary
            from   (
                     select employee_id , last_name , salary
                      from employees
                      order by salary desc
                    )
     )
where rn > 40 and rn <50

这样就实现了类似于百度的分页的效果

时间: 2024-10-12 13:15:45

SQL基础学习笔记(四)—视图的相关文章

Java基础学习笔记四 Java基础语法

数组 数组的需求 现在需要统计某公司员工的工资情况,例如计算平均工资.最高工资等.假设该公司有50名员工,用前面所学的知识完成,那么程序首先需要声明50个变量来分别记住每位员工的工资,这样做会显得很麻烦. 数组的概述 数组是指一组数据的集合,数组中的每个数据被称作元素.在数组中可以存放任意类型的元素,但同一个数组里存放的元素类型必须一致. 数组的定义 格式: 数据类型[] 数组名 = new 数据类型[元素个数或数组长度]; 举例:int[] x = new int[100]; 要点说明 数据类

SQL基础学习笔记(一)

感觉SQL,学的云里雾里的,整理一下笔记吧. SQL语言分为三种: DML: Data Manipulation Language 数据操纵语言 DDL:  Data Definition Language 数据定义语言 DCL:  Data Control Language 数据控制语言 select * (表示查询表中所有的列 ) from employees; select employee_id , last_name,email from employees;(查询指定) SELECT

SQL基础学习笔记(三)—约束

约束: 一.创建表时,定义约束 create table emp2( id number(10) constraint emp2_id_nn not null, name varchar2(20) not null, salary number(10,2) ) constraint emp2_id_nn 给约束起个名增加阅读性,不写也行,会自动加上sys_XXXX 作用范围: ①列级约束只能作用在一个列上 ②表级约束可以作用在多个列上(当然表级约束也可以作用在一个列上) 定义方式:列约束必须跟在

SQL基础学习笔记(五)—序列、索引、同义词

常见的数据库对象 表:基本的数据存储集合,由行和列组成 视图:从表中抽出逻辑上相关的数据集合 序列:提供有规律的数值 索引:提高查询效率 同义词:给对象起别名 (索引和同义词了解即可) 序列sequences 可供多个用户用来产生唯一数值的数据库对象 自动提供唯一的数值 共享对象 主要用于提供主键值 将序列值装入内存可以提高访问效率 如何和创建序列 CREATE SEQUENCE sequence [INCREMENT BY n] --每次增长的数值 [START WITH n] --从哪个值开

SQL基础学习笔记(二)

向表中插入一条数据 <span style="font-family:KaiTi_GB2312;font-size:18px;"><strong>create table emp1 as select employee_id , last_name , hire_date , salary from employees where 1 = 2</strong></span> 需要注意的是,插入的数据,必须和表中数据种类,一一对应 <

JSP实现数据保存(web基础学习笔记四)

session对象: //服务端设置Session属性 session.setAttribute("user", username); //客户端接收Session Object obj = session.getAttribute("user"); //判断是否为空,不是空就输出 if(obj==null){ //如果为空就提示用户登录 %> <%}else{ //不为空就输出用户名,和欢迎信息 out.println("欢迎您"+

ASP.Net MVC开发基础学习笔记(3):Razor视图引擎、控制器与路由机制学习

首页 头条 文章 频道                         设计频道 Web前端 Python开发 Java技术 Android应用 iOS应用 资源 小组 相亲 频道 首页 头条 文章 小组 相亲 资源 设计 前端 Python Java 安卓 iOS 登录 注册 首页 最新文章 经典回顾 开发 Web前端 Python Android iOS Java C/C++ PHP .NET Ruby Go 设计 UI设计 网页设计 交互设计 用户体验 设计教程 设计职场 极客 IT技术

ASP.Net MVC开发基础学习笔记:三、Razor视图引擎、控制器与路由机制学习

一.天降神器“剃须刀” — Razor视图引擎 1.1 千呼万唤始出来的MVC3.0 在MVC3.0版本的时候,微软终于引入了第二种模板引擎:Razor.在这之前,我们一直在使用WebForm时代沿留下来的ASPX引擎或者第三方的NVelocity模板引擎. Razor在减少代码冗余.增强代码可读性和Visual Studio智能感知方面,都有着突出的优势.Razor一经推出就深受广大ASP.Net开发者的喜爱. 1.2 Razor的语法 (1)Razor文件类型:Razor支持两种文件类型,分

Swift学习笔记四:数组和字典

最近一个月都在专心做unity3d的斗地主游戏,从早到晚,最后总算是搞出来了,其中的心酸只有自己知道.最近才有功夫闲下来,还是学习学习之前的老本行--asp.net,现在用.net做项目流行MVC,而不是之前的三层,既然技术在更新,只能不断学习,以适应新的技术潮流! 创建MVC工程 1.打开Visual studio2012,新建MVC4工程 2.选择工程属性,创建MVC工程 3.生成工程的目录 App_Start:启动文件的配置信息,包括很重要的RouteConfig路由注册信息 Conten