mysql 索引怎么实现(Mysql中索引和约束的示例语句)
类别:数据库 浏览量:566
时间:2022-01-18 01:14:20 mysql 索引怎么实现
Mysql中索引和约束的示例语句外键
查询一个表的主键是哪些表的外键
|
SELECT TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAME, REFERENCED_TABLE_NAME, REFERENCED_COLUMN_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE TABLE_SCHEMA = 'mydbname' AND REFERENCED_TABLE_NAME = '表名' ; |
导出所有外键语句
|
SELECT CONCAT( 'ALTER TABLE ' , TABLE_NAME, ' ADD CONSTRAINT ' , CONSTRAINT_NAME, ' FOREIGN KEY (' , COLUMN_NAME, ') REFERENCES ' , REFERENCED_TABLE_NAME, '(' , REFERENCED_COLUMN_NAME, ') ON DELETE CASCADE ON UPDATE CASCADE;' ) FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE TABLE_SCHEMA = 'mydbname' AND REFERENCED_TABLE_NAME IS NOT NULL ; |
删除所有外键语句
|
SELECT CONCAT( 'ALTER TABLE ' , TABLE_NAME, ' DROP FOREIGN KEY ' , CONSTRAINT_NAME, ';' ) FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE TABLE_SCHEMA = 'mydbname' AND REFERENCED_TABLE_NAME IS NOT NULL ; |
自增
导出创建自增字段的语句
|
SELECT CONCAT( 'ALTER TABLE `' , TABLE_NAME, '` ' , 'MODIFY COLUMN `' , COLUMN_NAME, '` ' , UPPER ( COLUMN_TYPE ), ' NOT NULL AUTO_INCREMENT COMMENT "' ,COLUMN_COMMENT, '";' ) as 'ADD_AUTO_INCREMENT' FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'mydbname' AND EXTRA = UPPER ( 'AUTO_INCREMENT' ) ORDER BY TABLE_NAME ASC ; |
创建删除所有自增字段
|
SELECT CONCAT( 'ALTER TABLE `' , TABLE_NAME, '` ' , 'MODIFY COLUMN `' , COLUMN_NAME, '` ' , UPPER ( COLUMN_TYPE ), ' NOT NULL;' ) as 'DELETE_AUTO_INCREMENT' FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'mydbname' AND EXTRA = UPPER ( 'AUTO_INCREMENT' ) ORDER BY TABLE_NAME ASC ; |
索引
导出所有索引
|
SELECT CONCAT( 'ALTER TABLE `' , TABLE_NAME, '` ' , 'ADD ' , IF ( NON_UNIQUE = 1, CASE UPPER ( INDEX_TYPE ) WHEN 'FULLTEXT' THEN 'FULLTEXT INDEX' WHEN 'SPATIAL' THEN 'SPATIAL INDEX' ELSE CONCAT( 'INDEX `' , INDEX_NAME, '` USING ' , INDEX_TYPE ) END , IF ( UPPER ( INDEX_NAME ) = 'PRIMARY' , CONCAT( 'PRIMARY KEY USING ' , INDEX_TYPE ), CONCAT( 'UNIQUE INDEX `' , INDEX_NAME, '` USING ' , INDEX_TYPE ))), CONCAT( '(`' , COLUMN_NAME, '`)' ), ';' ) AS 'ADD_ALL_INDEX' FROM information_schema. STATISTICS WHERE TABLE_SCHEMA = 'mydbname' ORDER BY TABLE_NAME ASC , INDEX_NAME ASC ; |
删除所有索引
|
SELECT CONCAT( 'ALTER TABLE `' , TABLE_NAME, '` ' , CONCAT( 'DROP ' , IF ( UPPER ( INDEX_NAME ) = 'PRIMARY' , 'PRIMARY KEY' , CONCAT( 'INDEX `' , INDEX_NAME, '`' ))), ';' ) AS 'DELETE_ALL_INDEX' FROM information_schema. STATISTICS WHERE TABLE_SCHEMA = 'mydbname' ORDER BY TABLE_NAME ASC ; |
数据合并
在数据迁移合并的时候,比较棘手的是不同数据库主键重复,那么我们就要批量修改主键的值,为了避免重复我们可以把自增的数字改为字符串
步骤基本上有以下几步
- 取消主键自增
- 删除所有外键
- 修改主键字段为varchar
- 添加所有外键
- 修改主键的值
- 合并数据
修改主键值的时候要注意
如果包含id和pid这种自关联的情况下是不能直接修改值的,就需要先删除约束再添加。
比如
删除自约束
|
ALTER TABLE `t_director` DROP FOREIGN KEY `fk_directorpid`; |
修改值
|
update t_director set directorid=directorid+100000000; update t_director set directorid=CONV(directorid,10,36); update t_director set directorpid=directorpid+100000000 WHERE directorpid is not null ; update t_director set directorpid=CONV(directorpid,10,36) WHERE directorpid is not null ; |
添加自约束
|
ALTER TABLE t_director ADD CONSTRAINT fk_directorpid FOREIGN KEY (directorpid) REFERENCES t_director(directorid) ON DELETE CASCADE ON UPDATE CASCADE ; |
注意
CONV(directorpid,10,36)后两个参数为原数字进制和要转换后的进制。
第一个参数只要内容是数字就算类型为varchar也可以转换。
以上就是Mysql中索引和约束的示例语句的详细内容,更多关于MySQL 索引和约束的资料请关注开心学习网其它相关文章!
原文链接:https://www.psvmc.cn/article/2020-12-23-mysql-constraint.html
您可能感兴趣
- mysql数据备份的几种方式(MySQL数据库备份过程的注意事项)
- mysql长连接释放和不释放的问题(解决MySQL存储时间出现不一致的问题)
- mysql提高分页效率(MySQL优化教程之超大分页查询)
- mysql8.0.19.0正确安装图解(MySQL 8.0.23 主要更新一览新特征解读)
- 如何在mysql中批量插入数据(MySQL如何快速批量插入1000w条数据)
- windows 安装解压版 mysql5.7.28 winx64的详细教程(windows 安装解压版 mysql5.7.28 winx64的详细教程)
- ubuntu下mysql安装教程(Ubuntu 20.04 安装和配置MySql5.7的详细教程)
- mysql的基本索引类型(MySQL 隔离数据列和前缀索引的使用总结)
- 图片如何存放在mysql中(将图片保存到mysql数据库并展示在前端页面的实现代码)
- mysql 快速迁移到历史表(MySQL 线上日志库迁移实例)
- navicat15.0.28注册码(Navicat for MySQL 11注册码激活码汇总)
- mysql获取随机数(MySQL 生成随机数字、字符串、日期、验证码及 UUID的方法)
- mysql数据恢复时间点(MySQL 基于时间点的快速恢复方案)
- mysql索引原理及使用(再有人问你MySQL索引原理,就把这篇文章甩给他!)
- mysql数据库怎么换行(MySQL数据中很多换行符和回车符的解决方法)
- mysql数据库触发器(MySQL中使用游标触发器的方法)
- 网红直播可以赚很多钱吗(网红直播可以赚很多钱吗)
- 今天是什么日子(今天是什么日子有什么特殊意义吗)
- 这里输入关键词(怎么输入关键词搜索)
- 34岁的舒畅,就这样走到了末路,不知会不会后悔15年前的草率决定(就这样走到了末路)
- 不走心的古装造型 舒畅 毁容式 出演,萧蔷雷出新高度(不走心的古装造型)
- 嘉南传 第22集(嘉南传第22集)
热门推荐
- python 绕过密码(一小段Python代码,破解加密zip文件的密码)
- dedecmsv5.7后台路径查找(dedecms 取消服务器/主机空间目录脚本的执行权限方法[图文])
- python怎样读取mysql数据(使用Python将Mysql的查询数据导出到文件的方法)
- 常见的mysql优化策略(MySQL pt-slave-restart工具的使用简介)
- php添加到数组的用法(详解PHP 7.4 中数组延展操作符语法知识点)
- dedecms发布时间调整(织梦DEDECMS发布完文章没有显示文章内容解决办法)
- 香港服务器有哪些优势呢(浅谈香港服务器与香港云主机的区别)
- dockernginx怎么设置容器(docker nginx + https 子域名配置详细教程)
- 怎么调input搜索框边框颜色(使用placeholder属性设置input文本框的提示信息)
- 织梦cms漏洞怎么解决(织梦cms、帝国cms、PHPcms优缺点解析)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9