SELECT基本查询
SELECT...FROM 查询语句
SELECT语句
SELECT[ALL|DISTINCT]<目标列表达式>[,<目标列表达式>]
FROM<表名或视图名>[,表名或视图名]
[WHERE<条件表达式>]
[GROUP BY<列名1>[HAVING<条件表达式>]]
[ORDER BY<列名2>[ASC|DESC]]
[LIMIT[start,]count]
- SELECT 字句用于指定查询数据的列名称
- FROM字句用于指定要查询的表或视图
- WHERE字句用于查询的数据应满足的条件
- GROUP BY 字句表示将查询的结果按照<列名 1>的值进行分组,将该列值相等的记录作为一个组,如果GROUP字句带有HAVING字句,则只有满足指定条件的组才有相对输出,HAVING字句通常和GROUP字句一起使用。
- ORDER BY 字句表示将查询结果按照<列名 2>的值进行升序或降序排列后输出,默认排序为ASC
- LIMIT 字句用于限制结果的行数
检索
检索单个列
SELECT 列名
FROM 表名;
检索多个列
SELECT 列名,列名,列名
FROM 表名;
检索users表,查询所有会员的名称,性别和电话号码。(指定字段信息)
SELECT U_Name,U_Sex,U_Phone FROM Users;
检索所有列(使用通配符 *)
SELECT *
FROM products;
检索表或视图中所有的字段信息,那么可以在SELECT子句中实际列名的位置使用通配符“*”
检索不同的行(去除重复行)
SELECT DISTINCT 列名
FROM 表名;
限制结果
SELECT 列名
FROM 表名
LIMINT (开始行,行数);
使用完全限定的表名 即同时使用表名和列字(存在即合理)
在默认情况下,查询结果的列标题就是在定义表结构时使用的列名称。
可以在SELECT子句中使用别名修饰,在定义查询语句时使用别名,在查询结果时,定义的别名会取代表结构中的列名称
定义别名的方式
- 列名 列标题
- 列名 AS 列标题
列的别名可以使用一对" "引起来,不要使用' '
关键词字ISTINCT的使用
默认值为ALL,ALL关键字表示将会显示所有检索的数据行,包含重复的数据行;
DISTINCT关键字,指示MySQL返回不同的数据行,对于重复的数据行只显示一次。
WHERE子句操作符
#过滤条件,声明在from结构的后面
SELECT 列名
FROM 表名
WHERE 限定条件;
使用关系表达式查询
常见的关系运算符:=(等于)、>(大于)、<(小于)、>=、<=、!=或<>(不等于)
使用逻辑表达式:NOT、AND、OR (优先级顺序)
不匹配检查 (关系表达式<> !=)
WHERE子句的位置 在同时使用ORDER BY和WHERE子句时,应该让ORDER BY位于WHERE之后,
数据排序不限于升序排序(从A到Z)。这只是默认的排序顺序,还可以使用ORDER BY子句以降序(从Z到A)顺序排序。为了进行降序排序,必须指定DESC关键字。
与DESC相反的关键字是ASC(ASCENDING) 但升序是默认的排列
范围值检查
为了检查某个范围的值,可使用BETWEEN操作符
SELECT 列名
FROM 表名
WHERE 列名 BETWEEN 起始值 AND 结束值;
空值检查
SELECT语句有一个特殊的WHERE子句,可用来检查具有NULL值的列。这个WHERE子句就是IS NULL子句。其语法如下:
SELECT 列名
FROM 表名
WHERE 列名 IS NULL;
数据过滤
MySQL允许给出多个WHERE子句。这些子句可以两种方式使用:以AND子句的方式或OR子句的方式使用。
AND 用在WHERE子句中的关键字,用来指示检索满足所有给定条件的行。
OR操作符与AND操作符不同,它指示MySQL检索匹配任一条件的行。
IN操作符
圆括号在WHERE子句中还有另外一种用法。IN操作符用来指定条件范围,范围中的每个条件都可以进行匹配。IN取合法值的由逗号分隔的清单,全都括在圆括号中。
用通配符进行过滤
通配符(wildcard) 用来匹配值的一部分的特殊字符。
搜索模式(search pattern)由字面值、通配符或两者组合构成的搜索条件。
为在搜索子句中使用通配符,必须使用LIKE操作符。LIKE指示MySQL,后跟的搜索模式利用通配符匹配而不是直接相等匹配进行比较。LIKE关键字用于搜索与特定字符串相匹配的字符数据
[NOT]LIKE<匹配字符串>
如果在LIKE前面加一个NOT关键词,表示该条件取反
- %:代表任意多个字符
- _:代表任意一个字符
百分号(%)通配符
在搜索串中,%表示任何字符出现任意次数。
SELECT 列名
FROM 表名
WHERE 列名 LIKE '字符名%'
是否区分大小写取决于MySQL的配置方式
通配符可在搜索模式中任意位置使用,并且可以使用多个通配符
似乎%通配符可以匹配任何东西,但有一个例外,即NULL。即使是WHERE prod_name LIKE '%’也不能匹配用值NULL作为产品名的行。
下划线(_)通配符