首页> 基础笔记 >Mysql基础学习 Mysql基础学习
SELECT查询使用WHERE子句按条件(操作符)检索
作者:小萝卜 2019-08-29 【 MySql 数据库 】 浏览 1476
简介逻辑操作符,比较操作符,使用WHERE子句按条件检索,使用IN进行范围比对查询,使用LIKE进行模糊查询
使用WHERE子句按条件检索
在SELECT语句中,可以使用WHERE子句指定搜索条件,实现从数据表中检索出符合条件的记录。其中,搜索条件可以由一个或多个逻辑表达式组成,这些表达式指定关于某一记录是真或假的条件。在WHERE子句中,可以通过逻辑操作符和比较操作符指定基本的表达式条件。
逻辑操作符
操作符 |
语法 |
描述 |
AND 或 && |
a AND b 或 a && b |
逻辑与,若两个操作数同时为真,则为真 |
OR 或 || |
a OR b 或 a||b |
逻辑或,只要有一个操作数为真,则为真 |
XOR |
a XOR b |
逻辑异或,若有且仅有一个操作数为真,则为真 |
NOT 或 ! |
NOT a 或 !a |
逻辑非,若操作数为假,则为真 |
比较操作符
数据列类型 |
存储空间 说明 |
取值范围 |
= |
a=b |
若操作数a与操作数b相等,则为真 |
<=> |
a<=>b |
若a与b相等,则为真,可以用于NULL值比较 |
!=或<> |
a!=b或a<>b |
若操作数a与b不相等,为真 |
< |
a<b |
若操作数a小于b,为真 |
<= |
a<=b |
若操作数a大于b,为真 |
> |
a>b |
若操作数a大于b,为真 |
>= |
a>=b |
若操作数a大于等于b,为真 |
IS NULL |
a IS NULL |
若操作数a为NULL,为真 |
IS NOT NULL |
a IS NOT NULL |
若操作数a不为NULL,为真 |
BETWEEN |
a BETWEEN b AND c |
若a在b和c之间,为真 |
NOT BETWEEN |
a NOT BETWEEN b AND c
|
若操作数a不在b和c之间,为真
|
LIKE |
a
LIKE b |
SQL模式匹配,若a匹配b,为真
|
NOT LIKE |
a NOT LIKE b
|
SQL模式匹配,若a不匹配b,则为真
|
IN |
a IN (b1,b2….)
|
若a等于b1,b2,b3,…中的某一个,则为真
|
使用WHERE子句按条件检索
在构造搜索条件时,要注意只能对数值数据类型的记录进行算术运算,并且只能在相同的数据类型之间进行记录的比较。
实例:
-- where查询
--===================================================
-- 1. 查询lamp110期的学生信息
mysql> select * from stu where classid="lamp110";
-- 2. 查询lamp110期的学生,性别为m的信息
mysql> select * from stu where classid="lamp110" and sex='m';
-- 3. 查学生年龄在20~30的信息
mysql> select * from stu where age>=20 and age<=30;
-- 3. 查学生年龄在20~30之外的信息
mysql> select * from stu where age<20 or age>30;
根据空值(NULL)确定检索条件
空值只能定义在允许NULL字段中出现,NULL值是特殊的值,代表“无值”,与零值(0)和空字符串('')都不相同。当在不支持默认值的字段中未输入值,或在字段中显式的设置为空,就会出现空值,但不能用处理已知值的方式来处理NULL。为了进行NULL值的搜索,必须采用特殊的语法。如果要检索NULL值,必须使用IS NULL和IS NOT NULL关键字。
使用BETWEEN AND进行范围比较查询
如果需要对某个字段通过范围的值进行比较查询,可以使用BETWEEN AND关键字实现,其中AND是多重条件符号,比较时也包括边界条件。也可以使用“>=”和“<=”完成同样的功能。实例:
-- 3. 查学生年龄在20~30的信息
mysql> select * from stu where age>=20 and age<=30;
mysql> select * from stu where age between 20 and 30;
-- 3. 查学生年龄在20~30之外的信息
mysql> select * from stu where age<20 or age>30;
mysql> select * from stu where age not between 20 and 30;
使用IN进行范围比对查询
在WHERE子句中,使用IN关键字并在后面的括号“()”中提供一个值的列表,以供与相应的字段进行比较。该列表中至少应该存在一个值,如果有多个值可以使用逗号“,”分隔。
实例:
-- 4. 查询学号为1,4,7,10的信息
mysql> select * from stu where id in(1,4,7,10);
-- 5. 查询lamp110期和lamp111的男生m信息
mysql> select * from stu where classid in('lamp110','lamp111') and sex='m';
使用LIKE进行模糊查询
在SELECT语句的WHERE子句中,可以使用LIKE关键字对数据表中的记录进行模糊查询,将查询结果锁定在一个范围内。在查询条件中通常会与“_”和“%”两个通配符一起使用,可以实现复杂的检索查询。这两个通配符的含义分别如下:
➢百分号“%”:表示0个或任意多个字符。
➢下画线“_”:表示单个的任意一个字符。
相反的,不匹配我们使用NOT LIKE
实例:
-- 6. 查询学生姓名是由uu开头的信息。
mysql> select * from stu where name like "uu%"; --模糊查询
mysql> select * from stu where name regexp "^uu"; --正则查询
-- 7. 查询学生姓名中含有a字母的。
mysql> select * from stu where name like "%a%"; --模糊查询
mysql> select * from stu where name regexp "a"; --正则查询
很赞哦! (0)