创建表空间
创建临时表空间(TIPS:如果建立的是插接式数据库,表空间名、用户名、角色名必须C##打头)
1 | CREATE TEMPORARY TABLESPACE C##APPSTABLESPACE_TEMP |
创建用户表空间
1 | CREATE TABLESPACE C##APPSTABLESPACE |
删除表空间(包括物理数据文件)
1 | DROP TABLESPACE C##APPSTABLESPACE INCLUDING CONTENTS AND DATAFILES; |
创建用户
创建用户并指定表空间
1 | CREATE USER C##APPS IDENTIFIED BY "apps" |
修改用户密码
1 | ALTER USER C##APPS IDENTIFIED BY apps; |
用户授权(初始创建用户未授权会导致无法登陆)
1 | GRANT CREATE SESSION, CREATE ANY TABLE, CREATE ANY VIEW, CREATE ANY INDEX, CREATE ANY SEQUENCE, CREATE ANY PROCEDURE, |
取消用户授权
1 | REVOKE CREATE ANY TABLE FROM C##APPS; |
查看用户权限
1 | SELECT a.Grantee |
删除用户
1 | DROP USER C##APPS CASCADE; --cascade参数是级联删除该用户所有对象 |
创建角色
三种标准的角色:CONNECT、RESOURCE、DBA
查看角色权限
1 | SELECT * FROM Role_Sys_Privs WHERE Role = 'RESOURCE'; |
创建角色
1 | CREATE ROLE C##APPS_ROLE; |
授权角色
1 | GRANT CREATE ANY TABLE C##APPS_ROLE; |
角色授予用户
1 | GRANT C##APPS_ROLE TO C##APPS; |
取消角色授予用户
1 | REVOKE C##APPS_ROLE FROM C##APPS; |
删除角色
1 | DROP ROLE C##APPS_ROLE; |
DDL
TABLE
创建表
1 | CREATE TABLE Tablename(User_Id NUMBER NOT NULL |
表/列说明
1 | COMMENT ON TABLE tablename IS '表名'; |
复制表(只复制表结构,不复制表数据)
1 | CREATE TABLE new_tablename AS |
添加、更改、删除列,修改列名,添加虚拟列
1 | ALTER TABLE tablename ADD remarks NUMBER; |
删除表
1 | DROP TABLE tablename; |
更改表名
1 | RENAME tablename TO new_tablename; |
临时表
PRESERVE:会话断开后数据会自动删除
DELETE:COMMIT后会自动删除
1 | CREATE Global Temporary TABLE Temptable(Id NUMBER) ON COMMIT PRESERVE/DELETE ROWS; |
VIEW
创建视图
1 | CREATE OR REPLACE VIEW tablename_v AS |
删除视图
1 | DROP VIEW tablename_v; |
SEQUENCE
创建序列
1 | CREATE SEQUENCE tablename_s |
修改序列
1 | ALTER SEQUENCE tablename_s |
删除序列
1 | DROP SEQUENCE tablename_s; |
INDEX
创建索引
1 | --唯一性索引 |
TIPS:什么样的情况下不适合创建索引
- 被查询的表本身就很小,即是是全表扫描也非常快
- 基于这张表的查询,大多数情况下需要获取的数据量都超过了总量的4%
- 这张表需要频繁的被更新,建立索引的话会引起索引的频繁更新,从而反而降低数据库的整体效率
SYNONYM
创建同义词
1 | CREATE SYNONYM new_tablename FOR tablename; |
删除同义词
1 | DROP SYNONYM new_tablename; |
DML
SELECT
查询
1 | SELECT e.Empno 工号 |
INSERT
插入
1 | INSERT INTO Tablename (User_Id, User_Name) VALUES (Tablename_s.Nextval, 'Zts'); |
复制另一个表数据
1 | INSERT INTO New_Tablename SELECT * FROM Tablename; |
UPDATE
更新
1 | UPDATE Tablename SET User_Name = 'Zts' WHERE User_Id = 1; |
DELETE/TRUNCATE
删除
1 | DELETE Tablename WHERE User_Id = 1; |
DQL
DECODE
条件判断
1 | SELECT Decode(e.Deptno, 10, 'ACCOUNTING', 20, 'RESEARCH', 'SALES') FROM Emp e; |
CASE
条件判断
1 | SELECT (CASE e.Deptno |
WITH
WITH相当于把查询出来的数据存到临时表,后续查询直接从临时表里查询,能适当提高查询效率
1 | WITH Tb1 AS |
LIKE
模糊匹配
‘ _ ‘ 代表单个字符
‘ % ‘ 代表0个或多个字符
1 | SELECT e.* FROM Emp e WHERE e.Ename LIKE '_M%'; |
ESCAPE
使’ % ‘ 和 ‘ _ ‘不作为通配符使用
1 | SELECT * FROM Emp e WHERE e.Ename LIKE '%\%%' ESCAPE '\'; --使\后面的%不作为通配符 |
BETWEEN
区间条件查询
1 | SELECT * FROM Emp e WHERE e.Sal BETWEEN 1500 AND 3000; |
EXISTS
判断子查询是否存在,查询性能比IN高
1 | SELECT * |
GROUP BY
分组查询
1 | SELECT中所有独立字段必须出现在Group By子句中,否则会报错 |
HAVING
条件判断
WHERE中不能使用分组计算函数,但HAVING可以,所以常跟GROUP BY连用
1 | SELECT e.Deptno |