oracle数据库(二)

SQL Select语句完整的执行顺序:

1、from子句组装来自不同数据源的

2、where子句基于指定的条件对记

3、group by子句将数据划分为多个

4、使用聚集函数进行计算;

5、使用having子句筛选分组;

6、计算所有的表达式;

7、select 的字段;

8、使用order by对结果集进行排序

那么:where子时候,聚合函数还没有进行计算

基础表不是必须具有数据,视图与基础表不是必须在同一模式中

扫描二维码关注公众号,回复: 2796197 查看本文章

概念:

Data Definition Language (DDL):CREATE、ALTER、DROP、TRUNCATE、COMMENT、RENAME(重新命名
对象)
Data Manipulation Language (DML):SELECT、INSERT、UPDATE、DELETE、MERGE、CALL、EXPLAIN
PLAN、LOCK TABLE
Data Control Language (DCL):GRANT(授权)、REVOKE(取消权限)
Transaction Control (TCL):COMMIT、SAVEPOINT(设置以后可以回滚的点)、ROLLBACK、SET
TRANSACTION(更改事务选项,如隔离级别和要使用的回滚段)

序列不属于任何一张表,表可以用序列辅助插入一些数据,但是对表的处理不会影响序列

SQL语句的子类只有:数据定义语言DDL、数据操作语言DML、数据控制语言DCL、事务控制语言TCL

自然连接:

不用指定 具体的连接条件

不能用表或者表的别名,来修饰列

会连接表中的相同列名的所有列

通过表的别名完成的自然连接,只有满足where条件,才可以进行查询

内联接(典型的联接运算,使用像 =  或 <> 之类的比较运算符)。包括相等联接和自然联接。 


事务提交的一些规则:
DDL和DCL会隐式提交事务;
DML需要显示提交(commit),或者数据库正常关闭时系统自动提交(假如数据库系统非正常关闭,事务会回滚到
上一个提交点);
同时也可以回滚到指定的保存点,前提是该保存点之后的内容还未被提交

如果 Rollback . 没有指定 Rollback 到哪一个点上.


函数:

MAX(column_name)、MIN(column_name)、COUNT(column_name):它们的聚合对象可以是日期(DATE)、字符
(VARCHAR/VARCHAR2)、数值类型(NUMBER);
SUM(column_name)、AVG(column_name):它们的聚合对象只能是数值(NUMBER)

NVL (expr1, expr2)­>expr1为NULL,返回expr2;不为NULL,返回expr1。注意两者的类型要一致
NVL2 (expr1, expr2, expr3) ­>expr1不为NULL,返回expr2;为NULL,返回expr3。expr2和expr3类型不同的话,
expr3会转换为expr2的类型
NULLIF (expr1, expr2) ­>相等返回NULL,不等返回expr1

COALESCE (expression_1, expression_2, ...,expression_n)列表中第一个非空的表达式是函数的返回值,如果所
有的表达式都是空值,最终将返回一个空值。

lpad( string, padded_length, pad_string):假如string的长度小于padded_length,string左端用pad_string来填充以
达到长度padded_length;假如string的长度大于padded_length,该函数会从左向右截取padded_length长度的字

instr()可以判断某字符串是否含有指定的字符

TO_CHAR(number,format):将数字以指定的格式(format)显示,需要特别注意的是格式里的数字只能是9
或者0,9是用来指定位数,0是用来前导零

DECODE在将表达式与每个搜索值比较之后转换表达式

describle 只可以显示表或者视图的结构

MINIMUM不是组函数


关键字:

where只能用于行数据的筛选;having只能用于组数据的筛选

在GROUP BY子句中指定的列不一定非要出现在select子句的列表中,但在select和
group by配合使用时,select的查询字段要么是group by中指定的字段,要么是其他字段的组函数。

group by 后面只能放非聚合函数的列

TRUNCATE TABLE DEPT; 1.它释放被表使用的存储空间。2.在该语句执行后,您无法回滚删除:3.您必须是表的所有者或具有DELETE ANY TABLE系统特权才能截断DEPT


视图:

A:视图可以防止未经许可的用户访问敏感数据
B:创建视图时,可以将列名改为有意义的名称,使用户更容易理解列所代表的内容
C:定义的视图中可以包含ORDER BY子句
D:视图可以建立索引,以便快速查询

数据库视图是表的一个延伸对象。从理论上来说,在视图上使用DML语句对数据进行更新,最终都会在基础表上完成。也就是说,可以通过视图对基础表的内容进行修改。但是,往往没有这么简单。若想在连接视图上执行DML修改语句的话,需要严格的遵守一些限制。否则的话,DML语句不会执行成功。

具体的限制条件如下:
1〉不允许违反约束的 DML 操作。
2〉不能将一个值添加到包含算术表达式的列中,列不能是虚拟列
3〉在非 key-preserved 表上不允许 DML 操作。(key-preserve table)键保留表是理解连接视图修改限制的一个基本概念。该表的主键列全部显示在   视图中,并且它们的值在视图中都是唯一且非空的。也就是说,表的键值在一个连接视图中也是键值,那么就称这个表为键保留表。
4〉在包含组函数、GROUP BY 子句、ROWNUM伪列或DISTINCT关键字的视图上不允许 DML 操作。


子查询:

A:子查询可以检索多行。
B:子查询可以检索零个或多个行。
C:子查询可以用在select、update、insert
D:子查询的嵌套不受层数的
E:子查询使用条件不受组函数的影响。

F:当子查询与外部SQL语句中的不等式比较运算符一起使用时,子查询的SELECT子句中的列只能包含一


小注意点:

视图导出时候,包含聚合分组函数,那么更新操作不被允许的

查询条件中的字符区分大小写

聚合函数,也叫组函数,处理的是多行数据,多列不行的

oracle数据库会在唯一约束和主键约束上自动创建索引

varchar2和char相比较的话,是 '"以空间换效率"'

1. 列别名最大长度为30个字节(一个汉字2个字节)

2. 列别名可以包含数字、小括号、特殊字符,有空格的多个单词组成的别名必须用双引号引起来

sys:超级管理员
system:普通管理员
scott:普通用户
sh:海量数据用户(大数据用户)
全连接查询:需要两个表中的所有不匹配的数据。

关系模型的数据结构是二维结构

WHERE子句只能用于限制行。
HAVING子句只能用于限制组。
会用到外连接查询,要连接的表具有匹配和不匹配的数据。

猜你喜欢

转载自blog.csdn.net/weixin_39134861/article/details/81670827