美文网首页
4.DQL:SELECT *

4.DQL:SELECT *

作者: LucXion | 来源:发表于2023-04-15 21:43 被阅读0次
    检索数据的几种方式
    SELECT name FROM table_name; 
    SELECT name , age FROM table_name; // 查询多列
    SELECT name AS n , age AS a FROM table_name; // 获取数据时列名转别名
    SELECT '常' AS platform ,name FROM table_name; // 增加固定列名固定值
    SELECT * FROM table_name; // 查询所有列名
    
    查询语句更多约束条件:
    SELECT DISTINCT attack_range FROM heros; // DISTINCT 去重
    SELECT DISTINCT attack_range, name FROM heros; // 只有两个条件都一致才会去重
    SELECT name, hp_max FROM heros ORDER BY hp_max DESC; // ORDER BY排序, DESC从高到低,降序。ASC 升序。多个条件排序,条件1相同后才开始对比条件2,字符串排序跟DBMS有关。
    SELECT name, hp_max FROM heros ORDER BY hp_max ASC LIMIT 2;// LIMIT 约束返回数量
    SELECT name, hp_max FROM heros WHERE hp_max < 5500 ORDER BY hp_max ASC LIMIT 2 
    
    进阶:
    
    SELECT DISTINCT player_id, player_name, count(*) as num #顺序5
    FROM player JOIN team ON player.team_id = team.team_id #顺序1
    WHERE height > 1.80 #顺序2
    GROUP BY player.team_id #顺序3
    HAVING num > 2 #顺序4
    ORDER BY num DESC #顺序6
    LIMIT 2 #顺序7
    

    关键字顺序:
    SELECT ... FROM ... WHERE ... GROUP BY ... HAVING ... ORDER BY ...
    查询语句执行顺序:
    FROM > WHERE > GROUP BY > HAVING > SELECT的字段 > DISTINCT > ORDER BY > LIMIT

    提升检索效率的两个常用方法:

    1. 避免使用SELECT *,更多的通过需要的字段名称来检索数据
    2. 如果确定返回的条目数量,多使用Limit关键字
    查询过滤
    SELECT name, role_main, role_assist, hp_max, mp_max, birthdate FROM heros WHERE (role_main IN ('法师', '射手') OR role_assist IN ('法师', '射手')) AND DATE(birthdate) NOT BETWEEN '2016-01-01' AND '2017-01-01'ORDER BY (hp_max + mp_max) DESC
    
    1. where 在 from 后面。
    2. select后面的字段用,隔开
    3. 如果语句中有count (*) ,conunt是聚集函数,只会返回一条结果数据,count(*)在from前。
    4. order by 在最后
    5. where + 包含关系,用 IN 关键字
    6. where 判断时间范围,使用时间函数 date , 结合 between-and 使用(时间格式必须是 yyyy-mm-dd)
    7. like 通配符
    通配符
    SELECT name FROM heros WHERE name LIKE '%太%'; // 通配符,%%,只要包含了中间字段的就满足条件
    SELECT name FROM heros WHERE name LIKE '_%太%'; // _代表忽略,忽略第一个字段,用后面的字段进行比较,只有后面的字段包含才满足条件
    SELECT name FROM heros WHERE name LIKE '___%太%';// 三个下划线 = 忽略前面三个字段
    

    相关文章

      网友评论

          本文标题:4.DQL:SELECT *

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