语法规则
select [ all | distinct] <目标列表达式> [别名] [, <目标列表达式> [别名] ] . . .
from <表名或视图名> [别名] [ ,<表名或视图名>[别名] ] . . .
[where <条件表达式>]
[group by <列名1> ]
[having <条件表达式> ]
[order by <列名2> [ ASC| DESC ]]
[limit 字句];
其中[ ]内的内容是可选的。
条件查询主要使用关键字WHERE指定查询的条件,where子句常用的查询条件有很多种,如下表所示。

1.带关系运算符和逻辑运算符的查询
注意:条件表达式中设置的条件越多,查询出来的记录就会越少。
MYSQL中,可以通过关系运算符和逻辑运算符来编写“条件表达式”。
SELECT number AS 学号, NAME 姓名, yw 语文,sx 数学,yy 英语,wl 物理,yw+sx+yy+wl AS 总分,ROUND((yw+sx+yy+wl)/4,1)AS 均分 FROM mydb.cj_table WHERE wl>=90;
SELECT numberAS 学号, NAME 姓名, yw 语文,sx 数学,yy 英语,wl 物理,yw+sx+yy+wl AS 总分,ROUND((yw+sx+yy+wl)/4,1) AS 均分 FROM mydb.cj_table WHERE ROUND((yw+sx+yy+wl)/4,1) >=80;
SELECT number AS 学号, NAME 姓名, yw 语文,sx 数学,yy 英语,wl 物理,yw+sx+yy+wl AS 总分,ROUND((yw+sx+yy+wl)/4,1) AS 均分 FROM mydb.cj_table WHERE yy >=90 OR (yy>=80 AND yy<=85);
2.带IN关键字的查询。
IN关键字可以判断某个字段的值是否在指定的集合中。
语法格式:[NOT] IN (元素1,元素2, 元素3, . . . )
SELECT number AS 学号, NAME 姓名, yw 语文,sx 数学,yy 英语,wl 物理,yw+sx+yy+wl AS 总分,ROUND((yw+sx+yy+wl)/4,1) AS 均分 FROM mydb.cj_table WHERE yy IN (65,75,85,95);
3.带BETWEEN…AND关键字的查询。
between and关键字可以判断读某个字段的值是否在指定的范围内。语法格式:[ NOT ] between 取值1 and 取值2
SELECT number AS 学号, NAME 姓名, yw 语文,sx 数学,yy 英语,wl 物理,yw+sx+yy+wl AS 总分,ROUND((yw+sx+yy+wl)/4,1) AS 均分 FROM mydb.cj_table WHERE yy BETWEEN 80 AND 99;
4.带IS NULL关键字的空值查询。
is null关键字可以用来判断字段的值是否为空值(NULL)。
语法格式:is [ not ] null
SELECT number AS 学号, NAME 姓名, yw 语文,sx 数学,yy 英语,wl 物理,yw+sx+yy+wl AS 总分,ROUND((yw+sx+yy+wl)/4,1)AS 均分 FROM mydb.cj_table WHERE NAME IS NULL;
注意:IS NULL 是一个整体,不能将IS换成“=”, NAME=null 不能表示要查询的NAME值是空值。
SELECT number AS 学号, NAME 姓名, yw 语文,sx 数学,yy 英语,wl 物理,yw+sx+yy+wl AS 总分,ROUND((yw+sx+yy+wl)/4,1) AS 均分 FROM mydb.cj_table WHERE NAME IS NOT NULL;
5.带LIKE关键字的查询。
like关键字可以匹配字符串是否相等。
语法规则: [not] like ‘字符串’;
说明:使用LIKE关键字和使用“=”的效果是一样的,但仅对匹配一个完整的字符串有效。如果字符串中包含了通配符,就不替换了。使用LIKE和NOT LIKE关键字可以很好地匹配字符串。而且,可以使用和这两个通配字符来简化查询。LIKE后面参数值可以是一个完整的字符串,也可以是包含百分号“%”或者下划线“_”的通配字符。但是%和_有很大的差别:
(1)“%”可以代表任意长度的字符串,长度可以为0。
(2)“_”只能表示单个字符。
假若like ‘字符串’中的要匹配的字符串上就含有通配符百分号%或者下划线“_”,那么我们可以使用ESCAPE<转换码>短语,将通配符转义为普通字符。\为默认转换码,不用此短语声明。
SELECT number AS 学号, NAME 姓名, yw 语文,sx 数学 FROM mydb.cj_table WHERE NAME =‘蔡安国’;
SELECT number AS 学号, NAME 姓名, yw 语文,sx 数学 FROM mydb.cj_table WHERE NAME LIKE ‘蔡安国’;
SELECT number AS 学号, NAME 姓名, yw 语文,sx 数学 FROM mydb.cj_table WHERE NAME LIKE ‘李%’;
SELECT number AS 学号, NAME 姓名, yw 语文,sx 数学 FROM mydb.cj_table WHERE NAME LIKE ‘李_’;
SELECT number AS 学号, NAME 姓名, yw 语文,sx 数学 FROM mydb.cj_table WHERE NAME LIKE ‘%磊%’;
#ESCAPE<转化码>短语:ESCAPE ‘\’,\为默认转换码,不能用此短语声明,直接使用。
SELECT number AS 学号, NAME 姓名, yw 语文,sx 数学 FROM mydb.cj_table WHERE NAME LIKE ‘李%_’;
SELECT number AS 学号, NAME 姓名, yw 语文,sx 数学 FROM mydb.cj_table WHERE NAME LIKE ‘李%_’;
#ESCAPE<转化码>短语的应用:
SELECT number AS 学号, NAME 姓名,yy 英语,sx 数学
FROM mydb.cj_table WHERE NAME LIKE ‘李/%/_’ ESCAPE ‘/’;
SELECT number AS 学号, NAME 姓名,yy 英语,sx 数学
FROM mydb.cj_table WHERE NAME LIKE ‘李#%#_’ ESCAPE ‘#’;
SELECT number AS 学号, NAME 姓名,yy 英语,sx 数学
FROM mydb.cj_table WHERE NAME LIKE ‘李*%_’ ESCAPE '’;
SELECT number AS 学号, NAME 姓名,yy 英语,sx 数学
FROM mydb.cj_table WHERE NAME LIKE ‘李%_’ ESCAPE ‘$’;
本文详细介绍了MySQL中单表条件查询的语法和各种查询方式,包括使用WHERE、IN、BETWEEN…AND、IS NULL和LIKE关键字进行复杂条件筛选。通过实例展示了如何根据不同的查询需求来构建SQL查询语句。

5612

被折叠的 条评论
为什么被折叠?



