本文汇总了MySQL导出所有Index 和 约束的方法,提供给大家以方便大家查询使用。具体如下:
1. 导出创建自增字段语句:
SELECT CONCAT( 'ALTER TABLE `', TABLE_NAME, '` ', 'MODIFY COLUMN `', COLUMN_NAME, '` ', IF(UPPER(DATA_TYPE) = 'INT', REPLACE( SUBSTRING_INDEX( UPPER(COLUMN_TYPE), ')', 1 ), 'INT', 'INTEGER' ), UPPER(COLUMN_TYPE) ), ') UNSIGNED NOT NULL AUTO_INCREMENT;' ) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'source_database_name' AND EXTRA = UPPER('AUTO_INCREMENT') ORDER BY TABLE_NAME ASC
2. 导出所有索引:
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 ) ) ),'(', GROUP_CONCAT(DISTINCT CONCAT('`', COLUMN_NAME, '`') ORDER BY SEQ_IN_INDEX ASC SEPARATOR ', '), ');') AS 'Show_Add_Indexes' FROM information_schema.STATISTICS WHERE TABLE_SCHEMA = 'pbq' GROUP BY TABLE_NAME, INDEX_NAME ORDER BY TABLE_NAME ASC, INDEX_NAME ASC
3. 创建删除所有自增字段:
SELECT CONCAT( 'ALTER TABLE `', TABLE_NAME, '` ', 'MODIFY COLUMN `', COLUMN_NAME, '` ', IF(UPPER(DATA_TYPE) = 'INT', REPLACE( SUBSTRING_INDEX( UPPER(COLUMN_TYPE), ')', 1 ), 'INT', 'INTEGER' ), UPPER(COLUMN_TYPE) ), ') UNSIGNED NOT NULL;' ) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'destination_database_name' AND EXTRA = UPPER('AUTO_INCREMENT') ORDER BY TABLE_NAME ASC
4. 删除库所有索引:
SELECT CONCAT( 'ALTER TABLE `', TABLE_NAME, '` ', GROUP_CONCAT( DISTINCT CONCAT( 'DROP ', IF(UPPER(INDEX_NAME) = 'PRIMARY', 'PRIMARY KEY', CONCAT('INDEX `', INDEX_NAME, '`') ) ) SEPARATOR ', ' ), ';' ) FROM information_schema.STATISTICS WHERE TABLE_SCHEMA = 'destination_database_name' GROUP BY TABLE_NAME ORDER BY TABLE_NAME ASC
希望本文所述示例能够对大家有所帮助。
问题内容: 我继承了一个使用MySQL的应用程序,该应用程序由PHP前端使用。编写此系统的人花了相当长的时间才能确保用户输入的代码有效- tat表示这些代码也存在于另一个表中。 当我第一次看到此消息时,我想知道为什么他没有使用CHECK约束并让dbms进行解决- 我设想有很多不同的程序会实现相同的检查,而不仅仅是dbms中的一个地方。然后我发现MySQL不支持Check约束(严格来说不是真的- 它
问题内容: 我想保留所有MySQL数据库的备份。我有100多个MySQL数据库。我想同时导出所有它们,然后一次将所有它们再次导入到我的MySQL服务器中。我怎样才能做到这一点? 问题答案: 出口: 查找有关mysqldump的文档。您可能要使用注释中提到的一些选项: 进口:
问题内容: 在MySQL中创建非NULL约束以使fieldA和fieldB不能都为NULL的最佳方法是什么。我不在乎任何一个本身是否为NULL,只要另一个字段具有非NULL值即可。而且,如果它们都具有非NULL值,那就更好了。 问题答案: MySQL 5.5引入了SIGNAL,因此我们不再需要Bill Karwin的答案中的额外列。Bill指出您还需要一个更新触发器,因此我也将其包括在内。
我有一个UIView,它通过几个约束被放置在屏幕上。一些约束由superview拥有,另一些约束由其他祖先拥有(例如,可能是UIViewController的view属性)。 要澄清这些解决方案的问题,请考虑以下视图层次结构: 爷爷 父亲 我 儿子 女儿 现在假设我们创建了以下约束,并始终将它们附加到它们最近的共同祖先: null
主要内容:在创建表时设置非空约束,在修改表时添加非空约束,删除非空约束MySQL非空约束(NOT NULL)指字段的值不能为空。对于使用了非空约束的字段,如果用户在添加数据时没有指定值,数据库系统就会报错。可以通过 CREATE TABLE 或 ALTER TABLE 语句实现。在表中某个列的定义后加上关键字 NOT NULL 作为限定词,来约束该列的取值不能为空。 比如,在用户信息表中,如果不添加用户名,那么这条用户信息就是无效的,这时就可以为用户名字段设置非空约
主要内容:选取设置检查约束的字段,在创建表时设置检查约束,在修改表时添加检查约束,删除检查约束MySQL检查约束(CHECK)是用来检查数据表中字段值有效性的一种手段,可以通过 CREATE TABLE 或 ALTER TABLE 语句实现。设置检查约束时要根据实际情况进行设置,这样能够减少无效数据的输入。 在《MySQL默认值》和《MySQL非空约束》中讲解的默认值约束和非空约束也可看作是特殊的检查约束。 选取设置检查约束的字段 检查约束使用 CHECK 关键字,具体的语法格式如下: C