这里主要记录刷到的容易错的数据库习题,所以代码都在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、