oracle常见操作语句

创建表


CREATE TABLE <table_name>(
column1 DATATYPE [NOT NULL] [PRIMARY KEY],
column2 DATATYPE [NOT NULL],
...
[constraint <约束名> 约束类型 (要约束的字段)
... ] )
说明: 
DATATYPE --是Oracle的数据类型,可以查看附录。
NUT NULL --可不可以允许资料有空的(尚未有资料填入)。
PRIMARY KEY --是本表的主键。
constraint --是对表里的字段添加约束.(约束类型有
Check,Unique,Primary key,not null,Foreign key)。

示例:
create table stu(
s_id number(8) PRIMARY KEY,
s_name varchar2(20) not null,
s_sex varchar2(8),
clsid number(8),
constraint u_1 unique(s_name),
constraint c_1 check (s_sex in ('MALE','FEMALE'))
);


复制表


CREATE TABLE <table_name> as <SELECT 语句>

(需注意的是复制表不能复制表的约束);

示例:
create table test as select * from emp;

如果只复制表的结构不复制表的数据则:
create table test as select * from emp where 1=2;


创建索引

CREATE [UNIQUE] INDEX <index_name> ON <table_name>(字段 [ASC|DESC]);

UNIQUE --确保所有的索引列中的值都是可以区分的。
[ASC|DESC] --在列上按指定排序创建索引。

(创建索引的准则:
1.如果表里有几百行记录则可以对其创建索引(表里的记录行数越多索引的效果就越明显)。
2.不要试图对表创建两个或三个以上的索引。
3.为频繁使用的行创建索引。
)


示例
create index i_1 on emp(empno asc);

修改表


1.向表中添加新字段
ALTER TABLE <table_name> ADD (字段1 类型 [NOT NULL],
字段2 类型 [NOT NULL]
.... );

2.修改表中字段
ALTER TABLE <table_name> modify(字段1 类型,
字段2 类型
.... );

3 .删除表中字段
ALTER TABLE <table_name> drop(字段1,
字段2
.... );

4 .修改表的名称
RENAME <table_name> to <new table_name>;

5 .对已经存在的表添加约束
ALTER TABLE <table_name> ADD CONSTRAINT <constraint_name> 约束类型 (针对的字段名);
示例:
Alter table emp add constraint S_F Foreign key (deptno) references dept(deptno);

6 .对表里的约束禁用;
ALTER TABLE <table_name> DISABLE CONSTRAINT <constraint_name>;

7 .对表里的约束重新启用;
ALTER TABLE <table_name> ENABLE CONSTRAINT <constraint_name>;

8 .删除表中约束
ALTER TABLE <table_name> DROP CONSTRAINT <constraint_name>;
示例:
ALTER TABLE emp drop CONSTRAINT <Primary key>;

插入记录

INSERT INTO table_name (column1,column2,...)
values ( value1,value2, ...);

示例
insert into emp (empno,ename) values(9500,'AA');


把 一个表中的数据插入另一个表中

INSERT INTO <table_name> <SELECT 语句>
示例
create table a as select * from emp where 1=2;
insert into a select * from emp where sal>2000;


更新数据

UPDATE table_name set column1=new value,column2=new value,...
WHERE <条件>

示例
update emp set sal=1000,empno=8888 where ename='SCOTT'

删除数据


DELETE FROM <table_name>
WHERE <条件>

示例
delete from emp where empno='7788'


数据控制语言(DCL)

1.授权
GRANT <权限列表> to <user_name>;

2.收回权限
REVOKE <权限列表> from <user_name>


Oracle 的权限列表
connect 连接
resource 资源
unlimited tablespace 无限表空间
dba 管理员
session 会话

事务控制语言(TCL)

控制语言

1.COMMIT 提交;

2.ROLLBACK [TO savepoint] 回滚;

3.SAVEPOINT <savepoint> 保存位置。

创建序列


CREATE SEQUENCE <sequencen_name>
INCREMENT BY n
START WITH n
[MAXVALUE n][MINVALUE n]
[CYCLE|NOCYCLE]
[CACHE n|NOCACHE];

INCREMENT BY n --表示序列每次增长的幅度;默认值为1.
START WITH n --表示序列开始时的序列号。默认值为1.
MAXVALUE n --表示序列可以生成的最大值(升序).
MINVALUE n --表示序列可以生成的最小值(降序).
CYCLE --表示序列到达最大值后,在重新开始生成序列.默认值为 NOCYCLE。
CACHE --允许更快的生成序列.


示例:
create sequence se_1
increment by 1
start with 100
maxvalue 999999
cycle;


修改序列


ALTER SEQUENCE <sequencen_name>
INCREMENT BY n
START WITH n
[MAXVALUE n][MINVALUE n]
[CYCLE|NOCYCLE]
[CACHE n|NOCACHE];



删除序列


DROP SEQUENCE <sequence_name>




使用序列


1.CURRVAL
返回序列的当前值.
注意在刚建立序列后,序列的CURRVAL值为NULL,所以不能直接使用。
可以先初始化序列:
方法:select <sequence_name>.nextval from dual;
示例:select se_1.nextval from dual;
之后就可以使用CURRVAL属性了

2.NEXTVAL
返回序列下一个值;
示例:
begin
for i in 1..5
loop
insert into emp(empno) values(se_1.nextval);
end loop;
end;


查看序列的当前值
select <sequence_name>.currval from dual;

示例:select se_1.currval from dual;

创建用户

CREATE USER <user_name> [profile "DEFAULT"]
identified by "<password>" [default tablespace "USERS"]


删除用户


DROP USER <user_name> CASCADE


创建角色


CREATE ROLE <role_name>
identified by "<password>"


删除角色


DROP ROLE <role_name>



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值