SQL面试中,了解并掌握一些核心知识点是至关重要的。以下是SQL面试中不得不知道的20个知识点:
-
数据库与DBMS:
- 数据库:有组织的数据集合,可以从远程或本地计算机系统以数字方式进行存储和检索。
- DBMS(数据库管理系统):负责创建、检索、更新和管理数据库的系统软件。
-
RDBMS:
- 代表关系数据库管理系统,以表集合的形式存储数据,并可在表的公共字段之间定义关系。
- 现代RDBMS示例:MySQL、Microsoft SQL Server、Oracle、IBM DB2、Amazon Redshift。
-
SQL:
- 代表结构化查询语言,是RDBMS的标准语言。
- 用于检索和操作结构化数据库。
-
表结构:
- 表:以行和列的形式存储的数据的有组织的集合。
- 列:垂直分类,称为字段。
- 行:水平分类,称为记录。
-
约束:
- 用于指定表中数据的规则。
- 常见的约束:NOT NULL、UNIQUE、PRIMARY KEY、FOREIGN KEY等。
-
CREATE TABLE语句:
- 用于创建新表。
- 可指定字段、数据类型、约束等。
-
ALTER TABLE语句:
- 用于修改现有表的结构。
- 可添加、删除或修改字段和约束。
-
DROP、TRUNCATE和DELETE的区别:
- DELETE:DML语句,可根据条件删除数据,可回滚,不影响表结构。
- TRUNCATE:DDL语句,删除所有数据并重置高水线和索引,不可回滚,不触发触发器。
- DROP:DDL语句,删除表结构及所有数据,释放空间。
-
SQL JOIN子句:
- 用于根据两个或多个表之间的相关列组合记录。
- 常见的JOIN类型:INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL OUTER JOIN。
-
索引:
- 为字段提供索引,可加快检索速度。
- 常见的索引类型:B-Tree索引、Hash索引等。
-
窗口函数:
- 对一组行执行计算,并返回与每一行相关的值。
- 常见的窗口函数:ROW_NUMBER()、RANK()、DENSE_RANK()、SUM() OVER()等。
-
子查询:
- 在一个查询中嵌套另一个查询。
- 可用于SELECT、FROM、WHERE等子句中。
-
事务:
- 一组SQL语句的逻辑单元,确保所有操作要么都成功,要么都失败。
- 四个特性:原子性、一致性、隔离性、持久性。
-
隔离级别:
- 控制事务之间的并发访问。
- 常见的隔离级别:读未提交、读已提交、可重复读、串行化。
-
**避免SELECT ***:
- 查询时尽量指定具体字段,以节省资源和提高查询效率。
-
WHERE子句中的条件:
- 避免使用OR连接条件,可能导致索引失效。
- 尽量使用数值替代字符串类型,以提高查询性能。
-
CHAR与VARCHAR:
- CHAR:定长字段,按声明大小存储,不足补空格。
- VARCHAR:变长字段,按数据内容实际长度存储,节省空间。
-
默认值代替NULL:
- 在WHERE子句中使用默认值代替NULL,可能使索引生效,提高查询性能。
-
GROUP BY语句:
- 用于将结果集按一个或多个列进行分组。
- 可与聚合函数一起使用,如SUM()、AVG()等。
-
LIMIT子句:
- 用于限制查询结果的数量。
- 常与ORDER BY子句一起使用,以实现分页功能。
掌握这些知识点,将有助于你在SQL面试中脱颖而出。同时,也要注意结合具体业务场景和实际需求来灵活运用这些知识。