Oracle 数据库常用操作语句大全
一. Oracle数据库操作
1.创建数据库
create database data databasename
2.删除数据库
drop database dbname
3.备份数据库
完全备份
exp demo/demo@orcl buffer=1024 file =d: \back.dmp full=y
demo: 用户名
buffer:缓存大小
file:具体的备份文件地址
full:是否到处全部文件
ignore:忽略错误,如果表已存在,则也是覆盖
-
将数据库中system用户与sys用户的表导出
exp demo/demo@orcl file=d:\backup\1.dmp owner=(system,sys) -
导出指定的表
exp demo/demo@orcl file=d:\backup2.dmp tables=(teachers,students) -
按过滤条件,导出
exp demo/demo@orcl file=d:\backup2.dmp tables=(table1) query=“where filed1 like ‘fg%’”
导出时可以进行压缩;命令后面加上compress=y; 如果需要日志,后面: log=d:\log.txt -
备份远程服务服务器的数据库
exp 用户名/密码@远程的IP:端口/实例 file-存放的位置:\文件名称.dmp full=y
4.数据库还原
打开cmd直接执行如下命令,不用再登录sqlplus.
-
完整还原’’
imp demo/demo@orcl file=d:\back.dmp full=y ignore=y log=d:implog.txt
指定log很重要,便于分析错误进行扑救 -
导入指定表
imp demo/demo@orcl file=d:\backup2.dmp tables=(teachers,students) -
还原到远程服务器
imp 用户名/密码@远程的IP:端口/实例 file=存放的位置:\文件名称.dmp full=y
二.Oracle表操作
1.创建表
create table tabname(col1 type1 [not null] [primary key],col2 type2[not null],…)
根据已有的表创建表:
A:select * into table_new from table_old(使用旧表创建新表)
B:create table tab_new as select col1,col2…from tab_old definition only<仅适用于Oracle>
2.删除表
drop table tabname
3.重命名表
说明:alter table 表名 rename to 新表名
eg:alter table tablename rename to new table name
4.增加字段
说明:alter table 表名 add(字段名 字段类型 默认值 是否为空);
eg:alter table tablename add(ID int);
alter table tablename add(ID varchar2(30) default ‘空’ not null);
5.修改字段
说明:alert table 表名 modify(字段名 字段类型 默认值 是否为空);
eg:alter table tablename modify(ID number(4));
6.重名字段
说明:alter table 表名 rename column 列名 to 新列名 (其中:column是关键字)
eg:alter table tablename rname column Id to newId;
7.删除字段
说明:alter table 表名 drop column 字段名;
eg:alter table tablename drop column ID;
8.添加主键
alter table tabname add primary key(col)
9.删除主键
alter table tablename drop primary key(col)
10.创建索引
create [unique] index idxname on tabname(col…)
11.删除索引
drop index idxname
注:索引是不可更改的,想要改必须删除重新建.
12.创建视图
create view viewname as select statement
13.删除视图
drop view viewname
三.Oracle操作数据
1.数据查询
select <列名>from<表名>[where<查询条件表达式>][order by<排序的列名>[asc或desc]]
2.插入数据
insert into 表名 values(所有列的值);
insert into test values(1,‘zhangsan’,20);
insert into 表名(列) values(对应的值);
insert into test(id,name) values(2,‘lisi’);
3.更新数据
update 表 set 列=新的值[where条件]
update test set name=‘zhangsan2’ where name=‘zhangsan’
update 表 set 列=新的值—>更新所有的数据
update test set age=20;
4.删除数据
-
delete from 表名 where 条件 -->删除满足条件的记录
delete from test where id = 1;
delete from test -->删除所有
commit:–提交数据
rollback;–>回滚数据
delete方式可以恢复删除的数据,但是提交了,就没有办法了delete删除的时候,会记录日志 -->删除会很慢很慢 -
truncate table 表名
删除所有数据,不会影响表结构,不会记录日志,数据不能恢复 -->删除很快 -
drop table 表名
删除所有数据,包括表结构一并删除,不会记录日志,数据不能恢复 --删除很快
5.数据复制
-
表数据复制
-insert into table1 (select * from table2) -
create table table1 select * from table2 where 1>1;
-
复制表结构和数据
create table table1 select * from table2; -
复制指定字段
create table table1 as select id,name from table2 where 1>1;
四.数据库复制命令
1.不同的数据库语法不同(SQL Server和Oracle为例),标并且复制包括目标表已存在和目标表不存在的情况,分别回答:
1.SQL Server中,如果目标表存在:
insert into 目标表 select * from 原表;
2.SQL Server中,如果目标表不存在;
select * into 目标表 from 原表;(复制结构和数据)
select * from 目标表 from 原来 where 1=0(只复制表结构)
3.Oracle,如果目标表存在;
insert into 目标表 select * from 原表;
commit;
4.Oracle中,如果目标表不存在;
create table 目标表 as select * from 原表 where 1=0(只复制表结构)
create table 目标表 as select * from 原表;复制表结构和数据