createtablespace tablespace_name
datafile '/home/app/oracle/oradata/orcl/waterboss.dbf'
size 100m
autoextend onnext10m;
1.2 删除表空间
--删除空的表空间,但是不包含物理文件droptablespace tablespace_name;--删除非空表空间,但是不包含物理文件droptablespace tablespace_name including contents;--删除空表空间,包含物理文件droptablespace tablespace_name including datafiles;--删除非空表空间,包含物理文件droptablespace tablespace_name including contents and datafiles;--如果其他表空间中的表有外键等约束关联到了本表空间中的表的字段,就要加上CASCADE CONSTRAINTSdroptablespace tablespace_name including contents and datafiles CASCADE CONSTRAINTS;
1.3 用户
-- 查看当前用户select username from all_users;-- 创建用户createuser user_name -- user_name 为创建的用户名。
identified by'password'-- identified by 用于设置用户的密码defaulttablespace table_name;-- default tablesapce 用于指定默认表空间名称-- 用户赋权grant dba to user_name;-- 给用户赋予dba权限
-- where精确查询select*from table_name
where condition;-- like模糊查询select*from table_name
wherecolumnlike pattern;-- in 查询SELECT column1, column2,...FROM table_name
WHEREcolumnIN(value1, value2,...);-- between 查询SELECT column1, column2,...FROM table_name
WHEREcolumnBETWEEN value1 AND value2;-- 分组去重--distinct去重SELECTDISTINCT column1, column2,...FROM table_name;--group by去重SELECT column_name, aggregate_function(column_name)FROM table_name
WHERE column_name operator valueGROUPBY column_name;--row_number去重select*from(select t1.*, rownumber()over(partitiion bycolumn)
as rn from table_name as t1)where rn >1;-- 伪列查询-- rowid语法-- 查询rowidselect rowid, t.*from table_name t;-- 指定rowid来查询记录select rowID,t.*from table_name t
where ROWID='AAAR+DAAHAAAAFfAAA';-- rownum语法-- 查询rownumselect rownum,t.*from table_name t;-- 返回查询的前五行select*from table_name
where rownum <=5;-- 查询虚拟表中虚拟列中的前五列select ROWNUM
from dual
connectby rownum <=10;-- 聚合查询-- 聚合函数-- 求和函数SELECTSUM(column_name)FROM table_name;-- 求平均值函数 SELECTAVG(column_name)FROM table_name
-- 求最大值函数SELECTMAX(column_name)FROM table_name;-- 求最小值函数SELECTMIN(column_name)FROM table_name;-- 统计记录个数函数SELECTCOUNT(column_name)FROM table_name;-- 分组聚合select column1,sum(column)from table_name
groupby column1;
3.2 多表查询
-- 内连接SELECT column_name(s)FROM table1
INNERJOIN/JOIN table2
ON table1.column_name=table2.column_name;-- 左连接SELECT column_name(s)FROM table1
LEFTJOIN/LEFTOUTERJOIN table2
ON table1.column_name=table2.column_name;-- 右连接SELECT column_name(s)FROM table1
RIGHTJOIN/RIGHTOUTERJOIN table2
ON table1.column_name=table2.column_name;-- 全连接SELECT column_name(s)FROM table1
FULLJOIN/FULLOUTERJOIN table2
ON table1.column_name=table2.column_name;-- 联合查询SELECT column1, column2,...FROM table1
UNIONSELECT column1, column2,...FROM table2;-- 子查询-- 单行子查询-- where子查询select*from table_name2
wherecolumnin(select*from table_name1 where condition1);-- select子查询select column1, column2,(select t2.columnfrom table_name2 t2 where condition)from table_name1 t1;-- 多行子查询(from)select column1,column2,...from table_name t3,(select column1,...from table_name1 t1
where condition1) t2
where condition2;-- cte表达式WITH Expression_Name [( ColumnName [1,...n])]AS( CTE query definition )
subquery;
3.3 分页查询
-- 简单分页select rownum, t.*from table_name t where rownum<=n;-- 查询前n条记录-- 基于排序的分页select*from(select rownum as rnum, t.*from table_name t
where rownum <= value2)where rnum >= value1;-- 查询value1到value2之间的记录
--行转列select(select...) column0,
sum/count(casewhen condition1 then value1 end) column1,
sum/count(casewhen condition2 then value2 end) column2,
sum/count(casewhen condition3 then value3 end) column3,......from table_name
where condition
groupbycolumn;--列转行SELECT'value1'as column1,column2 as column3 FROM table_name
unionSELECT'value2'as column1,column2 as column3 FROM table_name
unionSELECT'value3'as column1,column2 as column3 FROM table_name;-- 集合运算--并集运算-- 去重select*from table_name where condition
unionselect*from table_name where condition;-- 不去重select*from table_name where condition
unionallselect*from table_name where condition;--交集运算select*from table_name where condition
intersectselect*from table_name where condition;--差集运算select*from table_name where condition
minus
select*from table_name where condition;
四. DCL数据控制语言
4.1 权限
--系统权限--显示系统权限select*from system_privilege_map orderby name;--授予系统权限grant system_privilege_map to user_name [with admin option];--回收系统权限revoke system_privilege_map from user_name;--对象权限--显示对象权限selectdistinct privilege from dba_tab_privs;--授予对象权限grant privilege(alter/update/delete...)on object(table/index/view...)to user_name [withgrantoption];--回收对象权限revoke privilege(alter/update/delete...)on object(table/index/view...)to user_name [withgrantoption];--说明赠予回收系统权限和对象权限的区别
系统权限不会被级联收回,对象权限会被级联收回
4.2 角色管理
-- connect角色权限connect是使用oracle简单权限,这种权限只对其他用户的表有访问权限,包括select/insert/update和delete等。
拥有connect role 的用户还能够创建表、视图、序列(sequence)、簇(cluster)、同义词(synonym)、回话(session)和其他 数据的链(link)。
-- resource角色权限
更可靠和正式的数据库用户可以授予resource role。
resource提供给用户另外的权限以创建他们自己的表、序列、过程(procedure)、触发器(trigger)、索引(index)和簇(cluster)。
-- dba角色权限
dba role拥有所有的系统权限。
-- 自定义角色-- 创建角色--建立角色(数据库验证)create role role_name identified by...;--建立角色(不验证)create role role_name not identified;--给角色授权grant system_privilege_map to role_name;-- 授予系统权限grant privilege on object to role_name;-- 授予对象权限-- 分配角色给某个用户grant role_name to user_name [with admin option];-- 删除角色drop role role_name;-- 显示角色信息-- 显示所有角色select*from dba_roles;-- 显示用户具有的角色,及其默认角色(用户名大写)select granted_role from dba_role_privs where grantee='USER_NAME';
-- 创建索引createindex index_name on table_name(column);-- 创建唯一索引createuniqueindex index_name on table_name(column);-- 创建组合索引createindex inedx_name on table_name(column1,column2.....);-- 删除索引ALTERTABLE table_name DROPINDEX index_name;DROPINDEX index_name ON table_name;
6.4 序列
--创建序列--创建简单序列(默认)create sequence sequence_name;-- 提取下一个值select sequence_name.nextval from dual;-- 提取当前值select sequence_name.currval from dual;--创建带有参数的复杂序列CREATE SEQUENCE sequence_name //创建序列名称[INCREMENT BY n]//递增的序列值是 n 如果 n 是正数就递增,如果是负数就递减 默认是 1[STARTWITH n]//开始的值,递增默认是 minvalue 递减是 maxvalue[{MAXVALUE n | NOMAXVALUE}]//最大值[{MINVALUE n | NOMINVALUE}]//最小值[{CYCLE| NOCYCLE}]//循环/不循环[{CACHE n | NOCACHE}];//分配并存入到内存中--修改序列alter sequence sequence_name [maxvalue 5000-- 不能修改start with参数cycle...];--删除序列DROP SEQUENCE sequence_name;
6.5 同义词
--创建同义词--创建私有同义词create synonym synonym_name for table_name;--创建公有同义词createpublic synonym synonym_name for table_name;--删除同义词