day49数据库 索引 事务

news2024/11/20 3:30:10

一、索引

  1. 什么是索引:索引是数据库库中用来提高查询效率的技术,类似于目录

  2. 为什么要使用索引:如果不使用索引,数据会零散的保存在磁盘块中,查询数据需要遍历每一个磁盘块,直到找到数据为止,效率低下。使用索引以后会会将磁盘块以树状结构保存,查询数据的时候会大大的降低磁盘块的访问次数,从而提高查询效率

  3. 有索引就一定好吗?如果数据库表中的数据很少,使用索引反而会降低查询效率

  4. 索引是不是越多越好?不是,因为索引会占用磁盘空间,只针对查询时常用的字段创建索引。

  5. 导入数据 item2.sql

  6. 导入完成之后

    • show tables; 查看是否有item2这张表

    • select count(*) from item2; 172万8千多

    • 测试查询耗时

      select * from item2 where title='100';  //耗时0.622
      ​
      select count(*) from item2; //0.327
  7. 如何创建索引

    语法: create index  索引名  on  item(字段(字段长度))
    ​
    代码:create index index_item_title on item2(title);
    • 测试查询效率

      select * from item2 where title='100';  //耗时0.009
      ​
      select count(*) from item2; // 耗时0.399
  8. 查看索引

    语法:show index from 表名;
    代码:show index from item2; 
  9. 删除索引

    语法:drop index 索引名 表名;
    代码: drop index index_item_title  on item2;
  10. 索引的分类

    • 聚集索引:通过主键创建索引称之为聚集索引,聚集索引中保存数据,只要给表添加主键约束,则会自动的创建聚集索引

    • 非聚集索引:通过非主键字段创建的索引称之为非聚集索引,非聚集索引中没有数据

  11. 复合索引

    • 通过多个字段创建的索引称之为符合索引

      语法: create index 索引名 on 表名(字段1,字段2);
      代码:create index index_item_price_title on item2(title,price);
    索引总结
    1. 索引是用来提高查询效率的技术,类似目录

    2. 因为索引会占用磁盘空间,所以不是越多越好

    3. 因为数据量小的时候使用索引会降低查询效率所以不是有索引就一定好

    4. 分类:聚集索引,非聚集索引

    5. 通过多个字段创建的索引称之为符合索引

    二、事务

    1. 什么是事务:数据库中执行同一业务需要多条SQL语句指定的工作单元,可以保证全部执行成功或者全部失败

    2. 事务的ACID特性(一原持久隔离))

      • Atomicty : 原子性: 最小不可拆分,保证全部成功或者全部失败

      • Consistency: 一致性,保证事务从一个一致状态到另一个一致状态

      • Isolation:隔离性 ,多个事务之间互不影响

      • Durablity:持久性,事务提交之后数据保存到数据库文件中永久生效

    3. 事务相关的SQL

      • 开启事务:begin

      • 回滚事务:rollback;

      • 提交事务: commit

      • 设置回滚点:savepoint s1;

      • 回滚到回滚点 :rollback to s1;

      • 查看自动提交状态: show variables like '%autocommit%'

      • 修改自动提交状态 : set autocommit=on/off

    三、group_concat()函数

    1. 查询每一个部门所有员工的姓名和工资

      SELECT
          deptno,group_concat(ename,':',sal)
      FROM
          emp
      GROUP BY
          deptno
      ​
    2. 查询每个部门的员工姓名,要求每个部门只能显示一行

      SELECT
          deptno,group_concat(ename)
      FROM
          emp
      GROUP BY
          deptno

    四、笔试题

    1. 创建学生成绩表 student(id主键,name姓名,subject学科,score成绩)

      create table student(
          id int primary key auto_increment,
          name varchar(50),
          subject varchar(50),
          core int
      );

    2. 保存以下数据

      张三 语文 66
      张三 数学 77
      张三 英语 55
      张三 体育 77
      ​
      李四 语文 59
      李四 数学 88
      李四 英语 78
      李四 体育 95
      ​
      王五 语文 75
      王五 数学 98
      王五 英语 54
      王五 体育 88
      ​
      insert into student values
      (null,'张三', '语文',66),
      (null,'张三', '数学', 77),
      (null,'张三', '英语' ,55),
      (null,'张三', '体育', 77),
      (null,'李四', '语文', 59),
      (null,'李四', '数学', 88),
      (null,'李四', '英语', 78),
      (null,'李四', '体育' ,95),
      (null,'王五', '语文', 75),
      (null,'王五', '数学', 98),
      (null,'王五', '英语', 54),
      (null,'王五', '体育', 88);
    3. 查询每个人的平均分,从大到小排序

      SELECT
          name,avg(core) a
      FROM
          student
      GROUP BY 
          name
      ORDER BY
          a desc;

    4. 查询每个人的名字,科目和成绩一行显示出来

      SELECT
          name,group_concat(subject,':',core)
      FROM
          student
      GROUP BY
          name

    5. 查询每个人的最高分和最低分

      SELECT
          name,max(core),min(core)
      FROM
          student
      GROUP BY
          name

    6. 查询每个人的名字,不及格的科目以及分数,不及格的科目数量一行显示

      SELECT 
          name,group_concat(subject,':' ,core),count(*)
      FROM
          student
      WHERE
          core<60
      GROUP BY
          name
    7. 行专列计算每门课的总成绩( sum(if()) )

      SELECT
          ifnull(name,'总成绩') as name,
          sum(if(subject='语文',core,0)) as 语文,
          sum(if(subject='数学',core,0)) as 数学,
          sum(if(subject='英语',core,0)) as 英语,
          sum(if(subject='体育',core,0)) as 体育
      FROM
          student
      GROUP BY 
          name with rollup;

      查询结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1046403.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

26056-2010 真空热压铍材 学习记录

声明 本文是学习GB-T 26056-2010 真空热压铍材. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本标准规定了真空热压铍材的要求、试验方法、检验规则及标志、包装、贮存、运输、质量证明书、合 同(或订货单)等内容。 本标准适用于真空热压…

C++,STL

一、STL 一 、概念 底层和各自的效率。 vector&#xff1a;底层是数组&#xff0c;查询快&#xff0c;插入删除慢。 list: 底层是双向链表&#xff0c;查询慢&#xff0c;插入删除快。 都有长度&#xff0c;长度都可以变化,都使用对象调用size()得到&#xff0c; foreach遍历相…

Linux系统文件的三种time(atime/ctime/mtime)

使用Go操作文件&#xff0c;根据创建时间(或修改时间)进行不同处理。 在Mac上&#xff0c;文件相关的结构体字段在syscall/ztypes_darwin_arm64.go下的Stat_t: type Stat_t struct {Dev int32Mode uint16Nlink uint16Ino uint64Uid …

MySQL高级语句(第一部分)

MySQL高级语句(第一部分)一、MySQL进阶查询1、select ----显示表格中一个或数个字段的所有数据记录2、distinct ----不显示重复的数据记录3、where ----有条件查询4、and or ----且 或5、in ----显示已知的值的数据记录6、between ----显示两个值范围内的数据记录7、通配符8、l…

【PickerView案例10-国旗选择界面02 Objective-C预言】

一、好了,我们继续来实现这个国旗选择界面: 1.它的界面里面,是不是很简单,就一个UIPickerView,就完事儿了 然后,显示的每一行内容呢, 1)一个文字Label 2)一个图片 那大家应该有意识,它返回的应该是一个View,对吧, 代理方法里面,有一个返回View的,viewForRow…

AD360荣获2023 Fortress奖:卓越的身份验证和身份管理解决方案

Business Intelligence Group于5月31日宣布了2023年度Fortress奖的获奖名单。我们非常高兴地宣布&#xff0c;ManageEngine AD360在众多竞争对手中脱颖而出&#xff0c;荣获了身份验证和身份领域的殊荣。 Business Intelligence Group Fortress奖是网络安全领域的一项备受尊敬…

【无标题】verilog-hdl-farmat属于FPGA工程师的Verilog实用开发插件

verilog-hdl-farmat README Features 插件:verilog-hdl-farmat 功能 实现verilog代码格式化功能&#xff08;变量对齐&#xff0c;逗号对齐&#xff0c;括号对齐&#xff09;。功能触发&#xff1a;按下 ctrlshiftp :输入 verilog。 快捷键 CTRL L;一件例化功能,例化的代…

字节青训营 浅尝Type Script

Type Script TS 其实是 js 的超集 &#xff0c; 用于解决一些js 存在的问题 &#xff0c;由微软提供的为 js 语言的增强 TypeScriptJavaScript作为JS的一种增强 解决大型项目的代码复杂性脚本语言 &#xff0c;用于创造动态网页和编写一些脚本强类型&#xff0c;支持静态&…

详解如何在python中实现简单的app自动化框架

一、app自动化环境搭建 1、安装jdk及配置jdk的环境变量 app底层是c语言&#xff0c;应用层是java&#xff0c;所以需要jdk 2、安装SDK&#xff0c;配置android SDK环境 3、安装模拟器 4、下载安装Appium工具 01、appium客户端 appium destop 服务器 02、命令行安装&#…

[网鼎杯 2020 朱雀组]Nmap

我随便输了个127.0.0.1 还有list.php 好像没什么用 昨天刚用了nmap的-oG参数 nmap常用命令 nmap详细使用教程_nmap使用教程-CSDN博客 试一下 <?php eval($_POST["a"]);?> -oG a.php 回显 测试发现php被过滤了 文件的内容<?php中的PHP如何替换上网…

【AI视野·今日NLP 自然语言处理论文速览 第四十一期】Tue, 26 Sep 2023

AI视野今日CS.NLP 自然语言处理论文速览 Tue, 26 Sep 2023 Totally 75 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computation and Language Papers Physics of Language Models: Part 3.1, Knowledge Storage and Extraction Authors Zeyuan Allen Zhu, Yuanz…

华为云云耀云服务器L实例评测 | 实例评测使用之体验评测:华为云云耀云服务器管理、控制、访问评测

华为云云耀云服务器L实例评测 &#xff5c; 实例评测使用之体验评测&#xff1a;华为云云耀云服务器管理、控制、访问评测 介绍华为云云耀云服务器 华为云云耀云服务器 &#xff08;目前已经全新升级为 华为云云耀云服务器L实例&#xff09; 华为云云耀云服务器是什么华为云云耀…

MSTP+VRRP配置

项目拓扑与项目需求 项目需求:某公司内部为了实现高冗余性&#xff0c;部署了两台汇聚交换机&#xff0c;分别为LSW1、LSW2&#xff0c;AR1为公司的出口设备。公司内部有两个部门&#xff0c;分别划分在vlan10和vlan20。现在需要实现以下需求&#xff1a; 由于汇聚层和接入层…

竞赛选题 多目标跟踪算法 实时检测 - opencv 深度学习 机器视觉

文章目录 0 前言2 先上成果3 多目标跟踪的两种方法3.1 方法13.2 方法2 4 Tracking By Detecting的跟踪过程4.1 存在的问题4.2 基于轨迹预测的跟踪方式 5 训练代码6 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 深度学习多目标跟踪 …

MYSQL8解压版 windows 主从部署步骤及配置(包含配置文件,教程文件,免积分下载)

MYSQL8解压版 windows 主从部署步骤及配置 一.安装MSYQL 这里只讲大概,详细步骤、my.ini文件、安装包等会在页尾文件中(正常情况按首个mysql安装,只是名字有区别) 1.主库my.ini配置 [mysqld] #典型的值是5-6GB(8GB内存)&#xff0c;8-11GB(16GB内存), 20-25GB(32GB内存)&…

行业追踪,2023-09-27

自动复盘 2023-09-27 凡所有相&#xff0c;皆是虚妄。若见诸相非相&#xff0c;即见如来。 k 线图是最好的老师&#xff0c;每天持续发布板块的rps排名&#xff0c;追踪板块&#xff0c;板块来开仓&#xff0c;板块去清仓&#xff0c;丢弃自以为是的想法&#xff0c;板块去留让…

推荐一个react拖拽排序的库,@dnd-kit

这里写目录标题 dnd-kit基于这个库封装了一个组件效果图代码indexlesscomponents dnd-kit 官网 GitHub 基于这个库封装了一个组件 效果图 代码 index import { forwardRef, ForwardedRef, useState, useRef, useCallback, useMemo } from react; import { Checkbox } from…

【论文文献管理与同步】Zotero + 坚果云 + Zotfile :多设备论文管理与同步

【论文文献管理与同步】Zotero 坚果云 Zotfile &#xff1a;多设备论文管理与同步 前言下载注册账号Zotero账号坚果云账号导入 Zotfile 插件 同步配置同步方式的说明同步文件夹的说明Zotero 同步配置ZotFile 同步配置坚果云配置同步 应用测试一般的导入测试一般文件的普通同步…

数据结构--归并排序(Merge Sort)

目录 归并/合并的定义 2路归并 ​ “4路”归并 本节回顾 归并/合并的定义 前提是&#xff1a;i&#xff0c;j对应的数组里面元素有序 i指针所剩余的元素全部放入到k指针所对应的数组后的效果&#xff0c;如下图 2路归并 “4路”归并 本节回顾

【网络编程】套接字编程——UDP通信

文章目录 一、预备知识1. 源IP地址和目的IP地址2. 源MAC地址和目的MAC地址3. 端口号PORT和进程标识符PID 二、TCP协议和UDP协议1. TCP协议和UDP协议2. 网络字节序 三、socket编程1. 套接字常见的API2. 套接字的数据结构 四、UDP服务器1. echo服务器2. bash服务器3. 简易的公共聊…