--row_number()over(partition by xxx order by xxx)分组排序函数 特点:组内连续且唯一
select ename,sal,deptno,row_number() over(partition by deptno order by sal desc)rn_num from emp;
--rank()over(partition by xxx order by xxx)分组排序函数  特点 组内不连续且不唯一
select ename,sal,deptno,rank()over(partition by deptno order by sal desc)rn_num2 from emp;
--dense_rank()over(partition by xxx order by xxx)分组排序函数 特点:组内连续不唯一
select ename,sal,deptno,dense_rank()over(partition by deptno order by sal desc)rn_num3 from emp;
--并集 union:去掉重复的部分
select ename,job,sal,deptno from emp where sal>2500
union
select ename,job,sal,deptno from emp where deptno=20;
--union all:不会去掉重复的部分
select ename,job,sal,deptno from emp where sal>2500
union all
select ename,job,sal,deptno from emp where deptno=20;
--交集 intersect
select ename,job,sal,deptno from emp where sal>2500
intersect
select ename,job,sal,deptno from emp where deptno=20;
--差集minus:我有你没有
select ename,job,sal,deptno from emp where sal>2500
minus
select ename,job,sal,deptno from emp where deptno=20;
--创建视图  create table name xxx as
--与表同级      只是select语句的结果集
create view emp_10 as
  select * from emp where deptno=10;
select * from emp_10;
drop view emp_10;
--将emp表中的miller的薪资改为1500,视图emp_10的薪资会不会发生变化
update emp set sal=1500 where ename='miller';             --都为1500了
commit;
--将emp_10 clark的薪资改为2500,看表emp中clark的薪资有无变化
update emp_10 set sal=2500 where ename='clark';
select * from emp where ename='clark';                    --都为2500了
--通过视图将james的薪资改为6000
--不能更改视图中没有的数据
create view emp_james as
  select * from emp where ename='james';
select * from emp_james;
update emp_james set sal=6000 where ename='james';
--连接视图
create view name_loc as
  select ename,loc from emp join dept on emp.deptno=dept.deptno;
select * from name_loc;
--数据污染:通过视图插入影响到了基表(视图无影响)
insert into emp_10 values(1000,'tom','player','7934',to_date('2008-08-08','yyyy-mm-dd'),8000,1,10);  
--查看视图时会显示这条信息,emp表也有∧
insert into emp_10 values(1001,'jerry','player','7934',to_date('2007-12-31','yyyy-mm-dd'),7000,1,20); 
--查看视图时无这条,但emp表中会有,这是数据污染∧
--避免数据污染
drop view emp_10;
create view emp_10 as
  select * from emp where deptno=10 WITH CHECK OPTION;   
  insert into emp_10 values(1000,'tom','player','7934',to_date('2008-08-08','yyyy-mm-dd'),8000,1,10);
  insert into emp_10 values(1001,'jerry','player','7934',to_date('2007-12-31','yyyy-mm-dd'),7000,1,20); -- (这行会报错)
 
--创建序列开始位置为1,步幅为1
--创建序列后要先执行一次nextval
--序列是数据库内部维护的一个对象,可以自增自减得一个值
create sequence emp_seq  start with 1 increment by   1;        --给emp添加序列
select emp_seq.nextval from dual;
select emp_seq.currval from dual;
create table asd(
id number(4),
name varchar2(20),
age number(2),
adress varchar2(100)
);
insert into asd values(emp_seq.nextval,'cdd',20,'2#101');
insert into asd values(emp_seq.nextval,'cmm',20,'2#102');
select * from asd;
--索引 为了提高查询效率而创建,它是独立于表的结构,一旦创建则由oracle自动维护。
create index emp_ename on emp(ename);
drop index emp_ename;
select ename from emp;
--复合索引
create index emp_ename_sal on emp(ename,sal);
drop index emp_ename_sal;
select ename,sal from emp;
--重建索引
alter index emp_ename_sal rebuild;
--非空约束创建表
create table emp_nn(
id number(4) not null,
name varchar2(20) unique,               ---唯一约束①
tel varchar2(20) constraint nn not null,
name2 varchar2(20),
CONSTRAINT emp_nn_name2_uk UNIQUE(name2)--唯一约束②
);
insert into emp_nn values(emp_seq.nextval,'卢法斯','13233333333','Li');
--insert into emp_nn values(emp_seq.nextval,'龙马','13233333333','Li');     错误实例
select * from emp_nn;
drop table emp_nn;
--主键
create table mainkey(
id number(2,0),
name varchar2(14 byte),
loc varchar2(13)
);

数据库学习笔记day04的更多相关文章

  1. MySQL数据库学习笔记(十二)----开源工具DbUtils的使用(数据库的增删改查)

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  2. MySQL数据库学习笔记(十)----JDBC事务处理、封装JDBC工具类

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  3. MySQL数据库学习笔记(九)----JDBC的ResultSet接口(查询操作)、PreparedStatement接口重构增删改查(含SQL注入的解释)

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  4. Mysql数据库学习笔记之数据库索引(index)

    什么是索引: SQL索引有两种,聚集索引和非聚集索引,索引主要目的是提高了SQL Server系统的性能,加快数据的查询速度与减少系统的响应时间. 聚集索引:该索引中键值的逻辑顺序决定了表中相应行的物 ...

  5. MYSQL数据库学习笔记1

      MYSQL数据库学习笔记1 数据库概念 关系数据库 常见数据库软件 SQL SQL的概念 SQL语言分类 数据库操作 创建数据库 查看数据库的定义 删除数据库 修改数据库 创建表 数据类型 约束 ...

  6. [转]mnesia数据库学习笔记

    mnesia数据库学习笔记一 mnesia数据库学习笔记二 mnesia数据库学习笔记三 mnesia数据库学习笔记四

  7. 数据库学习笔记3 基本的查询流 2 select lastname+','+firstname as fullname order by lastname+','+firstname len() left() stuff() percent , select top(3) with ties

    数据库学习笔记3 基本的查询流 2   order by子句对查询结果集进行排序 多列和拼接 多列的方式就很简单了 select firstname,lastname from person.pers ...

  8. Caché数据库学习笔记(5)

    目录 Cache数据库方法的RESTful封装 ================================================================ 因为对web serv ...

  9. MySQL数据库学习笔记(八)----JDBC入门及简单增删改数据库的操作

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

随机推荐

  1. STM32F4 阿波罗寄存器点亮LED灯

    学习步骤: 使用寄存器点亮LED灯,需要进行如下的步骤,LED灯属于外设部分,首先需要开启外设的时钟使能,然后LED灯是PB1口,(芯片是正点原子的阿波罗),接着定义GPIOB口的输出模式,为上拉.推 ...

  2. 宜信SDL实践:产品经理如何驱动产品安全建设

    一.序言 本文从产品经理的角度出发,对产品经理的安全职责.产品驱动安全的内涵.工作内容.工作方法.所需安全资源.以及产品经理的安全工作量进行了分析.希望所有产品经理在没有心理负担的情况下,有目标.有方 ...

  3. kubernetes学习笔记(三)——利用kubeadm部署集群

    文章目录 (一)安装前准备 (二)master安装 1.安装组件 2.排错 (三)node安装 1.安装组件 2.加入master 3.排错 (四)网络安装 (五)dashboard安装 (一)安装前 ...

  4. Spring Boot缓存Ehcache

    Spring Boot 整合 Ehcache   修改 pom 文件 <!-- Spring Boot 缓存支持启动器 --> <dependency> <groupId ...

  5. 设置QQ环境变量

    1.右击此电脑 → 属性 win10用户可以直接按 'win'键 ,输入 "系统环境变量" 2.点击 高级系统环境设置 → 环境变量 3.在系统变量里找到 path → 编辑 4. ...

  6. Vue-router的实现原理

    参考博客:https://www.jianshu.com/p/4295aec31302 参考博客:https://segmentfault.com/a/1190000015123061

  7. 深入解析Java反射

    因为本人最近正筹备Samsara框架的开发,而其中的IOC部分非常依靠反射,因此趁这个机会来总结一下关于Java反射的一些知识.本篇为基本篇,基于JDK 1.8. 一.回顾:什么是反射? 反射(Ref ...

  8. springboot整合axis1.4搭建服务端

    前言 最近公司要开发个接口,要用webservices接口实现,而且使用的是axis1.4框架,webservices和axis这两个东西我之前都没接触过,而且axis1.4这个框架06年就不再维护了 ...

  9. poj 2513 Colored Sticks (trie树+并查集+欧拉路)

    Colored Sticks Time Limit: 5000MS   Memory Limit: 128000K Total Submissions: 40043   Accepted: 10406 ...

  10. HttpRunner学习4--使用正则表达式提取数据

    前言 在HttpRunner中,我们可通过extract提取数据,当响应结果为 JSON 结构,可使用 content 结合 . 运算符的方式,如 content.code,用起来十分方便,但如果响应 ...