【数据库】SQL语言之数据查询

本文详细介绍了SQL语言中的数据查询操作,包括简单查询、DISTINCT关键字、列选择、别名、条件查询、JOIN连接、子查询、合并结果集、差异结果集、数据分组、排序和数据限制等。通过对各种查询方法的实例解析,帮助读者掌握SQL数据查询的核心技巧。

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

前言:

现在我们来看看SQL语法的用法,包括查询语句的类型、语法格式和对应的使用场景
这篇我们讲数据查询
数据查询语言是数据库最基本的应用,其语法较为复杂,包括简单查询、带条件查询、连接查询、子查询、集合运算、数据分组、排序和限制等

1. 简单查询

日常查询中 最常用的就是用过FROM子句实现的查询

语法:

SELECT [ , ... ] FROM table_reference [ , ... ] 

使用方法:
SELECT项用于指定要查询的列,FROM指定要从哪个表中查询。
如果要查询所有列,可以在SELECT后面使用*号,如果只查询特定的列,可以直接在SELECT后面指定列名,列名之间用逗号(,)隔开。

例子1:
查询training表中的所有列

SELECT * FROM training;
2. 关键字 DISTINCT

从SELECT的结果集中删除所有重复的行,使结果集中的每行都是唯一的。去重复值查询

例子:
利用distinct关键字来查询员工的岗位和奖金,去除岗位和奖金相同的记录。

select distinct job, bonus from sections;
3. 查询列的选择

例子1:
从多个表中查找多个列

其中,列a、b是表t1中的列,f1、f2是表t2中的列

SELECT a, b, f1, f2 FROM t1, t2;

例子2:
查两个字段计算出来的

SELECT a+b FROM t1;

例子3:
如果某两个或某几个表正好有一些共同的列名,推荐使用表名限定列名。不限定列名可以得到查询结果,但使用完全限定的表和列名称,可以减少数据库内部的处理工作量,从而提升查询的返回性能

SELECT t1.f1, t2.f1 from t1, t2;
4. 别名

通过使用子句AS some_name,可以为表名称或列名称指定另一个标题名显示,一般创建别名是为了让列名称的可读性更强

  • 语法格式:
    列和表的SQL别名分别跟在相应的列名和表名后面,中间可以加或不加一个“AS”关键字。也可以用双引号的方式来表示别名。

    例子:
    表名限定列名,查询学号sid为10的学生的数学成绩和英语成绩

select a.sid,a.score as math, b.score as english from math a,english b where a.sid = 10 and b.sid = 10;
5. 条件查询

在SELECT语句中,可以通过设置条件以达到更精确的查询。条件由表达式与操作符共同指定,且条件返回的值是TRUE,FALSE或UNKNOWN。查询条件可以应用于WHERE子句,HAVING子句。

  1. 比较操作符
    “>, <,>=,<=, !=, <>,=”指定的比较查询条件。当查询条件中和数字比较,可以使用单引号引起,也可以不用,当和字符及日期类型的数据比较,则必须用单引号引起

  2. 逻辑操作符
    常用的逻辑操作符有AND、OR和NOT,他们的运算结果有三个值,分别为TRUE、FALSE和NULL,其中NULL代表未知。他们运算优先级顺序为:NOT>AND>OR

    运算规则表

a b a AND b a OR b NOT a
TRUE TRUE TRUE TRUE FALSE
TRUE FALSE FALSE TRUE FALSE
TRUE NULL NULL TRUE FALSE
FALSE FALSE FALSE FALSE TRUE
FALSE NULL FALSE NULL TRUE
NULL NULL NULL NULL NULL
  1. 测试运算符
    测试运算符指定的范围查询条件
运算符 描述
IN/NOT IN 元素在/不在指定的集合中。
EXISTS/NOT EXISTS 存在/不存在符合条件的元素。
ANY/SOME 存在一个值满足条件。SOME是ANY的同义词。
ALL 全部值满足条件。
BETWEEN…AND… 在两者之间,例如a BETWEEN x AND y等效于a>= x and a <= y。
IS NULL/IS NOT NULL 等于/不等于NULL。
LIKE/NOT LIKE 字符串模式匹配/不匹配。
REGEXP
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值