day49数据库 索引 事务

一、索引

  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. 查询每一个部门所有员工的姓名和工资

      SELECTdeptno,group_concat(ename,':',sal)
      FROMemp
      GROUP BYdeptno
      ​
    2. 查询每个部门的员工姓名,要求每个部门只能显示一行

      SELECTdeptno,group_concat(ename)
      FROMemp
      GROUP BYdeptno

    四、笔试题

    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. 查询每个人的平均分,从大到小排序

      SELECTname,avg(core) a
      FROMstudent
      GROUP BY name
      ORDER BYa desc;

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

      SELECTname,group_concat(subject,':',core)
      FROMstudent
      GROUP BYname

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

      SELECTname,max(core),min(core)
      FROMstudent
      GROUP BYname

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

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

      SELECTifnull(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 体育
      FROMstudent
      GROUP BY name with rollup;

      查询结果

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

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

相关文章

Python学习笔记之分支结构与循环结构

Python学习笔记之分支结构与循环结构 一、分支结构 使用关键字if、elif、else 练习1&#xff1a;使用分支结构实现分段函数求值 """分段函数求值""" x float(input("x "))if x > 1:y 3 * x - 5 elif x < -1:y 5 * x 3…

【数仓精品理论分析】能不能学大数据?

【数仓精品理论分析】能不能学大数据&#xff1f; 还能不能学大数据datapulse官网&#xff1a; 自身情况数据行业发展情况 还能不能学大数据 首先看到这个话题的时候&#xff0c;我是这样想的&#xff0c;能不能学大数据需要参考本人的自身情况【学历、年龄、决心、有没有矿或者…

12、Kubernetes中KubeProxy实现之iptables和ipvs

目录 一、概述 二、iptables 代理模式 三、iptables案例分析 四、ipvs案例分析 一、概述 iptables和ipvs其实都是依赖的一个共同的Linux内核模块&#xff1a;Netfilter。Netfilter是Linux 2.4.x引入的一个子系统&#xff0c;它作为一个通用的、抽象的框架&#xff0c;提供…

手机自动直播系统源码交付与代理加盟注意事项解析!

随着直播行业的不断发展&#xff0c;手机自动直播已经成为了人们生活中不可或缺的一部分。手机无人直播软件成了香饽饽&#xff0c;各类手机实景直播APP大批量涌现。因为创业和技术门槛低&#xff0c;市场需求高&#xff0c;所以成了最火热创业赛道。那么如果是不懂技术的人群&…

由Long类型引发的生产事故

事情原由 今天测试忽然在群里发了一个看似非常简单的线上问题&#xff0c;具体是&#xff1a;在后台通过订单编号(orderId)修改订单信息时&#xff0c;修改不成功 &#xff0c;修改前后的订单数据完全没有发生变化。第一眼看到这个问题的时候&#xff0c;我心想后台实现逻辑并不…

CSS 语法

CSS 实例 CSS 规则由两个主要的部分构成&#xff1a;选择器&#xff0c;以及一条或多条声明: 选择器通常是您需要改变样式的 HTML 元素。 每条声明由一个属性和一个值组成。 属性&#xff08;property&#xff09;是您希望设置的样式属性&#xff08;style attribute&#x…

IDEA 配置 Maven(解决依赖下载缓慢)

IDEA 配置 Maven&#xff08;解决依赖下载缓慢&#xff09; 这一篇主要介绍 Maven 的基本用法。等我之后学习到框架知识时&#xff0c;会完善此部分内容。 一、Maven 简介 Maven 是专门用于管理和构建 Java 项目的工具&#xff0c;Apache Maven 是一个项目管理和构建工具&#…

lenovo联想台式机 拯救者 刃7000-28ICBR(90KX)原装出厂Windows10系统镜像

LENOVO联想拯救者(90KX)原厂WIN10系统 下载链接&#xff1a;https://pan.baidu.com/s/1beocPJSmnFbY4Y_ZQM2djA?pwd4d1n 系统自带所有驱动、出厂主题壁纸LOGO、Office办公软件、联想电脑管家等预装程序 所需要工具&#xff1a;16G或以上的U盘 文件格式&#xff1a;ISO 文件大…

QT、C++实现地图导航系统(mapSystem)

文章目录 地图导航系统项目应用背景技术栈选择数据处理算法实现界面实现源码展示成果展示源码下载 &#xff08;免费&#xff09; 地图导航系统 项目应用背景 电子地图导航系统的主要目的是为用户提供精确、实时的导航和位置信息&#xff0c;以帮助他们在城市或地区内轻松找到…

Golang 中的调试技巧

掌握有效的策略和工具&#xff0c;实现顺畅的开发 调试是每位开发人员都必须掌握的关键技能。它是识别、隔离和解决代码库中问题的过程。在 Golang 的世界中&#xff0c;掌握有效的调试技巧可以显著提升您的开发工作流程&#xff0c;并帮助您创建更可靠和健壮的应用程序。在本…

【面试经典150 | 矩阵】矩阵置零

文章目录 写在前面Tag题目来源题目解读解题思路方法一&#xff1a; O ( m n ) O(mn) O(mn) 空间复杂度方法二&#xff1a; O ( m n ) O(mn) O(mn) 空间复杂度方法三&#xff1a;仅使用2个额外变量的常量空间复杂度 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算…

【Docker】Docker的应用包含Sandbox、PaaS、Open Solution以及IT运维概念的详细讲解

前言 Docker 是一个开源的应用容器引擎&#xff0c;让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。 &#x1f4d5;作者简介&#xff1a;热…

简单的考试系统

开发一个简单的考试系统&#xff0c;在HTML页面中建立一个表单&#xff0c;通过post方法传递参数。题目类型包括单选题、多选题和填空题&#xff0c;要求程序给出考试成绩。 <!DOCTYPE html> <html> <head><title>question.html</title><met…

C#餐饮收银系统

一、引言 餐饮收银系统是一种用于管理餐馆、咖啡厅、快餐店等餐饮业务的计算机化工具。它旨在简化点餐、结账、库存管理等任务&#xff0c;提高运营效率&#xff0c;增强客户体验&#xff0c;同时提供准确的财务记录。C# 餐饮收银系统是一种使用C#编程语言开发的餐饮业务管理软…

SG Former论文学习笔记

超越SWin和CSWin Transformer的新模型 代码地址&#xff1a;https://github.com/OliverRensu/SG-Former 论文地址&#xff1a;https://arxiv.org/pdf/2308.12216.pdf ViT在各种视觉任务中虽然成功&#xff0c;但它的计算成本随着Token序列长度的增加呈二次增长&#xff0c;这在…

Gurobi设置初始可行解

目录 1. 决策变量的Start属性直接设置变量的初始值 1.1 Start&#xff1a;MIP变量的起始值&#xff08;初值&#xff09;double类型&#xff0c;可更改 1.2 StartNodeLimit&#xff1a;限制了在完善一组输入部分变量的初始解时&#xff0c;MIP所探索的分支定界的节点的数量 …

【1】c++设计模式——>UML类图的画法

UML介绍 UML:unified modeling language 统一建模语言 面向对象设计主要就是使用UML类图&#xff0c;类图用于描述系统中所包含的类以及他们之间的相互关系&#xff0c;帮助人们简化对系统的理解&#xff0c;他是系统分析和设计阶段的重要产物&#xff0c;也是系统编码和测试的…

Python无废话-办公自动化Excel写入操作

Python 办公自动化-Excel写入 创建并保存Excel文件 import openpyxl workbookopenpyxl.Workbook() #创建空Excel文件 sheetworkbook.active #获取活动的工作表 sheet.title“测试“ #修改sheet工作表名称为测试 workbook.save(“data\input\Test.xlsx”) #保存Excel文件 …

SDK Vitis记录

文章目录 SDK记录SDK中报错“undefined reference to sqrt”的解决方法通过XML文件导入工程的include路径方法说明 其他设置编译选项设置某些文件/文件夹不编译单独设置文件的编译选项 向存储区中导入/导出数据通过GUI操作使用命令行操作 产生C代码的MAP文件在Xilinx SDK 工程的…

Flutter项目安装到Android手机一直显示在assembledebug

问题 Flutter项目安装到Android手机一直显示在assembledebug 原因 网络不好&#xff0c;gradle依赖下载不下来 解决方案 修改如下的文件 gradle-wrapper.properties 使用腾讯提供的gradle镜像下载 distributionUrlhttps://mirrors.cloud.tencent.com/gradle/gradle-7.5…