数据库习题

1

已知数据库学生成绩及学生表,现授予用户USER1在学生表上的SELECT权限,下列SQL语句正确的是()

A.USE 学生成绩 GO GRANT SELECT ON 学生表 TO USER1

B.USE 学生成绩 GO GRANT SELECT ON 学生表 FROM USER1

C.USE 学生成绩 GO REVOKE SELECT ON 学生表 FROM USER1

D.USE 学生成绩 GO REVOKE SELECT ON 学生表 TO USER1

正确答案: A 

选项B和D语法错误:

选项A: USE 学生成绩 GO GRANT SELECT ON 学生表 TO USER1

授权语法结构: USE 数据库名 GO GRANT 权限 ON 表名 TO 用户名

选项C:USE 学生成绩 GO REVOKE SELECT ON 学生表 TO USER1

收回权限语法结构: USE 数据库名 GO REVOKE 权限 ON 表名 FROM 用户名

所以正确答案:A

注意:授权给某个用户用 TO; 从某个用户中收回权限用 FROM

2

已知数据表STU,现需创建视图view_s,显示所有男同学的信息。下列SQL语句正确的是()

A.CREATE VIEW AS SELECT * FROM STU

B.CREATE VIEW view_s AS SELECT * FROM STU WHERE 性别='男'

C.CREATE view_s SELECT * FROM STU WHERE 性别='男'

D.CREATE view_s AS SELECT * FROM STU

正确答案: B   

创建视图 语句如下 create view 视图名 as select * from 表名 where 条件

3

Mysql中表student_info(id,name,birth,sex),字段类型都是varchar,插入如下记录:('1014' , '张三' , '2002-01-06' , '男');

SQL错误的是()?

A.insert into student_info values('1014' , '张三' , '2002-01-06' , '男');
B.insert into table student_info values('1014' , '张三' , '2002-01-06' , '男');
C.insert into student_info(id,name,birth,sex) values('1014' , '张三' , '2002-01-06' , '男');
D.insert into student_info(id,name,sex,birth) values('1014' , '张三' , '男','2002-01-06' );

正确答案: B   

A插入全部字段时可以省略字段名;

B插入时,如果`table`不是表名,不能带table关键字,会报错;如果table就是表名,需要用`table`才行。

CD可以指定插入哪些字段,同时字段顺序与字段值顺序一致即可。

所以B错误

普通插入(全字段):INSERT INTO table_name VALUES (value1, value2, ...)

普通插入(限定字段):INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...)

多条一次性插入:INSERT INTO table_name (column1, column2, ...) VALUES (value1_1, value1_2, ...), (value2_1, value2_2, ...), ...

从另一个表导入:INSERT INTO table_name SELECT * FROM table_name2 [WHERE key=value]

4

Mysql中表student_table(id,name,birth,sex),id字段值可能重复,分别查询男生、女生的不重复id总数,如下SQL正确的是()?

A.
select
sum(distinct case when sex='男' then 1 else null end) as man_ids,
sum(distinct case when sex='女' then 1 else null end) as women_ids
from student_table;
B.
select
count(distinct case when sex='男' then id else null end) as man_ids,
count(distinct case when sex='女' then id else null end) as women_ids
from student_table;
C.
select
count(distinct case when sex='男' then 1 else null end) as man_ids,
count(distinct case when sex='女' then 1 else null end) as women_ids
from student_table;
D.
select
count(case when sex='男' then distinct id else null end) as man_ids,
count(case when sex='女' then distinct id else null end) as women_ids
from student_table;

正确答案: B  

AC的man_ids、women_ids结果都是1,1。遇到第一条记录时,结果是1,累加后是1,之后结果都是1,distinct后结果则是null,所以count或sum后的结果都是1,1。

D执行时报错,distinct需要写在case前面。

正确选B。

5

假设网上有一份绝密文件存于某台机器的secretData数据库中的某个表里面,现在出于数据安全的考虑,对于新创建的用户都只能拥有该机器的登录权限,而不能拥有数据库的其他权限,那么新创建nkw用户满足这一要求的语句是()

A.grant usage on *.* with 'nkw'@'%';

B.grant usage on secretData.* to 'nkw'@'%';
C.grant usage on secretData.* with 'nkw'@'%';
D.grant usage on *.* to 'nkw'@'%';

正确答案: D   

给数据库赋予登录权限的语句是grant usage on ... to。因此答案A、C都不正确。题目中只说secretData数据库中的某个表有绝密文件,但是对新创建的用户可拥有登录权限,而没有其他权限。并没有说只对secretData数据库,因此题目引入该数据库只是一个干扰信息,所以答案B错误,因此答案选择D

你可能感兴趣的:(数据库系统原理,sql,数据库,mysql)