准备数据库相关的岗位面试,关系型数据库是绕不开的重点。很多办公软件岗位虽然主打Excel、Word,但涉及数据管理时,比如用Access做客户信息表,或者用SQL查询公司业务数据,都会考到相关知识。
什么是关系型数据库?
简单说,就是用表格来存数据的数据库。比如员工信息表,每一行是一个员工,每一列是姓名、工号、部门这些字段。常见的像MySQL、Oracle、SQL Server都属于这类。面试常问它和非关系型数据库的区别,你可以答:关系型重结构、支持事务,适合精确查询;非关系型比如MongoDB更灵活,适合快速写入大量数据。
主键和外键的作用是什么?
主键是表里每条记录的唯一标识,比如身份证号不能重复。外键是用来关联另一张表的字段。比如订单表有个“客户ID”,它对应客户表里的主键,这样就能查出每个订单是谁下的。面试官可能让你画个简单的ER图说明关系,提前练练手很有必要。
SQL查询语句怎么写?
写SQL几乎是必考项。比如问你:查出销售部所有工资高于5000的员工姓名。对应的语句可能是:
SELECT name FROM employees WHERE department = '销售部' AND salary > 5000;
注意关键字大小写不敏感,但习惯上大写。另外LIKE、GROUP BY、HAVING也常出现在题目中,比如统计每个部门的人数:
SELECT department, COUNT(*) AS count FROM employees GROUP BY department;
什么是事务?ACID指什么?
事务就是一组操作要么全成功,要么全失败。比如银行转账,A转给B 100元,扣钱和收款必须一起完成。ACID是事务的四个特性:原子性(Atomicity)指操作不可分割;一致性(Consistency)指数据状态合法;隔离性(Isolation)指并发操作互不干扰;持久性(Durability)指一旦提交结果就永久保存。
索引有什么用?什么时候不该用?
索引像书的目录,能加快查询速度。比如你在员工表按姓名查人,加了索引就快得多。但索引也有代价:占用空间,且插入、更新数据时会变慢,因为索引也要同步更新。所以频繁修改的字段不适合建索引,小表也不一定需要。
内连接和左连接区别在哪?
假设你有两个表:订单表和客户表。内连接(INNER JOIN)只返回两个表都匹配的记录;左连接(LEFT JOIN)会返回左边表的所有记录,哪怕右边没有匹配的。比如想列出所有客户,不管有没有下过单,就得用左连接。
SELECT c.name, o.order_date FROM customers c LEFT JOIN orders o ON c.id = o.customer_id;
这类题容易出在笔试里,建议自己在MySQL或Access里动手试一遍,印象更深。