SQL查询语句常见语法结构
Select select_list
[Into new_table]
From table_source
[Where search_condition]
[Group by group_by_expression]
[Having search_condition]
[Order by order_by_expression [ASC | DESC] ]
SELECT查询语句中的主要参数说明如下:
Select_list: 查询的列或表达式的列表,用逗号进行分隔。
New_table:新的表名
Table_source:要查询的表。如果是多个表,用逗号进行分隔。
Search_condition:查询条件
Group_by_expression:分组表达式
Order_by_expression:排序表达式
ASC:升序排列
DESC:降序排列
SELECT 查询语句中子句的功能
子句 主要功能 是否必要
Select 指定由查询返回的列 是
From 指定从其中查询数据的表 是
Into 创建新表并将结果行插入新表中 否
Where 按照条件查询数据 否
Group By 对查询结果进行分组 否
Order By 对查询结果进行排序 否
Having 对查询结果进行筛选 否
2、常见的查询语句
(1)查询表中所有的记录
Select * from 数据表名
(2)查询表中所有记录的指定字段
Select 字段1,字段2,… from 数据表名
(3)允许查询结果中显示重复记录(默认就是all)
Select all 字段1,字段2,… from 数据表名
(4)不允许查询结果中显示重复记录
Select distinct 字段1,字段2,… from 数据表名
(5)指定查询前 n 行记录
Select top n 字段1,字段2,… from 数据表名
(6)指定查询记录数的百分比
Select top n percent 字段1,字段2,… from 数据表名
(7)带表达式的查询
Select 表达式1,字段2,… from 数据表名
(8)更改列名显示的查询(AS可以省略)
Select 表达式1 AS 新列名1,字段2 AS 新列名2,… from 数据表名
3、WHERE 条件查询
where条件查询的语法结构
Select <字段列表>
From <表名>
Where <条件表达式>
其中,条件表达式是由各种字段、常量、表达式、关系运算符、逻辑运算符和特殊运算符组合起来的。
(1)where 中的关系运算符:=、<>(!=)、<、>、<=、>=、!>、!<
(2)where 中的逻辑运算符:NOT、AND、OR
注意:逻辑运算符的优先次序是NOT、AND、OR,在同一优先级上的取值顺序是从左到右。
(3)where 中的特殊运算符
特殊运算符 含义
% 通配符,代表任意多个字符。
- 通配符,代表严格的一个字符。
[ ] 指定范围([a-f])或集合([abcdef])中的任何单个字符。
[^] 不属于指定范围([a-f])或集合([abcdef])中的任何单个字符。例如:where name like ‘wan[^lx]’ 表示查询以wan开始其后的字母不是lx的。
Between 定义一个取值范围区间,使用and 分开。
Like 字符串匹配
In 一个字段的值是否在一个定义的值之中
Exists 某个字段是否有值
Is null 字段是否为 null
Is not null 字段是否不为 null
(4)常见的where 查询实例
4.1 = (<>,!=)查询
Select * from employee where department='市场部' (字符型要用'引起来)
Select * from employee where id=10 (数值型)
4.2 in 查询(或not in)
Select * from employee where department in ('市场部','广告部') (字符型)
Select * from employee where Id in (2,4,6) (数值型)
4.3 between 值1 And 值2 (介于之间)查询
Select * from employee where birthday between '1983' and '1987' (日期、字符型加'')
4.4 like (模式匹配)查询(%)/查询(_)
Select * from employee where name like '王%' (查询姓王的)
Select * from employee where name like '王_' (查询王某)
4.5 is null/is not noll
Select * from employee where department is null (查询department为null的记录)
(5) order by 排序查询的语法结构
Select <字段名列表>
From 数据表名
[where <条件表达式>]
[Order by {order_by_expression [ASC|DESC]}[,…]]
Order by 子句可以搭配where 子句,也可以单独和 select 、from 搭配使用,而不需要where子句。
order_by_expression : 指定要排序的列、列的别名、表达式,或者指定为代表选择列表内的名称、别名或表达式的位置的负整数。
ASC:升序
DESC:降序
例: Select * from employee order by id desc,name asc
(6)select 连接查询的语法结构
连接查询中用来连接两个表的条件称为连接条件或连接谓词.其形式为:
[<表1>].<列名1> <连接运算符> [<表2>].<列表2>
常见的连接运算符包括:
比较运算符: =、>、<、<= 、>= 、!=、 between 和 and
逻辑运算符:not、and、or
使用Between和And的连接查询形式为:
[<表1>].<列名1> <between> [<表2>].<列名2> and [<表2>].<列名3>
连接查询的运算过程是:在表1中找到第一个记录,然后逐行扫描表2的所有记录,若有满足连接条件的就组合表1的字段和表2的字段为一个新的记录。依次类推,在表1中扫描完所有的记录后就组合成了连接查询的结果。
Select select_list
[Into new_table]
From table_source
[Where search_condition]
[Group by group_by_expression]
[Having search_condition]
[Order by order_by_expression [ASC | DESC] ]
SELECT查询语句中的主要参数说明如下:
Select_list: 查询的列或表达式的列表,用逗号进行分隔。
New_table:新的表名
Table_source:要查询的表。如果是多个表,用逗号进行分隔。
Search_condition:查询条件
Group_by_expression:分组表达式
Order_by_expression:排序表达式
ASC:升序排列
DESC:降序排列
SELECT 查询语句中子句的功能
子句 主要功能 是否必要
Select 指定由查询返回的列 是
From 指定从其中查询数据的表 是
Into 创建新表并将结果行插入新表中 否
Where 按照条件查询数据 否
Group By 对查询结果进行分组 否
Order By 对查询结果进行排序 否
Having 对查询结果进行筛选 否
2、常见的查询语句
(1)查询表中所有的记录
Select * from 数据表名
(2)查询表中所有记录的指定字段
Select 字段1,字段2,… from 数据表名
(3)允许查询结果中显示重复记录(默认就是all)
Select all 字段1,字段2,… from 数据表名
(4)不允许查询结果中显示重复记录
Select distinct 字段1,字段2,… from 数据表名
(5)指定查询前 n 行记录
Select top n 字段1,字段2,… from 数据表名
(6)指定查询记录数的百分比
Select top n percent 字段1,字段2,… from 数据表名
(7)带表达式的查询
Select 表达式1,字段2,… from 数据表名
(8)更改列名显示的查询(AS可以省略)
Select 表达式1 AS 新列名1,字段2 AS 新列名2,… from 数据表名
3、WHERE 条件查询
where条件查询的语法结构
Select <字段列表>
From <表名>
Where <条件表达式>
其中,条件表达式是由各种字段、常量、表达式、关系运算符、逻辑运算符和特殊运算符组合起来的。
(1)where 中的关系运算符:=、<>(!=)、<、>、<=、>=、!>、!<
(2)where 中的逻辑运算符:NOT、AND、OR
注意:逻辑运算符的优先次序是NOT、AND、OR,在同一优先级上的取值顺序是从左到右。
(3)where 中的特殊运算符
特殊运算符 含义
% 通配符,代表任意多个字符。
- 通配符,代表严格的一个字符。
[ ] 指定范围([a-f])或集合([abcdef])中的任何单个字符。
[^] 不属于指定范围([a-f])或集合([abcdef])中的任何单个字符。例如:where name like ‘wan[^lx]’ 表示查询以wan开始其后的字母不是lx的。
Between 定义一个取值范围区间,使用and 分开。
Like 字符串匹配
In 一个字段的值是否在一个定义的值之中
Exists 某个字段是否有值
Is null 字段是否为 null
Is not null 字段是否不为 null
(4)常见的where 查询实例
4.1 = (<>,!=)查询
Select * from employee where department='市场部' (字符型要用'引起来)
Select * from employee where id=10 (数值型)
4.2 in 查询(或not in)
Select * from employee where department in ('市场部','广告部') (字符型)
Select * from employee where Id in (2,4,6) (数值型)
4.3 between 值1 And 值2 (介于之间)查询
Select * from employee where birthday between '1983' and '1987' (日期、字符型加'')
4.4 like (模式匹配)查询(%)/查询(_)
Select * from employee where name like '王%' (查询姓王的)
Select * from employee where name like '王_' (查询王某)
4.5 is null/is not noll
Select * from employee where department is null (查询department为null的记录)
(5) order by 排序查询的语法结构
Select <字段名列表>
From 数据表名
[where <条件表达式>]
[Order by {order_by_expression [ASC|DESC]}[,…]]
Order by 子句可以搭配where 子句,也可以单独和 select 、from 搭配使用,而不需要where子句。
order_by_expression : 指定要排序的列、列的别名、表达式,或者指定为代表选择列表内的名称、别名或表达式的位置的负整数。
ASC:升序
DESC:降序
例: Select * from employee order by id desc,name asc
(6)select 连接查询的语法结构
连接查询中用来连接两个表的条件称为连接条件或连接谓词.其形式为:
[<表1>].<列名1> <连接运算符> [<表2>].<列表2>
常见的连接运算符包括:
比较运算符: =、>、<、<= 、>= 、!=、 between 和 and
逻辑运算符:not、and、or
使用Between和And的连接查询形式为:
[<表1>].<列名1> <between> [<表2>].<列名2> and [<表2>].<列名3>
连接查询的运算过程是:在表1中找到第一个记录,然后逐行扫描表2的所有记录,若有满足连接条件的就组合表1的字段和表2的字段为一个新的记录。依次类推,在表1中扫描完所有的记录后就组合成了连接查询的结果。