牛客网数据开发题库_牛客网题库|SQL

这里主要记录刷到的容易错的数据库习题,所以代码都在mysql环境中实现。

1、

【答案解析】SQL语言主要分为四类:

-----数据定义语言DDL----create table、alter table、drop table

create index、drop index

create view、drop view

create trigger、drop trigger

----数据查询语言 DQL----select...from...where...

----数据操纵语言DML----select...from...

insert

delete

update

----数据控制语言DQL----grant (赋予用户权限)

revoke (收回权限)

deny (禁止权限)

2、

【答案解析】向表中插入数据有以下方法:

#向表中插入新数据

INSERT INTO 表名 VALUES (值1, 值2,....)

INSERT INTO 表明 (字段1, 字段2,...) VALUES (值1, 值2,....)

#选取表1的数据插入表2中

SELECT 字段1, 字段2,...

INTO 表2

FROM 表1

【答案解析】修改字段默认值的语句:

alter table 表名 alter column 字段名 set default 默认值;

3、

【答案解析】不同删除操作的比较:

1、处理效率:drop>truntcate>delete;

2、drop是完全删除表,包括表结构;delete是删除表数据,保留表结构,而且可以加where,可删除指定行;truncate是删除表数据,保留表结构,不能加where,只能删除全部数据;

3、delete不影响所用extent,高水线保持原位置不动;truntcate会将高水线复位。

4、

【答案解析】这题在最旧版本的mysql中,B和D都可以运行出正确结果,但在最新版本中,B和D会出现语法错误。这是因为在最新版本中,select后只能跟分组字段和聚合函数。若想要实现,需要将sql_mode中的only_full_group_by除去。

对于组内比较查询,可以用到关联子查询和等值连接完成。

#关联子查询

select * from

(select app_id,version_code,sum(download_count) as download_sum from app group by app_id,version_code) as a

where download_sum>=(select max(download_sum) from

(select app_id,version_code,sum(download_count) as download_sum from app group by app_id,version_code) as b

where a.app_id=b.app_id and a.version_code=b.version_code group by app_id,version_code)

#等值连接

select a.app_id,a.version_code,max(download_sum) from

app as a

inner join

(select app_id,version_code, sum(download_count) as download_sum

from app group by app_id,version_code) as b

on a.app_id=b.app_id and a.version_code=b.version_code group by app_id,version_code

5、

【答案解析】部门和性别数据类型为字符串,而基本工资为数值,因此需要将基本工资的数据类型转为字符串形式。

6、

【答案解析】关系R中,属性或属性组X能唯一地标识一条记录,则X称为关系R的候选码,候选码中的属性称为主属性,不包含在任何候选码中的属性称为非属性。

7、

【答案解析】

首先了解什么是投影查询:

使用 SELECT * FROM WHERE 可以选出表中的若干条记录。

我们注意到返回的二维表结构和原表是相同的,即结果集的所有列与原表的所有列都一一对应。

如果我们只希望返回某些列的数据,而不是所有列的数据,我们可以用 SELECT 列1, 列2, 列3 FROM ...,让结果集仅包含指定列。

这种操作称为投影查询。

在优化查询中,一般是这样操作的:

先选择运算,1.比较运算:>,>=,(或!=);

2.范围查询:BETWEEN...AND;

3.集合查询:IN;

4.空值查询:IS NULL;

5.字符串匹配查询:LIKE;

6.逻辑查询:AND,OR,NOT。

然后再进行投影查询。

8、

【答案解析】sql一种是独立的交互使用数据查询、数据更新等操作,称为自含语言。另一种是嵌入到某种高级语言中,作为高级语言的一种扩充,是程序员编程时既可使用数据库语言又可使用常规的程序设计语言,这时高级语言叫宿主语言。

9、

【答案解析额】基本的封锁类型有两种:排它锁和共享锁。

排它锁也称为独占或写锁(eXclusive lock)。一旦事务T对数据对象A加上排它锁,则只允许T读取和修改A,其它任何事务既不能读取或修改A,也不能再对A加任何类型的锁,直到T释放A上的锁为止。

共享锁又称读锁(share locks)。如果事务T对数据对象A加上共享锁,其它事务只能再对A加S锁,不能加X锁,直到事务T释放A上的S锁为止。

10、

【答案解析】

A、B错误。对于表数据量少,插入,更新操作多的表,添加索引可能会使查询速度变慢。

11、

【答案解析】主键和外键建立索引是因为相对的这两个值比较能确定一些数据,所以比较适合建立索引;where条件中的字段适合建立索引是因为要在查询过程中减少数据检索,需要使用索引;

12、

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值