美文网首页
2018-10-25数据库基础

2018-10-25数据库基础

作者: 凡星点点5 | 来源:发表于2018-10-27 22:58 被阅读0次

模糊查询 like

    • select * from 表名 where like '%n%';
  • select * from 表名 where like '_';
  • like 只对 char varchar 字符型 进行模糊查询
  • 通配符
  • % 代表任意多个字符(0,n)
  • 代表任意一个字符 (1)

10 学生姓名 包含 马
10 SELECT * FROM gy_user WHERE realname LIKE '%马%';
11 学生姓名以吴开头
11 SELECT * FROM gy_user WHERE realname LIKE '吴%';
12 学生姓名包含 李
12 SELECT * FROM gy_user WHERE realname LIKE '%李%';
13 姓名包含静的学生
13 SELECT * FROM gy_user WHERE realname LIKE '%静%';
14 姓名是两个字符的学生
14 SELECT * FROM gy_user WHERE realname LIKE '';
15 姓名最后一位 是民的学生
15 SELECT * FROM gy_user WHERE realname LIKE '%民';
16 姓名第二位为 春的学生姓名
16 SELECT * FROM gy_user WHERE realname LIKE '
春%';
17 姓名只有三个字符的学生
17 SELECT * FROM gy_user WHERE realname LIKE '
__';
18 姓名是 马什么梅的
18 SELECT * FROM gy_user WHERE realname LIKE '马%梅';
19 姓名是 马东什么
19 SELECT * FROM gy_user WHERE realname LIKE '马东%';
20 姓名是 什么冬梅
20 SELECT * FROM gy_user WHERE realname LIKE '%冬梅';
24 姓名 不包含 什么康健
24 SELECT * FROM gy_user WHERE sname NOT LIKE ('%康健');
26 导师不包含 李什么
26 SELECT * FROM gy_user WHERE teacher NOT LIKE ('李%');
28 查询 公司名称 包含上海 或者地址在上海的
28 SELECT * FROM gy_user WHERE NAME LIKE'%上海%' OR address LIKE '%上海%';
29 查询 公司名称 包含阿里 地址在 上海金融中心的
29 SELECT * FROM gy_user WHERE NAME LIKE '%阿里%' AND address LIKE '%上海金融中心%';

14245353-c39d1ef625f7711e.png
  • not like 表示不包含


    14245353-e29f7b4431008d8f.png

null的使用

SELECT * FROM gy_user WHERE sname IS NULL ; -- 为空
SELECT * FROM gy_user WHERE sname IS NOT NULL; -- 不为空

in的使用

同一个字段有多个筛选条件,每个条件都需要用英文的逗号分隔开
SELECT * FROM 表名 WHERE 条件 IN (值1,值2,值3);


14245353-1c45a9dee7a6861c.png
14245353-ac412421a722111a.png
  • 对多个字段的多个筛选条件,每个条件都需要用英文的逗号进行分隔


    14245353-edd10d00e2ed60c9.png
  • 不能对null进行筛选
    21 查询学生id 是77 88 99 111
    21 SELECT * FROM gy_user WHERE id = 77 OR id=88 OR id=99 OR id =111;
    SELECT * FROM gy_user WHERE id IN (77,88,99,111);
    22 查询学生年龄 是 23 30
    22 SELECT * FROM gy_user WHERE age = 23 OR age =30;
    SELECT * FROM gy_user WHERE age IN (23,30);
    23 查询学生省份 是 安徽 重庆
    23 SELECT * FROM gy_user WHERE address = '安徽' AND address ='重庆';
    SELECT * FROM gy_user WHERE address IN ('安徽','重庆');
    25 编号 不在 05 10 15 20
    25 SELECT * FROM gy_user WHERE sno NOT IN (05,10,15,20);
    27 导师不在 李素云 马超 刘程旭
    27 SELECT * FROM gy_user WHERE teacher NOT IN ('李素云','马超','刘程旭');
    30 查询 公司地址 包含 重庆或者包含 成都 或者上海的
    30 SELECT * FROM gy_user WHERE address IN ('重庆','成都','上海');

排序 order by

  • order by 后面跟字段名 +升序/降序
    select * from 表名 order by (sno /age.....)asc/desc

  • 多个排序用 , 来进行分隔,优先运行前面的排序条件

    14245353-ef6ea3e3ffb3f0c7.png
    SELECT * FROM gy_user ORDER BY age ASC; -- 排序升序
    SELECT * FROM gy_user ORDER BY age DESC ; -- 排序降序
    SELECT * FROM gy_user WHERE age>18 ORDER BY age ASC;
    -- 以编号查询降序排序
    SELECT * FROM gy_user ORDER BY sno ASC;
    SELECT * FROM gy_user ORDER BY sno DESC;
    -- 带判断条件升序排序
    SELECT * FROM gy_user WHERE realname LIKE '%吴%' ORDER BY age ASC ;
    -- 30.查询真真实姓名的姓氏为张王李杨的学生,按照年龄倒序排序,只显示真实姓名,年龄
    SELECT realname,age FROM gy_user WHERE realname LIKE '张%'OR '王%'OR realname LIKE'李%'OR realname LIKE'杨%' ORDER BY age DESC;
    -- 35.查询用户表 姓名为单字的,对真实姓名去重,根据年龄倒序排序
    SELECT DISTINCT realname FROM gy_user WHERE realname LIKE '_' ORDER BY age DESC;
    -- 38.查询用户表年龄大于20,班级类型为1,以id倒叙排序,以年龄正序排序
    SELECT * FROM gy_user WHERE age>20 AND class_type = '1' ORDER BY sno DESC ,age ASC;

limit的使用

只能在mysql里面使用,oracle数据库中用 rownum,sqlSever数据中用top
限制限制条目数量
查询结果是以 0 为起始序号
格式 select * from 表名 limit n,m; (n表示起始位置,m表示展现m条数据)

14245353-092fdcb05b7b703b.png
-- 限制条目数
SELECT sno FROM gy_user WHERE sno>50 LIMIT 10,100;

去重 distinct

  • 语法: select distinct 字段名 from 表名
    -- 去重
    SELECT DISTINCT realname FROM gy_user;
    -- 31. 查询用户名包含guoya的用户,并且根据真实姓名去重
    SELECT DISTINCT realname FROM gy_user WHERE sname LIKE '%guoya%';
    -- 35.查询用户表 姓名为单字的,对真实姓名去重,根据年龄倒序排序
    SELECT DISTINCT realname FROM gy_user WHERE realname LIKE '_' ORDER BY age DESC;
    -- 40.查询用户编号100-500区间,微信号不为空,以年龄倒叙,用户名去重显示。
    SELECT DISTINCT sname FROM gy_user WHERE (sno BETWEEN 100 AND 500) AND weichat IS NOT NULL ORDER BY age DESC;

分组 group by

  • select 分组名,聚合函数(字段名) from 表名 group by 分组名 having 聚合函数(字段名) 条件
  • 对聚合函数过滤只能用having
  • 只能对展示分组字段和聚合函数
  • 聚合函数 count,sum,avg,max,min。
    14245353-a2cc76cd76b93cef.png
    14245353-b77b5715914500f5.png
    -- 统计条目数 count ()
    SELECT COUNT(sno) FROM gy_user;
    -- 统计最大 max ()
    SELECT MAX(sno) FROM gy_user;
    -- 统计最小 min ()
    SELECT MIN(sno) FROM gy_user;
    -- 统计平均值 avg ()
    SELECT AVG(sno) FROM gy_user;
    -- 求和 sum ()
    SELECT SUM(sno) FROM gy_user;

-- 求每一个班级的总年龄
SELECT SUM(age),class_type FROM gy_user GROUP BY class_type;
-- 求每一个班级的平均年龄
SELECT AVG(age),class_type FROM gy_user GROUP BY class_type;
-- 求每一个学历的最大年龄
SELECT MAX(age),education FROM gy_user GROUP BY education;
-- 求每一个学历的平均年龄
SELECT AVG(age),education FROM gy_user GROUP BY education;
-- 查询班级最大年龄大于32的班级
SELECT class_type,MAX(age) FROMgy_user GROUP BY class_type HAVING MAX(age)>32;
-- 查询各班级中平均年龄大于25的班级
SELECT class_type,AVG(age)FROM gy_user GROUP BY class_type HAVING AVG(age)>20;
-- 查询不同学历的各自人数
SELECT education ,COUNT(sno) FROM gy_user GROUP BY education;
-- 查询不同学历 最小年龄 小于30的学历
SELECT education ,MIN(age) FROM gy_user GROUP BY education HAVING MIN(age)<30;
-- 查询班级中平均年龄大于20的班级
SELECT class_type,AVG(age) FROM gy_user GROUP BY class_type HAVING AVG(age)>20;
-- 查询各班级中最小年龄大于2的班级
SELECT class_type,MIN(age) FROM gy_user GROUP BY class_type HAVING MIN(age)>2;
-- 查询各班级中平均年龄小于23的班级
SELECT class_type,AVG(age) FROM gy_user GROUP BY class_type HAVING AVG(age)<23;
-- 查询各班级中 年龄总和小于500的班级
SELECT class_type,SUM(age) FROM gy_user GROUP BY class_type HAVING SUM(age)<500;

14245353-a79684f8fca4719a.png
14245353-7ed08adbda42a9b0.png

相关文章

网友评论

      本文标题:2018-10-25数据库基础

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