1@H_404_3@. 表空间
-- 创建普通表空间
create@H_404_3@ tablespace my_tbsp
datafile 'E:/app/Administrator/product/11.2.0/dbhome_1/oradata/sample/my_tbsp.dbf'@H_404_3@
size 20@H_404_3@M
autoextend on@H_404_3@
next 50@H_404_3@m maxsize 20480@H_404_3@m
extent management local;
-- 创建临时表空间
create@H_404_3@ temporary tablespace my_temp
tempfile 'E:/app/Administrator/product/11.2.0/dbhome_1/oradata/sample/my_temp.dbf'@H_404_3@
size 20@H_404_3@M
autoextend on@H_404_3@
next 50@H_404_3@m maxsize 20480@H_404_3@m
extent management local;
-- 查看所有的表空间
select@H_404_3@ * from@H_404_3@ user_tablespaces;
-- 删除表空间
drop tablespace my_tbsp;
drop tablespace my_temp;
2@H_404_3@. 用户
-- 创建用户
create@H_404_3@ user zhangsan
identified by@H_404_3@ abc123
default@H_404_3@ tablespace my_tbsp
temporary tablespace my_temp;
-- 修改用户密码
alter user lisi identified by@H_404_3@ abcdefg;
-- 删除用户
drop user lisi;
-- 删除用户(级联删除该用户的数据)
drop user lisi cascade;
-- 查看用户
select@H_404_3@ * from@H_404_3@ user_users;
4@H_404_3@. 权限和角色
-- 授予权限
grant create@H_404_3@ session to@H_404_3@ zhangsan;
grant create@H_404_3@ user to@H_404_3@ zhangsan;
grant create@H_404_3@ table to@H_404_3@ zhangsan;
-- 撤销权限
revoke create@H_404_3@ user from@H_404_3@ zhangsan;
-- 角色: connect,resource,dba
grant connect,resource to@H_404_3@ lisi;
-- 撤销角色
revoke resource from@H_404_3@ lisi;
5@H_404_3@. 数据库语言
DDL: 数据库模式定义语言(Data Definition Language)
create@H_404_3@,alter,drop,truncate
DML: 数据操纵语言(Data Manipulation Language)
insert,update,delete
DQL: 数据查询语言(Data QueryLanguage)
select@H_404_3@
TCL: 事务控制语言(Transaction Control Language)
commit,rollback,savepoint
DCL: 数据控制语言(Data Control Language)
grant,revoke
6@H_404_3@. 数据库类型
6.1@H_404_3@ 字符型
char: 定长字符,如果添加的值不足则会补齐空格,最多2000@H_404_3@个字节
varchar2: 可变长字符,最多4000@H_404_3@个字节
long: 可变长字符,最多2@H_404_3@G
6.2@H_404_3@ 数值型
number(8@H_404_3@,2@H_404_3@) 8@H_404_3@: 最多8@H_404_3@位,2@H_404_3@:接受最多两位小数(如果有小数,整数范围就要减去小数位)
整数位只能最多6@H_404_3@位,小数位最多2@H_404_3@位
6.4@H_404_3@ 日期时间
date: 存储日期和时间部分,精确到整个的秒
timestamp: 存储日期、时间和时区信息,秒值精确到小数点后6@H_404_3@位
6.5@H_404_3@ RAW
raw: 存储2@H_404_3@进制数据,最多2000@H_404_3@字节
long raw: 存储2@H_404_3@进制数据,最多2@H_404_3@G
6.6@H_404_3@ LOB
BLOB: 2@H_404_3@进制大字段,最多4@H_404_3@G
CLOB: 字符字符大字段,最多4@H_404_3@G
NCLOB: Unicode字符大字段,最多4@H_404_3@G
BFILE: 外部文件大字段
6.7@H_404_3@ 伪列
rowid: 是表中行的存储地址,该地址可以唯一地标识数据库中的一行,可以使用 ROWID 伪列快速地定位表中的一行
rownum 是查询返回的结果集中行的序号,可以使用它来限制查询返回的行数
7@H_404_3@. 表
7.1@H_404_3@ 创建表
create@H_404_3@ table t_user (
id varchar2(36@H_404_3@) primary key,id_card char(18@H_404_3@) not@H_404_3@ null unique,name varchar2(20@H_404_3@) default@H_404_3@ 'hehehe'@H_404_3@,price number(4@H_404_3@,2@H_404_3@) default@H_404_3@ 3.1415@H_404_3@,birthday date default@H_404_3@ sysdate
);
create@H_404_3@ table t_department(
id varchar2(36@H_404_3@) primary key,name varchar2(40@H_404_3@)
);
alter table t_user add@H_404_3@ depart_id varchar2(36@H_404_3@);
primary key 主键(唯一,不为空)
not@H_404_3@ null 不能为空
unique 唯一
default@H_404_3@ 设置默认值
sysdate 表示系统当前时间
** oracle中没有自增长(auto increment),oracle中需要依赖sequence@H_404_3@来实现自增长
7.2@H_404_3@ 删除表
drop table t_user;
7.3@H_404_3@ 修改表结构
-- 添加列
alter table t_user add@H_404_3@ gender varchar2(6@H_404_3@) default@H_404_3@ '男'@H_404_3@;
-- 删除列
alter table t_user drop column price;
-- 修改列
alter table t_user modify gender char(6@H_404_3@) default@H_404_3@ 'female'@H_404_3@;
7.4@H_404_3@ 外键约束
-- 创建外键约束
alter table t_user
add@H_404_3@ constraint fk_user_department
foreign key(depart_id)
references t_department(id);
-- 删除外键约束
alter table t_user drop constraint fk_user_department;
----------
1@H_404_3@. DDL清空表
truncate table bonus;
2@H_404_3@. DML
2.1@H_404_3@. 添加数据
insert into@H_404_3@
insert into@H_404_3@ dept(deptno,dname)
values(60@H_404_3@,'财务部'@H_404_3@);
insert into@H_404_3@ dept(deptno,dname) values(50@H_404_3@,'技术部'@H_404_3@);
commit;
-- 新增所有列数据
insert into@H_404_3@ dept values(70@H_404_3@,'财务部'@H_404_3@,'财务'@H_404_3@);
2.2@H_404_3@. 修改数据
update
update dept
set@H_404_3@
loc = '深圳'@H_404_3@
where@H_404_3@
deptno = 50@H_404_3@;
2.3@H_404_3@. 删除数据
delete
delete from@H_404_3@ dept where@H_404_3@ deptno = 50@H_404_3@ or@H_404_3@ deptno = 60@H_404_3@;
-- 删除所有
delete from@H_404_3@ dept;
** delete 和 truncate 清空表时有什么区别?
delete删除的数据会保存到回滚段,可以被回滚,效率低.
truncate直接删除数据不可以回滚,效率高.
清空表通常使用truncate.
3@H_404_3@. 事务
事务指一组针对数据库操作的命令集合,事务是一个原子操作,不可拆分,必须同时成功或者是同时失败.
四大特性
3.1@H_404_3@ 原子性: 事务时一个原子才做,事务中的操作同时成功或者同时失败
3.2@H_404_3@ 一致性: 事务操作之前和之后的数据要保持一致
3.3@H_404_3@ 隔离性: 事务之间互不影响,互相并不知道其他事务的存在
3.4@H_404_3@ 持久性: 事务操作之后,数据应当永久保存
4@H_404_3@. create@H_404_3@ as@H_404_3@(根据查询结果创建表,并将查询到的数据添加到表中)
create@H_404_3@ table t_employee
as@H_404_3@
select@H_404_3@ ename,job,sal from@H_404_3@ emp where@H_404_3@ deptno = 10@H_404_3@;
5@H_404_3@. insert [as@H_404_3@](将全部查询到的数据添加到指定表中,不要as@H_404_3@关键字)
insert into@H_404_3@ bonus select@H_404_3@ * from@H_404_3@ t_temp;
如何快速去除表中的重复数据
-- copy@H_404_3@一个临时表
create@H_404_3@ table t_temp as@H_404_3@ select@H_404_3@ distinct@H_404_3@ * from@H_404_3@ bonus;
-- 清空原表
truncate table bonus;
-- 将临时数据导入原表
insert into@H_404_3@ bonus select@H_404_3@ * from@H_404_3@ t_temp;
commit;
drop table t_temp;
6@H_404_3@. 简单查询 select@H_404_3@
6.1@H_404_3@ 单表查询
select@H_404_3@ * from@H_404_3@ emp where@H_404_3@ sal >= (select@H_404_3@ max(sal) from@H_404_3@ emp)
-- * 查询所有列
select@H_404_3@ * from@H_404_3@ emp;
-- 查询指定列
select@H_404_3@ ename,sal from@H_404_3@ emp;
-- 去重复
select@H_404_3@ distinct@H_404_3@ job,mgr from@H_404_3@ emp;
-- 起别名
select@H_404_3@
e.ename 姓名,e.sal 工资
from@H_404_3@
emp e
-- 单条件
select@H_404_3@ * from@H_404_3@ emp where@H_404_3@ sal < 3000@H_404_3@
select@H_404_3@ * from@H_404_3@ emp where@H_404_3@ comm is@H_404_3@ not@H_404_3@ null
select@H_404_3@ * from@H_404_3@ emp where@H_404_3@ comm is@H_404_3@ null
select@H_404_3@ * from@H_404_3@ emp where@H_404_3@ ename = 'SCOTT'@H_404_3@
**
=: 等于
<> != ^=: 不等于(通常用<>)
in@H_404_3@: 多值匹配(匹配in@H_404_3@中的列表值) select@H_404_3@ * from@H_404_3@ emp where@H_404_3@ empno in@H_404_3@ (7369@H_404_3@,7788@H_404_3@,7934@H_404_3@)
not@H_404_3@ in@H_404_3@:
between and@H_404_3@: select@H_404_3@ * from@H_404_3@ emp where@H_404_3@ sal between 1100@H_404_3@ and@H_404_3@ 2000@H_404_3@ (相当于 sal >= 1100@H_404_3@ and@H_404_3@ sal <= 2000@H_404_3@)
not@H_404_3@ between:
is@H_404_3@ null:
is@H_404_3@ not@H_404_3@ null:
like: 模式匹配,只能用于字符串(%表示任意个任意字符,_表示一个任意字符)
select@H_404_3@ * from@H_404_3@ emp where@H_404_3@ ename like 'MAR%'@H_404_3@
select@H_404_3@ * from@H_404_3@ emp where@H_404_3@ ename like '%S'@H_404_3@
select@H_404_3@ * from@H_404_3@ emp where@H_404_3@ ename like '%A%'@H_404_3@
select@H_404_3@ * from@H_404_3@ emp where@H_404_3@ ename like 'A____'@H_404_3@
not@H_404_3@ like:
-- 多条件(and@H_404_3@)
select@H_404_3@
*
from@H_404_3@
emp
where@H_404_3@
comm is@H_404_3@ not@H_404_3@ null
and@H_404_3@
comm > 0@H_404_3@
-- 排序
select@H_404_3@ * from@H_404_3@ emp order@H_404_3@ by@H_404_3@ sal asc@H_404_3@ -- 升序
select@H_404_3@ * from@H_404_3@ emp order@H_404_3@ by@H_404_3@ sal desc@H_404_3@ -- 降序
-- 多列组合排序
select@H_404_3@ *
from@H_