首页文档便民工具JavaScript正则表达式SQL教程
首页/文档/

一. 概述

1. 基本定义

WHERE condition 用于过滤记录,对于修改、查询记录非常有用。

接下来,以查询记录介绍,更新同理。

SQL SELECT WHERE 语句用于提取那些满足指定条件的记录。

语法:

SELECT column1, column2, ...
FROM table_name
WHERE condition;

参数说明:

(1)column1, column2, ...:要选择的字段名称,可以为多个字段。如果想要获取所有的字段,不需要全写,可以使用 * 代替。

(2)table_name:要查询的表名称。

(3)condition:查询条件,支持联合查询,多个条件语句之间用 OR、 AND 等逻辑运算符进行联合查询。

2. 比较运算符

比较运算符 功能描述
> 大于
>= 大于等于
< 小于
<= 小于等于
= 等于
<> 或者 != 不等于
BETWEEN...AND... 在某个范围之内(含最小,最大值)
IN(...) 在IN之后的列表中的值,多选一
LIKE 占位符 模糊匹配(_匹配单个字符,%匹配任意个字符)
IS NULL 是NULL

3. 逻辑运算符

逻辑运算符 功能描述
AND 或者 && 并且(多个条件同时成立)
OR 或者 或者(多个条件一个成立就可)
NOT 或者 ! 非,不是

三. 示例

创建student和teacher表:

CREATE TABLE student (
  id INT PRIMARY KEY AUTO_INCREMENT COMMENT "主键id",
  name varchar(10) UNIQUE NOT NULL COMMENT "学生名称",
  age INT COMMENT "学生年龄",
  teacher_id INT COMMENT "学生辅导员id"
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO 
student (name, age, teacher_id) 
VALUES 
("李红", 20, 1), 
("刘涛", 10, 1), 
("王武", 19, 2), 
("李明", 18, null), 
("李小明", 15, null);

CREATE TABLE teacher (
  id INT PRIMARY KEY AUTO_INCREMENT COMMENT "主键id",
  name VARCHAR(10) UNIQUE NOT NULL COMMENT "辅导员名称"
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO teacher (name) VALUES ("王老师"), ("蒋老师");

ALTER TABLE student ADD CONSTRAINT fk_teacher_id FOREIGN KEY (teacher_id) REFERENCES teacher(id);

执行后,student表和teacher表:

select where

1. 查询年龄大于18岁

SELECT * FROM student WHERE age > 18;

select where

2. 查询除了王武外的所有学生

SELECT * FROM student WHERE name != "王武";
// 或者
SELECT * FROM student WHERE name <> "王武";

select where

3. 查询年龄在18到20岁之间的学生

SELECT * FROM student WHERE age BETWEEN 18 AND 20;

select where

4. 查询名字叫李红和王武学生

SELECT * FROM student WHERE name IN ("李红", "王武");

select where

5. 查询姓李的所有学生

SELECT * FROM student WHERE name LIKE "李%";
// 或者
SELECT * FROM student WHERE name LIKE "李_";

两者的区别是:_表示单个字符,如果有一个学生是“李小明”,那个这个学生就会查询不出来。但是%可以查询处理,表示不限字符长度。

select where

6. 查询没有分配老师的学生

SELECT * FROM student WHERE teacher_id IS NULL;

select where

7. 学生年龄在18岁以上且分配的老师是蒋老师

SELECT * FROM student WHERE age >= 18 AND teacher_id = 2 ;

select where

8. 找出李小明和李明两位学生

SELECT * FROM student WHERE name = "李小明" OR name = "李明";
// 或者
SELECT * FROM student WHERE name IN ("李小明", "李明");

select where

9. 找出所有已经分配老师的学生

SELECT * FROM student WHERE teacher_id IS NOT NULL;

select where

目录
一. 概述
1. 基本定义2. 比较运算符3. 逻辑运算符
三. 示例
1. 查询年龄大于18岁2. 查询除了王武外的所有学生3. 查询年龄在18到20岁之间的学生4. 查询名字叫李红和王武学生5. 查询姓李的所有学生6. 查询没有分配老师的学生7. 学生年龄在18岁以上且分配的老师是蒋老师8. 找出李小明和李明两位学生9. 找出所有已经分配老师的学生