美文网首页
2018-09-20数据库基础

2018-09-20数据库基础

作者: 心若无情 | 来源:发表于2018-09-29 06:36 被阅读9次

数据库

一、模糊查询

  1. 只针对字符串类型
  • varchar
  • char


    image.png
  1. 模糊查询关键字(like)
  2. 通配符
  • % 代表任意多个字符(0,n)
SELECT * FROM `t_user_customer` WHERE customer_name LIKE '%静%';
  • _ 代表一个任意字符(1)
-- 16 姓名第二位为 春的学生姓名
SELECT * FROM `t_user_customer` WHERE customer_name LIKE '_春%';

二、非 not

SELECT * FROM `t_user_customer` WHERE customer_name NOT LIKE '%冬%';

三、in

  1. 同一个字段有多个筛选条件,每个条件都需要用英文的逗号分隔
  2. 对多个字段的多个筛选条件,每个条件都需要用英文的逗号分隔
  3. 不能对null进行筛选
-- 21 查询学生id 是77 88 99 111 
SELECT * FROM `t_user_customer` WHERE customer_id IN (77,88,99,111);
-- 22 查询学生年龄 是  23  30 
SELECT * FROM `t_user_customer` WHERE age IN (23,30);
-- 23 查询学生省份 是  安徽 重庆
SELECT * FROM `t_user_customer` WHERE province IN ('安徽','重庆');

四、排序

  1. 关键字 order by
  • 升序 asc
  • 降序 desc
-- 27 查询出所有学生的信息并对年龄字段进行升序排序
SELECT * FROM `t_user_customer` ORDER BY age ASC;
-- 28 查询出所有学生的信息并对年龄字段进行降序排序
SELECT * FROM `t_user_customer` ORDER BY age DESC;

五、limit

  1. 只能mysql使用
  2. 查询结果是以0为起始序号
  3. limit n,m(取需要展现的数据)
  • n表示起始位置
  • m表示展现m条数据
-- 33查询出年龄大于19岁的所有学生并以序号进行降序排序取前10条记录;
SELECT * FROM `t_user_customer` WHERE age >19 ORDER BY customer_id DESC LIMIT 0,10;
-- 34 查询出所有年龄最大的男同学
SELECT * FROM `t_user_customer` WHERE age = (SELECT age FROM `t_user_customer` WHERE sex = '0' ORDER BY age DESC LIMIT 1);

六、去重

  • 关键字 distinct
-- 35 查询出所有学生的年龄并去重
SELECT DISTINCT age FROM`t_user_customer`;

七、分组

  1. 关键字 group by
  2. 只能展示分组字段和聚合函数
  3. 聚合函数
  • 统计 count
-- 36统计出男生和女生人数
SELECT sex,COUNT(sex) FROM `t_user_customer` GROUP BY SEX;
  • 求和 sum
-- 36 统计出每门课的总成绩
SELECT cno,SUM(degree) FROM `scores` GROUP BY cno;
  • 平均 avg
-- 37 统计出每门课的平均成绩
SELECT cno,AVG(degree) FROM `scores` GROUP BY cno;
  • 最大 max
-- 38 统计出每门课的最大成绩
SELECT cno,MAX(degree) FROM `scores` GROUP BY cno;
  • 最小 min
-- 39 统计出每门课的最小成绩
SELECT cno,MIN(degree) FROM `scores` GROUP BY cno;
  1. having
  • 对聚合函数过滤只能用having
-- 41 统计出选修人数少于两人的课程
SELECT cno,COUNT(cno) FROM `scores` GROUP BY cno HAVING COUNT(cno) <2;
-- 1.  精确查询 学生姓名为 马冬梅的学生
SELECT customer_name FROM `t_user_customer` WHERE customer_name = 马冬梅;
-- 2. 查询学生编号 大于60的
SELECT * FROM `t_user_customer` WHERE customer_id > 60;
-- 3. 查询学生 年龄大于20的
SELECT * FROM `t_user_customer` WHERE age > 20;
-- 4. 查询学生姓名为 钱璟的
SELECT * FROM `t_user_customer` WHERE customer_name = 钱璟;
-- 5. 查询学生性别为女的
SELECT * FROM `t_user_customer` WHERE sex = '1';
-- 6. 查询编号小于 110的学生
SELECT * FROM `t_user_customer` WHERE customer_id < '110';
-- 7. 年龄不等于23 的学生信息
SELECT * FROM `t_user_customer` WHERE  age != '23';
-- 8. 学生姓名不等于 张子栋  只显示学生 编号 姓名
SELECT customer_id,customer_name FROM `t_user_customer` WHERE customer_name <> '张子栋';
-- 9. 学生省份为重庆的  只显示 学生编号 姓名 省份
SELECT customer_id,customer_name,province FROM `t_user_customer` WHERE province = '重庆';
-- 查询姓名中不包含冬的学生信息
SELECT * FROM `t_user_customer` WHERE customer_name NOT LIKE '%冬%'
-- 10 学生姓名 包含 马
SELECT * FROM `t_user_customer` WHERE customer_name LIKE '%马%';
-- 11 学生姓名以吴开头
SELECT * FROM `t_user_customer` WHERE customer_name LIKE '吴%';
-- 12 学生姓名包含  李
SELECT * FROM `t_user_customer` WHERE customer_name LIKE '%李%';
-- 13  姓名包含静的学生
SELECT * FROM `t_user_customer` WHERE customer_name LIKE '%静%';
-- 14  姓名是两个字符的学生
SELECT * FROM `t_user_customer` WHERE customer_name LIKE '__';
-- 15  姓名最后一位 是民的学生
SELECT * FROM `t_user_customer` WHERE customer_name LIKE '%民';
-- 16 姓名第二位为 春的学生姓名
SELECT * FROM `t_user_customer` WHERE customer_name LIKE '_春%';
-- 17 姓名只有三个字符的学生
SELECT * FROM `t_user_customer` WHERE customer_name LIKE '___';
-- 18 姓名是 马什么梅的
SELECT * FROM `t_user_customer` WHERE customer_name LIKE '马_梅';
-- 19 姓名是 马东什么
SELECT * FROM `t_user_customer` WHERE customer_name LIKE '马冬_';
-- 20 姓名是 什么冬梅
SELECT * FROM `t_user_customer` WHERE customer_name LIKE '_冬梅';

-- 查询姓名中不包含冬的学生信息
SELECT * FROM `t_user_customer` WHERE customer_name NOT LIKE '%冬%';
-- 21 查询学生id 是77 88 99 111 
SELECT * FROM `t_user_customer` WHERE customer_id IN (77,88,99,111);
-- 22 查询学生年龄 是  23  30 
SELECT * FROM `t_user_customer` WHERE age IN (23,30);
-- 23 查询学生省份 是  安徽 重庆
SELECT * FROM `t_user_customer` WHERE province IN ('安徽','重庆');

-- 查询年龄是23省份是重庆或者年龄是29省份是安徽的所有学生信息
SELECT * FROM `t_user_customer` WHERE ( age = 23 AND province = '重庆')  OR ( age = 29 AND province = '安徽');
SELECT * FROM `t_user_customer` WHERE (age,province) IN ((23,'重庆'),(29,'安徽'));

-- 25 查询年龄不为23且省份不是重庆的所有学生信息;
SELECT * FROM `t_user_customer` WHERE age <> 23 AND province != '重庆';
-- 26 查询年龄不为23且省份不是重庆或者年龄不为29且省份不是安徽的所有学生信息;
SELECT * FROM `t_user_customer` WHERE (age,province) NOT IN ((23,'重庆'),(29,'安徽'));

-- 28 查询23岁重庆人之外的所有学生
SELECT * FROM `t_user_customer` WHERE (age,province) NOT IN ((23,'重庆'));
-- 27 查询出所有学生的信息并对年龄字段进行升序排序
SELECT * FROM `t_user_customer` ORDER BY age ASC;
-- 28 查询出所有学生的信息并对年龄字段进行降序排序
SELECT * FROM `t_user_customer` ORDER BY age DESC;
-- 29 查询出年龄大于19岁的所有学生并以序号进行升序排序;
SELECT * FROM `t_user_customer` WHERE age >19 ORDER BY age ASC;
-- 30 查询出年龄大于19岁的所有学生并以序号进行降序排序;
SELECT * FROM `t_user_customer` WHERE age >19 ORDER BY age DESC;
-- 31 查询出年龄大于19岁的所有学生并以年龄进行降序排序 如果有年龄相同的,以序号升序排序
SELECT * FROM `t_user_customer` WHERE age >19 ORDER BY age DESC,customer_id ASC;
-- 32 查询出性别为男的所有学生,并按照年龄降序排序,若有年龄相同的则以创建时间进行升序排序
SELECT * FROM `t_user_customer` WHERE sex = '0' ORDER BY age DESC, create_time ASC;
-- 33查询出年龄大于19岁的所有学生并以序号进行降序排序取前10条记录;
SELECT * FROM `t_user_customer` WHERE age >19 ORDER BY customer_id DESC LIMIT 0,10;
-- 34 查询出所有年龄最大的男同学
SELECT * FROM `t_user_customer` WHERE age = (SELECT age FROM `t_user_customer` WHERE sex = '0' ORDER BY age DESC LIMIT 1);
-- 35 查询出所有学生的年龄并去重
SELECT DISTINCT age FROM`t_user_customer`;
-- 36统计出男生和女生人数
SELECT sex,COUNT(sex) FROM `t_user_customer` GROUP BY SEX;

-- 36 统计出每门课的总成绩
SELECT cno,SUM(degree) FROM `scores` GROUP BY cno;
-- 37 统计出每门课的平均成绩
SELECT cno,AVG(degree) FROM `scores` GROUP BY cno;
-- 38 统计出每门课的最大成绩
SELECT cno,MAX(degree) FROM `scores` GROUP BY cno;
-- 39 统计出每门课的最小成绩
SELECT cno,MIN(degree) FROM `scores` GROUP BY cno;
-- 40 统计出每门课程的总人数
SELECT cno,COUNT(sno) FROM `scores` GROUP BY cno;
-- 41 统计出选修人数少于两人的课程
SELECT cno,COUNT(cno) FROM `scores` GROUP BY cno HAVING COUNT(cno) <2;
-- 42 统计出成绩不及格的学生
SELECT sno,MIN(degree) FROM `scores` GROUP BY sno HAVING MIN(degree) <60;
-- 43 统计出全部成绩都不及格的学生c 
SELECT sno,MAX(degree) FROM `scores` GROUP BY sno HAVING MAX(degree) <60;
数据库基础.jpg

相关文章

网友评论

      本文标题:2018-09-20数据库基础

      本文链接:https://www.haomeiwen.com/subject/hwvnnftx.html