MySQL 的 where 条件查询是指在查询数据时,通过 where 关键字指定一个条件来限制查询结果的范围。where 条件查询可以根据一个或多个条件来过滤数据,常用的条件包括等于、大于、小于、不等于、范围、模糊查询等。
例如,查询表中 age 大于 18 的数据:
SELECT * FROM table_name WHERE age > 18;
这条语句会查询表 table_name 中所有 age 大于 18 的数据。
另外,where 条件查询还可以使用逻辑运算符AND
和OR
来组合多个条件,例如:
SELECT * FROM table_name WHERE age > 18 AND gender = 'male';
这条语句会查询表 table_name 中所有 age 大于 18 且 gender 为 male 的数据。
在 where 条件查询中还可以使用通配符%
,表示匹配任意字符,例如:
SELECT * FROM table_name WHERE name LIKE '%张%';
这条语句会查询表 table_name 中所有名字中包含 “张” 的数据。
在开始之前,我们先准备一下:
Windows + R 调出运行框,输入 cmd 回车。
输入mysql -u root -p
登录,输入密码。
创建数据库:
DROP DATABASE IF EXISTS mydb;
CREATE DATABASE mydb;
USE mydb;
创建 student 表:
CREATE TABLE student (
id CHAR(6),
name VARCHAR(50),
age INT,
gender VARCHAR(50) DEFAULT 'male'
);
向 student 表插入数据:
INSERT INTO student (id,name,age,gender) VALUES ('01', 'lili', 14, 'male');
INSERT INTO student (id,name,age,gender) VALUES ('02', 'wang', 15, 'female');
INSERT INTO student (id,name,age,gender) VALUES ('03', 'tywd', 16, 'male');
INSERT INTO student (id,name,age,gender) VALUES ('04', 'hfgs', 17, 'female');
INSERT INTO student (id,name,age,gender) VALUES ('05', 'qwer', 18, 'male');
INSERT INTO student (id,name,age,gender) VALUES ('06', 'zxsd', 19, 'female');
INSERT INTO student (id,name,age,gender) VALUES ('07', 'hjop', 16, 'male');
INSERT INTO student (id,name,age,gender) VALUES ('08', 'tyop', 15, 'female');
INSERT INTO student (id,name,age,gender) VALUES ('09', 'nhmk', 13, 'male');
INSERT INTO student (id,name,age,gender) VALUES ('10', 'xdfv', 17, 'female');
INSERT INTO student (id,name,age,gender) VALUES ('12', 'lili', 14, 'male');
INSERT INTO student (id,name,age,gender) VALUES ('13', 'wang', 15, 'female');
常用的关系运算符如下所示:
关系运算符 | 说明 |
---|---|
= | 等于 |
<> | 不等于 |
!= | 不等于 |
< | 小于 |
<= | 小于等于 |
> | 大于 |
>= | 大于等于 |
查询年龄大于 15 的学生:
select * from student where age>15;
IN
关键字用于判断某个字段的值是否在指定集合中。如果字段的值恰好在指定的集合中,则将字段所在的记录将査询出来。
查询 id 为 01、02 的学生:
select * from student where id in ('01','02');
select * from student where id not in ('01','02');
BETWEEN AND
用于判断某个字段的值是否在指定的范围之内。如果字段的值在指定范围内,则将所在的记录将查询出来.
查询 14 到 16 岁的学生:
select * from student where age BETWEEN 14 AND 16;
select * from student where age not BETWEEN 15 AND 18;
在 MySQL 中,使用 IS NULL
关键字判断字段的值是否为空值。请注意:空值 NULL 不同于0,也不同于空字符串。
查询没有名字的学生(???):
select * from student where name is null;
查询有名字的学生(???):
select * from student where name is not null;
使用AND
关键字可以连接两个或者多个查询条件。
查询 15 岁到 18 岁的男同(学):
select * from student where age BETWEEN 15 AND 18 and gender='male';
使用OR
关键字连接多个査询条件。在使用OR
关键字时,只要记录满足其中任意一个条件就会被查询出来。
查询大于 15 岁或是女性的同学:
select * from student where age>15 or gender='female';
使用LIKE
关键字可以判断两个字符串是否相匹配。
查询名字叫 “wang” 的学生:
select * from student where name like 'wang';
%
用于匹配任意长度的字符串。例如,字符串 “a%” 匹配以字符 a 开始任意长度的字符串。
查询姓 “li” 的学生:
select * from student where name like 'li%';
select * from student where name like '%g';
_
通配符只匹配单个字符,如果要匹配多个字符,需要连续使用多个下划线通配符。例如,字符串 “ab_” 匹配以字符串 “ab” 开始长度为 3 的字符串,如 abc、abp 等等;字符串 “a__d” 匹配在字符 “a” 和 “d” 之间包含两个字符的字符串,如 “abcd”、“atud” 等等。
查询名字以 zx 开头且长度为 4 的学生:
select * from student where name like 'zx__';
select * from student where name like '___g';