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
您可能感兴趣
- key的用法归纳mysql(详解mysql中explain的type)
- dockerfile构建mysql镜像并初始化(docker-compose基于MySQL8部署项目的实现)
- mysql缓冲池(详解MySQL中的缓冲池buffer pool)
- mysql索引详解及基本用法(Mysql普通索引与唯一索引的选择详析)
- mysqlbinlog怎么分析(MySQL中使用binlog时格式该如何选择)
- mysql的四种关系运算(详解MySQL拼接函数CONCAT的使用心得)
- mysql如何删除整个表及数据(Mysql删除数据以及数据表的方法实例)
- mysql8.0安装教程win10(Windows10下mysql 8.0.22 安装配置方法图文教程)
- sysbenchmysql性能跑分(MySQL性能压力基准测试工具sysbench的使用简介)
- netcore连什么数据库好(.Net Core导入千万级数据至Mysql的步骤)
- mysql的索引及其介绍总结(浅析MysQL B-Tree 索引)
- mysql字符集怎么看(mysql字符集相关总结)
- thinkphp5.1手动连接mysql数据库(thinkphp5框架结合mysql实现微信登录和自定义分享链接与图文功能示例)
- mysql主从同步失败原因(mysql 主从复制如何跳过报错)
- mysql有数据但筛选值为空(解决从集合运算到mysql的not like找不出NULL的问题)
- thinkphp5怎么设置默认返回(thinkphp5.1框架实现格式化mysql时间戳为日期的方式小结)
- 门外之见 海蛎子味 的表演,能走多远(门外之见海蛎子味)
- 三部冷门谍战剧,第一部2014年拍摄,至今还未播出(三部冷门谍战剧)
- 《金陵秘事》的剧情跌宕起伏 给观众带来的怎样的感官体验(金陵秘事的剧情跌宕起伏)
- 少儿口才表达影响未来一生,50首经典绕口令和孩子玩出聪明大脑(少儿口才表达影响未来一生)
- 玩网游居然让人更友善 很难以让人置信(玩网游居然让人更友善)
- 学好汉语拼音,从娃娃绕口令抓起,平时还是要多练 收藏好(从娃娃绕口令抓起)
热门推荐
- mysqlinnodb锁使用教程(MySQL Innodb关键特性之插入缓冲insert buffer)
- iis操作教程(IIS支持exe文件下载配置方法附图)
- php函数的使用方法(PHP中str_split函数的用法讲解)
- 宝塔web服务器如何安装(宝塔面板开启Nginx/Apache防火墙四层防御的方法)
- docker 容器怎么访问宿主机网络(Docker绑定固定IP/跨主机容器互访操作)
- dedecms无缩略图怎么设置(DEDECMS系统分页标签自定义二次开发实例)
- 设置ftp访问用户(FTP虚拟用户的使用方法)
- javascript和jquery的区别详解(JavaScript与JQuery框架基础入门教程)
- dedecms授权协议(360提示DedeCms全局变量覆盖漏洞临时解决方法)
- phpstudy 目录浏览宽度(JspStudy如何设置PHP根目录可编辑)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9