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 8.0 之不可见索引)
- mysql并发查询优化(详解MySQL 联合查询优化机制)
- mysql日志使用(MySQL 日志相关知识总结)
- linux安装nacos教程(Nacos配置MySQL8的方法)
- mysql数据库出现乱码(数据库 MySQL中文乱码解决办法总结)
- docker如何搭建mysql(docker容器访问宿主机的MySQL操作)
- visual studio怎么连接数据库(使用Visual Studio Code连接MySql数据库并进行查询)
- phpstudymysql启动又自动停止(Win下解决phpStudy MySQL启动失败)
- mysql详细笔记(MySQL的内存表的基础学习教程)
- mysql 快速迁移到历史表(MySQL 线上日志库迁移实例)
- mysql 查询都是0的值(MySQL按小时查询数据,没有的补0)
- mysql水平拓展的瓶颈(MySQL令人大跌眼镜的隐式转换)
- mysql常见的存储引擎(如何选择MySQL的存储引擎?)
- mysql主从配置教程(MySQL大库搭建主从的一种思路分享)
- mysqlroot本地远程都可登陆(mysql5.7 设置远程访问的实现)
- docker怎么创建mysql服务(Docker部署MySQL8集群一主二从的实现步骤)
- 买绿宝不能只挑黄绿色 菜农教你3招挑,个个皮薄肉脆,香甜爆汁(买绿宝不能只挑黄绿色)
- 大果肉搭配薄瓜皮, 绿宝 脆甜爽口,不愧是甜瓜中的 佼佼者(大果肉搭配薄瓜皮)
- 河南尉氏县因地制宜发展果蔬种植 水坡镇绿宝甜瓜变 金瓜(河南尉氏县因地制宜发展果蔬种植)
- 谢广坤,你这么欺负谢腾飞,良心不会痛吗(你这么欺负谢腾飞)
- 乡村爱情15 宋晓峰怀疑自己孩子,腾飞与姜奶奶亲子鉴定出结果(宋晓峰怀疑自己孩子)
- 《乡村爱情13》开播,新版刘能以假乱真,编剧思维进入瓶颈(新版刘能以假乱真)
热门推荐
- python创建文件夹(python批量创建指定名称的文件夹)
- php mq使用方法(PHP使用ActiveMQ实现消息队列的方法详解)
- html5书写规范教学(Html5踩坑记之mandMobile使用小记)
- 小程序数字化怎么布局(用position:sticky完美解决小程序吸顶问题的实现方法)
- python爬取酷狗收费音乐(python爬取酷狗音乐排行榜)
- asp.net 消息队列
- 同步、异步、阻塞、非阻塞
- mysql8.0.12安装教程图解(MySql8.023安装过程图文详解首次安装)
- sqlserver 查询数据库增长设置(SQL设置SQL Server最大连接数及查询语句)
- php依赖注入对象注册(php依赖注入知识点详解)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9