Oracle基础2
DDL数据定义语言
表空间:是实例分配的一块空间
语法:create tablespace demo01
datafile ‘c:\demo01.dbf’
size 100M
autoextend on
next20M;
普通用户没有权限创建表空间,需要用system用户来创建;
创建表空间后,还需要用管理员创建用户;
语法:create user user1 identified by test default tablespace demo01;
创建用户后,需要管理员对用户进行授权管理;
语法:grant 权限名 to 用户;
权限分类:connect(连接)、redources(普通操作权限)、dba(管理员操作权限);
然后,测试用户登录;
-------------------------------------------------------------------------------------------------
Oracle数据库的数据类型:
int 整数
double 小数
number(v1,v2) v1表示数字的总长度,v2表示小数位数
char(v1) 固定长度字符
varchar(v1) 可变字符长度
varchar2(v1) 可变字符长度
clob 大文本字符4G大小
blob 二进制字符4G大小
long 长文本2G大小
date 年月日时分秒
datetime 精确的年月日时分秒毫秒微秒纳秒
---------------------------------------------------------------------------------------------------
Oracle的约束
主键约束 primary key
外键约束 foreign key
非空约束 not null
唯一约束 unique
检查约束 check (如: check gender in (1,0))
约束语法:
constraint 约束名称 primary key(主键列);
constraint 约束名称 foreign key(从表列)
references 主表(主表列);//添加在从表;
Oracle事务需要手动选择提交或回滚;
---------------------------------------------------------------------------------------------------
更改表结构:
增加字段:alter table 表名 add (列 数值类型);
修改字段:alter table 表名 modify (列 数值类型);
重命名字段:alter table 表名 rename colunm 旧列名 to 新列名;
删除字段:alter table 表名 drop column 列名;
DML数据操作语言
插入数据:insert…into…values (…);
修改数据:update…set…where…;
删除数据:delete from…where…(逐条删,效率低)、truncate…(摧毁表结构,重建表结构,不能加条件);
创建表的同时,备份表的数据
create table emp as select * from scott.emp;
---------------------------------------------------------------------------------------------------
事务:
read commited: Oracle默认事务隔离级别;
serializable: 序列化,逐条读;
read only: 只读;
事务的保存点:
意义:为了保证执行成功的任务能够提交成功;
语法:savepoint 保存点名称;
事务保存点的用法:
执行SQL语句1;
savepoint 保存点名称;
执行SQL语句2;
rollback to 保存点名称;
commit;
---------------------------------------------------------------------------------------------------
Oracle数据库的几个特有对象
1.视图:一个虚拟表,有数据,但不存放数据,来源于原始表
意义:为了数据安全
语法:create view emp_view as select empno,ename,job from emp…;
查询视图:select * from emp_view;
注意:修改视图中的数据将影响原始表的数据,要想在修改视图中的数据时,不对原始表数据进行更改,需要在创建视图时,对视图进行with read only限定;
2.序列:是Oracle数据库生成一系列的数值(1,2,3,4…);
意义:实现id的自增长
属性:nextval下一个值
currval当前值
语法:create sequence序列名
示例:create sequence seq_person;
注意:先生成再使用,即必须先调用nextval才能查询currval;
3.索引:数据量大的情况下才使用
意义:大幅提升查询速度(100倍左右);
语法:create index ind_person on person(列名);
注意:建在重复值尽量少的列上,可以加1个,也可以加多个(复合索引);
加完之后可以直接执行查询语句;
4.同义词:为对象起别名;
意义:为了数据的安全,细分权限;
语法:create synonym同义词名for scott.dept;
用法:select * from同义词名;
---------------------------------------------------------------------------------------------------
数据的导入和导出
意义:数据的备份和还原,数据库或服务器的迁移;
方式:命令行和PLSQL工具
命令行:
导出:
全库导出:exp用户名/密码file =‘路径’ full = y;
按用户导出:exp用户名/密码owner=用户名file =‘路径;
按表导出:exp用户名/密码file = ‘路径’tables =表名1,表名2…;
导入:将上述命令中的exp换成imp即可;
PLSQL工具:
ExportUser Object;//只能导出表结构,不能备份数据;
ExportTables;//导出数据三种格式:dmp(Oracle数据库特有格式,必须有服务器对应的软件,通用)、sql(导出.sql文件,但不能删除原表,否则不能还原)、pde(图形化工具格式);