CREATE
创建、ALTER
修改、TRUNCATE
截断 、DROP
删除。NOT NULL
、唯一约束 UNIQUE
、主键约束 PRIMARY KEY
、检查约束 CHECK
、外键约束 FOREIGN KEY
。GRANT
授予、REVOKE
回收。COMMIT
提交、ROLLBACK
回滚,SAVEPOINT
保存点。alter user <账户名> account unlock;
‘abc‘
||
ROWID
:数据库中每一行都有一个行地址,rowid伪列返回该行地址。rowId值可以唯一标识数据库中的一行。ROWNUM
:返回一个数值代表行的次序。通过使用rownum,用户可以限制查询返回的行数。数据定义语言DDL,主要用于创建/修改/删除数据库的各种对象,如表、视图、索引、同义词、序列等。DDL语句主要包括 CREATE
创建、ALTER
修改、DROP
删除。
CREATE TABLE <表名>(
<列名> <数据类型> [<DEFAULT 默认值>] [<约束>],
<列名> <数据类型> [<DEFAULT 默认值>] [<约束>],
...
[CONSTRAINT <约束名> <约束类型>(约束列)]
)
修改表中列
1.增加列:
ALTER TABLE <表名> ADD (
<列名> <数据类型> [<DEFAULT 默认值>] [<列级约束>],
<列名> <数据类型> [<DEFAULT 默认值>] [<列级约束>],
...
)
2.修改列:
ALTER TABLE <表名> MODIFY (
<列名> <数据类型> [<DEFAULT 默认值>] [<列级约束>],
<列名> <数据类型> [<DEFAULT 默认值>] [<列级约束>],
...
)
3.删除列:
ALTER TABLE <表名> DROP COLUMN <列名>
4.重命名列:
ALTER TABLE <表名> RENAME <旧名> TO <新名>
修改表中属性:
1.添加约束:
ALTER TABLE <表名> ADD CONSTRAINT <约束名> <约束类型>(约束列);
2.删除约束:
ALTER TABLE <表名> DROP CONSTRAINT <约束名>;
TRUNCATE TABLE <表名>
1.删除表:
DROP TABLE <表名>
2.截断表:
1.复制表的结构与数据:
CREATE TABLE <表名> AS
SELECT <目标列表达式>
FROM <表>
WHERE <查询条件>
2.仅复制表的结构:WHERE 1 = 2
CREATE TABLE <表名> AS
SELECT <目标列表达式>
FROM <表>
WHERE 1 = 2;
RENAME <旧名称> TO <新名称>
视图 (VIEW):虚拟表,不占物理空间。
CREATE [OR REPLACE] [FORCE] VIEW <视图名>
[(列名1, 列2,...)]
AS
SELECT...
[WITH CHECK OPTION]
[WITH READ ONLY];
FORCE:强制创建视图
WITH CHECK OPTION:检查约束视图
WITH READ ONLY:只读视图
DROP VIEW <视图名>
索引:加快查询速度
CREATE [UNIQUE] INDEX <索引名>
ON <表名> (<列名> [ASC | DESC], ... )
[INITRANS n]
[MAXTRANS n]
[PCTFREE n]
[TABLESPACE <表空间名>]
[STORAGE storage]
[NOSORT]
UNIQUE:唯一索引
INITRANS:初始事务入口数
MAXTRANS:最大事务入口数
PCTFREE:索引数据块空闲空间的百分比
NOSORT:不排序
重建索引
ALTER INDEX <索引名> REBUILD;
合并索引
ALTER INDEX <索引名> COALESCE;
DROP INDEX <索引名>
同义词:数据库对象的一个别名,操作权限不变,简化对象访问。
CREATE [PUBLIC] SYNONYM <表名同义词>
FOR <用户>.<表名>
DROP [PUBLIC] SYNONYM <同义词>
序列 (SEQUENCE): 序列号生成器,为表中的行自动生成序列号,产生一组等间隔的数值(类型为数字)。不占用磁盘空间,占用内存。
其主要用途是生成表的主键值,可以在插入语句中引用,也可以通过查询检查当前值,或使序列增至下一个值。
CREATE SEQUENCE <序列名>
[INCREMENT BY n]
[START WITH n]
[MAXVALUE n | NOMAXVALUE]
[MINVALUE n | NOMINVALUE]
[CYCLE | NOCYCLE]
[CACHE n | NOCACHE];
INCREMENT BY:定义步长
START WITH:定义序列初始值
MAXVALUE / MINVALUE:定义序列最大值/最小值
NOMAXVALUE:默认最值
CYCLE / NOCYCLE:表示序列达到限定值后是否循环
CACHE n:对序列进行内存缓冲,提前生成n个序号存入缓存,默认n=20
NOCACHE:不对序列进行内存缓冲
ALTER SEQUENCE [<用户>.]<序列名>
[INCREMENT BY n]
[START WITH n]
[MAXVALUE n | NOMAXVALUE]
[MINVALUE n | NOMINVALUE]
[CYCLE | NOCYCLE]
[CACHE n | NOCACHE];
DROP SEQUENCE <序列名>
约束CONSTRAINT,用于限制表的数据的类型。
CONSTRAINT <约束名> <约束类型>(约束列)
非空约束:NOT NULL
<列名> <数据类型> NOT NULL
唯一约束:UNIQUE
<列名> <数据类型> UNIQUE
CONSTRAINT uk_cloumn UNIQUE(<列名>);
主键约束:PRIMARY KEY,非空+唯一
CONSTRAINT pk_cloumn PRIMARY KEY(<列名>);
联合主键:
CONSTRAINT pk_cloumn PRIMARY KEY(<列名1>,<列名2>,...);
CONSTRAINT ck_cloumn CHECK(<列名> IN (值1,值2...))
CONSTRAINT ck_cloumn CHECK(<列名> BETWEEN 值1 AND 值2)
CONSTRAINT fk_cloumn FOREIGN KEY (<列名1>,<列名2>...) REFERENCES <表名>(<列名1>,<列名2>...) ON DELETE <CASCADE|SET NULL>
数据控制语言DCL,用于授予/回收用户/角色访问数据库的权限,DCL语句即 GRANT
授予、REVOKE
回收。
GRANT <权限>
ON <对象类型> <对象名>
TO <用户>
[WITH GRANT OPTION]
WITH GRANT OPTION:可传播权限,即将该权限再授予其他用户。
REVOKE <权限>
ON <对象类型> <对象名>
FROM <用户> [CASCADE|RESTRICT]
CASCADE:级联
RESTRICT:限定
角色(ROLE):一组数据库操作权限的集合。
1.创建角色:
CREATE ROLE <角色名>
2.为角色授权:
GRANT <权限>
ON <对象类型> <对象名>
TO <角色>
3.将角色授权给其他角色或用户:
GRANT <角色1>
ON <对象类型> <对象名>
TO <角色2>,<用户>
事务:用于保证数据完整性。由一组DML语句组成,这组DML语句要么全部成功,要么全部失败。
事务并发不一致性导致的问题:
--于是引入事务锁,以保证数据的完整性。
四种隔离级别:
事务控制语言TCL,用于事务的提交/回滚。TCL语句即 COMMIT
提交、ROLLBACK
回滚,SAVEPOINT
保存点。
事务提交 COMMIT
:将事务中对数据库的修改进行永久保存。
回滚 ROLLBACK
:取消事务中对数据库进行的修改。
savepoint <savepoint_name>
rollback to savepoint <savepoint_name>
实际设计原则:根据业务尽可能的减少多表查询,不必完全遵循设计范式。
第一范式:确保表中每个字段都不可拆分。
第二范式:消除了部分函数依赖;确保表中每列都与主键相关(主要针对联合主键)。
第三范式:消除了传递函数依赖;确保每列与主键直接相关,而不是间接相关。
原文:https://www.cnblogs.com/liziczh/p/9353049.html