文章目录
前言:
现在我们来看看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子句。
-
比较操作符
“>, <,>=,<=, !=, <>,=”指定的比较查询条件。当查询条件中和数字比较,可以使用单引号引起,也可以不用,当和字符及日期类型的数据比较,则必须用单引号引起 -
逻辑操作符
常用的逻辑操作符有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 |
- 测试运算符
测试运算符指定的范围查询条件
运算符 | 描述 |
---|---|
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 |