数据库索引和SQL语句

2023-10-31

索引

索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可以快速访问数据库表中的特定信息。
在表Student上按Sno降序建唯一索引

create unique index Stusno on Student (Sno desc);

删除Student表的Stusno索引

alter table Student drop index Stusno;

那么数据库中的索引作用是什么?什么情况下适合建索引什么情况下不适合?
1.通过创建唯一性索引,可以保证表中每一行数据的唯一性
2.可以加快数据的检索速度
3.可以加速表与表之间的链接,在实现数据完整性方面有意义。
4.在使用分组(group by)和排序(Order by)子句进行检索时,同样可以显著减少查询中分组和排序的时间。
当然索引也有不利的方面
1.耗费时间,随着数据量的增加而增加。
2.占据物理空间。
3.对表中数据进行增删改的时候,索引也要动态的维护,降低了数据的维护速度。

哪些列上适合创建索引呢?
1.经常需要搜索的列
2.经常用在连接的列上,这些列主要是一些外键,可以加快连接速度。
3.在经常需要根据范围进行搜索的列上,因为索引已经排序,其指定的范围是连续的。
4.在经常需要排序的列上创建索引,因为索引已经排序,这样查询可以利用索引的排序,加快排序查询的速度。
5.在经常使用where子句的列上,加快条件的判断速度

哪些地方不适合建索引呢?
1.那些在查询中很少使用的列
2.那些数据量很少的列
3.当修改操作远远大于检索操作时

视图

视图是从一个或几个基本表中导出的表,是一个虚表。数据库中只存放视图的定义,而不存放视图对应的数据,数据仍然放在基本表里。视图就像一个窗口。

下面举例一些SQL语句
修改基本表

alter table <表名>
[ add <新列名> <数据类型> [完整性约束] ]
[ drop <完整性约束名> ]
[ modify column <列名> <数据类型>]

向Student表添加入学时间列

alter table Student add S_entrance DATE;

数据查询

select [ all | distinct } <目标列表达式>  from  <表名> 
[ where < 条件表达式 > ]
[ group by <列名> [ having <条件表达式> ] ]
[ order by <列名> [ asc | desc ] ]

查询Student表中具有相同年龄的每个组的人数

select Sage ,count(*) from Student group by Sage;

如果分组后还要按一定的条件对这些组进行筛选,最终只输出满足指定条件的组,则使用having。例如对上例筛选

select Sage ,count(*) from Student group by Sage having count(*) > 1;

若查询涉及多个表,使用连接查询。
若有表Student、SC(选课表),要求查询每个学生及其选修课程的情况:

select Student.* , SC.* from Student,SC where Student.Sno=SC.Sno;

这种称自然连接或内连接。若有学生没有选课,则在SC表里没有相应的元组,造成最终结果舍掉这些学生的信息。

如果想把没有选课的学生也保留在结果中,可以使用外连接。
下面用左外连接(左外连接列出左边表(本例为Student表)中的所有元组)

select Student.*,SC.* from Student left join SC on (Student.Sno=SC.Sno);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据库索引和SQL语句 的相关文章

  • STM32 的定时器解析

    STM32有3种类型的定时器 分别是基本定时器 通用定时器和高级定时器 基本定时器有TIM6和TIM7 通用定时器有TIM2 TIM3 TIM4和TIM5 高级定时器有TIM1和TIM8 根据芯片的型号不同定时器的个数也会有所区别 本文主要
  • 《第四部分:测试用例--等价类、边界值与用例编写》

    目录 关联实例练习文档 一 认识基本术语 一 术语一 二 术语二 三 术语三 控制流图的概念 四 圈复杂度计算公式 二 用例设计 一 等价类 1 1 等价类介绍 1 2 等价类划分举例 1 3 等价类划分的设计用例思路 1 4 小结 等价类
  • JavaScript复选框的使用

    div p 请选择你的爱好 p div
  • 十行代码搞定目标检测

    大数据文摘出品 编译 邢畅 宁静 计算机视觉是人工智能的一个重要领域 是关于计算机和软件系统的科学 可以对图像和场景进行识别 理解 计算机视觉还包括图像识别 目标检测 图像生成 图像超分辨率重建等多个领域 由于存在大量的实际需求 目标检测可
  • 小技巧(5):将TT100K数据集转成VOC格式,并且用Python脚本选出45类超过100张的图片和XML

    上一篇 小技巧 4 将txt中的某两列数据写入csv文件中 制作图像分类标签 文章目录 一 相关准备 1 1 下载数据集 1 2 下载代码文件 1 3 将相关文件移入代码文件 二 创建标准的VOC文件夹 三 生成整个数据集的XML文件 四
  • leetcode-第247场周赛-5798循环轮转矩阵(模拟题)

    5798 循环轮转矩阵 模拟题 题目链接 https leetcode cn com problems cyclically rotating a grid 题目 给你一个大小为 m x n 的整数矩阵 grid 其中 m 和 n 都是 偶
  • Code=201 “Siri and Dictation are disabled“

    iOS 15 之前的语音识别是使用SpeechKit和AVFoundation两个框架来配合使用 其中主要的类有SFSpeechRecognizer SFSpeechAudioBufferRecognitionRequest SFSpeec
  • SSHLibrary本地远程访问LINUX遇Incompatible ssh peer错误

    FAIL SSHException Incompatible ssh peer no acceptable kex algorithm 使用python写了段脚本 远程访问LINUX主机 同样的一段脚本 访问主机A可以 访问主机B就报标题中
  • QtModbus Serial 简单示例

    来自QQ群 Linux 技术分享 311078264 打开链接加入QQ群 https jq qq com wv 1027 k 5Gr3bAx 此文档由elikang整理 为了文章简单直接 许多细节未能在文章中体现 如有疑问请进群讨论 Qt
  • 浮动图标代码

    lt html xmlns http www w3 org 1999 xhtml gt lt head gt lt title gt wahaha lt meta
  • 如何在O(1)时间删除链表指定节点(Java实现)

    声明 题目背景为剑指offer 13 在O 1 时间删除链表节点 给出一个链表如下 删除链表中给定节点 我想最容易想到的方法就是循环遍历 假设想删除节点toBeDeleted 我们先遍历链表 找到节点的下一节点为toBeDeleted的节点
  • python之pyAudioAnalysis:音频特征提取分析文档示例详解

    PyAudioAnalysis是一个开源的Python库 用于从音频文件中提取特征并进行分析 它提供了一系列音频处理函数 可以帮助开发者实现音频分类 情感识别 语音分析等多种任务 在本文中 我们将详细介绍如何使用PyAudioAnalysi
  • 适配器模式和装饰器模式区别

    适配器模式和装饰器模式都可以在原类文件方法的基础上修改 增强 但侧重点不一样 适配器模式重在将一个接口转换为另一个接口 装饰器模式侧重对原类文件方法的增强 但接口还是同一个接口 适配器模式 适配器模式 解决原类文件 适配者 和现有需求 目标
  • ESP8266 WIFI模块学习之路(7)——自写Android手机APP接受单片机数据

    上一篇是写关于自写Android手机APP给单片机下发数据的 这次我将写一下APP如何接受单片机数据 其实使用调试助手 或者别人开的的APP同样能够实现接受单片机数据 但想学习的 我还是建议能够自己写一个Android软件 这样从底层到上层
  • 中间件的介绍

    1 1 什么是中间件 中间件是介于应用系统和系统软件之间的一类软件 他使用系统软件所提供的基础服务 衔接网络上应用系统的各个部分或不同的应用 能够达到资源共享 功能共享的目的 例如MySQL就可以看作是具备中间件特性的一种技术 中间件技术必
  • mysql8查看用户密码_mysql8用户管理

    查看当前登录用户 创建用户 create user 用户名 主机地址 identified with mysql native password by 密码 修改密码 alter user 用户名 主机地址 identified with
  • cnocr避坑指南

    今天用我的win7电脑运行我的一个python程序 让我安装cnocr 于是我就pip install cnocr 安装成功 继续运行 却出现mxnet的问题 一堆它的 dll文件没有 反复卸载重装 没得救 看了一个文章 也是这个问题 就想
  • Java教程:如何读取服务器文件并推送到前端并下载,图片格式以浏览器渲染模式

    起因 在我们做文件上传时 通常会保存文件的相对路径在数据库中 然后返回前端http访问路径 来对文件进行下载或图片预览功能 但是有时候我们并不想直接返回文件访问地址给前端 这就用到了Java当中的文件输入输出流 将文件以流的方式响应给浏览器
  • 【C语言】详解qsort函数使用和模拟实现

    一 qsort函数的使用 qsort的功能 qsort函数是C语言标准提供的排序函数 使用qsort函数需要引用头文件 include
  • h5 video方法,事件,属性详解

    闲下来的的时间里 我一直总结之前学习过的知识 今天到video 发现对它还是不够熟悉 于是重新学习一遍 举个例子

随机推荐

  • [云原生专题-37]:K8S - 核心概念 - 存储抽象- 搭建NFS网络文件系统与常见操作命令

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 https blog csdn net HiWangWenBing article details 122828322 目录 第1步 NFS
  • 怎样用python通达信接口写一个股票自动买卖的程序?

    方法一 前期的数据抓取和分析python都写好了 所以就差交易指令接口了 对于散户投资者来说 正规的法子是愿意给接口的券商 但是需要很高的开户费 而且只有lts ctp这样的c 接口 没有python版就需要用户自己去封装 方法二 wind
  • js抽奖(随机抽奖

    js抽奖 随机抽奖 默认抽奖结果 效果示例图 代码块 效果示例图 代码块
  • R语言函数

    R语言实际上是函数的集合 用户可以使用base stats等包中的基本函数 也可以自己编写函数完成一定的功能 但是初学者往往认为编写R函数十分困难 或者难以理解 这里对如何编写R函数进行简要的介绍 函数是对一些程序语句的封装 换句话说 编写
  • 乐高机器人投篮编程_乐高机器人WeDo编程和EV3编程课能学到什么

    乐高机器人WeDo编程和EV3编程课能学到什么 智能机器人WeDo编程课能学点啥 智能机器人WeDo编程 游戏乐园 适合年龄 一年级至二年级 课程简介 设计搭建复杂机器人 运行编程程序 感受机械运动的神奇 完成一个星际战机主题的机器人搭建及
  • 区块链与物联网的结合应用

    最近一个新闻 IBM中国研究院全面关闭 个人技术公众号 解决方案工程师 欢迎同领域的朋友关注 相互交流 最近一个新闻 IBM中国研究院全面关闭 原因也是多方面的 其中 新闻中这句话我倒是十分感兴趣 2014年初 IBM中国研究院提出了 物联
  • Qt学习七——qcustomplot(1)

    好久没有更新了 把最近学习到的东西做一个简单的总结 一 qcustomplot是什么 在没有接触qt之前 各种奇怪的图到底怎么画出来的还是觉得很厉害的 但是当你拥有了qcustomplot 你就拥有了整个世界 可以说qcustomplot算
  • arthas启动-服务端启动流程

    从前面介绍的arthas启动 agent初始化一文中我们看到了AgentBootstrap bind函数 该函数的实现就是使用反射创建一个ArthasBootstrap对象 传入关键信息Instrumentation 以及启动参数 我们就关
  • 三太子敖丙-帅丙的文章目录

    三太子敖丙 帅丙的文章目录
  • [蓝桥杯2022初赛] 消除游戏

    题目 来源 P2045 蓝桥杯2022初赛 消除游戏 New Online Judge ecustacm cn 分析 首先 可以明确一件事情 不管怎么删除 都要在遍历完字符串后在删除 然后 新生成的字符串再进行重复操作 题目中虽然给了次数
  • 使用MATLAB将Excel里面的数据导入,并且将MATLAB数据导入到Excel里面的命令介绍

    系列文章目录 Matlab中求解线性方程组 高斯消元法 LU分解法 QR分解法 SVD分解法 迭代法等 MATLAB迭代的三种方式以及相关案例举例 MATLAB矩阵的分解函数与案例举例 MATLAB当中线性方程组 不定方程组 奇异方程组 超
  • docker部署LTC v0.18.1版本开发网

    文章目录 一 LTC镜像生成 二 LTC容器生成 三 查看bsv服务是否部署成功 四 常用接口使用 昨天部署了比特现金开发网节点 今天做个莱特币的开发网试试 一 LTC镜像生成 1 下载基础镜像 docker pull buildpack
  • 初识Linux下的gcc与makefile

    推荐文章 https blog csdn net chenlong cxy article details 119183448 最近在学linux相关的操作 接触到makefile文件 在此做个笔记 文章目录 gcc 1 预处理 2 编译
  • sublime json美化

    sublime 的插件 json美化感觉很难用 好多正常的json串都 不能正常解析 自己写了一个json解析插件 此插件跟网上教程的json美化插件 不同的是 只对json的特殊字符进行格式化 这种不是很严格但是正好解决了我的问题 我工作
  • Python爬虫——多线程(一)

    Python爬虫 多线程 一 文章目录 Python爬虫 多线程 一 一 多线程概述 多进程 多线程 用多线程爬虫的优势 二 多线程的创建 1 通过函数创建 2 类创建多线程 线程锁 一 多线程概述 多进程 pycharm 腾讯课堂 浏览器
  • matconvnet 实现 Batch Normalization和dropout

    采用matconvnet常常会出现如下情况 即训练出现了过拟合 针对过拟合常用的方法有正则化和dropout 以及batch normalization 目前有人认为 卷积层后可以用batch normalization 不需要用dropo
  • r spgm 语言_R语言如何处理incorrect number of dimensions错误?

    谢妖 看样子你的目的是把sp500在wiki上面的信息下载下来咯 第一步 我的运行结果 咱们先来看你的sp500 components 这个函数的主体 function url http en wikipedia org wiki List
  • OpenWrt系统安全改进<一>

    使能默认密码 修改package base files files etc shadow abc 123 root 1 4gX5RHpw ZNwMNLS6 rr w9tUWFPWh 16325 0 99999 7 效果 web interf
  • 【Xcode】ios集成开发工具的初接触和Jenkins脚本的更迭

    任务需求 之前处理Android 的jenkins 自动化 现在iOS那边的jenkins处理老是有问题 leader让我定位一下问题 然后让iOS这边和Android的保持一致 移动端的爱恨情仇 Android 和iOS build了几次
  • 数据库索引和SQL语句

    索引 索引是对数据库表中一列或多列的值进行排序的一种结构 使用索引可以快速访问数据库表中的特定信息 在表Student上按Sno降序建唯一索引 create unique index Stusno on Student Sno desc 删