内外连接、组函数、DDL、DML和TCL
前言
cross join ,是笛卡尔积;nature join 是自然连接。
正文
内外连接 inner join
inner join 的inner能够省略。
内连接
在一个表中可以找到在还有一个表中与之相应的记录。来组成新的记录显示出来,舍弃表中在还有一个表中没有相应记录的记录。
等值连接
一个表中的某个字段是还有一个表的外键
比如。emp表和dept表存在多对一的关联关系,由外键字段deptno来维护,即emp表来主动维护这一关系。
非等值连接
between and 来实现非等值连接。
select e.ename,e.sal,s.grade from emp e join salgrades on e.sal between s.losal and s.hisal。
自连接
表中的字段之间寻在引用关系,通过得同一个表取不同别名来实现自身连接。
select e.empno。m.name from emp e join emp m on m.empno=e.mgr;
外连接
外连接,将驱动表中全部记录显示
左外连接 left join
左外连接会将主表相应的全部信息显示,从表与之匹配的记录显示。
select * from emp join dept on emp.deptno=dept.deptno(+); --加号在join 右边的表的属性上位左连接
select * from emp left join dept on emp.deptno=dept.deptno;
右外连接 right join
加号在join 左边的表的属性上位右连接
全连接 full join
将两表中全部匹配和不匹配记录显示出来。
组函数
多行函数,输入一组记录,输出一行记录。
max、min、avg、sum和count函数。
样例:查询同样姓名的记录
select * from emp where name=(select name from emp where count(name>=2));
分组查询 group by
1.假设在select之后有某个字段名称,那么此字段必须作为分组的条件之中的一个。
select deptno,max(sal) from emp group by deptno;--在分组查询中,select 之后除了组函数以外,查询的字段名称和个数最好和group by 之后的字段名称和个数一致。
2.过滤分组查询能够使用havingkeyword,having用于过滤分组之后的结果
select deptno。avg(sal) from emp group by deptno having avg(sal)>2000;--having不能单独使用,它必须出如今group by 之后。
3.where 不可接分组函数
4.分组查询的运行顺序
先运行from,在运行where。或在分组,最好才运行select。
子查询
查询中含有查询
非关联子查询
单列子查询
查询结果是一行一列
单行子查询能够使用比較运算符(<,>,=,!=,<>)
select enamel ,sal rom emp where sal>(select sal from emp where ename='SOTT');
单行子查询
子查询的结果是一行多列
select enamel。sal。deptno from emp where (deptno。sal) in(select deptno。max(sal) from emp group by deptno having deptno=10);
多行子查询
子查询的结果是多行一列
select * from emp where deptno in(select deptno from emp where job='CLERK')。
注:
=any 跟in的效果一样,匹配子查询的全部值
>any 大于最小的
<any 小于最大的
<all 小于最小的
<all大于最大的
多列子查询
子查询的结果是多行多列
select enamel。sal。
deptno from emp where (deptno。sal) in(select deptno,max(sal) from emp group by deptno )。
关联子查询(循环主查询)
子查询和主查询进行关联查询
select * from emp out where sal>(select avg(sal) from emp where out.deptno=deptno group by deptno);--先将主表out的第一条记录的deptno传到子查询。并将查询结果返回到主查询。主查询将符合条件的记录放入到结果集中,依次循环该过程。直到循环到主表的最后一条记录。
样例
select * from emp out where empno in(select mgr from emp);;--查询出全部的领导
select * from emp out where exists(select 'x' from emp where mgr=out.empno);--exists,假如存在,子查返回的是true,并不关注子查询返回的详细的结果。
集合
集合查询中的字段个数和类型要一致,这称为select的同构。
select job from emp deptno=10 union all select job from emp deptno=20;
注:
union all 并集,而且不去除反复
union 并集,去除反复
intersect 交集
minus 差集
DDL create、drop、truncate和alter
oracle数据库的基本数据类型
number 数字类型
varchar2字符串类型;可变长
char 字符串类型,固定长度,占用空间不变。运行效率高
date日期类型
clob 字符型大数据类型
blob 字节型大数据类型
创建表
create table 表名(字段名 数据类型 约束,字段名 数据类型 约束);
复制表
复制表仅仅能复制表结构和数据,复制不了约束。
create table 表名1 as select * from emp where empno=10000;---假设where条件不成立。查不到不论什么东西时。该语句仅仅复制了表结构;
注:user_constraints 存储当前用户的相关信息的数据字典
删除表
drop table 表名
改动表
重命名
rename 旧表名 to 新表名
改动表的字段名
alter table 表名 rename column 旧字段名 to 新字段名;
改动字段类型长度
改动字段类型的前提是当前的字段值是空的,即改动的列为空。
alter table 表名 modify(字段名称 字段类型(长度))。
加入字段
alter table 表名 add(字段名称 字段类型(长度));
删除字段
alter table 表名 drop (字段名称);
alter table 表名 drop column(字段名称);
截断表 truncate
删除表中的全部记录。效率比delete更高
DML insert、delete、update
加入记录
字段的值与表中字段的类型和长度要匹配
insert into 表名(字段名称1,字段名称2) value(字段1的值,字段2的值);
1.一次插入多条记录
insert into emp(empno,ename) select empno,ename from emp;
改动记录
update 表名 set 被改动的字段名1=新值,被被改动的字段名2=新值
删除记录
delete 【from 】 表名;
TCL commit、rollback和savapoint
事务ACID特性
数据库执行的最小单元。是一系列的数据操作,是数据库应用程序的基本逻辑单元。
事务是恢复和并发控制的基本单元。
1.在sql中,定义事务的估计有3条
begin transaction
commit
rollback
通常事务以begin transaction 開始,以commit或rollback结束。
注:
1.rollback 回滚事务,事务恢复到上一个事务结束之前的状态。
2.dml运行会开启一个事务。
3.commit 提交事务,当前操作会运行应用到数据库
4.commit和rollback会显式的提交事务
5.savepoint 事务点名;设置事务点
rollback to 事务点名。--在事务点之后的其它dml操作都会被取消
6.ddl语句隐式的提交事务
原子性 atomicity
事务是数据库的逻辑工作单位,事务中包含的诸操作要么都做,要么都不做。
一致性 consistency
事务运行的结果必须是使数据库从一个一致性状态变到还有一个一致性状态。
隔离性 isolation
一个事务的运行不能被其它事务干挠。
持续性 durability
也称永久性,值一个事务一旦提交,它对数据库中数据的改变就应该使永久性的。
注:事务不处理
1.表和行级别的锁不会释放
2.当前会话的操作在其它会话中查不到
3.当前事务能够回滚
4.当前事务回滚段的资源不会释放
总结
内外连接、组函数、DDL、DML和TCL的更多相关文章
- Oracle四大语言DDL DML DCL TCL
DDL(数据定义语言) creater 创建数据表 ceater table 表名 (); alter 修改表结构 添加字段:alter table 表名 add 列名 数据类型 null 删除字段: ...
- 数据库必会必知 之 SQL四种语言:DDL DML DCL TCL
作者:泥瓦匠 今天群里面讨论,DDL 还是 DML,我这种小白还是总结下他们的区别吧. 1. DDL - Data Definition Language 数据库定义语言:定义数据库的结构. 其主要命 ...
- 数据库必会必知 之 SQL四种语言:DDL DML DCL TCL(转)
今天群里面讨论,DDL 还是 DML,我这种小白还是总结下他们的区别吧. 1. DDL – Data Definition Language 数据库定义语言:定义数据库的结构. 其主要命令有CREAT ...
- SQL四种语言:DDL,DML,DCL,TCL
1.DDL(Data Definition Language)数据库定义语言statements are used to define the database structure or schema ...
- DDL DML DCL TCL之不同
http://www.orafaq.com/faq/what_are_the_difference_between_ddl_dml_and_dcl_commands DDL Data Definiti ...
- SQL 四大功能DDL/DML/DCL/TCL
SQL主要分成四部分:(1)数据定义.(SQL DDL)用于定义SQL模式.基本表.视图和索引的创建和撤消操作.(2)数据操纵.(SQL DML)数据操纵分成数据查询和数据更新两类.数据更新又分成插入 ...
- SQLServer语言之DDL,DML,DCL,TCL
数据库语言分类 SQLServer SQL主要分成四部分: (1)数据定义.(SQL DDL)用于定义SQL模式.基本表.视图和索引的创建和撤消操作. (2)数据操纵.(SQL DML)数据操纵分 ...
- SQLServer 里面的 DDL,DML,DCL,TCL(转)
1.DDL (Data Definition Language )数据库定义语言 statements are used to define the database structure or sch ...
- SQLServer 里面的 DDL,DML,DCL,TCL
1.DDL (Data Definition Language )数据库定义语言 statements are used to define the database structure or sch ...
- SQL中的四种语言DDL,DML,DCL,TCL
1.DDL(Data Definition Language)数据库定义语言statements are used to define the database structure or schema ...
随机推荐
- vsim生成VCD波形文件(verilog)
Vsim(ModelSim)生成VCD波形文件(verilog) 两种方法 方法一: 调用ModelSim自己的命令生成,仿真脚本中加入如下一句即可 vcd file mytb.vcd 方法二: 调用 ...
- 【转】Cocoa中的位与位运算
转自:http://www.tuicool.com/articles/niEVjy 介绍 位操作是程序设计中对位模式或二进制数的一元和二元操作. 在许多古老的微处理器上, 位运算比加减运算略快, 通常 ...
- 阿里云 RDS 怎么保证高可用性
RDS在系统构建之初,从网络到硬件再到系统都是基于高可用设计,他可以做到故障30秒无缝转移,对应用完全透明. 当一个数据库实例发生故障时, 另一个会立即顶上,而且对应用是完全透明的.你无需变更应用的连 ...
- React初步
今天整理一下自己关于react的学习笔记. 什么是React? 学习某一个框架首先得知道这个框架是干什么的,它的特点是什么,有哪些优点和缺点. React有4个特点 组件化 虚拟DOM 单项数据流 j ...
- RAID磁盘阵列原理
磁盘阵列(Redundant Arrays of independent Disks,RAID),有“价格便宜具有冗余能力的磁盘阵列”之意.原理是利用数组方式来作磁盘组,配合数据分散排列的设计,提升数 ...
- hdu1087 简单DP
I - 简单dp 例题扩展 Crawling in process... Crawling failed Time Limit:1000MS Memory Limit:32768KB ...
- LESSCSS
LESSCSS应需求而生 CSS 的语法相对简单,对使用者的要求较低,但同时也带来一些问题:CSS 需要书写大量看似没有逻辑的代码,不方便维护及扩展,不利于复用,尤其对于非前端开发工程师来讲,往往会因 ...
- html5 百分比计算
这几天一直在看html5,看到了百分比的计算公式:目标元素的尺寸/上下文元素的尺寸=百分比尺寸.看到这个公式,有点懂,但是有不明白.对于目标元素很容易理解,但是对于上下文元素就不是很好理解了.试了一些 ...
- replace 全局替换 和 数组去空
<script> /*var str = 'a,b,dhhhh,d'; str = str.replace(/h/g,'j'); alert(str);*/ </script> ...
- 原 iOS面试题收集
原 iOS面试题收集 发表于2年前(2013-07-22 13:47) 阅读(369) | 评论(0) 4人收藏此文章, 我要收藏 赞0 听云性能监测产品App.Server.CDN免费试用,绑定 ...