入门精通3-表修改与权限

数据操作(增删改)和数据库权限学习笔记

DML

插入

insert语句用于向数据表插入数据的功能。
单条插入

1
2
INSERT INTO [USER.]tableName[@db_link] [(column1 [,column2][,column3]...)]
VALUES (express1 [,express2] [,express3]...)

tableName:插入的表名
db_link:数据库链接名
批量插入

1
INSTER INTO [USER.]TABLENAME[@DB_LINK] [(COLUMN1) [,COLUMN2] [,COLUMN3]...] SUBQUERY

SUBQUERYSELECT语句,查询出的值与前面的column的数据类型相匹配,即返回的值要满足表中列的约束。

更新

1
2
3
4
5
6
UPDATE table_name
SET {
column1=express1 [,column2=express2] [,column3=express3]...
(column1 [,column2] [,column2]...)=(subquery)
}
[WHERE condition]

subquery:子查询,在UPDATE语句中使用查询时,要保证返回的为单一值。否则会报错

删除

DELETE删除

1
2
DELETE FROM table_name
[WHERE condition]

TRUNCATE删除

1
TRUNCATE TABLE table_name [REUSE STORAGE || DROP STORAGE]

使用这个语句删除是没有交易限制的,而且不会产生回滚信息。
REUSE STORAGE:删除记录后仍然保存记录占用的空间
DROP STORAGE:删除记录后回收记录占用的空间

数据控制

授权

SQLGRANT语句向用户授权

1
2
3
4
CRANT <权限1> [,<权限2>] [,<权限3>]...
[ON <对象类型> <对象名>]
TO <用户1> [,<用户2>] [,<用户3>]...
[WITH GRANT OPTION]

其中对象关系、对象、权限的关系如下

对象 对象类型 操作权限
属性列 TABLE COLUMN SELECTINSERTUPDATEDELETEALL PRIVILEGES
视图 TABLE VIEW SELECTINSERTUPDATEDELETEALL PRIVILEGES
基表 TABLE SELECTINSERTUPDATEDELETEALTERINDEXALL PRIVILEGES
数据库 DATABASE CREATETAB

在授予用户属性列的权限时,需要指明授予权限相应的列名权限(列名)
[WITH GRANT OPTION]:表示被授权的用户可以将该权限授予其他用户

撤销

授予的权限可以由DBA或者授权者通过REVOKE语句收回

1
2
3
REVOKE <权限1> [,<权限2>] [,<权限3>]...
[ON <对象类型> <对象名>]
FROM <用户1> [,<用户2>] [,<用户3>]...

用户的某权限被回收,则它所授予其它用户的这个权限也会被收回。