我爱编程

Oracle基础2

2017-07-14  本文已影响0人  到底什么情况

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(图形化工具格式);

上一篇下一篇

猜你喜欢

热点阅读