内容提要
子查询是在另一个查询中使用的查询,适用于SELECT、WHERE和HAVING子句。连接则是基于公共列合并多个表的行,通常效率更高。UNION、INTERSECT和EXCEPT用于合并或比较查询结果。SQL命令分为DDL、DML、DQL、TCL和DCL,基本操作包括创建和修改表结构及管理主键。
关键要点
-
子查询是在另一个查询中使用的查询,适用于SELECT、WHERE和HAVING子句。
-
连接是基于公共列合并多个表的行,通常效率更高。
-
使用连接时可以高效地从多个表中获取数据。
-
使用子查询时可以进行动态过滤的嵌套查询。
-
IN用于检查多个值,=用于检查单个值。
-
交叉连接会组合两个表的所有行(笛卡尔积)。
-
自连接是一个表与自身连接。
-
子查询可以在SELECT和FROM子句中使用。
-
UNION用于合并两个查询的结果并去除重复项。
-
INTERSECT返回两个查询之间的公共记录。
-
EXCEPT返回一个查询中存在而另一个查询中不存在的记录。
-
CHAR是固定长度,VARCHAR是可变长度的字符串。
-
DDL定义数据库结构,DML修改数据,DQL检索数据,TCL管理事务,DCL管理权限。
-
基本SQL操作包括创建数据库和表、修改表结构、添加列等。
-
主键必须唯一且不能为NULL,一个表只能有一个主键。
-
DROP永久删除表结构和数据,DELETE删除特定行但保留表,TRUNCATE删除所有行但保留表结构。
延伸解读
子查询与连接的选择
在使用SQL进行数据查询时,选择子查询还是连接取决于具体需求。连接通常在性能上更优,适合从多个表中高效获取数据,而子查询则适合需要动态过滤的场景。理解两者的适用情况,可以帮助开发者优化查询效率。
UNION、INTERSECT与EXCEPT的区别
UNION、INTERSECT和EXCEPT是合并和比较查询结果的关键工具。UNION用于合并结果并去重,INTERSECT返回两个查询的公共记录,而EXCEPT则找出一个查询中独有的记录。掌握这些操作可以更灵活地处理数据集。
CHAR与VARCHAR的使用场景
在选择数据类型时,CHAR和VARCHAR各有优劣。CHAR适合存储固定长度的字符串,性能较快;而VARCHAR则适合存储可变长度的字符串,更节省空间。根据数据特性选择合适的类型,可以提高数据库的性能和存储效率。
延伸问答
什么是子查询,它的用途是什么?
子查询是在另一个查询中使用的查询,适用于SELECT、WHERE和HAVING子句,用于动态过滤结果。
连接和子查询有什么区别?
连接基于公共列合并多个表的行,通常效率更高,而子查询用于嵌套查询,适合动态过滤。
UNION、INTERSECT和EXCEPT的区别是什么?
UNION合并两个查询的结果并去除重复项,INTERSECT返回两个查询的公共记录,EXCEPT返回一个查询中存在而另一个查询中不存在的记录。
如何在SQL中创建和修改表结构?
使用CREATE命令创建表,使用ALTER命令修改表结构,如添加列或更改列类型。
什么是主键,它的规则是什么?
主键是唯一且不能为NULL的字段,一个表只能有一个主键。
DROP、DELETE和TRUNCATE的区别是什么?
DROP永久删除表结构和数据,DELETE删除特定行但保留表,TRUNCATE删除所有行但保留表结构。