Oracle笔记--Sql语句

1、SQL的三种类型语句:

--1)DML(Data Manipulation Language)数据操纵语言

--2)DDL(Data Definition Language):数据定义语言

--3)DCL(Data Control Language):数据控制语言

2、DML相关语句:

--INSERT:增

--UPDATE:删

--DELETE:改

--SELECT:查

3、DDL相关语句:

--Create Table:创建表

--Alter Table:修改表

--Drop Table:删除表

--Create Index:创建索引

--Drop Index:删除索引

4、DCL相关语句:

--Grant:授权

--Revoke:收权

--Commit:提交事务处理

--RollBack:事务处理回滚

--SavePoint: 设置保存点

--Lock:对数据库特定部分进行锁定。

5、SQL语句与SQL*Plus命令:

--SQL是一种语言, SQL*Plus是一种环境;

--SQL是ANSI标准,SQL*Plus是Oracle的特性之一;

--SQL关键字不能缩写,SQL*Plus可以缩写;

--SQL使用语句控制数据库中的表的定义信息和表中的数据,SQL*Plus命令不能改变数据库中的数据的值;

6、转义字符的使用举例:select * from employees where last_name like '%\_%' escape '\'

7、常用单行函数:

--字符函数:1)lower('str'):将字符串全部转换为小写

      2)upper('STR'):将字符串全部转化为大写

      3)initcap('str'):将字符串中的每个单词首字母转换为大写

      4)concat('str1', 'str2'):连接字符串

      5)substr('str', 1, 2):获取字符串指定位置后指定长度的子串

      6)length('str'):获取字符串长度

      7)instr('str', 's'):获取's'在'str'中首次出现的位置,若不存在则为0

      8)lpad(xx, len, '*'):向左填充'*'至指定长度(rpad一样)

      9)trim('a' from 'abcdefg'):去除字符串首尾字符'a'

      10)replace('aabbccdd', 'c', 'e'):将字符串中的'c'替换为'e'

--数字函数:1)round(123.456, 2):四舍五入(保留两位小数)

      2)trunc(123.456, 2):截断(小数点保留两位)

      3)mod(1600, 300):取余

--日期函数:1)months_between(sysdate, nowdate):获取两个日期之间相差几个月

      2)add_months(sysdate, 3):向指定日期中加上若干个月

      3)next_day(sysdate, '星期四'):指定日期的下一个星期对于的日期

      4)last_day(sysdate):本月的最后一天

      5)round(sysdate, 'month'):日期按照月份四舍五入

      6)trunc(sysdate, 'hh'):日期按照小时截断

--转换函数:1)隐式转换(vaerchar2 or char -> number、varchar2 or char -> date、number -> varchar2、date -> varchaar2)

      2)to_date('2015-11-4', 'yyyy-mm-dd'):将字符串类型按指定格式转换为date类型

      3)to_number():

      4)to_char(sysdate, 'yyyy-mm-dd'):将date类型按指定格式转换为字符串类型

      5)to_char(12345678, '$999,999,99'):将number类型按指定格式转换为字符串类型('L', '$', '9', '0', '.', ',')

--通用函数:1)nvl(expr1, expr2):将空值转换成一个已知的值

      2)nvl2(expr1, expr2, expr3):expr1不为NULL时返回expr2,为空时返回expr3

      3)nullif(expr1, expr2):expr1与expr2相等时返回NULL,不等时返回expr1

      4)coalesce(expr1, expr2, ...., exprn):若前一个表达式为空,则返回下一个表达式。

8、条件表达式:

--在SQL语句中使用IF-THEN-ELSE逻辑

--两种方法:1)CASE表达式;2)DECODE函数。

9、内连接:

--1)

select employee_id, d.department_id, department_name
from employees e, departments d
where e.department_id = d.department_id;

--2)

select employee_id, d.department_id, department_name
from employees e join departments d
on e.department_id = d.department_id;

10、左外连接:查询满足条件的记录和不满足条件的左表的记录

--1)

select employee_id, d.department_id, department_name
from employees e, departments d
where e.department_id = d.department_id(+);

--2)

select employee_id, d.department_id, department_name
from employees e left outer join departments d
on e.department_id = d.department_id;

11、右外连接:查询满足条件的记录和不满足条件的右表的记录

--1)

select employee_id, d.department_id, department_name
from employees e, departments d
where e.department_id(+) = d.department_id;

--2)

select employee_id, d.department_id, department_name
from employees e right outer join departments d
on e.department_id = d.department_id;

12、满外连接:查询满足条件的记录和不满足条件的左、右表的记录

select employee_id, d.department_id, department_name
from employees e full outer join departments d
on e.department_id = d.department_id;

13、分组函数:

--组函数:1)avg(expr):求expr这一列平均值

     2)count(expr):统计expr这一列不为空的记录数

     3)max(expr):求expr这一列的最大值

     4)min(expr):求expr这一列的最小值

     5)stddev(expr):求expr这一列的样本偏差

     6)sum(expr):求expr这一列的样本总和

--不能在where条件中使用组函数,必须使用having.

14、常见的数据库对象:

--1)表:基本的数据存储集合,由行和列组成

--2)视图:从表中抽出的逻辑上相关的数据集合

--3)序列:提供有规律的数值

--4)索引:提高查询的效率

--5)同义词:给对象起名

15、建表的两种方式:

--1)

CREATE TABLE emp1(
id number(12),
name varchar2(12)      
)

--2)从已存在的表中选取属性创建新表并获取相应的数据

CREATE TABLE emp2
AS
SELECT id, name FROM emp1

16、数据库事务:一组逻辑操作单元使数据从一种状态变换到另一种状态

--数据库事务由一个或多个DML语句、一个DDL语句、一个DCL语句组成;

--事务以第一个DML语句的执行作为开始、以下面的其中之一作为结束:

--1)COMMIT或ROLLBACK语句;

--2)DDL语句;

--3)用户会话正常结束;

--4)系统异常终止。

17、提交或回滚前的数据状态:

--其他用户不能看到当前用户所做的改变,知直到当前用户结束事务;

--DML语句所涉及到的行被锁定,其他用户不能操作。

18、提交后的数据状态:

--数据的改变已经被保存到数据库中;

--改变前的数据已经丢失;

--所有用户可以看到结果;

--锁被释放,其他用户可以操作涉及到的数据;

--所有保存点被释放。

19、视图:从表中抽出的逻辑上相关的数据集合

--视图是一种虚表;

--视图建立在已有表的基础上,视图赖以建立的这些表称为基表;

--向视图提供数据内容的语句为SELECT语句,可以将视图理解为存储起来的SELECT语句;

--视图是向用户提供基表数据的另一种表现形式;

--优点:1)控制数据访问;2)简化查询;3)避免重复访问相同的数据。

20、Top-N分析:分析查询一个列中最大或最小的n个值。(使用ROWNUM)

--对ROWNUM只能使用<或<=,而用=、>、>=都不会返回任何数据。

21、序列:可供多个用户用来产生唯一数值的数据库对象

--自动提供唯一的数值

--共享对象

--主要用于提供主键值

--将序列值装入内存可以提高访问效率

create sequence seq
increment by 10 --每次增长10
start with 10  --从10开始
maxvalue 100  --最大值为100
cycle  --需要循环
nocache  --不需要缓存登录

select seq.nextval from dual;
select seq.currval from dual;

22、索引:一种独立于表的模式对象,可以存储在与表不同的磁盘或表空间中

--索引被删除或损坏不会对表产生影响,只是影响查询的速度

--通过指针加速Oracle服务器的查询速度

--创建索引

create index idx
on table_name(column1, column2, ..., columnn);

--以下情况可以创建索引:1)列中数据值分布范围广;2)列经常在where字句或连接条件中出现;3)表经常被访问而且数据量很大,访问的数据大概占数据总量的2%到4%。

23、同义词(synonym):

--方便访问其他用户的对象;

--缩短对象名字的长度。

--创建同义词

create synonym new_name for table_name
posted on 2015-11-10 15:39  _taoGe  阅读(246)  评论(0编辑  收藏  举报