SELECT DISTINCT 语句
通常来说,在表中,每一条数据基本都是不一样的,但是在某一个字段中可能会包含重复的值,这种情况下,如果需要查询不同的值的话,就需要用到DISTINCT。
表名:PERSON
NAME | SEX | AGE | SCORE | ADRESS | HEIGHT | WEIGHT |
---|---|---|---|---|---|---|
张三 | 男 | 22 | 90 | 辽宁 | 175 | 60 |
李四 | 男 | 21 | 93 | 陕西 | 178 | 70 |
王五 | 女 | 23 | 95 | 内蒙古 | 167 | 50 |
马六 | 男 | 22 | 98 | 河南 | 180 | 70 |
1.查询PERSON表中的体重
SELECT WEIGHT FROM PERSON;
结果如下:
HEIGHT |
---|
60 |
70 |
50 |
70 |
结果中体重为70的出现了两次,因为两个人体重都是70,如果要筛选不同的值,就要用DISTINCT
SELECT DISTINCT WEIGHT FROM PERSON;
结果如下:
HEIGHT |
---|
60 |
70 |
50 |
AND & OR 运算符
AND 和 OR 可在 WHERE 子语句中把多个条件结合起来:如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录;如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。
表名:CITY
NAMEA | NAMEB | ADDRESS | CITY |
---|---|---|---|
王 | 富贵 | 四合院 | 北京 |
张 | 老三 | 塔湾街 | 沈阳 |
罗 | 某人 | 塔湾街 | 沈阳 |
张 | 大爷 | 五道口 | 北京 |
1.查询叫张大爷的人的所有信息
SELECT * FROM CITY WHERE NAMEA = '张' AND NAMEB = '大爷';
结果如下:
NAMEA | NAMEB | ADDRESS | CITY |
---|---|---|---|
张 | 大爷 | 五道口 | 北京 |
网不好,不想写了,但是还得继续
2.查询姓张或名为老三的人的所有信息
SELECT * FROM CITY WHERE NAMEA = '张' OR NAMEB = '老三';
结果如下:
NAMEA | NAMEB | ADDRESS | CITY |
---|---|---|---|
张 | 老三 | 塔湾街 | 沈阳 |
张 | 大爷 | 五道口 | 北京 |
3.AND + OR 同时使用
作者太懒,自己体会结果的不同
SELECT * FROM CITY WHERE (NAMEB = '大爷' OR NAMEB = '老三')AND NAMEA='张';
结果如下:
NAMEA | NAMEB | ADDRESS | CITY |
---|---|---|---|
张 | 老三 | 塔湾街 | 沈阳 |
张 | 大爷 | 五道口 | 北京 |
BETWEEN *** AND ***
为什么用***呢,因为我想起来弹幕里的“我**你个大**了”
BETWEEN ... AND ...在WHERE 后面条件里使用 ,作用是取区间范围内的值,作用类似于>= 和 <= 的结合体。但注意!我说了注意!注意!注意!重要的事情说四遍,BETWEEN金额AND 的范围具体是>=还是>取决与你用的数据库,使用之前自己试试,别少查数据了,影响数据准确性,到时候被炒了鱿鱼。
表名:MESSAGE
NAME | ADDRESS | CITY | BIRTHDAY |
---|---|---|---|
王富贵 | 四合院 | 北京 | 1990-01-01 |
张老三 | 塔湾街 | 沈阳 | 1993-08-01 |
罗某人 | 塔湾街 | 沈阳 | 1996-06-01 |
张大爷 | 五道口 | 北京 | 1968-12-01 |
选取生日从1995到1997年的人
SELECT * FROM MESSAGE WHERE BIRTHDAY BETWEEN 1995-01-01 AND 1997-12-31;
/*老爹:还有一件事,生日字段要看字段类型是DATE还是VARCHAR,如果是VARCHAR的话还需要对字段进行处理*/
/*老爹:还有一件事,BETWEEN AND 不只是用于确定时间范围,还可以确定字段之间的范围*/
结果如下:
NAME | ADDRESS | CITY | BIRTHDAY |
---|---|---|---|
罗某人 | 塔湾街 | 沈阳 | 1996-06-01 |
字段的范围作者就不进行示范了,因为懒,想玩自己玩去吧
如果不在BETWEEN AND 范围之内,用NOT BETWEEN AND 比较方便,写法如下
SELECT * FROM TABLENAME WHERE DATETIME NOT BETWEEN BEGINTIME AND ENDTIME;
如果不想这么写,用>=或<=也行,你不嫌累我没话说,反正作者挺懒的。
IN操作符
在WHERE的条件里规定多个值,同理,不在这个值域内的就在前面加NOT,办公室挺冷的
2021年11月8日17:03:26
,就不一一举例了。
语法如下:
SELECT * FROM TABLENAME WHERE AGE IN (11,15,20);
/*年龄在11岁,15岁,20岁的*/
SELECT * FROM TABLENAME WHERE AGE NOT IN (11,15,20);
/*年龄不在11岁,15岁,20岁的*/
预知后事如何,请听下回分解