首页> 基础笔记 >Mysql基础学习 Mysql基础学习

SELECT查询使用WHERE子句按条件(操作符)检索

作者:小萝卜 2019-08-29 浏览 1032

简介逻辑操作符,比较操作符,使用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)

文章评论

    高端网站建设