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.mzph.cn/news/94184.shtml

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

相关文章

linux python 保存图形savefig import matplotlib.pyplot as plt

import matplotlib.pyplot as plt # 绘制图形 mod.plot_history(20)# 保存图形 plt.savefig("my_training_ephoes_plot.png") # 保存为PNG格式 # 保存图形并设置dpi参数 plt.savefig("my_plot.png", dpi600) # 保存为PNG格式&#xff0c;设置dpi为300

力扣 -- 115. 不同的子序列

解题步骤&#xff1a; 参考代码&#xff1a; class Solution { public:int numDistinct(string s, string t) {int ns.size();int mt.size();//多开一行&#xff0c;多开一列vector<vector<double>> dp(m1,vector<double>(n1));for(size_t j0;j<n;j){dp[…

C#餐饮收银系统

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

pytorch_神经网络构建1

文章目录 pytorch简介神经网络基础分类问题分析:逻辑回归模型逻辑回归实现多层神经网络多层网络搭建保存模型 pytorch简介 为什么神经网络要自定义数据类型torch.tensor? tensor可以放在gpu上训练,支持自动求导,方便快速训练,同时支持numpy的运算,是加强版,numpy不支持这些 为…

【网络通信三要素】TCP与UDP快速入门

网络通信三要素 1.什么是网络编程&#xff1f; 可以让设备中的程序&#xff0c;与网络上其他设备中的程序进行数据交互&#xff0c;从而实现网络通信的手段&#xff0c;java.net.*包下提供了网络编程的解决方案 2.基本的通信架构 基本的通信架构有2种形式&#xff1a;CS架构…

项目进展(五)-修复PCB电路板,学习32位ADC芯片ADS1285

一、前言 上个月29号放假了&#xff0c;和朋友一起去了南京(人是真滴多)&#xff0c;师兄晚放假几天&#xff0c;结果在测试时不小心把12V和GND碰触到一起了&#xff0c;导致12V短路&#xff0c;电路板几乎瘫痪了。 今天下午到学校之后就开始着手寻找问题和修复&#xff0c;最…

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

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

Matlab随机数的产生

目录 1、常见分布随机数的产生 1.1 二项分布 1.2 泊松分布 1.3 几何分布 1.4 均匀分布&#xff08;离散&#xff0c;等可能分布&#xff09; 1.5 均匀分布&#xff08;连续型等可能&#xff09; 1.6 指数分布&#xff08;描述“寿命”问题&#xff09; 1.7 正态分布 1.8…

SpringBoot结合Redisson实现分布式锁

&#x1f9d1;‍&#x1f4bb;作者名称&#xff1a;DaenCode &#x1f3a4;作者简介&#xff1a;啥技术都喜欢捣鼓捣鼓&#xff0c;喜欢分享技术、经验、生活。 &#x1f60e;人生感悟&#xff1a;尝尽人生百味&#xff0c;方知世间冷暖。 &#x1f4d6;所属专栏&#xff1a;Sp…

C#,数值计算——Ranq2的计算方法与源程序

1 文本格式 using System; namespace Legalsoft.Truffer { /// <summary> /// Backup generator if Ranq1 has too short a period and Ran is too slow.The /// period is 8.5E37. Calling conventions same as Ran, above. /// </summary> …

基于Matlab求解高教社杯全国大学生数学建模竞赛(CUMCM2004A题)-奥运会临时超市网点设计(附上源码+数据)

文章目录 题目思路源码数据下载 题目 2008年北京奥运会的建设工作已经进入全面设计和实施阶段。奥运会期间&#xff0c;在比赛主场馆的周边地区需要建设由小型商亭构建的临时商业网点&#xff0c;称为迷你超市&#xff08;Mini Supermarket, 以下记做MS&#xff09;网&#xf…

提升您的工作效率:TechSmith Snagit for Mac:强大的屏幕截图软件

在当今数字化的时代&#xff0c;屏幕截图已成为我们日常生活和工作中必不可少的一部分。无论是为了保存重要的信息、分享有趣的内容&#xff0c;还是为了制作教程和演示文稿&#xff0c;一款优秀的屏幕截图软件都能极大地提升我们的效率。而在所有的屏幕截图软件中&#xff0c;…

JavaScript:从入门到进阶的旅程

JavaScript是一种广泛使用的编程语言&#xff0c;为网页和应用程序提供了交互性和动态性。从初学者到资深开发者&#xff0c;JavaScript都是一项值得掌握的技能。在本文中&#xff0c;我们将探讨JavaScript的基础知识&#xff0c;以及一些进阶的概念和技巧。 一、JavaScript简…

机器视觉工程师,努力方向错了,白费

努力方向错了&#xff0c;白费。 在这个知识经济&#xff0c;知识付费&#xff0c;知识大V横行的时代&#xff0c;知识似乎遍地都是。但你有没有想过&#xff0c;微博里的段子是不是知识&#xff1f;微信里的爆款文章是不是知识&#xff1f;得到App里的音频是不是知识&#xf…

博物馆藏品管理系统-美术馆藏品管理系统

一、项目背景 文物作为前史留存下来最为珍贵的遗物&#xff0c;具有非常高的科学价值和艺术价值&#xff0c;博物馆的存在便是为了保存这些珍贵的前史文化遗产&#xff0c;所以对博物馆的建造必定要重视品质问题。对博物馆的库存办理工作也必定要注意细节&#xff0c;不能出一…

大模型RLHF算法更新换代,DeepMind提出自训练离线强化学习框架ReST

文章链接&#xff1a; https://arxiv.org/abs/2308.08998 大模型&#xff08;LLMs&#xff09;爆火的背后&#xff0c;离不开多种不同基础算法技术的支撑&#xff0c;例如基础语言架构Transformer、自回归语言建模、提示学习和指示学习等等。这些技术造就了像GPT-3、PaLM等基座…

OpenGLES:绘制一个混色旋转的3D球体

一.概述 前面几篇博文讲解了如何使用OpenGLES实现不同的3D图形 本篇博文讲解怎样实现3D世界的代表图形&#xff1a;一个混色旋转的3D球体 二.球体解析 2.1 极限正多面体 如果有学习过我前几篇3D图形绘制的博文&#xff0c;就知道要想绘制一个3D图形&#xff0c;首先要做的…

JavaScript系列从入门到精通系列第十四篇:JavaScript中函数的简介以及函数的声明方式以及函数的调用

文章目录 一&#xff1a;函数的简介 1&#xff1a;概念和简介 2&#xff1a;创建一个函数对象 3&#xff1a;调用函数对象 4&#xff1a;函数对象的普通功能 5&#xff1a;使用函数声明来创建一个函数对象 6&#xff1a;使用函数声明创建一个匿名函数 一&#xff1a;函…

【AI视野·今日Sound 声学论文速览 第十七期】Tue, 3 Oct 2023

AI视野今日CS.Sound 声学论文速览 Tue, 3 Oct 2023 Totally 15 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Sound Papers DiffAR: Denoising Diffusion Autoregressive Model for Raw Speech Waveform Generation Authors Roi Benita, Michael Elad, Joseph Kes…

mybatis项目启动报错:reader entry: ���� = v

问题再现 解决方案一 由于指定的VFS没有找&#xff0c;mybatis启用了默认的DefaultVFS&#xff0c;然后由于DefaultVFS的内部逻辑&#xff0c;从而导致了reader entry乱码。 去掉mybatis配置文件中关于别名的配置&#xff0c;然后在mapper.xml文件中使用完整的类名。 待删除的…