首页 > 数据库 >MySQL索引、事务(数据库管理与高可用)

MySQL索引、事务(数据库管理与高可用)

时间:2024-07-26 17:54:12浏览次数:23  
标签:语句 index 创建 数据库 索引 MySQL create 主键

一、索引的概念

索引:排序的列表,对数据进行快速的查询;

针对不同的产品需求,或者不同的数据库结构,会创建不同的索引;

1:普通索引(默认索引)

2:唯一索引(可以多个)

3:主键索引(只能一个)

4:组合索引(最左查询)

5:全文索引

oracle:B树索引

将表一份为二进行查询;

70

1--35 36--70

1--17 18--35

先把实验环境创建出来:

先创建库;再创建表;

一:创建普通索引;

create index aaa on users(user_name(20));

普通索引创建命令 索引名 users表 哪个列作为索引;索引的大小;尽量和列的大小;保持一致;

如何查看索引;

show create table users\g

使用另外一种创建索引的命令:慎用;此命令是用来修改表的结构的,同时还可以添加索引;

alter table users add index bbb (user_name(20));

另外一种查看索引的方法:

show index from users\G

而且普通索引的类型就是oracle中的B树索引;

第三种创建索引的方法;

在创建表的时候创建索引;

create table t1 ( id int(10) , name char(20) , sex char(2), index ccc (id) );

查看该索引;

二:创建唯一索引

指定创建索引类型(unique)(唯一索引,它的值,要在表中是唯一性的;)

create unique index ddd on t1(id);

第二种创建唯一索引的方法:

创建表的时候创建索引;

create table t2 ( id int(10) , name char(20) , sex char(2), unique eee (id) );

第三种创建唯一索引的方法:

alter命令添加唯一索引;

表的约束:

实体完整性约束(主键)(主键是唯一的,且不能为空。)

域完整性约束(数据类型。)

引用完整性约束(外键一定对应另外一个表的主键。)

用户自定义的完整性(大小约束性。)

三:创建主键索引

主键是创建表的时候声明出来的;

查看主键:

show create table t3\G

四:创建组合索引(特点是一个索引对应多个列;且列与列可以有间隔)

create table t4 (id int(10),name char(20),age int(5),index ggg(id,name,age));

组合索引如何使用?

提供的搜索语句要和索引列对应起来;如果顺序有错误;将不会使用到索引;

五:创建全文索引

全文索引只针对字符串,而数字不能作为全文索引;

create fulltext index hhh on t4 (name);

创建索引的原则;

(1)主键或外键必须有索引

(2)300行以下,没有必要创建索引

(3)经常用于跨表查询,需要有索引

(4)唯一性比较差的列或表不适合建立索引

(5)更新太频繁的列不适合建立索引

(6)经常用where指定的条件进行查询的,适合创建索引

(7)建立索引的列尽量是小字段

索引的维护:

删除,再创建;重建索引;

如何删除索引:

使用drop命令来删除索引;然后指定索引的名称及所在的表;

drop index ggg on t4;

事物:一系列sql语句的集合,这些语句全都指定,要么都不执行;

语句1

语句2

语句3

原子性:

一致性:

隔离性:

持久性:(提交)

内存(数据缓冲区)(可以回滚)

服务器宕机的话,没有来得及写入硬盘的话,数据会丢失;

提交意味着写入硬盘;

硬盘(永久存储)(不可以回滚的)

例:银行转账:

账户1

2000

-1000

=1000

账户2

+1000

如果转账不成功会撤销前面所有的步骤;执行事物之前与执行事物之后要保证一致性。

创建实验环境:

创建一个表;

往表里填写数据,并且关闭自动提交的功能;

然后再提交第二条数据;且随后进行回滚;发现数据没有被及时写入到硬盘中;

位于缓冲区的可以回滚的,写入到硬盘中的数据不可以回滚;

如何手动提交:commit

如何将多个语句写入到事物中;

先使用begin;作为开头;然后中间写语句;最后以提交命令commit做结尾;此时;这些语句就会被及时写入到硬盘中;

创建普通索引的三种方法

创建唯一索引的三种方法

创建主键索引的两种方法

创建组合索引只有一种方法

创建全文索引有三种方法

小结

索引的概念、

索引的作用、

索引的分类、

索引的创建、

索引的查看、

索引的删除

标签:语句,index,创建,数据库,索引,MySQL,create,主键
From: https://blog.csdn.net/2401_85084312/article/details/140717702

相关文章

  • 用户管理与高级SQL语句(数据库管理与高可用)
    1.表(Table)数据库中的表与我们日常生活中使用的表格类似,它也是由行(Row)和列(Column)组成的。列由同类的信息组成,每列又称为一个字段,每列的标题称为字段名。行包括了若干列信息项。一行数据称为一个或一条记录,它表达有一定意义的信息组合。一个数据库表由一条或多条记录组成,没有......
  • 【MySQL进阶之路 | 高级篇】表级锁之S锁,X锁,意向锁
    1.从数据操作的粒度划分:表级锁,页级锁,行锁为了尽可能提高数据库的并发度,每次锁定的数据范围越小越好,理论上每次只锁定当前操作的数据的方案会得到最大的并发度,但是管理锁是很耗资源的事情(涉及获取、检查、释放锁等动作)。因此数据库系统需要在高并发响应和系统性能两方面进行......
  • 【MySQL进阶之路 | 高级篇】行锁之记录锁和间隙锁
    1.InnoDB的行锁行锁(rowlock)也称为记录锁。顾名思义,就是锁住某一行(某个记录row)。需要注意的是,MySQL服务层并没有行锁机制,行级锁只在存储引擎层实现。优点:锁定力度小,发生锁冲突概率低,可以实现的并发度高。缺点:对于锁的开销比较大,加锁会比较慢,容易出现死锁的情况。InnoDB与M......
  • MySQL 学习笔记 进阶(索引 下)
    索引 索引-分类 在InnoDB中存储引擎中,根据索引的存储形式,又可以分为以下几种: 聚集索引选取规则:如果存在主键,主键索引就是聚集索引。如果不存在主键,将使用第一个唯一(UNIQUE)索引作为聚集索引。如果表没有主键,或没有合适的唯一索引,则InnoDB会自动生成一个rowid作为隐藏......
  • Fatal error: Call to undefined function mysql_connect() in …
    错误记录:Fatalerror:Calltoundefinedfunctionmysql_connect()in…错误原因:运行环境问题解决方案:你的PHP不支持mysql_connect()函数。PHP是一种模块化的设计,除了核心的内容,其他都是可选的。之所以不支持,是因为在编译PHP时没有加入对MYSQL数据库的支持。原因2:......
  • MySQL数据库安装及使用
    MySQL安装在线安装ubuntusudoapt-getinstallmysql-server#服务器sudoapt-getisntallmysql-client#客户端sudoapt-getinstalllibmysqlclient-dev#开发接口redhatyuminstallmysql-serveryuminstallmysql-clientyuminstalllibmy......
  • Rocky Linux 8安装MySQL8
    先去mysql官网:https://downloads.mysql.com/archives/community/选择对应的版本下载,然后上传到Linux机器上或者直接在linux上wgethttps://downloads.mysql.com/archives/get/p/23/file/mysql-8.4.0-1.el8.x86_64.rpm-bundle.tar下载资源使用tar-xvfmysql-8.4.0-1.......
  • SQL优化之索引
    SQL优化之索引索引索引分类:普通索引(Normal):最基本的索引,没有任何限制。唯一索引(UNIQUE):索引列的值必须唯一,但允许有空值。主键索引(PRIMARYKEY):唯一且不允许为空,一张表只能有一个主键索引。全文索引(FULLTEXT):用于全文搜索,适合大段文字的搜索。创建索引:创建普通索引:CREA......
  • mysql8: 新建账号和权限操作
    一,允许从任何ip访问时,用%CREATEUSER'myusername'@'%'IDENTIFIEDBY'my_password';GRANTALLPRIVILEGESON`mybase`.*TO'myusername'@'%';FLUSHPRIVILEGES;注意:这种做法在生产环境中不要使用,不够安全,     只用于内部开发时工程师共同访问的内部环境二,......
  • MySql 字段类型长度问题理解
    mysql中字段长度理解字符长度设计表中设置的是字符长度,任意字符都占一个字符长度,使用char_length函数获取char_length(`name`)字节长度字节长度和数据表的字符集有关。length获取字节长度。length(`name`)在mysql中如果是latin1字符集下,一个中文汉字占2个字节数;......