数据库学习笔记day04
select ename,sal,deptno,row_number() over(partition by deptno order by sal desc)rn_num from emp;
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;
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;
--与表同级 只是select语句的结果集
create view emp_10 as
select * from emp where deptno=10;
drop view 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了
--不能更改视图中没有的数据
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;
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的更多相关文章
- MySQL数据库学习笔记(十二)----开源工具DbUtils的使用(数据库的增删改查)
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- MySQL数据库学习笔记(十)----JDBC事务处理、封装JDBC工具类
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- MySQL数据库学习笔记(九)----JDBC的ResultSet接口(查询操作)、PreparedStatement接口重构增删改查(含SQL注入的解释)
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- Mysql数据库学习笔记之数据库索引(index)
什么是索引: SQL索引有两种,聚集索引和非聚集索引,索引主要目的是提高了SQL Server系统的性能,加快数据的查询速度与减少系统的响应时间. 聚集索引:该索引中键值的逻辑顺序决定了表中相应行的物 ...
- MYSQL数据库学习笔记1
MYSQL数据库学习笔记1 数据库概念 关系数据库 常见数据库软件 SQL SQL的概念 SQL语言分类 数据库操作 创建数据库 查看数据库的定义 删除数据库 修改数据库 创建表 数据类型 约束 ...
- [转]mnesia数据库学习笔记
mnesia数据库学习笔记一 mnesia数据库学习笔记二 mnesia数据库学习笔记三 mnesia数据库学习笔记四
- 数据库学习笔记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 ...
- Caché数据库学习笔记(5)
目录 Cache数据库方法的RESTful封装 ================================================================ 因为对web serv ...
- MySQL数据库学习笔记(八)----JDBC入门及简单增删改数据库的操作
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
随机推荐
- springboot整合activiti
1.第一步添加bpmn文件得插件,不然没法查看和编辑bpmn文件,添加插件的方法各自百度即可,很简单 2.安装好bpmn插件后开始新建bpmn文件,也就是画流程图 一般是在代码中进行指定流程审批人的, ...
- [TimLinux] Python __hash__ 可哈希集合
规则: __hash__ 应该返回一个整数,hash()函数计算基础类型的hash值 可哈希集合:set(), forzenset(), dict() 三种数据结构操作要求 key 值唯一,判断唯一的 ...
- Codeforce612C
You are given string s consists of opening and closing brackets of four kinds <>,{}, [], (). T ...
- js中 forEach 和 map 区别
共同点: 1.都是循环遍历数组中的每一项. 2.forEach()和map()里面每一次执行匿名函数都支持3个参数:数组中的当前项item,当前项的索引index,原始数组input. 3.匿名函数中 ...
- .Net Core使用Ocelot网关(二) -鉴权认证
前言 上一章已经简单的介绍了ocelot的使用了,但是网关暴露的接口如果什么人都能访问的话安全性就太低啦.所以我们需要去鉴权和认证.这里我们使用identityServer4给我们的网关来鉴权认证. ...
- 【Java Web开发学习】远程方法调用RMI
Java RMI 远程方法调用Remote Method Invocation 转载:http://www.cnblogs.com/yangchongxing/p/9078061.html 1.创建远 ...
- 还不懂MySQL索引?这1次彻底搞懂B+树和B-树
前言 看了很多关于索引的博客,讲的大同小异.但是始终没有让我明白关于索引的一些概念,如B-Tree索引,Hash索引,唯一索引….或许有很多人和我一样,没搞清楚概念就开始研究B-Tree,B+Tree ...
- python 中 and or
在Python 中,and 和 or 执行布尔逻辑演算,如你所期待的一样,但是它们并不返回布尔值:而是,返回它们实际进行比较的值之一. 一.and: 在布尔上下文中从左到右演算表达式的值,如果布尔上下 ...
- 基于WCF 的远程数据库服务访问技术
原文出处:http://www.lw80.cn/shuji/jsjlw/13588Htm.Htm摘要:本文介绍了使用WCF 建立和运行面向服务(SOA)的数据库服务的系统结构和技术要素,分析了WCF ...
- Leetcode题解 - 贪心算法部分简单题目代码+思路(860、944、1005、1029、1046、1217、1221)
leetcode真的是一个学习阅读理解的好地方 860. 柠檬水找零 """ 因为用户支付的只会有5.10.20 对于10元的用户必须找一个5 对于20元的用户可以找(三 ...