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
Oracle笔记--Sql语句的更多相关文章
- 笔记-sql语句
笔记-sql语句 1. sql语句基础 虽然经常使用sql语句,但没有一个整体式的文档,整理了一下. 1.1. select foundation: select <colnum ...
- oracle常用SQL语句(汇总版)
Oracle数据库常用sql语句 ORACLE 常用的SQL语法和数据对象一.数据控制语句 (DML) 部分 1.INSERT (往数据表里插入记录的语句) INSERT INTO 表名(字段名1, ...
- oracle之sql语句优化
oracle之sql语句优化 sql语句的优化 1.在where子句中使用 is null 或 is not null 时,oracle优化器就不能使用索引了. 2.对于有连接的列,即使最有一个是静态 ...
- oracle中sql语句的优化
oracle中sql语句的优化 一.执行顺序及优化细则 1.表名顺序优化 (1) 基础表放下面,当两表进行关联时数据量少的表的表名放右边表或视图: Student_info (30000条数据)D ...
- oracle 常用sql语句
oracle 常用sql语句 1.查看表空间的名称及大小 select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_sizefrom d ...
- Oracle中SQL语句分类
Oracle中SQL语句分类如下:1.DML语句 insert/delete/update/select/merge/explan plan/lock table2.DDL语句 create/atlt ...
- Oracle和SQL语句的优化策略(基础篇)
转载自: http://blog.csdn.net/houpengfei111/article/details/9245337 http://blog.csdn.net/uniqed/article/ ...
- Access、SQLServer、Oracle常见SQL语句应用区别
Access.SQLServer.Oracle常见SQL语句应用区别 关劲松 PMP 如果要兼容Access.SQL Server.Oracle三个数据库版本:我们在编写SQL语句的过程中,尽量使用一 ...
- oracle的sql语句大小写
我相信大家都知道,oracle数据库是区分大小写的,而且oracle的默认为大写的,也就是说你在sql脚本上面写的sql语句,oracle运行的时候,它会自动转化为大写的.注意一下,我这里举例子的计算 ...
随机推荐
- DAY1小题
F 求逆序对的板子题 #include<cstdio> #define ll long long using namespace std; ; ll a[maxn],r[maxn],n; ...
- html5的元素拖拽
今天学习了妙味课堂的课程: 在html5中有支持元素拖拽的一些属性和方法: 一些实例代码如下: <div id="div1"></div> <ul&g ...
- 源代码管理工具(2)——SVN(2)——第一次用SVN遇到的问题
今天因为项目的需要第一次使用了svn来托管项目,第一使用svn遇到了几个问题. 这个安装的过程很简单,不再赘述.在安装完成之后,相信肯定有一部分第一次用这个的人直接到开始处打开这个软件,这时候就会弹出 ...
- Vue 项目 在局域网内访问
之前在百度上看到过很多中 关于局域网访问项目的方法, 在这里,个人推荐两种比较喜欢的方法 一.直接在项目的package.json文件中进行配置 ,代码如下 "scripts": ...
- SprintBoot学习(二)
Spring Boot的入口类 1.名为xxxApplication的就是入口类,在main方法中使用SpringApplication.run(SpringBootTestApplication.c ...
- 如何使用charles对Android Https进行抓包
Charles.png charles是一款在Mac下常用的截取网络封包工具,对Android Http进行抓包,只要对手机设置代理即可,但对Android Https进行抓包还是破费一些功夫,网 ...
- NFS网络文件共享系统!
NFS是运行在应用层上的协议,其默认的端口为2049,它适用于linux与linux之间,也适用于linux与unix之间,亦可适用于linux与windows之间 nfs优缺点优点 节省本地硬盘的存 ...
- 科幻电影免费百度云分享(Scince-fiction cloud share)
Marvel episode Link Passcode:6h9k Star War full episode Link Passcode:7abk Men In Black Episode Col ...
- 【Javaweb】Servlet的xml和注解配置
1.xml <%@ page language="java" contentType="text/html;" %> <!DOCTYPE ht ...
- javascript 变量、常量 、 函数 声明
声明变量: 方式一: 使用 var 定义变量,可在定义的同时赋值 或 不赋值 . 方式二: 直接使用[变量名 = 值]的形式,这会定义一个全局变量,但在严格模式下会出现引用错误.[不建议使用] 方式三 ...