SELECT查询语句基础
SELECT的三种能力:
- 投影
由条件选择出列 - 选择
由条件选择出行 - 连接
把多张表中的行结合在一起(列匹配)
SELECT的语法:

NULL值:
NULL值是不可用,且未分配的,和0或者空格是不一样的,甚至没有定义类型。任何包含NULL值的算数表达式,其结果判定为NULL。
列的别名:
- 重命名一个列的标题
- 对运算很有帮助
- 紧跟在列名后面,或者之间加AS
- 如果别名包含空格或特殊字符或大小写敏感,使用双引号
级联操作:
将列或字符串和其它列串联,由(||)表示,结果是一个完整的字符串。
消除重复行:
在SELECT后直接跟DISTINCT关键字就可以
查询数据的限制和排序
限制:
WHERE 如果限制的是字符串或者日期要加单引号

LIKE里面用的是类似正则
排序:
ORDER BY 降序DESC
有多个列,以从左到右依次排序
单行函数
字符串:
LOWER-->转小写
UOOER-->转大写
INITCAP-->首字母大写
CONCAT-->字符连接
SUBSTR-->取子串
LENGTH-->取字符串长度
INSTR-->返回子字符串的位置
数字:
ROUND-->四舍五入到指定位
TRUNC-->截取到指定位
日期:
SYSDATE-->系统当前日期
相互转换


分组函数

分组的关键字 GROUP BY
对分组限制的关键字 HAVING
多表查询
自连接
等值连接
外连接
- 左外连接
返回左边的匹配行,不考虑右边的行是否有相应的行
(+) 表示这是匹配表,不重要 - 右外连接
- 全连接
关键字 FROM FULL JOIN
ON
子查询
子查询最常用于WHERE子句,但不限于WHERE
- 单行子查询

- 多行子查询
操作符 | 描述 |
---|---|
in | 等于列表中的任何一个 |
any | 和子查询返回的任意一个值比较 |
all | 和子查询返回的所有值比较 |
表结构操作语句
数据类型的定义
数据类型 | 描述 | 例子 |
---|---|---|
VARCHAR2(L) | 可变长度的字符串 | VARCHAR2(20) |
DATE | 日期数据类型(日-月-年) | DD-MM-YY |
NUMBER(P,S) | 数字,P为整数,S为小数 | NUMBER(10,2) |
BOOLEAN | 布尔型 (可为NULL) | TRUE FALSE |
列约束
Not null(非空)
Unique(唯一)
Primary key(主键)-->这就是索引,所以需要非空且唯一
Foreign key(外键)-->两张表有关联,操作A表时需确认B表是否存在该值
Check(检查)
表约束
Unique(唯一)
Primary key(主键)-->这就是索引,所以需要非空且唯一
Foreign key(外键)
Check(检查)
增加列


删除列


修改表名


修改列名


删除表格


删除内容和定义,释放空间
查看表结构


数据操作语句(DML)
1. insert

- 该语句一次只能插入一行到表中
- 插入新的一行,每行都包含值
- 按照表中列的默认顺序列出数值
- 在INSERT子句中列出列是可选的
- 将日期和字符数值放入单引号
日期必须用TO_DATE()
隐式方法

显式方法

2. update

- 使用WHERE子句,指定要修改的行
- 不使用WHERE子句,表中所有的行都被修改
3. delete

- 使用WHERE子句,指定要删除的行
- 不使用WHERE子句,表中所有的行都被删除
事务操作语句
数据库事务:
对数据库的若干操作组成的一个单元,这些操作要么都完成,要么都取消,从而保证数据满足一致性的要求。
事务开始:
第一个DML 语句执行时
事务结束:




只有COMMIT之后所有的用户才可以都观察到事务的结果
SQL语句简单优化
- 避免使用‘*’
- 使用别名
- WHERE子句从右向左执行,将可以大大缩小范围的放在右边
- 避免使用NOT命令,或者<>
- 使用“>=”代替“>”
- 用TRUNCATE代替DELETE,不能够被恢复。速度快
- 尽量多使用COMMIT
- 避免在索引列上使用函数(这样消除了索引的作用)
自测题
- Oracle数据库分区表上的索引可以是分区索引,也可以是非分区索引。
对 - 当用户编译一条SQL语句时,进程会访问Oracle内存中的什么模块?
共享池
ORACLE将执行过的SQL语句存放在内存的共享池(shared buffer pool)中,可以被所有的数据库用户共享 当你执行一个SQL语句(有时被称为一个游标)时,如果它和之前的执行过的语句完全相同, ORACLE就能很快获得已经被解析的语句以及最好的 执行路径. 这个功能大大地提高了SQL的执行性能并节省了内存的使用
- 使用RMAN对数据库执行恢复时,数据库应该处于什么状态?
mount状态 - 如果需要查询数据库中的表数据,数据库需要处在什么状态?
open状态

- nomount:读参数文件,启动实例和后台进程
- mount:打开控制文件
- open:数据库打开
- 当Oracle内存管理模式为AMM(Auto Memory Management)时,下列哪些内存模块可以根据工作量自动调整大小?
Large pool
Shared pool
SGA_TARGET 指定了SGA可以使用的最大内存大小,而SGA中各个内存的大小由Oracle自行控制,不需要人为指定。Oracle 可以随时调节各个区域的大小,使之达到系统性能最佳状态的个最合理大小,并且控制他们之和在SGA_TARGET 指定的值之内。一旦给SGA_TARGET指定值后(默认为0,即没有启动ASMM),就自动启动了ASMM特性。如果不设置SGA_TARGET,则自动共享内存管理功能被禁止。
设置了SGA_TARGET后,以下的SGA内存区就可以由ASMM来自动调整: ASMM只能自动调整5个内存池的大小,它们是:shared pool、buffer cache、large pool、java pool和stream pool。我们不再需要设置shared_pool_size、db_cache_size、large_pool_size、 java_pool_size、streams_pool_size这五个初始化参数。而其他的内存池,比如log buffer、keep buffer cache等仍然需要DBA手工进行调整。
网友评论