在 SQL where 介绍过详细的逻辑运算符和比较运算符,可以点击进行查看。
AND 和 OR 运算符用于基于一个以上的条件对记录进行过滤。可以把两个或多个条件结合起来,形成联合条件。
可以把 AND,理解成数学中的 并且
,只有多个条件都满足时,才能过滤出来。可以把 OR,理解成 或者
,只要有一个条件满足时,就能过滤出来。
如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。
如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。
创建 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 表:
查询 student 表中,学生年龄在18岁以上且分配的老师是蒋老师的记录:
SELECT * FROM student WHERE age >= 18 AND teacher_id = 2 ;
查询 student 表中,找出李小明和李明两位学生的记录:
SELECT * FROM student WHERE name = "李小明" OR name = "李明";
// 或者
SELECT * FROM student WHERE name IN ("李小明", "李明");
查询 student 表中,找出名字叫李红或者刘涛两位学生,且他的老师是王老师(teacher_id 等于1)的记录:
SELECT * FROM student WHERE (name = "李红" OR name = "刘涛") AND teacher_id = 1;