where查询数据的条件
3.条件查询:
语法: select 字段 from 表名 where 字段=值; (条件)<br />
例子1:查询出猫叔的测试基础得分和QTP得分
例子2:查询出女同学的python得分
练习:
— 查询出张三的测试基础得分
— 查询出女同学的sql得分
— 查询出猫叔的python和qtp得分
— 查询出考试时间是2017-12-23号的人员年龄
— 查询考试时间是2017年的人员
— 查询考试时间是12月的人员
— 查询考试时间是23日的人员
答案:
— 查询出张三的测试基础得分
select 测试基础得分 from 慧慧软件测试考试分数表 where 姓名=’张三’;
— 查询出女同学的sql得分
select SQL得分 from 慧慧软件测试考试分数表 where 性别=’女’;
— 查询出猫叔的python和qtp得分
select Python得分,QTP得分 from 慧慧软件测试考试分数表 where 姓名=’猫叔’;
— 查询出考试时间是2017-12-23号的人员年龄
select 年龄 from 慧慧软件测试考试分数表 where 考试时间=’2017-12-23’;
— 查询考试时间是2017年的人员
select from 慧慧_软件测试考试分数表 where year(考试时间)=2017;
— 查询考试时间是12月的人员
select from 慧慧软件测试考试分数表 where month(考试时间)=12;
— 查询考试时间是23日的人员
select * from 慧慧软件测试考试分数表 where day(考试时间)=23;
4.and 和 or:
and: <br /> 说明: 表示条件和条件之间缺一不可<br /> 语法: select 字段 from 表名 where 字段1=值 and 字段2=值;<br /> or: 或 <br /> 说明:表示条件和条件之间满足其一即可<br />**例1:查询出SQL是100分并且测试基础100分的同学姓名**<br /><br />**例2:查询出所有Python得分或QTP得分59分的同学**<br />
5. = > < >= <= !=(不等于)
例:1:查询出python得分不等于59分的人员的年龄
例子2:查询出sql得分小于60分的人员姓名
练习:
— 查询出张三的每一科考试得分
— 查询出sql得分大于60的男同学姓名
— 查询出21岁或者qtp满分的人员编号
— 查询出5号同学的性别和python得分
— 查询出SQL考试不及格的同学姓名
— 查询出年龄20岁以上,包含20的同学姓名
— 查询出考试时间在2017-12-24之前的学员姓名
答案:
— 查询出张三的每一科考试得分
select SQL得分,Python得分,QTP得分,测试基础得分 from 慧慧软件测试考试分数表 where 姓名=’张三’;
— 查询出sql得分大于60的男同学姓名
select 姓名 from 慧慧软件测试考试分数表 where SQL得分>60 and 性别=’男’;
— 查询出21岁或者qtp满分的人员编号
select id from 慧慧软件测试考试分数表 where 年龄=21 or QTP得分=100;
— 查询出5号同学的性别和python得分
select 性别,Python得分 from 慧慧软件测试考试分数表 where id=5;
— 查询出SQL考试不及格的同学姓名
SELECT 姓名 from 慧慧_软件测试考试分数表 where SQL得分<60;
— 查询出年龄20岁以上,包含20的同学姓名
SELECT 姓名 from 慧慧_软件测试考试分数表 where 年龄>=20;
— 查询出考试时间在2017-12-24之前的学员姓名
SELECT 姓名 from 慧慧_软件测试考试分数表 where 考试时间<’2017-12-24’;
6.like 模糊查询
通配符: % : 匹配0到多个字符<br /> _ :代表匹配1个字符 查询出名字是四个字,且第三个是猫的同学年龄 '__猫_'
例1:查询SQL得分91分的名字姓赵的同学
例2:查询出姓猫的同学年龄
例3:查询出名字中包含猫的同学年龄
笔头练习:
1、查询成绩表中,成绩不等于100的人员所有信息
2、查询成绩表中 ,姓名含’飞’字的所有信息
3、查询 成绩表中,姓名为2个字,姓为赵的同学的所有信息
4、在成绩表中 查找 分数 > 60 并且姓 赵 的所有人员信息
5、在成绩表中 查找 分数 > 60 或者 姓名是 三个字 的人员 所有信息
6、查找成绩表中 姓氏不为赵的其他所有成员信息
7. in 匹配多个值
语法: select * from 表名 where 字段 in (值1,值2)<br /> 等同于: select * from 表名 where 字段 = 值1 or 字段 = 值2;<br /> 使用in,一定要满足字段唯一
例:查询出python得分等于100或者等于59的人姓名
笔头练习:
1、查询 成绩表中,成绩为80 或者 90 或者100 的人员信息
2、查询学生表中,姓名为 张三 或 李四
8. between…and… 在。。。之间
语法: select * from 表名 where 字段 between...and...;<br /> 例子: 查询分数在60和80之间的人员编号<br /> select s_id from 表名 where s_score between 60 and 80;<br /> 等同于:<br /> select s_id from 表名 where s_score >=60 and s_score <=80;
例:查询出sql得分在80到100之间的人员姓名,包含80,100
练习:
— 1、查询出所有学生的姓名
— 2、查询出所有学生的姓名和性别
— 4、查询出成绩大于80分的学生编号,成绩
— 5、查询出成绩等于80分的学生编号,成绩
— 6、查询出成绩不超过80分的学生编号,成绩
— 7、查询出成绩不低于80分的学生编号,成绩
— 8、查询出成绩低于80分的学生编号,成绩
— 9、查询出成绩在60到80分之间的学生编号,成绩
— 10、查询出姓王的学生
— 11、查询出姓名中包含兰字的学生
— 12、查询出姓名中第二个字为风字的学生
— 13、查询出不姓王的女学生
— 14、查询出成绩不在60到80分之间的学生
学生表 student
成绩表score

— 1、查询出所有学生的姓
SELECT sname FROM student;
— 2、查询出所有学生的姓名和性别
SELECT s_name, s_sex FROM student;
— 3、查询出学生表全部信息
SELECT FROM student;
— 4、查询出成绩大于80分的学生编号,成绩
SELECT s_id, s_score FROM score WHERE s_score > 80;
— 5、查询出成绩等于80分的学生编号,成绩
SELECT s_id, s_score FROM score WHERE s_score = 80;
— 6、查询出成绩不超过80分的学生编号,成绩
SELECT s_id, s_score FROM score WHERE s_score <= 80;
— 7、查询出成绩不低于80分的学生编号,成绩
SELECT s_id, s_score FROM score WHERE s_score >= 80;
— 8、查询出成绩低于80分的学生编号,成绩
SELECT s_id, s_score FROM score WHERE s_score < 80;
— 9、查询出成绩在60到80分之间的学生编号,成绩
SELECT s_id, s_score FROM score WHERE s_score BETWEEN 60 AND 80;
— 10、查询出姓王的学生
SELECT FROM student WHERE s_name LIKE “王%”;
— 11、查询出姓名中包含兰字的学生
SELECT FROM student WHERE s_name LIKE “%兰%”;
— 12、查询出姓名中第二个字为风字的学生
SELECT FROM student WHERE s_name LIKE “风%”;
— 13、查询出不姓王的女学生
SELECT FROM student WHERE s_name NOT LIKE “王%” AND s_sex = ‘女’;
— 14、查询出成绩不在60到80分之间的学生
SELECT FROM score WHERE s_score NOT BETWEEN 60 AND 80;
9. distinct 去重,给某个字段去重
语法: select distinct (字段) from 表名 where 条件;<br /> distinct要紧接着select后使用<br /> 说明: 去重只能给单个字段进行去重,如果需要给多个字段去重,要保证每个字段的值都相同<br /> <br />**例:对score成绩表进行s_id去重**<br /> <br />笔头练习:<br />1、查询 students 表中 科目 要求去重<br />2、查询 students 表中 的性别(去重)
10. limit 显示前n行数据
1.第一种用法 <br /> limit n (n具体的数字) 取查询内容的前n行<br /> 语法 : select * from 表名 where 条件 limit n;<br />**例:查询学生表的前三行**<br /> 2.第二种用法<br /> select * from 表名 where 条件 limit m,n;<br /> limit m,n(m n具体的数字)表示从指定位置开始,往后数<br /> m: m+1 代表起始位(从m+1开始取)<br /> n: n 代表具体的条数(要多少行数据)<br />**例:学生表中从第三位开始取,取3条**<br />** 2+1是起始位,3是具体条数**<br />  <br />**例:**limit 6,4代表,从第7行开始取,取4行, 7、8、9、10<br /> 取4、5、6、7、8 limit 3,5SELECT * from students LIMIT 2,5;<br /> -- 从第2+1行开始,往后数5行<br /> select * from students limit 1,3<br /> -- 从第1+1行开始,往后数3行
11. is null 和 is not null
注意:where条件后想要筛选值为空或不为空的时候,需要用 is
语法: select from 表名 where 字段 is null
select from 表名 where 字段 is not null;
例1:查询python得分为不为空的同学的编号 
例2:查询python得分为空的同学的编号
笔头练习:
1、查询学生表中,年龄为空的数据
2、查询成绩表中,语文成绩不为空的数据
练习:
— 5. 查询出所有信息,只显示前两条数据
— 6. 查询信息,但只显示姓名和各科考试成绩,取第2和第3条数据
— 8. 查询出Jeremy老师的所有记录
— 9. 查询出除李四以外的所有童鞋的信息记录
— 10. 查询出SQL得分是满分的学员
— 11. 查询出所有SQL考试及格的学员的姓名
— 12. 查询出Python考试不及格的学员,只显示Python的得分
— 13. 查询出20岁以上(含)的学员
— 14. 查询出考试时间在2017年12月24日之前(含)的所有学员的姓名
答案:
— 5. 查询出所有信息,只显示前两条数据
select from 慧慧软件测试考试分数表 limit 2;
— 6. 查询信息,但只显示姓名和各科考试成绩,取第2和第3条数据
select 姓名,SQL得分,Python得分,QTP得分,测试基础得分 from 慧慧软件测试考试分数表 limit 1,2;
— 8. 查询出Jeremy老师的所有记录
select from 慧慧软件测试考试分数表 where 姓名 = ‘Jeremy’;
— 9. 查询出除李四以外的所有童鞋的信息记录
select * from 慧慧软件测试考试分数表 where 姓名 != ‘李四’;
— 10. 查询出SQL得分是满分的学员
select from 慧慧软件测试考试分数表 where SQL得分 = 100;
— 11. 查询出所有SQL考试及格的学员的姓名
select 姓名 from 慧慧软件测试考试分数表 where SQL得分 >= 60;
— 12. 查询出Python考试不及格的学员,只显示Python的得分
select Python得分 from 慧慧_软件测试考试分数表 where Python得分 < 60;
— 13. 查询出20岁以上(含)的学员
select from 慧慧软件测试考试分数表 where 年龄 >= 20;
— 14. 查询出考试时间在2017年12月24日之前(含)的所有学员的姓名
select 姓名 from 慧慧软件测试考试分数表 where 考试时间 <= ‘2017-12-24’;
order by 查询条件排序
语法: select * from 表名 where 条件 order by 字段 asc; 升序 (越来越大)<br /> select * from 表名 where 条件 order by 字段 desc; 降序(越来越小)<br /> order by 排序 升序/降序 asc/desc 如果是升序:asc可以省略 如果是降序:不可省略desc
当排序有问题的时候,检查建表时的数据类型,是否是int。
例:查询出考试人员的姓名和SQL得分,并按照SQL的从低到高排序
例:查询出考试人员的姓名和SQL得分,并按照SQL的从高到低排序
顺序注意:
select 字段
from 表名
where 条件
order by 排序字段
limit n;
练习:

— 查询出名字是张三且性别为男或名字是赵六或年龄是65岁的人员对应的SQL得分,并按照SQL得分降序排列显示结果的2-3行。
答案:
select 姓名,SQL得分
from 慧慧_软件测试考试分数表
where 姓名 = ‘张三’ and 性别 = ‘男’ or 姓名 = ‘赵六’ or 年龄 = 65
order by SQL得分 desc
limit 1,2;
多个字段排序:
笔头练习:
1、将students 表中的数据 按照 score 从大到小进行 排序, 如果score一样,按照年龄从小到大排序;
2、将students 表中的数据 按照 score 从大到小进行 排序, 如果score一样,按照年龄从小到大排序,如果年龄一样,id 升序;
修改数据:update
语法:update 表名 set 字段=值;<br /> update students set score=60 where username='林冲' and course = '体育';
练习:
香水表:
— 1、我希望筛选出价格在300到500之间的香水
— 2、我不希望表格内显示价格区间在200~300之间的香水
— 3、查询出价格在588和698区间之外的所有香水,要求只显示系列,适合人群和价格
— 4、我希望快速查询出以5开头价格的香水
— 5、我不确定有没有包含“LG”字母的香水品牌,我想使用SQL查查看
— 6、查询出价格以8结尾的所有香水的品牌和系列
— 7、查询出美国品牌的男士香水的所有信息
— 8、查询出适合男士或者男女通用的香水的所有信息
— 9、查询出CK旗下的男香或任何价格大于1000的香水
— 10、使用IN操作符查询出日本、意大利和法国的香水
— 11、查询所有香水表信息并以Id号降序排列
答案:
CREATE TABLE 香水表
(
idp INT PRIMARY KEY, — INT类型+主键
品牌 VARCHAR(50) NOT NULL, — VARCHAR类型+非空约束
系列 VARCHAR(100) NOT NULL UNIQUE, — VARCHAR类型+非空约束+唯一约束
原产地 VARCHAR(20) NULL, — VARCHAR类型+允许空值
适合人群 VARCHAR(10), — VARCHAR类型+允许空值(可以不填)
_50ML双11价 INT
);
— 插入数据到指定表(不指定列的方式)
INSERT INTO 香水表 VALUES (1, ‘迪奥’, ‘真我’, ‘法国’, ‘女’,588);
— 插入数据到指定表(指定列的方式)
INSERT INTO 香水表 VALUES (2, ‘Dior’, ‘Miss Dior’, ‘法国’,’女’,588);
— 插入数据到指定表(任务4的学员实战)
INSERT INTO 香水表 VALUES ( 3, ‘Dior’ , ‘毒药’, ‘法国’, ‘女’,418);
INSERT INTO 香水表 VALUES ( 4, ‘香奈儿’ , ‘五号’, ‘美国’, ‘女’,1198);
INSERT INTO 香水表 VALUES ( 5, ‘CHANEL’ , ‘Miss Coco’, ‘美国’, ‘女’,698);
INSERT INTO 香水表 VALUES ( 6, ‘CHANEL’ , ‘邂逅’, ‘美国’, ‘女’,698);
INSERT INTO 香水表 VALUES ( 7, ‘巴宝莉’ , ‘Weekend’, ‘英国’, ‘通用’,359);
INSERT INTO 香水表 VALUES ( 8, ‘Burberry’ , ‘英伦’, ‘英国’, ‘男’,399);
INSERT INTO 香水表 VALUES ( 9, ‘菲拉格慕’ , ‘梦中情人’, ‘意大利’, ‘女’,278);
INSERT INTO 香水表 VALUES ( 10, ‘Ferragamo’ , ‘非我莫属’, ‘意大利’, ‘男’,318);
INSERT INTO 香水表 VALUES ( 11, ‘CK’ , ‘One’, ‘美国’, ‘通用’,199);
INSERT INTO 香水表 VALUES ( 12, ‘CK’ , ‘One SUMMER’, ‘美国’, ‘男’,269);
INSERT INTO 香水表 VALUES ( 13, ‘CK’ , ‘IN2U for her’, ‘美国’, ‘女’,199);
INSERT INTO 香水表 VALUES ( 14, ‘CK’ , ‘Free’, ‘美国’, ‘男’,238);
INSERT INTO 香水表 VALUES ( 15, ‘纪梵希’ , ‘Dance舞动女士’, ‘法国’, ‘女’,500);
INSERT INTO 香水表 VALUES ( 16, ‘VERSACE’ , ‘同名系列’, ‘意大利’, ‘男’,400);
INSERT INTO 香水表 VALUES ( 17, ‘宝格丽’ , ‘绅士’, ‘意大利’, ‘男’,300);
INSERT INTO 香水表 VALUES ( 18, ‘BVLGARI’ , ‘碧蓝’, ‘意大利’, ‘男’,350);
— 1、我希望筛选出价格在300到500之间的香水
SELECT 品牌,50ML双11价
FROM 香水表
WHERE 50ML双11价 between 300 AND 500;
— 2、我不希望表格内显示价格区间在200~300之间的香水
SELECT FROM 香水表
WHERE 50ML双11价 NOT between 200 AND 300;
— 3、查询出价格在588和698区间之外的所有香水,要求只显示系列,适合人群和价格
SELECT 系列, 适合人群, 50ML双11价
FROM 香水表
WHERE 50ML双11价 NOT between 588 AND 698;
— 4、我希望快速查询出以5开头价格的香水
SELECT FROM 香水表
WHERE 50ML双11价 LIKE ‘5%’;
— 5、我不确定有没有包含“LG”字母的香水品牌,我想使用SQL查查看
SELECT 品牌 FROM 香水表
WHERE 品牌 LIKE ‘%LG%’;
— 6、查询出价格以8结尾的所有香水的品牌和系列
SELECT 品牌, 系列 FROM 香水表
WHERE 50ML双11价 LIKE ‘%8’;
— 7、查询出美国品牌的男士香水的所有信息
SELECT FROM 香水表
WHERE
原产地 = ‘美国’ AND
适合人群 = ‘男’;
— 8、查询出适合男士或者男女通用的香水的所有信息
SELECT FROM 香水表
WHERE 适合人群 = ‘男’ AND 适合人群 = ‘通用’;
— 9、查询出CK旗下的男香或任何价格大于1000的香水
SELECT FROM 香水表
WHERE
50ML双11价 > 1000 or 品牌 = ‘CK’ AND 适合人群 = ‘男’;
— 10、使用IN操作符查询出日本、意大利和法国的香水
SELECT FROM 香水表
WHERE 原产地 IN (‘日本’, ‘意大利’, ‘法国’);
— 11、查询所有香水表信息并以Id号降序排列
SELECT *FROM 香水表
ORDER BY id_p DESC;
