1.创建表空间
create tablespace 表空间名
default ‘filename’/path’服务器端路径’ [size integer [k | m]] [autoextend [off | on]];
size:制定文件的大小,autoextend:用来启动或禁用数据文件的自动扩展。
2.创建新用户
create user 用户名
identified by 密码
[default tablespace 表空间]
[temporary tablespace 临时表空间];
3.为用户授权
grant 权限 to 用户
grant 权限 on 表名 to 用户
4.修改用户密码
alter user 用户名
identified by 密码;
5.删除用户
drop user 用户名 casaed;
6.查看当前用户
show user
7.查看当前时间
select sysdate from dual;
8.查看当前用户下的所有表
select table_name from user_tables;
9.查看当前表的结构
desc 表名
10.修改上一条的内容
edit;
Oracle 数据库对象
1.同义词
a.创建同义词
私有同义词
create [or replace] synonym 同义词名 for 对象名;
共有同义词
create [or replace] public synonym 同义词名 for 对象名;
b.删除同义词
drop synonym同义词名;
2.序列
a.创建序列
create sequence 序列名
[start with integer]
[increment by integer]
[maxvalue integer | nomaxvalue]
[minvalue integer | nominvalue]
[cycle | nocycle]
[cache integer | nocache];
b.访问序列
select 序列名.nextval from dual;
select 序列名.currval from dual;
c.根改序列
alter sequence 序列名
[increment by integer]
[maxvalue integer | nomaxvalue]
[minvalue integer | nominvalue]
[cycle | nocycle]
[cache integer | nocache];
d.删除序列
drop sequence序列名;
Oracle 数据表管理(一)
1.创建表
create table 表名
(字段名1 类型,
字段名2 类型…);
2.修改表命令
更改现有列
alter table 表名 modiey (column definition….);
向表中添加新列
alter table 表名 add (column definition….);
删除表中现有的列
alter table 表名 drop column 列名;
3.删除表中的记录而不删除表结构
truncate table 表名;
4.删除与表的所有内容
drop table 表名 cascade;
5.数据操作语言(DML)
SELECT
Select * | {[distinct] 字段名 | 表达式[列别名],…}
From 表明
[where 条件]
[order by 字段名];
distinct:限制只返回不同的列
CTAS
Create table 新表名 as select 字段名 from 旧表名;
//拷贝旧表的结构和记录,不拷贝约束
INSERT
Insert into 表名 [(字段名)] values (值);
IIS
Insert into 表名1(字段名1) select 字段名2 from 表名2;
//表结构已存在,从另一个表中复制记录
UPDATE
Update 表名
Set 字段名=新值
[where 条件];
DELETE
Delete 表名
[where 条件];
6.事务控制语言
COMMIT
Commit;//提交
SAVEPOINT
Savepoint 保存点;
ROLLBACK
Rollback or Rollback work;
7.数据控制语言
GRANT
grant 权限 on 表名 to 用户;
REVOKE
Revoke 权限 on 表名 from 用户;
8.集合操作符
UNION :合并查询结果,并删除重复的行
Select 字段名1 from 表名1
Union
Select 字段名2 from 表名2;
UNION ALL:合并查询结果,并包括重复的行
Select 字段名1 from 表名1
Union all
Select 字段名2 from 表名2;
INTERSECT:返回两个查询都有的行
Select 字段名1 from 表名1
Intersect
Select 字段名2 from 表名2;
MINUS:返回第一个查询有而第二个查询中没有的行
Select 字段名1 from 表名1
Minus
Select 字段名2 from 表名2;
Oracle 数据表管理(二)
9.锁和表分区
A.锁
行级锁
select …for update[of 字段] [wait n | nowait];
wait n :等待的秒数
表级锁
lock 表名 in 锁定模式 mode [nowait]
表级锁的模式:
行共享 (row share,rs)
行排他 (row exclusive,rx)
共享 (share,s)
共享行排他 (share row exclusive,srx)
排他 (exclusive,x)
B.表分区
范围分区
partition by range (column_name)
(
partition 分区名1 value less then(分区的边界值) [tablespace 表空间1],
partition 分区名2 value less then(分区的边界值) [tablespace 表空间2]
);
散列分区
partition by hash (column_name)
partitions 散列分区的数目 [store in (分区使用的表空间)];
or
partition by hash (column_name)
(
partition 分区名1 [tablespace 表空间1],
partition 分区名1 [tablespace 表空间1]
);
复合分区
partition by range (column_name1)
subpartition by hash (column_name2)
subpartitions 散列分区的数目 [store in (分区使用的表空间)];
(
partition 分区名1 value less then(分区的边界值),
partition 分区名2 value less then(分区的边界值),
partition 分区名N value less then(maxvalue)
);
列表分区
partition by list (column_name)
(
partition分区名1 values (分区键值的列表1),
partition分区名2 values (分区键值的列表2),
partition分区名N values (default)
);
default:允许存储前面的分区不能存储的记录
10.分区维护操作
添加分区
alter table 表名 add partition 分区名 values less then(分区的边界值);
删除分区
alter table 表名 drop partition 分区名;
截断分区
alter table 表名 truncate partition 分区名;
合并分区
alter table 表名 merge partitions 分区名1, 分区名2 into 分区名;
拆分分区
alter table 表名 split partition 分区名at (value) into (partition分区名1,partition 分区名2);
分区重命名
alter table 表名 rename partition 旧分区名 to 新分区名 ;
11. 视图
a. 创建视图
create [or replace] [force | noforce] view 视图名[列别名]
as select 字段名 from 表名
[with check option [constraint 约束名]]
[with read only];
with check option:指定只能插入或更新视图可以访问的行,
with read only:确保不能在此视图上执行任何修改操作。
b. 创建带有错误的视图
create [or replace] force view 视图名[列别名]
as select 字段名 from 表名
[with check option [constraint 约束名]]
[with read only];
with check option:指定只能插入或更新视图可以访问的行,
with read only:确保不能在此视图上执行任何修改操作。
C.删除视图
drop view 视图名;
12. 索引
A. 普通索引
create index 索引名 on 表名 (字段名) [tablespace 表空间];
B. 唯一索引
create uniqe index 索引名 on 表名 (字段名);
C. 组合索引
create index 索引名 on 表名(字段名1,字段名2);
D. 反向键索引
create index 索引名 on表名 (字段名) revser;
E. 位图索引
create bitmap index 索引名 on 表名 (字段名);
F. 索引组织表
create table table_name (字段名 类型 约束) organization index;
G. 索引中的分区
a.局部分区索引
create index 索引名 on表名 (字段名) local;
b.全局分区索引
create index 索引名 on表名 (字段名) global;
c.全局非分区索引
create index 索引名 on表名 (字段名) ;
继续补充一些常用的查询语句:
1、查找表的所有索引(包括索引名,类型,构成列):
select t.*,i.index_type from user_ind_columns t,user_indexes i where t.index_name = i.index_name and t.table_name = i.table_name and t.table_name = 要查询的表
2、查找表的主键(包括名称,构成列):
select cu.* from user_cons_columns cu, user_constraints au where cu.constraint_name = au.constraint_name and au.constraint_type = 'P' and au.table_name = 要查询的表3、查找表的唯一性约束(包括名称,构成列):
select column_name from user_cons_columns cu, user_constraints au where cu.constraint_name = au.constraint_name and au.constraint_type = 'U' and au.table_name = 要查询的表4、查找表的外键(包括名称,引用表的表名和对应的键名,下面是分成多步查询):
select * from user_constraints c where c.constraint_type = 'R' and c.table_name = 要查询的表查询外键约束的列名:
select * from user_cons_columns cl where cl.constraint_name = 外键名称查询引用表的键的列名:
select * from user_cons_columns cl where cl.constraint_name = 外键引用表的键名5、查询表的所有列及其属性
select t.*,c.COMMENTS from user_tab_columns t,user_col_comments c where t.table_name = c.table_name and t.column_name = c.column_name and t.table_name = 要查询的表