我的口号是:多分享,多进步,多快乐!!!

测试人员要掌握的sql四

上一篇 / 下一篇  2013-09-09 19:07:15 / 个人分类:数据库知识

三、DCL—数据控制语言

1、权限与角色

SQL SERVER中,权限可分为系统权限和对象权限。

系统权限由数据库管理员授予其他用户,是指数据库用户能够对数据库系统进行某种特定的操作的权力。创建一个基本表(CREATE TABLE

对象权限由创建基本表、视图等数据库对象的用户授予其他用户,是指数据库用户在指定的数据库对象上进行某种特定的操作的权力。如查询(SELECT)、插入(INSERT)、修改(UPDATE)和删除(DELETE)等操作。

角色是多种权限的集合,可以把角色授予用户或其他角色。当要为某一用户同时授予或收回多项权限时,则可以把这些权限定义为一个角色,对此角色进行操作。这样就避免了许多重复性的工作,简化了管理数据库用户权限的工作。

 

2、系统权限与角色的授予

SQL语言使用GRANT语句为用户授予系统权限,其语法格式为:

GRANT <系统权限>|<角色> [,<系统权限>|<角色>]…

TO <用户名>|<角色>|PUBLIC[,<用户名>|<角色>]…

[WITH ADMIN OPTION]

其语义为:将指定的系统权限授予指定的用户或角色。

其中:PULBIC代表数据库中的全部用户。WITH ADMIN OPTION为可选项,指定后则允许被授权的用户将指定的系统特权或角色再授予其他用户或角色。

1为用户张三授予CREATE TABLE的系统权限。

GRANT CREATE TABLE

TO张三

 

3、系统权限与角色的收回

数据库管理员可以使用REVOKE语句收回系统权限,其语法格式为:

REVOKE <系统权限>|<角色> [,<系统权限>|<角色>]…

FROM <用户名>|<角色>|PUBLIC[,<用户名>|<角色>]…

2收回用户张三所拥有的CREATE TABLE的系统权限。

REVOKE CREATE TABLE

FROM张三

 

4对象权限与角色的授予

SQL语言使用GRANT语句为用户授予对象权限,其语法格式为:

GRANT ALL|<对象权限>[(列名[,列名]…)][,<对象权限>]…ON <对象名>

TO <用户名>|<角色>|PUBLIC[,<用户名>|<角色>]…

[WITH GRANT OPTION]

其语义为:将指定的操作对象的对象权限授予指定的用户或角色。

其中:

ALL代表所有的对象权限。

列名用于指定要授权的数据库对象的一列或多列。如果不指定列名,被授权的用户将在数据库对象的所有列上均拥有指定的特权。

实际上,只有当授予INSERTUPDATE权限时才需指定列名。

ON子句用于指定要授予对象权限的数据库对象名,可以是基本表名、视图名等。

WITH ADMIN OPTION为可选项,指定后则允许被授权的用户将权限再授予其他用户或角色。

3将对Sc表和student表的所有对象权限授予USER1USER2

GRANT ALL

ON Sc,student

TO USER1,USER2

 

4将对Course表的查询权限授予所有用户。

GRANT SELECT

ON Course

TO PUBLIC

 

5:将查询student表和修改学生年龄的权限授予USER3,并允许将此权限授予其他用户。

GRANT SELECT,UPDATE(PROF)

ON studentT

TO USER3

WITH ADMIN OPTION

USER3具有此对象权限,并可使用GRANT命令给其他用户授权,如下例,USER3将此权限授予USER4:

GRANT SELECT,UPDATE(年龄)

ON student

TO USER4

 

5对象权限与角色的回收

所有授予出去的权力在必要时都可以由数据库管理员和授权者收回,收回对象权限仍然使用REVOKE语句,其语法格式为:

REVOKE <对象权限>|<角色> [,<对象权限>|<角色>]…

FROM <用户名>|<角色>|PUBLIC[,<用户名>|<角色>]…

6:收回用户USER1Course表的查询权限。

REVOKE SELECT

ON C

FROM USER1

 

 

 

 

 

 

 

 

 

 

 

 其次,大家来看一些不错的sql语句
1
、说明:复制表(只复制结构,源表名:a新表名:b) (Access可用)
法一:select * into b from a where 1 <>1
法二:select top 0 * into b from a

2
、说明:拷贝表(拷贝数据,源表名:a目标表名:b) (Access可用)
insert into b(a, b, c) select d,e,f from b;

3
、说明:跨数据库之间表的拷贝(具体数据使用绝对路径) (Access可用)
insert into b(a, b, c) select d,e,f from b in ‘
具体数据库’ where条件
例子:..from b in '"&Server.MapPath(".")&"\data.mdb" &"' where..

4
、说明:两张关联表,删除主表中已经在副表中没有的信息  

delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1 )

5
、说明:四表联查问题:
select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where .....

6
、说明:日程安排提前五分钟提醒  
select * from
日程安排where datediff('minute',f开始时间,getdate())>5

7
、说明:一条sql语句搞定数据库分页
select top 10 b.* from (select top 20
主键字段,排序字段from表名order by排序字段desc) a,表名b where b.主键字段= a.主键字段order by a.排序字段

8
、说明:前10条记录
select top 10 * FROM table1 where
范围

9
、说明:选择在每一组b值相同的数据中对应的a最大的记录的所有信息(类似这样的用法可以用于论坛每月排行榜,每月热销产品分析,按科目成绩排名,等等.)
select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b)

10
、说明:包括所有在TableA中但不在TableBTableC中的行并消除所有重复行而派生出一个结果表
(select a from tableA ) except (select a from tableB) except (select a from tableC)

11
、说明:随机取出10条数据
select top 10 * from tablename order by newid()

12
、说明:随机选择记录
select newid()

13
、说明:删除重复记录
Delete from tablename where id not in (select max(id) from tablename group by col1,col2,...)

14
、说明:列出数据库里所有的表名
select name from sysobjects where type='U'  

15
、说明:列出表里的所有的
select name from syscolumns where id=object_id('TableName')

16
、说明:列示typevenderpcs字段,以type字段排列,case可以方便地实现多重选择,类似select中的case
select type,sum(case vender when 'A' then pcs else 0 end),sum(case vender when 'C' then pcs else 0 end),sum(case vender when 'B' then pcs else 0 end) FROM tablename group by type
显示结果:
type vender pcs
电脑A 1
电脑A 1
光盘B 2
光盘A 2
手机B 3
手机C 3

17
、说明:初始化表table1
TRUNCATE TABLE table1

18
、说明:选择从1015的记录
select top 5 * from (select top 15 * from table order by id asc) table_
别名order by id desc
  
19
、查询时字符串连接(用+号)

select YHDM+'['+YHMC+']' YH from yonghu

 

注意,以上测试人员要掌握的sql1-4均为转载

 


TAG:

 

评分:0

我来说两句

Mrsjjl

Mrsjjl

Hello everyone,my name is jiangjiliang,welcome to personal space!!!

日历

« 2024-05-18  
   1234
567891011
12131415161718
19202122232425
262728293031 

我的存档

数据统计

  • 访问量: 59705
  • 日志数: 65
  • 建立时间: 2013-09-07
  • 更新时间: 2013-09-11

RSS订阅

Open Toolbar