oracle
DDL 语句
是数据定义语言
表空间
是实例分配的一块空间
作用: 相当于mysql的数据库
语法: creat tablespace 表空间名称
datafile '磁盘文件路径'
size 文件大小
autoextend on
next 增长大小
权限的分类
connect 一般权限可以连接数据库
resource 更高级一点0
dba 最高级的权限 管理员
授权的语法
grant 权限 to 用户名
数据类型
数值类型
int double
number(v1,v2) v1代表数值的总长度 v2它是小数的位数
number的v2可以省略 默认为0 也就是整数
number(6,2) 最大值 9999.99
字符类型
char() 固定长度的字符类型
实际长度两个字符 占用9位字符
varchar 可变长度的字符
实际长度两个字符 占用2位字符
varchar 可变长度的字符
实际长度两个字符 占用2位字符
日期类型
date mysql是年月日 yyyy-mm-dd
oracle数据库 年月日 时分秒 yyyy-mm-dd hh:mm:ss
mysql datetime 年月日 时分秒 yyyy-mm-dd
mysql的datetime 年月日 时分秒 yyyy-mm-dd
timetape
比时分秒更准确的日期类型
能精确到纳秒 也就是 后9位
大文本类型
blob 二进制文本 4G的文件
clob 字符串的文本 4G的文件
long 长文本
约束
主键约束 primary key 非空和唯一
非空约束 not null 非空
唯一约束 unique 唯一
外键约束 foreeign key
检查约束 check(列 in (0.1))
更改表结构
增加一列 alter table 表名 add (列名 数值类型)
修改列的数值类型 alter table 表名 modify (列名 数值类型)
修改列的名称 alter table 表名 rename column 旧列名 to 新列名
删除 一列 alter table 表名 drop column 列名
DML语句 数据操作语言
对表数据的操作
插入数据
insert into 表名 values (...) 插入所有的列 列值跟列的数量想等
修改数据
update 表名 set 列 = 值 where 条件
没有条件修改所有的记录
删除数据
delete from 表 where 条件 删除满足条件的记录
delete from 表 删除所有记录
一条一条删 可以加条件 效率低
truncate table 表名 删除所有记录
摧毁表的结构 重建表结构 不能按条件删 效率高
存在主外键的情况下 如何删除主表的记录
一: 先删从表 再删主表
二: 可以直接删除表 加入 cascade constraint
三: 级联删除
删除主表记录的同时删除字表记录 创建子表时 指定 on delete cascade
事务作为一个逻辑操作单元 要么全部成功 要么全部失败
特性ACID 原子性 一致性 隔离性 持久性
没有隔离级别 脏读 幻读 不可重复读
调整隔离级别 oracle的隔离级别 read commited, serialezable, read only
默认为 read commited
事务的保存点
意义:是为了保证执行成功的任务正常提交
使用语法:
savapoint 保存点名称
rollback 保存点
commit
序列
oracle数据库升成的一系列数值(1,2,3)
意义: 是用来做id的自增长
创建序列
creat sequence 序列名
序列的使用 用到两个属性
nextval 下一个值
currval 当前值 必须先调用nextval升成值之后才能查看当前值
索引
可以看作为一本书的目录
使用场景(数据量要很大才有意义)
意思:提升查询速度
单行索引 creat index index_person on 表 (列)
复合索引 creat index index_person on 表(列1,列2)
表中的列 有主键约束
唯一约束
会自动的创建索引
建立索引的弊端
建立索引的讲索引的值和rowid 保存到二叉树
新加入的记录 值也要做一个排序 也就是要更改索引
更新表中记录的会比没有索引 效率低
同义词: 可以看作对象的别名
意思:是为了保证数据的安全 权限的细分
创建同义词
creat sysnonym 同义词名称 for 用户 .对象