Oracle
表空间与用户
Oracle中的一些注意点:
- 字段使用两个单词使用下划线做连接:
user_id
- 表,视图,函数,触发器,存储过程
- oracle的表空间:一个数据库建立多个表空间,一个表空间下建立多个用户,一个用户下创建多个表
- 系统在创建之初会生成默认的system,sys账号,系统也会有默认的表空间
dbf
文件(但是登录时无法登录,需要给system账号解锁)
1.让所有登录的用户(主要是system用户)都可以以DBA的身份登录
sqlplus / as sysdba;
2.给system用户解锁
alter user system account unlock;
- 创建表空间: 一个表空间可以对应多个数据文件
datafile
create tablespace test123 (表空间的名称)
datafile 'E:\app\test123.dbf' (表空间对应的数据文件datafile)
size 100m (表空间的初始大小)
autoextends on (表空间自动增长)
next 10m;(每次自动增长的长度为10)
- 查看表空间
select tablespace_name from dba_tablespaces;
- 创建用户,新创建的用户没有权限,所以需要授权(
grant dba to 用户
),oracle中有三种角色:connect,resource,dba
create user c##用户名,c##用于数据加密
idendtified by 密码
default tablespace 表空间
- 给角色授权
grant gba to 用户名
- 总结上述,创建用户之后可以以此用户登录
1.创建表空间
create tablespace test456 datafile 'E:\app\test456.dbf' size 100m autoextend on next 10m;
2.给表空间创建用户
create user c##heihei identified by 23123 default tablespace test456;
3.给用户授权
grant dba to c##heihei1;
- oracle的数据结构
数据类型 | |
---|---|
number(总长度,小数) | 可以表示为整数和小数 |
varchar | 字符串 |
varchar2 | 字符串 |
data | 日期类型 |
clob | 文本类型 |
blob | 二进制数据 |
DDL操作
- 创建表结构
create table ttable(
id number(10),
name varchar2(20),
height number(5,2),
birth date);
- 插入数据
insert into ttable
values(101,'小明 ',123.4566,to_date('2001-11-01','yyyy-mm-dd'));
- 对字段的DDL操作
1.添加字段
alter table ttable add gender varchar2(10);
13. 修改字段,default表示的是默认值
alter table ttable modify gender varchar2(4) default '男';
3.修改字段名
alter table ttable rename column gender to sex;
4.删除字段名(删除的时候总是出现问题)
alter table ttable drop column sex;
事务
- 事务:从开始到结束
完成某一个功能
(转账)完整的过程,系统会自动开启事务,在最后自动commit()
提交事务,也可以手动开启(比如转账,从一个账户转走钱,另一个事务接收钱,这整个过程是事务) - 事务的核心:当提交事务时,有一个sql语句失败了,事务回滚
rollback()
,让整个事务状态回滚到开启事务之前 - 事务开启,事务提交,事务回滚
- 一条或多条sql语句完成某一个功能的叫事务,像函数和存储过程里的sql语句集就可以开启事务,提交事务
- 一条sql语句:
delete from user where id=3;
这是事务,系统自动开启事务,提交事务- 多条sql语句:转账,这也是事务,必须手动开启事务
序列
- 序列:在Oracle中要想实现自增长,必须手动处理,依靠序列实现自增长
- 创建序列:
create sequence 序列名
- 面试题:自增长的前提是这个字段必须是序列
- 插入数据实现自增长(
序列.nextval
)
--将id设置为序列
create sequence id;
--插入数据实现自增长
insert into ttable(id,name) values(id.nextval,'小明')
- 序列的注意事项:
- 数据自增的前提是该地段是序列
- 多个表同时使用id做序列,他们是共享的
- 删除序列数据时,在自增时,自增以最后一次数字开始自增,比如删除2,3,4,下次id会从5号开始
- 当插入数据失败,序列也会增长的
- 当删除了数据,在自增的时候,自增以最后一次数字开始,比如删除了id为2,3,4,下次的id号从5开始
- 当多个表同时有id作为序列,那他们是共享的
- 要想序列重新从1开始,先删除序列,再重新将id创建为序列
--删除序列
drop sequence id;
--创建序列
create sequence id;
--插入数据实现序列自增长
insert into ttable(id,name) values(id.nextval,'小明');
--查询数据
select * from ttable;
字段约束——主键
- 字段约束——主键,外键,unique
- 索引:主键,唯一,index
- 在创建表的时候设置主键,特点是非空唯一,不然会有违反唯一约束这种问题,所以一般设置主键为序列,实现自增长
字段约束——外键
- 先创建主表再创建从表
- 设置主键:
constraint cou_pk primary key (cou_id)
-- 主表
create table course(
cou_id number(10),
cou_name varchar2(30),
constraint cou_pk primary key (cou_id))
--创建序列
create sequence cou_id;
--插入数据
insert into course values(cou_id.nextval,'软件182班')
--查询数据
select * from course;
- 设置外键:
foreign key (cou_id) references course (cou_id)
-- 从表
create table student3(
stu_id number(10),
stu_name varchar2(30),
stu_gender varchar2(10),
cou_id number(10),