WHERE condition
用于过滤记录,对于修改、查询记录非常有用。
接下来,以查询记录介绍,更新同理。
SQL SELECT WHERE 语句用于提取那些满足指定条件的记录。
语法:
SELECT column1, column2, ...
FROM table_name
WHERE condition;
参数说明:
(1)column1, column2, ...:要选择的字段名称,可以为多个字段。如果想要获取所有的字段,不需要全写,可以使用 * 代替。
(2)table_name:要查询的表名称。
(3)condition:查询条件,支持联合查询,多个条件语句之间用 OR、 AND 等逻辑运算符进行联合查询。
比较运算符 | 功能描述 |
---|---|
> | 大于 |
>= | 大于等于 |
< | 小于 |
<= | 小于等于 |
= | 等于 |
<> 或者 != | 不等于 |
BETWEEN...AND... | 在某个范围之内(含最小,最大值) |
IN(...) | 在IN之后的列表中的值,多选一 |
LIKE 占位符 | 模糊匹配(_匹配单个字符,%匹配任意个字符) |
IS NULL | 是NULL |
逻辑运算符 | 功能描述 |
---|---|
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 * FROM student WHERE age > 18;
SELECT * FROM student WHERE name != "王武";
// 或者
SELECT * FROM student WHERE name <> "王武";
SELECT * FROM student WHERE age BETWEEN 18 AND 20;
SELECT * FROM student WHERE name IN ("李红", "王武");
SELECT * FROM student WHERE name LIKE "李%";
// 或者
SELECT * FROM student WHERE name LIKE "李_";
两者的区别是:_表示单个字符,如果有一个学生是“李小明”,那个这个学生就会查询不出来。但是%可以查询处理,表示不限字符长度。
SELECT * FROM student WHERE teacher_id IS NULL;
SELECT * FROM student WHERE age >= 18 AND teacher_id = 2 ;
SELECT * FROM student WHERE name = "李小明" OR name = "李明";
// 或者
SELECT * FROM student WHERE name IN ("李小明", "李明");
SELECT * FROM student WHERE teacher_id IS NOT NULL;