oracle常用语句
//*************
oracle基本操作语句(适合初学者)
oracle操作语句:
1.创建表
create table 表名(
列名1 类型,
列名2 类型
);
2.修改类属性
alter table 表名 modify(列名 类型);
3.添加列
alter table 表名 add(列名 类型);
4.添加主键约束和非空约束
alter table 表名 add constraint pk_表名 primary key(列名);
alter table 表名 modify(列名 not null);
5.删除主键约束
alter table 表名 drop primary key;
alter table 表名 drop constraint pk_表名;
6.失效约束
alter table 表名 disable primary key;
alter table 表名 disable constraint pk_表名;
7.有效约束
alter table 表名 enable primary key;
alter table 表名 enable constraint pk_表名;
8.删除列
alter table 表名 drop column 列名;
9.设置某列不可用,然后删除
alter table 表名 set unused(列名);
alter table 表名 drop unused columns;
10.修改表名
rename 表名1 to 表名2
alter 表名1 rename to 表名2;
11.截断表
truncate table 表名;
12.截断表保留行空间
truncate table 表名 resue storage;
13.查看表结构
desc table 表名;
14.删除表
drop table 表名;
15.插入记录
例:insert into 表名 values(内容1,内容2,内容3,内容4);
16.带参数对话方式插入行
例:insert into 表名 values(&列名1,&列名2);
insert into 表名 values(内容1,内容2);
17.插入某几列记录
insert into 表名(列名1,列名2) values(内容1,内容2);
18.为列插入空值(其列不能为not null)
insert into 表名 values(内容1,null,null);
19.创建表(包括主键及外键设置)方法一
create table 表名(
列名1 类型
constraint pk_表名 primary key,
列名2 类型 not null,
列名3 类型
constraint fk_表名 reference 表名(列名),
列名3 类型
constraint ck_表名 check(列名3 in(''内容1'',''内容2'',''内容3''))
);
20.查询所有行
select * from 表名;
21.查询某几列
select 列名1,列名2 from 表名;
22.重复行消除
select distict 列名 from 表名;
23.where语句查询
select * from 表名 where 条件 order by 列名;
(注:如number类型查出自动按升序排列,如要按降序排列,则select * from 表名 where 条件 order by 列名 desc;)
24.创建表,方法二
create table 表名(
列名1 类型 primary key,
列名2 类型 not null,
列名3 类型 check(列名3 in('''','''','''')),
列名4 类型 refernce 表名(列名)
);
25.修改 列=‘?’的数据
update 表名 set (列=?) where 列=‘?’;
26.删除行
delete from 表名 where 条件;
27.事务处理
--事务处理
update 表名
set 列名(日期) = ''30-5月-98''
where 条件;
savepoint mark1;
delete from 表名 where 条件;
savepoint mark2;
rollback to savepoint mark1;
rollback;
28.建立用户user1,密码为password
授予用户connect,resource的权限
connect角色用于登录
resource角色用于建表等.
connect system/manager
create user user1 identified by password;
grant connect,resource to username;
29.数据控制语言
connect scott/tiger
30.把对表1查询和修改的权限授予user1
grant select,update on 表1 to user1;
31.把对表表1中列1和列2修改的权限授予user1
grant update(列1,列2) on 表1 to user1;
32.把对表表1查询的权限授予用户user1
并且user1用户还可以把这个权限授予别的用户(with grant option)
grant select on 表1 to user1 with grant option;
33.从用户user1撤销对表1查询和修改的权限
revoke select,update on 表1 from user1;
Oracle 导出、导入某用户所有数据(包括表、视图、存储过程...)
前提:在CMD 命令下
导出命令:exp 用户名/密码@数据库 owner=用户名 file=文件存储路径(如:F:\abcd.dmp)
测试截图:exp ZM/sql123@ORCL owner=ZM file=F\abcd.dmp
导入命令:imp 用户名/密码@数据库 fromuser=用户名 touser=用户名 file=d:\cu.dmp ignore=y
imp:命令类型
cu/mycu@db:导入的数据库登陆(用户名/密码@数据库)
fromuser:文件的指定用户
touser:指定导入到当前登录的数据库某个用户
file:需要导入的数据文件
ignore:是否忽略创建错误
测试截图:imp ZM/sql123@ORCL fromuser=ZM touser=SZZM file=F:\test.dmp ignore=
oracle导出数据失败的解决方法一:
用SQL拼接一个语句: select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0 or num_rows is null;
使用上面的语句 会拼接出给空表分配Extent的语句,然后执行这些sql。
34.创建序列id_plus,从1开始自增,每次加1
CREATE SEQUENCE id_plus
INCREMENT BY 1
START WITH 1 ;
使用序列:id_plus.nextval
35.创建触发器,实现oracle表字段的自增
create trigger AutoID_Trigger
before insert on Table_Name for each row
begin
select AutoID.nextval into :new.ID from dual;
end AutoID_Trigger;