文章目录
SQL语言类别
- 事物控制语言 TCL(Transaction Control Language)
- 数据操纵语言 DML(Data Manipulation Language)
- 数据定义语言 DDL(Data Definition Language)
- 数据控制语言 DCL(Data Control Language)
- 数据查询语言DQL(Data Query Language)
一、DDL
用来创建对象和管理表。如:
- create创建
- alter更改
- drop删除
- truncate截断
创建表
CREATE TABLE 表名(
字段名1 数据类型,--数据类型要给指定长度
字段名2 数据类型,
字段名3 数据类型,
字段名3 数据类型 [DEFAULT 默认值表达式]--默认值必须满足列的数据类型定义
)
追加列
ALTER TABLE 表名
ADD 列名 数据类型;
/*
ALTER TABLE TEST
ADD TCLASS VARCHAR2(50);
往TEST表加了TCLASS列,数据类型为字符型,长度限制为50
*/
修改列的数据类型,尺寸,默认值
ALTER TABLE 表名
MODIFY 字段名 要修改的数据类型 [DEFAULT 默认值表达式];
/*
ALTER TABLE TEST
MODIFY TCLASS NUMBER(10);
把TEST表的TCLASS字段的数据类型修改为数值型
*/
修改列名称
ALTER TABLE 表名 RENAME COLUMN 旧列名 TO 新列名;
/*
ALTER TABLE TEST RENAME COLUMN TCLASS TO TAGE;
修改TEST表中的列名称TCLASS为TAGE
*/
删除列
ALTER TABLE 表名
DROP COLUMN 列名;
/*
ALTER TABLE TEST
DROP COLUMN TCLASS;
删除TEST表的TCLASS列
*/
删除表
DROP TABLE 表名;
/*
DROP TABLE TEST;
删除表TEST
数据和结构和相关索引都被删除,并且不能回滚
*/
清空表
TRUNCATE TABLE 表名;
/*
TRUNCATE TABLE TEST;
清空TEST表,但保留表的结构
*/
创建用户
CREATE USER 用户名
IDENTIFIED BY 密码;
创建角色
CREATE ROLE 角色名
用户修改密码
ALTER USER 用户名
IDENTIFIED BY 密码;
/*
ALTER USER scott
IDENTIFIED BY lion;
把scott用户的密码修改为lion
*/
二、DCL
用来授予或回收访问数据库的某种特权,并控制数据库操纵事务发生的时间及效果。如:
- grant:授权;
- revoke:取消权限;
数据库管理员(DBA)具有高级权限,例如:
- 创建新用户
- 删除用户
- 删除表
- 备份表
应用程序开发者用户被数据库管理员创建后一般会赋予下列系统权限:
- CREATE SESSION(创建会话)
- CREATE TABLE(创建表)
- CREATE SEQUENCE(创建序列)
- CREATE VIEW(创建视图)
- CREATE PROCEDURE(创建过程)
为角色赋予权限
GRANT 系统权限1,系统权限2
TO 角色名
将角色赋予用户
GRANT 角色名
TO 用户名;
收回对象权限
REVOKE 权限
ON 表名
FROM 用户名
/*
使用WITH GRANT OPTION子句所分配的权限同样被收回
*/
数据字典视图
通过该视图可以查看相关信息
SELECT * FROM ROLE_SYS_PRIVS;
/*
查看角色拥有的系统权限
*/
三、DML
数据操纵语言DML主要有三种形式:
-
插入:INSERT
-
更新:UPDATE
-
删除:DELETE
四、DQL
五、TCL
用来对事务进行管理
- COMMIT : 保存已完成事务动作结果
- SAVEPOINT : 保存事务相关数据和状态用以可能的回滚操作
- ROLLBACK : 恢复事务相关数据至上一次COMMIT操作之后
六、常用的数据字典视图
视图名称 | 功能 |
---|---|
user_tables | 当前用户的表信息 |
dba_tables | 所有用户的表信息 |
user_sys_privs | 当前用户的系统权限 |
user_role_privs | 当前用户的角色 |
role_sys_privs | 角色权限信息 |
dba_sys_privs | 所有用户的系统权限 |
dba_role_privs | 所有用户的角色 |
user_users | 当前用户的信息 |
dba_users | 所有用户的信息 |
- dba开头的视图要dba用户才能访问
select * FROM SYS.USER_ERRORS WHERE NAME=UPPER('存储过程名称');--查看存储过程有什么错误