首页 > 数据库 >mysql索引与主键、外键

mysql索引与主键、外键

时间:2023-04-19 09:34:14浏览次数:36  
标签:INDEX indexName name 外键 主键 索引 mysql TABLE ALTER

1、介绍

优点:索引可以大大提高mysql的检索速度。

缺点:虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。建立索引会占用磁盘空间的索引文件。

2、分类

2.1 普通索引

# 基础创建
CREATE INDEX indexName ON table_name (column_name)
# 表结构添加
ALTER table tableName ADD INDEX indexName(columnName)
# 创建表时指定
CREATE TABLE mytable(  
 
ID INT NOT NULL,   
 
username VARCHAR(16) NOT NULL,  
 
INDEX [indexName] (username(length))  
 
);  
# 删除索引
DROP INDEX [indexName] ON mytable; 

2.2 唯一索引

与前面的普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。

# 创建索引
CREATE UNIQUE INDEX indexName ON mytable(username(length)) 
# 修改表结构
ALTER table mytable ADD UNIQUE [indexName] (username(length))
# 创建表时
CREATE TABLE mytable(  
 
ID INT NOT NULL,   
 
username VARCHAR(16) NOT NULL,  
 
UNIQUE [indexName] (username(length))  
 
);  

3、alter相关

有四种方式来添加数据表的索引:
ALTER TABLE tbl_name ADD PRIMARY KEY (column_list): 该语句添加一个主键,这意味着索引值必须是唯一的,且不能为NULL。
ALTER TABLE tbl_name ADD UNIQUE index_name (column_list): 这条语句创建索引的值必须是唯一的(除了NULL外,NULL可能会出现多次)。
ALTER TABLE tbl_name ADD INDEX index_name (column_list): 添加普通索引,索引值可出现多次。
ALTER TABLE tbl_name ADD FULLTEXT index_name (column_list):该语句指定了索引为 FULLTEXT ,用于全文索引

#添加主键
ALTER TABLE testalter_tbl ADD PRIMARY KEY (i);
#删除主键
ALTER TABLE testalter_tbl DROP PRIMARY KEY;

#显示索引信息
SHOW INDEX FROM table_name\G

标签:INDEX,indexName,name,外键,主键,索引,mysql,TABLE,ALTER
From: https://www.cnblogs.com/wd404/p/17332100.html

相关文章

  • mysql函数
    1、介绍mysql函数分为四大类:字符串函数、数值函数、日期函数和高级函数。MySQL函数|菜鸟教程(runoob.com)2、常用一般函数时间:now()#返回当前日期和时间2018-09-1920:57:43curtime()#返回当前时间19:59:02current_timestamp()#返回当前日期和时间2018-09-1920:......
  • mysql函数(补充)
    环境:10.4.26-MariaDB1、sleepsleep(n)执行一遍函数,延时n秒如果在where条件中多次需要执行sleep,则多次延时sleep函数返回为false,不论是n是否为0假设设置sleep(100),数据库如实进行了延时n可以设定为小数,最小是0.001,但是这并不是绝对准确2、updatexmlupdatexml(v1,v2,v3......
  • MySQL 主从延迟的常见原因及解决方法
    承蒙大家的支持,刚上市的《MySQL实战》已经跃居京东自营数据库图书热卖榜第1名,收到的反馈也普遍不错。对该书感兴趣的童鞋可通过右边的链接购买。目前,京东自营有活动,只需5折。主从延迟作为MySQL的痛点已经存在很多年了,以至于大家都有一种错觉:有MySQL复制的地方就有主从延......
  • MYSQL基本概述
    MYSQL1、主从复制总览:mysql主从复制是一个异步的复制过程:1、主库会创建一个binlog输出线程,实时的将mysql的操作写入本地的binlog二进制文件中2、从库开始复制时​ 创建从库I/O线程,将主库传来的binlog文件,保存到本地的relaylog文件中。​ 创建SQL线程,从readylog文件中的......
  • MYSQL2 配置文件
    进入目录:cd/usr/share/mysql复制配置文件:cpmy-huge.cnf /etc/my.cnf查看字符集:showvariableslike‘character%’ 或者:showvariableslike‘char%’ ......
  • Linux下Mysql数据库的基础操作
    (Linux下Mysql数据库的基础操作)一、Mysql数据介绍Mysql数据库是一种关系型数据库管理系统,具有的优点有体积小、速度快、总体成本低,开源,可移植性(跨平台,在不同系统中使用),可以和开发语结合,属于轻量级数据库。二、数据库相关术语介绍1.数据库相关名词数据库:database表:table......
  • is blocked because of many connection errors; unblock with 'mysqladmin flush-hos
    指定允许连接不成功的最大尝试次数。5.7默认是100;如果到达这个数,那么服务器将不再允许新的连接,即便mysql仍正常对外提供服务。所以可以将这个参数设置为几万。showvariableslike'max_connect_errors';//最大链接错误次数可以提供最大的链接错误次数setglobalmax_conn......
  • 【Python毕业设计】基于Python+Flask+MySQL的学生信息管理系统(附完整源码)
    1、项目说明基于python+Flask+mysql的学生信息管理系统项目实战项目需要安装pycharm专业版,mysql数据库以及项目所需的所有模块创建数据库名称db_online_notes,然后执行sql文件生成数据表和数据项目需要安装flask,pymysql以及其他的一些模块安装命令如下:pipinstall-ihttps://......
  • 开心档之MySQL 序列使用
     MySQL序列使用MySQL序列是一组整数:1,2,3,...,由于一张数据表只能有一个字段自增主键,如果你想实现其他字段也实现自动增加,就可以使用MySQL序列来实现。本章我们将介绍如何使用MySQL的序列。使用AUTO_INCREMENTMySQL中最简单使用序列的方法就是使用MySQLAUTO_......
  • 云原生之在kubernetes集群下部署Mysql应用
    (云原生之在kubernetes集群下部署mysql应用)一、Mysql介绍数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。MySQL是一种开源的关系型数据库管理系统,可将数据保存在不同的表中,而不是将所有数据放在一个大的仓库内,从而加快了访问速度并提高了灵活性。MySQL使用了标准......