1、oracle由Oracle公司提供的一种开源数据库
2、单表查询
1)select....from...
2)列做运算
数字类型: + - * /
字符串拼接: || 是oracle的,不适用于mysql
日期做加减: 是时间的推移
sysdate : 系统时间
to_char(): 把时间类型转化为字符串类型: to_char(日期,'格式')
to_date(): 把字符串转化为日期:to_date('字符串日期','日期格式')
3、别名:as 提高sql可读性
4、排序: order by 字段 asc|desc
5、and : 并列, or:或者,in():里边是零散数据
6、null处理: is [not] null
7、模糊查询: [not] like
8、组函数(聚合函数) :针对一组数据,调用一次
sum(),count(),avg(),max(),min()
9、分组查询
select from group by 字段
确定分组的依据:“求每个/各个,,,”后面跟的这个字段:比如,求每个学生的总成绩:
select name,sum(fenshu) from student group by name
10、对分组后数据再次过滤:having
select ...from .. group by...having..
11、where与having区别
1)语法:where出现在from之后;having出现在group by 之后
2)查询条件:where后条件不能用组函数;having可以
3)查询结果一样时,优先where
12、语法顺序: select ...from ...where..group by..having..order by ..DESC|ASC
13、oracle伪列(mysql不适用)
rowid:数据库唯一标识一行数据
rownum:对查询的数据进行编号
14、表连接:
select ...from 表1 [连接方式] join 表2 on 连接条件
连接方式:内连接、外连接(左外连接、右外连接、全外连接)、自连接
15、左连接:
满足连接条件的数据+左表中不满足连接条件的数据
16、sql(结构化查询语言)分类:
DQL: 数据查询操作 select
DML: 数据操纵操作 insert/update/delete
DDL: 表操作 create/insert/drop
TCL: 事务控制 commit/rollback
17、Oracle数据类型:
数字:number
i. 语法1 :number 即可以保存小数,也可以保存整数
ii. 语法2:number(n) :保存最大为n位整数
iii. 语法3:number(n,m) : 总长度为n,小数位数为m
字符串:
char(n): 最大可以存放n个长度的字符串 ,不可变长度
日期类型:date
Oracle数据库中,没有boolean类型,描述boolean类型
varchar2(1) 要求值必须是 ‘y’ ,’n’
18、约束
主键 :primary key
非空 not null
唯一约束 unique
默认值:default 值
自定义约束 :检查约束 check
姓别必须是 ‘f’ 或 ‘m’ check(sex in(‘f’,’m’))
密码必须是六位 :check(length(pass)=6)
手机号码必须是11:check(length(mobile)=11)
邮箱必须含’@’ :check(email like ‘%@%’)
19、
insert into 表()values()
update 表 set
datete from 表 where
20、序列 :(sequence)
1. 创建一个序列 :create sequence 序列名; 默认从1开始,步长为1
2. 序列取值 :序列名.nextval; 获得序列的下一个值
3. 把序列使用在添加数据上:(主要应用在主键生成中)
insert into student(id,name)values(seq_test.nextval,‘testAA’);
序列使用的注意事项:
1)序列的值一旦使用,不会再重复,如果需要从头开始,需要删除序列重新创建 drop sequence 序列名。
2)序列一旦创建,在当前用户下,所有的表都可以使用,建议一张表对应创建一个序列来保证主键的不重复,因此序列取名: seq_stu
3)序列的创建可以指定起始位置和步长
21、事务控制
1、事务 :数据库中的最小操作单元。包括一条或者多条sql语句,这些sql语句要么同时成功,整个事务成功(事务提交 commit);在这些sql语句中如果有一条sql语句失败,所有的sql语句的操作需要撤销,事务失败(回滚:rollback)。
2、事务的原理:
数据库的服务端 DBServer会给每一个数据库client分配一个空间(回滚段),回滚段保存client执行的sql语句,如果一个client的多条sql语句都成功,遇到commit,把当前client对应的回滚段中的sql一次发送到DBServer,并清空回滚段;如果在回滚段中的sql语句有一条失败,撤销所有影响数据的DML操作,清空回滚段。
注意:影响事务控制的操作是在client,不同的client事务之间没有影响
3、事务的范围:
a) 开始:同一个事务中的第一条sql执行开始
sql1 开始
sql2
...
sqln
b) 结束 :commit/rollback
4、 事务特点(ACID) A: 事务原子性
C: 事务隔离性
I: 事务一致性
D: 事务持久性