创建表空间
创建表空间: 逻辑单位, 通常我们新建一个项目,就会去新建表空间,在表空间中创建用户来创建表
语法:
create tablespace 表空间的名称
datafile \'文件的路径\' (虚拟机服务器上的存放路径) 文件后缀为.dbf
size 大小
autoextend on 设置自动扩展
next 每次扩展的大小
--创建表空间
create tablespace table01
datafile \'c:\\table01.dbf\'
size 100m
autoextend on
next 10m;
--删除表空间
drop tablespace handong; --只删除逻辑关系,不删除磁盘文件
创建用户
创建用户
create user 用户名
identified by 密码
default tablespace 表空间的名称
create user user01
identified by user01
default tablespace table01;
授权 --- 语法: grant 权限 to 用户
三种权限:
dba: 拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构。可使用其他用户表空间
Resource:拥有Resource权限的用户只可以创建实体,不可以创建数据库结构。
Connect:拥有Connect权限的用户只可以登录Oracle,不可以创建实体,不可以创建数据库结构。
--授予Connect权限
grant connect to user01;
--授予dba权限
grant dba to user01;
创建表
1.直接创建表
语法格式:
create table 表名(
列名 列的类型 [列的约束],
列名 列的类型 [列的约束]
);
2.子查询创建表 :create table 表名 as 查询语句;
相当于复制被查询表。(只复制表结构和表数据,不复制约束)
create table test1( --创建表,设置三列
name1 varchar2(10),
name2 char(10),
age number(2,3)
);
列
列的类型:
1.varchar ,在Oracle中,目前是支持的, 但是不保证以后还支持
2.varchar2(长度) 可变字符长度 varchar2(10) hello 占5个字符
3.char(长度) 固定长度字符 char(10) hello 占10个字符,用空格填充
4.number(总长度,小数长度) 数字类型 ***小数长度不能大于等于总长度
5.date 年月日时分秒 2017/4/13 9:43:49
6.timestamp 时间戳, 比date类型更加精确 13-APR-17 09.44.08.272000 AM +08:00
7.LONG/CLOB : 存放一本小说
8.BLOB : 存放电影 java 存进去, 再读取出来
约束:用来约束表中数据的规则
列的五大约束
1.主键约束: primary key 不能为空, 必须唯一
2.非空约束
3.唯一约束
4.检查约束 check(条件) 在mysql中是可以写的,但是mysql直接忽略了检查约束
5.外键约束: 主要是用来约束从表A中的记录,必须是存在于主表B中
增删改
插入数据:
insert into 表名 values(所有列的值都要对应写上)
insert into 表名(列1,列2) values(值1,值2);
使用子查询插入数据
insert into 表名 查询语句
更新数据
update 表名 set 列名 = 列的值 [where 条件]
update emp1 set ename=\'HUAAN\' where ename = \'KING\';
删除数据:
delete from 表名 [where 条件]
delete和truncate 区别
delete: truncate:
DML DDL
逐条删除 先删除表再创建表
支持事务操作 不支持事务操作,
执行效率要高
--设置默认级联删除 on delete
--级联删除 : 先删除从表中关联数据,然后再删除表中的数据
--强制删除表(不建议使用) : 先删除外键关联表的外键约束,然后再删除自己, 先删除product的外键约束,再删除原表
drop table 表 cascade constraint;
事务
四大特性: 原子性,隔离性,持久性,一致性
如果不考虑隔离级别: 脏读,虚读,不可重复读
MYSQL隔离级别: READ UNCOMMITTED , READ COMMITTED, REPEATABLE READ, SERIALIAZABLE
ORACLE隔离级别: READ COMMITTED SERIALIZABLE READ ONLY
默认隔离级别: READ COMMITTED
提交 : commit
事务的保存点/回滚点: savepoint 保存点的名称
回滚: rollback
视图: 就像窗户一样, 封装查询结果 , 通常视图创建只读视图
序列: 主要是用来实现ID自增长
索引: 相当于目录,能够提高查询效率, 原理 平衡二叉树, 每隔一段时间DBA都需要去重建索引
同义词: create synonym 名称 for 对象的名称
视图
视图: 是对查询结果的一个封装,视图里面所有的数据,都是来自于它查询的那张表。
1.能够封装复杂的查询结果
2.屏蔽表中的细节
语法:
create [or replace] view 视图的名称 as 查询语句 [ with read only]
注意: 通常不要通过视图去修改,视图创建的时候,通常要加上with read only
序列
序列: 生成类似于 auto_increment 这种ID自动增长 1,2,3,4,5....
auto_increment 这个是mysql
语法:
create sequence 序列的名称
start with 从几开始
increment by 每次增长多少
maxvalue 最大值 | nomaxvalue
minvalue 最小值 | nominvalue
cycle | nocycle 是否循环 1,2,3,1,2,3
cache 缓存的数量3 | nocache 1,2,3,4,5,6
如何从序列获取值
currval : 当前值
nextval : 下一个值
注意: currval 需要在调用nextval之后才能使用
永不回头,往下取数据, 无论发生异常, 回滚
索引
索引:相当于是一本书的目录,能够提高我们的查询效率
如果某一列,你经常用来作为查询条件,那么就有必要创建索引,数据量比较的情况
语法:
create index 索引的名称 on 表名(列)
注意:主键约束自带主键索引, 唯一约束自带唯一索引
索引原理: btree balance Tree 平衡二叉树
如果某列作为查询条件的时候,可以提高查询效率,但是修改的时候,会变慢
索引创建好之后,过了一段,DBA都会去做重构索引
SQL调优:
1.查看执行计划F5
2. 分析里面的cost 和 影响行数, 想办法降低
PLSQL编程
PLSQL编程 : procedure Language 过程语言 Oracle对SQL的一个扩展
让我们能够像在java中一样写 if else else if 条件, 还可以编写循环逻辑 for while
declare
--声明变量
变量名 变量类型;
变量名 变量类型 := 初始值;
vsal emp.sal%type; --引用型的变量
vrow emp%rowtype; --声明记录型变量
begin
--业务逻辑
end;
dbms_output.put_line()相当于java中 syso
PL条件判断
if then
elsif then
else
end if;
循环操作
1. while 循环
while 条件 loop
end loop;
2. for循环
for 变量 in [reverse] 起始值..结束值 loop
end loop;
3. loop循环
loop
exit when 条件
end loop;
继续阅读与本文标签相同的文章
-
阿里云混合云备份如何还原虚拟机备份?
2026-05-18栏目: 教程
-
数十万共享雨伞不翼而飞,创始人却高兴的要命!网友:赚翻了
2026-05-18栏目: 教程
-
滴滴 这是一见钟情的感脚
2026-05-18栏目: 教程
-
以实践的方式讨论:N-Gram原理与其应用
2026-05-18栏目: 教程
-
Hi拼团,第六代云服务器拼团购买更便宜,低至148元/年
2026-05-18栏目: 教程
