0 写在前面
最近写SQL语句的时候经常使用where去做判断。所以写一点关于WHERE的知识。
WHERE
子句使用来过滤结果集中的行记录。
如果使用select去查询但不使用WHERE子句在表中查询数据,则会获取表中的所有行记录,这些行记录中有一部分是不需要的数据,所以我们需要加一个限定,就像java中if一样,限定一个条件。
1 格式
单个条件:WHERE 限定条件
多个条件:WHERE 限定条件 AND 限定条件 AND……
单个条件直接写一个即可,多个条件用AND做并且连接
2 SQL数据准备
DROP TABLE IF EXISTS `person`;
CREATE TABLE `person` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(20) DEFAULT NULL,
`sex` varchar(20) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
`date_birth` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of person
-- ----------------------------
INSERT INTO `person` VALUES ('1', '小明', '男', '21', '2001-02-02 12:29:30');
INSERT INTO `person` VALUES ('2', '小红', '女', '20', '2002-01-01 00:00:00');
INSERT INTO `person` VALUES ('3', '张三', '男', '22', '2002-01-01 00:00:01');
INSERT INTO `person` VALUES ('4', '李四', '男', '30', '1992-07-10 12:00:00');
3 举例说明
例一:查询所有男同志
如果需要查询所有男同志,条件:让sex为男即可
sql:
SELECT
id,
NAME,
sex,
age,
date_birth
FROM
person
WHERE
sex = '男'
结果:
id NAME sex age date_birth
1 小明 男 21 2001-02-02 12:29:30
3 张三 男 22 2002-01-01 00:00:01
4 李四 男 30 1992-07-10 12:00:00
可以看到,结果全部是男同志
例二:查询所有21岁以上的男同志
sqk:
SELECT
id,
NAME,
sex,
age,
date_birth
FROM
person
WHERE
sex = '男'
AND age > 21
结果:
id NAME sex age date_birth
3 张三 男 22 2002-01-01 00:00:01
4 李四 男 30 1992-07-10 12:00:00
可以看到,结果全部是年龄大于21的男同志
4 写在末尾
任何一个字段可以用WHERE去做条件查询,使用方式不只有本文的举例,可以有很多组合方式。
条件查询是SQL技能中必须要掌握的部分,建议多看多练