• MYSQL介绍——排序分页与索引


    数据排序的好处

    • 一旦数据排序之后,查找的速度就会翻倍,现实世界和程序世界都是如此

    如何创建索引

    1. 创建数据表时就添加
      在这里插入图片描述
      给出示例:
    
    CREATE TABLE t_message (
    	id INT UNSIGNED PRIMARY KEY,
    	content VARCHAR ( 200 ) NOT NULL,
    	type ENUM ( "公告", "通报", "个人通知" ) NOT NULL,
    	create_time TIMESTAMP NOT NULL,
    INDEX idx_type ( type ) 
    );
    

    如何添加和删除索引

    在这里插入图片描述
    给出示例:

    DROP INDEX idx_type ON t_message;
    
    CREATE INDEX idx_type ON t_message(type);
    
    SHOW INDEX FROM t_message;
    
    ALTER TABLE t_message ADD INDEX idx_type(type) ;
    

    索引的使用原则

    • 数据量很大,经常被查询的数据表可以设置索引
    • 索引只添加在经常用作检索条件的字段上面
    • 不要在大字段上创建索引

    数据操作语言—简单查询

    最基本的查询是由SELECT 关键字和 FROM 关键字构成的,
    SELECT语句屏蔽了物理层的操作,用户不必关心数据的真
    实存储,交由数据库高效的查找数据
    

    给出一个示例语句:

    
    select * from t_emp;
    
    select empno,job from t_emp;
    
    SELECT empno,sal * 12 "income" FROM t_emp;
    
     如上最后一条sql语句所示,当sql语句中出现了表达式的时候,这一列的名字就默认为表达式,因此就需要一种对列名重命名的机制,此时我们可以使用 列名 AS 别名 或者是 列名 别名的方式重命名。
     需要注意的是,重命名只会在展示的时候使用,不会影响原本数据。
    

    查询语句的执行顺序

    我们需要了解sql的执行原理,首先它是会进行词法分析以及词法的优化,读取到SQL语句后因为FROM 优先级高于 SELECT ,所以会先选择数据来源,在选择输出内容。
    在这里插入图片描述

    数据分页

    比如我们查看朋友圈,只会加载少量部分信息,不用一次性加载全部朋友圈,那样只会浪费CPU时间、内存和网络带宽
    如果结果集的记录很多,则可以使用LIMIT关键字限定结果集数量。
    

    LIMIT关键字语法如下:

    SELECT …… FROM …… LIMIT 起始位置 , 偏移量 ;
    

    给出一个示例代码:

    SELECT empno,sal * 12 "income" FROM t_emp limit 0,10;
    

    另外limit语句有简写方式,如果LIMIT子句只有一个参数,它表示的是偏移量,起始值默认为0。
    例如:

    SELECT empno,sal * 12 "income" FROM t_emp limit 10;
    

    执行顺序:
    在这里插入图片描述

    数据排序

    如果不设置,那么查询的结果集是不会有排序的,如果我们想要对数据进行排序,就必须使用 ORDER BY 字句。

    SELECT …… FROM …… ORDER BY 列名 [ ASC | DESC ] ;
    

    给出一个示例:

    select * from t_emp order by sal desc;
    

    排序关键字

    ASC表示升序排列(默认升序),DESC表示降序排列。
    如果排序列是数字类型,数据库就按照数字大小排序,如果是日期
    类型就按照日期大小排序,如果是字符串就按照字符集序号排序。
    

    此时我们会有一个问题,就是如果按照升序或者降序排序,那么排序字段值相同的情况下,又该怎么排序呢,数据库针对这种排序字段值相同的情况,Mysql会按照主键值的大小来排序两条数据。

    多字段排序

    同时,Mysql支持多个字段排序,我们可以使用ORDER BY规定首要排序条件和次要排序条件。数据库会先按照首要排序条件排序,如果遇到首要排序内容相同的记录,那么就会启用次要排序条件接着排序。
    例如:下列sql会按照部门升序情况排序,当部门值相同时按照工资降序排序。

    select deptno,sal from t_emp order by  deptno asc,sal desc;
    

    效果如图:
    在这里插入图片描述

    排序加分页

    此时我们可以结合排序以及分页得到指定数据,例如查询工资最高的5个人的数据,例如:

    select * from t_emp order by sal limit 5;
    

    结果如图所示:

    在这里插入图片描述
    在这里插入图片描述

    去除重复记录

    mysql中去除重复记录使用DISTINCT关键字实现,例如我想要查询员工表中的职位信息,当未取除重复数据时,结果如下:
    在这里插入图片描述
    ,而我们需要去除时可以使用以下语句:

    select DISTINCT job from t_emp ;
    

    效果如下:
    在这里插入图片描述

    注意事项

    使用DISTINCT的SELECT子句中只能查询一列数据,如果查询多列,
    去除重复记录就会失效。
    例如,我执行下面这个语句时

    select DISTINCT job,ename from t_emp ;
    

    效果如下,可以看到job字段并没有去重,其实这个是因为它将job和ename两个字段组装后去重了
    在这里插入图片描述
    另外,DISTINCT字段在sql字句中只能使用一次,类似于下面的语句都是错误的

    select DISTINCT job, DISTINCT ename from t_emp ;
    
    select  job, DISTINCT ename from t_emp ;
    
  • 相关阅读:
    为什么要改变this指向?
    百度发布全新 AI 互动式搜索:百度简单搜索
    html简单案例
    搭建Android自动化python+appium环境
    Spring5应用之事务处理
    简单聊下STM32F103的串口
    Linux 命令行快键键
    Docker学习笔记(二)
    最高效面试八股文,平躺80%的企业
    数据库系统概论第一章简答题-期末考得怎么样?
  • 原文地址:https://blog.csdn.net/HBUT_WANGWEI/article/details/127096007