1.简单
一个客户可以下很多订单,但每个订单只属于一个客户。这是哪种联系?
- A一对多
- B一对一
- C多对多
- D零对零
2.简单
GROUP BY 在查询中起什么作用?
- A按公共列连接两个表
- B按字母顺序对结果行排序
- C删除含有 NULL 值的行
- D把具有相同值的行放入同一组,从而按组计算聚合
3.简单
哪条语句用于从表中删除行?
- ADELETE
- BDROP
- CTRUNCATE COLUMN
- DREMOVE
4.中等
某列包含值 10、20 和 NULL。AVG(col) 返回什么?
- A15
- B30
- CNULL
- D10
5.中等
哪个查询返回每个客户的订单数量?
- ASELECT customer_id, COUNT(*) FROM orders ORDER BY customer_id
- BSELECT DISTINCT COUNT(*) FROM orders
- CSELECT customer_id, COUNT(*) FROM orders GROUP BY customer_id
- DSELECT customer_id FROM orders WHERE COUNT(*) > 0
6.中等
哪个查询返回 customers 表中不同城市的数量?
- ASELECT COUNT(DISTINCT city) FROM customers
- BSELECT DISTINCT COUNT(city) FROM customers
- CSELECT SUM(DISTINCT city) FROM customers
- DSELECT COUNT(city) FROM customers GROUP BY city
7.困难
为什么许多 DBMS 使用严格两阶段锁,把排他锁一直持有到提交?
- A它允许事务安全地读取脏数据
- B它能防止级联中止,因为没有人能读到未提交的写入
- C它免去了事务日志
- D它使死锁不可能发生
8.困难
EXPLAIN(或 PostgreSQL 中的 EXPLAIN ANALYZE)对一个查询显示什么?
- A仅以关系代数表示法改写的查询
- B运行过该查询的用户列表
- C优化器选择的执行计划,例如扫描方式和连接方法
- D查询中每个 SQL 关键字的含义
答案
- 1. A · 一对多
- 2. D · 把具有相同值的行放入同一组,从而按组计算聚合
- 3. A · DELETE
- 4. A · 15
- 5. C · SELECT customer_id, COUNT(*) FROM orders GROUP BY customer_id
- 6. A · SELECT COUNT(DISTINCT city) FROM customers
- 7. B · 它能防止级联中止,因为没有人能读到未提交的写入
- 8. C · 优化器选择的执行计划,例如扫描方式和连接方法
完整分步解答:请在 examproblems.com 上练习本主题。