mysql简历表格的语句_mysql 对表操作的相关语句
索引是加速查询的主要手段,特别对于涉及多个表的查询更是如此。本节中,将介绍索引的作用、特点,以及创建和删除索引的语法。
13.4.1 使用索引优化查询
索引是快速定位数据的技术,首先通过一个示例来了解其含义及作用,详细的介绍请参考第14章。
1.索引示例
假设对于10.3节所建的表,各个表上都没有索引,数据的排列也没有规律,如表13.3所示。
表13.3 没有索引的students表
sid
sname
sgender
sage
52
zhang
M
21
22
wang
M
22
33
li
F
19
41
zhao
M
20
...
...
...
当查找某个学生信息时,必须顺序查看表students中的每一行,检查是否与所需值匹配,这需要扫描全表,效率很低。
表13.4给出了在name列上增加了索引的students表。
表13.4 在name列上增加了索引的students表
索引是在name上排序的。现在,当查找某个学生信息时,就不需要逐行搜索全表,可以利用索引进行有序查找(如二分查找法),并快速定位到匹配的值,以节省大量搜索时间。
2.索引作用
在索引列上,除了上面提到的有序查找之外,数据库利用各种各样的快速定位技术,能够大大提高查询效率。特别是当数据量非常大,查询涉及多个表时,使用索引往往能使查询速度加快成千上万倍。
例如,有3个未索引的表t1、t2、t3,分别只包含列c1、c2、c3,每个表分别含有1000行数据组成,指为1~1000的数值,查找对应值相等行的查询如下所示。
SELECT c1,c2,c3 FROM t1,t2,t3 WHERE c1=c2 AND c1=c3
此查询结果应该为1000行,每行包含3个相等的值。在无索引的情况下处理此查询,必须寻找3个表所有的组合,以便得出与WHERE子句相配的那些行。而可能的组合数目为1000×1000×1000(十亿),显然查询将会非常慢。
如果对每个表进行索引,就能极大地加速查询进程。利用索引的查询处理如下。
(1)从表t1中选择第一行,查看此行所包含的数据。
(2)使用表t2上的索引,直接定位t2中与t1的值匹配的行。类似,利用表t3上的索引,直接定位t3中与来自t1的值匹配的行。
(3)扫描表t1的下一行并重复前面的过程,直到遍历t1中所有的行。
在此情形下,仍然对表t1执行了一个完全扫描,但能够在表t2和t3上进行索引查找直接取出这些表中的行,比未用索引时要快一百万倍。
利用索引,MySQL加速了WHERE子句满足条件行的搜索,而在多表连接查询时,在执行连接时加快了与其他表中的行匹配的速度。
13.4.2 创建索引
在执行CREATE TABLE语句时可以创建索引,也可以单独用CREATE INDEX或ALTER TABLE来为表增加索引。
1.ALTER TABLE
ALTER TABLE用来创建普通索引、UNIQUE索引或PRIMARY KEY索引。
ALTER TABLE table_name ADD INDEX index_name (column_list)
ALTER TABLE table_name ADD UNIQUE (column_list)
ALTER TABLE table_name ADD PRIMARY KEY (column_list)
其中table_name是要增加索引的表名,column_list指出对哪些列进行索引,多列时各列之间用逗号分隔。索引名index_name可选,缺省时,MySQL将根据第一个索引列赋一个名称。另外,ALTER TABLE允许在单个语句中更改多个表,因此可以在同时创建多个索引。
2.CREATE INDEX
CREATE INDEX可对表增加普通索引或UNIQUE索引。
CREATE INDEX index_name ON table_name (column_list)
CREATE UNIQUE INDEX index_name ON table_name (column_list)
table_name、index_name和column_list具有与ALTER TABLE语句中相同的含义,索引名不可选。另外,不能用CREATE INDEX语句创建PRIMARY KEY索引。
3.索引类型
在创建索引时,可以规定索引能否包含重复值。如果不包含,则索引应该创建为PRIMARY KEY或UNIQUE索引。对于单列惟一性索引,这保证单列不包含重复的值。对于多列惟一性索引,保证多个值的组合不重复。
PRIMARY KEY索引和UNIQUE索引非常类似。事实上,PRIMARY KEY索引仅是一个具有名称PRIMARY的UNIQUE索引。这表示一个表只能包含一个PRIMARY KEY,因为一个表中不可能具有两个同名的索引。
下面的SQL语句对students表在sid上添加PRIMARY KEY索引。
ALTER TABLE students ADD PRIMARY KEY (sid)
13.4.3 删除索引
可利用ALTER TABLE或DROP INDEX语句来删除索引。类似于CREATE INDEX语句,DROP INDEX可以在ALTER TABLE内部作为一条语句处理,语法如下。
DROP INDEX index_name ON talbe_name
ALTER TABLE table_name DROP INDEX index_name
ALTER TABLE table_name DROP PRIMARY KEY
其中,前两条语句是等价的,删除掉table_name中的索引index_name。
第3条语句只在删除PRIMARY KEY索引时使用,因为一个表只可能有一个PRIMARY KEY索引,因此不需要指定索引名。如果没有创建PRIMARY KEY索引,但表具有一个或多个UNIQUE索引,则MySQL将删除第一个UNIQUE索引。
如果从表中删除了某列,则索引会受到影响。对于多列组合的索引,如果删除其中的某列,则该列也会从索引中删除。如果删除组成索引的所有列,则整个索引将被删除。
mysql简历表格的语句_mysql 对表操作的相关语句相关推荐
- mysql 数据库操作语句_mysql数据库操作语句大全
一 . 常用mysql命令行命令 1 .启动MYSQL服务 net start mysql 停止MYSQL服务 net stop mysql 2 . netstat –na | findstr 330 ...
- mysql查询男生基本情况_MYSQL查询操作 详细
学习目标 1 掌握select查询所有字段.指定字段的数据 2 掌握消除重复行命令distinct 3 掌握as给字段.表起别名 4 掌握条件查询where后跟比较运算符.逻辑运算符的用法 5 掌握条 ...
- mysql修改i数据库名_数据库操作之mysqli语句的增删改查0424/14:36
基本的数据库操作 函数 mysqli_connect()连接数据库 mysqli_errno()错误编码 mysqli_error() 错误信息 mysqli_connect_errno() 数据库上 ...
- mysql内嵌插入语句_MySQL中添加或插入语句(Insert)的几种使用方式
MySQL中添加或插入语句(Insert)的几种使用方式 1.INSERT 简写方式插入数据(不推荐) 1.先看一下表中有那些数据 2.使用Inset into 表名 values(值1,值2)进行插 ...
- mysql联合查询查询语句_mysql多表联合查询语句是什么
mysql多表联合查询语句是:使用select语句,union关键词,语法为[select 语句1 union [union 选项] select 语句2 union [union 选项] selec ...
- mysql 伪表查询语句_MySQL数据库之select查询语句
select查询语句 语法 select [选项] 列名 [from 表名] [where 条件] [group by 分组] [order by 排序][having 条件] [limit 限制] ...
- 数据库授予用户增删改查的权限的语句_MySQL授予权限(Grant语句)
在本教程中,您将学习如何使用MySQL中的GRANT语句向MySQL用户授予权限. MySQL GRANT语句简介 创建新的用户帐户后,用户没有任何权限.如要向用户帐户授予权限,请使用GRANT语句. ...
- jdbc 生成建表语句_mysql数据库下建表语句
mysql建立数据库报错You have an error in your SQL syntax; check the manual that corresponds to your MySQL se ...
- mysql数据库在哪里写语句_Mysql数据库操作语句
零.用户管理: 1.新建用户: >CREATE USER name IDENTIFIED BY 'ssapdrow'; 2.更改密码: >SET PASSWORD FOR name=PAS ...
- mysql的各种语句_MySql常用操作SQL语句汇总
MySQL的常见操作在这里先做一下总结,已经整合到代码里面,经过检验无误. /*创建一个数据库*/ create database xuning_test; /*说明当时使用数据库对象*/ use x ...
最新文章
- 消费者版 Vive Trackers 正式发布,只会与 Steam 1.0 基站适配
- 26_练习2_用户搜索_初始化显示(静态页面)
- MySQL5.6一主多从复制配置方式一:Tungsten复制中间件
- Re题目------Enm.exe
- Android O 迁移应用官方指南
- mysql hma 分布式_mysql基础之mariadb集群双主(主主)架构
- 阿里云助力江苏省财政厅力推统一公共支付平台
- 受婴儿抓阄启发,谷歌让机器臂自学抓取物体,不用标注数据
- 正弦函数_傅里叶为什么会想到把函数展开为正弦波
- removeAttribute与removeAttributeNode的区别
- 《第一行代码》(第二版)广播的问题及其解决
- 计算机复制教程,教你如何提升电脑文件复制速度的详细教程
- IAR 指定数据存储的绝对位置
- 流量渠道 转化率 买家行为 处罚扣分规则 如何不被抓单,被判虚假交易对店铺的影响
- ES拼音中文智能提示suggest
- mw325r 服务器无响应),新版水星(Mercury)MW325R拨不上号怎么办?【图解】
- [转帖]ABAQUS学习和开发浅谈 [原创]
- 从定标准到搭流程,看UWA性能保障体系搭建的实例分享
- 身份证正则 身份证正则表达式
- Unity 工具之 获取当前所在城市的天气数据的封装(自动定位当前所在城市,天气数据可以获得多天天数据)
热门文章
- CSS box-flex属性,然后弹性盒子模型简介(转)
- 金蝶云星空与聚水潭系统对接方案(聚水潭主管库存)
- 使用Chrome浏览器自带命令对web页面进行截图,生产高质量图片
- NX二次开发-NXOpen::WCS Class Reference
- rke2 在线部署 kubernetes
- 走在法律路上的IT人
- 泛微E-Cology SQL注入漏洞复现【QVD-2023-15672】
- JAVA测试报错idsException : Index 0 out of bounds for length 0:意为数组索引越界异常,索引0超出长度0的界限。怎么解决呢?
- pod容忍(toleration)
- python的django模块_python_django_models模块