SQL Server 数据库SELECT查询

本文介绍了SQL的基本语法结构,包括SELECT语句的详细用法、表连接的不同方式、联合查询的操作要点以及高级查询如子查询的应用场景。同时,还探讨了SQL中的三值逻辑及其在不同上下文中的行为。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.SELECT的基本语法结构:

SELECT [DISTINCT|ALL][TOP(<expression>)[PERCENT][WITH THIS]][[colmn_name[AS 列名]],[.......]]|* FROM table_name
[OUTER|LEFT|RIGHT|FULL|CROSS JOIN table1_name ON condition ]
[.........]
WHERE condition
GROUP BY column_name
HAVING condition
ORDER BY column_name [ASC|DESC]
  • 在默认情况下,记录为ALL,即保留重复数据;
  • 在默认情况下,记录按升序排序的,即关键字默认为ASC;
  • 对于表的连接来说,如果只写INNER关键字,那么表示内连接,即INNER JOIN;

二.三值逻辑

        在SQL 中的逻辑表达式可能的值包括TRUE、FALSE和UNKNOWN,这就是所谓三值逻辑。其中UNKNOWN逻辑值通常出现在包含NULL值的逻辑表达式中。在不同的地方,UNKNOWN或NULL会有不同的效果。

  • 在所有的查询筛选器(ON、WHERE和HAVING)都把UNKNOWN当成FALSE处理。
  • 在CHECK约束中,UNKNOWN会被当成TRUE处理。
  • 在UNIQUE约束、GROUP BY子句和ORDER BY子句会把两个NULL值会被当成相等。

三.表连接

1).表连接有:INNER JOIN、LEFT/RIGHT JOIN、CROSS JOIN(笛卡尔积)和FULL JOIN。

2).联合:UNION和UNION ALL

      UNION操作符将一个查询的结果集附加到另一个查询的结果集末尾。使用UNION关键字有几点注意:

  • UNOIN操作符两边的查询结果集要有相同的列数;
  • UNION返回的结果集的列名从第一个查询获得;
  • 查询的对应列的数据类型必须隐式一致;
  • 对于UNION 操作默认是去重复的也就是DISTINCT的;要想保留重复项,使用UNION ALL;
  • UNION默认是排序的,排序的方式是依据第一个查询SELECT的列表的第一个列;UNION ALL是不排序的;
  • 可以在最后一个SELECT添加ORDER BY来显示排序结果集;

四.高级查询

       子查询通常用于满足下列操作:1)将一个查询分解为一系列的逻辑步骤;2)提供一个列表给WHERE子句和作为(IN/ALL/SOME/ANY/EXISTS)的目标;3)为父查询的每个记录提供一个查询表。

1.嵌套子查询

       嵌套子查询只在一个方向上嵌套:用于返回在外部查询中药使用的单个值(使用运算符‘=’),或者与IN运算符一起使用的一个完整的值列表。语法基本格式如下:

SELECT select_list
FROM some_table
WHERE somecolumn=(
        SELECT single_column FROM some_table
        WHERE condition that results in only one row returned)
或者
SELECT select_list
FROM some_table
WHERE somecolumn IN (
        SELECT single_column FROM some_table
        WHERE condition)

2.关联子查询

        关联子查询是双向的。其处理过程如下:

  • 1)外部查询获得一个记录,将这个记录传递给内部查询;
  • 2)内部查询根据这个传递过来的记录的值执行;
  • 3)内部查询将查询结果返回给外部查询,外部查询根据这些值完成处理操作。

1.WHERE子句中的关联查询

2.查询列表中的关联查询

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值