软件开发----SQL基础每日刷题(转载于牛客)

1.        关于返回受上一个SQL语句影响的行数,下列SQL语句正确的是()

A        SELECT @@ERROR

       SELECT @@IDENTITY

C        SELECT @@ROWCOUNT

       SELECT @@MAX_CONNECTIONS

正确答案:C

解析:

@@ERROR:返回执行的上一个 Transact-SQLTransact-SQL 语句的错误号。

@@IDENTITY:返回自增id。

@@ROWCOUNT:返回受上一个SQL语句影响的行数。

@@MAX_CONNECTIONS:返回最大用户连接数。


2.        假设有选课表course_relation(student_id, course_id),其中student_id表示学号,course_id表示课程编号,如果小易现在想获取每个学生所选课程的个数信息,请问如下的sql语句正确的是( )

A        select student_id, sum(course_id) from course_relation;

B        select student_id, sum(course_id) from lcourse_relation group by student_id;

       select student_id, count(course_id) from course_relation;

       select student_id, count(course_id) from course_relation group by student_id;

正确答案:D

解析:

查看每个学生的选课数量,因此需要对学生分组group by student_id,然后统计个数count


3.        在下列sql语句错误的是?

A        name IS NULL

B        name == NULL

C        name IS NOT NULL

D        NOT(name IS NULL)

正确答案:B

解析:

在sql中若要取得NULL,则必须通过IS NULL或者IS NOT NULL进行获取,无法直接使用等号


4.        Mysql中表student_info(id,name,birth,sex),字段类型都是varchar,插入:1016 , 王五 , 2003-03-01 , 男;

SQL错误的是()?

A        insert into student_info(name,id,sex,birth) values('王五', '1016' , '男', '2003-03-01' );

B        insert into student_info(`id`,`name`,`birth`,`sex`) values('1016' , '王五' , '2003-03-01' , '男');

       insert into student_info('id','name','birth','sex') values('1016' , '王五' , '2003-03-01' , '男');

D        insert into student_info(`id`,name,`birth`,`sex`) values('1016' , '王五' , '2003-03-01' , '男');

正确答案:C

解析:

ABD可以指定插入哪些字段,字段名顺序与字段值顺序一致即可,可以给部分或所有字段名加``,不能加'',加''时会执行报错。所以C错误。


5.        关于维护参照完整性约束的策略,下列选项描述不正确的是()

A        对于任何违反了参照完整性约束的数据更新,系统一概拒绝执行

B        当删除被参照表的一个元组造成了与参照表的不一致,则删除参照表中的所有造成不一致的元组

C        当修改被参照表的一个元组造成了与参照表的不一致,则修改被参照表中的所有造成不一致的元组

       当删除或修改被参照表的一个元组造成了不一致,则将参照表中的所有造成和不一致的元组的对应属性设置为空值

正确答案:C

解析:

参照完整性共分四种模式:不执行操作、级联、置空、设置默认值。

B选项对应级联操作,即主键列(被参照表)删除同时外键列(参照列)对应列也被删除;

C选项也对应级联操作,但应为修改外键列(参照表)中的数据;

D选项对应置空,即主键列数据删除或者修改时外键列对应数据被置为空值;

设置默认值模式为主键列的修改和删除使对应外键列数据被置为设定的默认值


6.        需查看stu表中索引的索引信息时,应使用的存储过程是()

       sp_helpindex

       sp_help

       sp_helpdb

D        sp_helptext

正确答案:A

解析:

sp_helpindex:查看表中的索引信息,

sp_help:查看有关数据库对象的摘要信息,

sp_helpdb:查看指定数据库或全部数据库信息,

sp_helptext:查看存储过程、视图、触发器等文本信息


7.        将成绩表(grade)按成绩(point)升序排列,下列语句错误的是()

A        SELECT * FROM grade ORDER BY point;

B        SELECT point FROM grade ORDER BY point;

C        SELECT * FROM grade ORDER BY point ASC;

D        SELECT * FROM grade ORDER BY point DESC;

正确答案:D

解析:

在什么都不指定的情况下,记录会按升序排列,因此选项A、B正确(题目并未明确指定全表排列,因此选项B也对),也可以加上ASC明确指定升序排列,选项C正确;DESC是指定降序排列,与题目要求不符,错误。


8.Mysql中表student_table(id,name,birth,sex),score_table(stu_id,subject_name,score),查询每个学生的分数最高的学科以及对应分数、学生明细记录,如下SQL正确的是()?

A

select t3.*,t2.subject_name,t2.score
from (
select stu_id,max(score) as c1 
from score_table group by stu_id order by c1 desc limit 1
) t1
inner join
(
select * from score_table
)t2 on t1.stu_id = t2.stu_id and t1.c1 = t2.score
inner join student_table t3
on t1.stu_id = t3.id;

B

select t3.*,t2.subject_name,t2.score
from (
select stu_id,max(score) as c1 
from score_table group by stu_id
) t1
inner join
(
select * from score_table
)t2 on t1.stu_id = t2.stu_id
inner join student_table t3
on t1.stu_id = t3.id;

C

select t3.*,t2.subject_name,t2.score
from (
select stu_id,max(score) as c1 
from score_table group by stu_id
) t1
inner join
(
select * from score_table
)t2 on t1.c1 = t2.score
inner join student_table t3
on t1.stu_id = t3.id;

D

select t3.*,t2.subject_name,t2.score
from (
select stu_id,max(score) as c1
 from score_table group by stu_id
) t1
inner join
(
select * from score_table
)t2 on t1.stu_id = t2.stu_id and t1.c1 = t2.score
inner join student_table t3
on t1.stu_id = t3.id;

正确答案:D

解析:

A、max(score) as c1后又对c1进行了order by然后limit取一个,相当于取的是所有学生中所有学科的最高分(只有一个结果),题目要求是每个学生的所有学科最高分

B、t1查询完后跟t2进行连接时只给出了一个学生id相等t1.stu_id = t2.stu_id条件,缺少分数相等的条件(t1.c1 = t2.score)

C、与B选项相反,t1跟t2连接时只给出了分数相等的条件t1.c1 = t2.score
D、符合正确答案,查询成绩表中每人的最高成绩;返回成绩表中(学生id相同,成绩score相同)的这个人的行;和学生表联合,返回 id相同的行


9.        下列关于数据库系统三级模式结构的表述正确的是()

A        内模式是面向数据库用户或应用程序的局部数据视图

B        索引的组织方式是B+树索引,还是Hash索引与数据库的内模式有关

C        逻辑模式是数据库在逻辑级上的视图,涉及数据的物理存储细节

D        外模式/模式映像保证了数据库具有较高的物理独立性

正确答案:B

解析:

参考文献路径:

    https://www.cnblogs.com/ndxsdhy/archive/2010/12/21/1912571.html

数据库设计步骤主要分为以下几方面:

1)需求分析,需求分析的任务就是通过调查、访谈、讨论,分析用户的业务流程,从而得出用户的需求,并用数据流程图、数据字典将用户需求描述出来

2)数据库设计,这种设计和具体的数据库管理系统没有之间关联,而是抽象出各用户所需要的数据视图,对应外模式概念

3)将用ER模型或对象模型表示的数据视图,转换为关系模式,并对所得关系模式进行优化处理,这就是所谓的数据库逻辑设计(这一步仍然对应于外模式和模式)

4)第四步,在逻辑设计的基础上,将所得的数据模式组织存储到物理介质上,这就是数据库的物理设计(这一步对应于内模式)


10.        下面有关sql 语句中 delete、truncate的说法正确的是?()

A        论清理表数据的速度,truncate一般比delete更快

B        truncate命令可以用来删除部分数据。

C        truncate只删除表的数据不删除表的结构

       delete能够回收高水位(自增ID值)

正确答案:AC

解析:

1:处理效率:drop>trustcate>delete

2:删除范围:drop删除整个表(结构和数据一起删除);trustcate删除全部记录,但不删除表结构;delete只删除数据

3:高水位线:delete不影响自增ID值,高水线保持原位置不动;trustcate会将高水线复位,自增ID变为1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值