濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > Mysql中索引和約束的示例語(yǔ)句

Mysql中索引和約束的示例語(yǔ)句

熱門標(biāo)簽:地圖標(biāo)注被騙三百怎么辦 云南語(yǔ)音外呼系統(tǒng)平臺(tái) 常州電銷外呼系統(tǒng)一般多少錢 福州呼叫中心外呼系統(tǒng)哪家好 400電話鄭州申請(qǐng) 北京人工外呼系統(tǒng)價(jià)錢 沃克斯電梯外呼線路圖 天智外呼系統(tǒng) 房產(chǎn)智能外呼系統(tǒng)品牌

外鍵

查詢一個(gè)表的主鍵是哪些表的外鍵

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 = '表名';

導(dǎo)出所有外鍵語(yǔ)句

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;

刪除所有外鍵語(yǔ)句

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;

自增

導(dǎo)出創(chuàng)建自增字段的語(yǔ)句

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;

創(chuàng)建刪除所有自增字段

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;

索引

導(dǎo)出所有索引

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;

數(shù)據(jù)合并

在數(shù)據(jù)遷移合并的時(shí)候,比較棘手的是不同數(shù)據(jù)庫(kù)主鍵重復(fù),那么我們就要批量修改主鍵的值,為了避免重復(fù)我們可以把自增的數(shù)字改為字符串

步驟基本上有以下幾步

  • 取消主鍵自增
  • 刪除所有外鍵
  • 修改主鍵字段為varchar
  • 添加所有外鍵
  • 修改主鍵的值
  • 合并數(shù)據(jù)

修改主鍵值的時(shí)候要注意

如果包含id和pid這種自關(guān)聯(lián)的情況下是不能直接修改值的,就需要先刪除約束再添加。

比如

刪除自約束

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)后兩個(gè)參數(shù)為原數(shù)字進(jìn)制和要轉(zhuǎn)換后的進(jìn)制。

第一個(gè)參數(shù)只要內(nèi)容是數(shù)字就算類型為varchar也可以轉(zhuǎn)換。

以上就是Mysql中索引和約束的示例語(yǔ)句的詳細(xì)內(nèi)容,更多關(guān)于MySQL 索引和約束的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • MySQL非空約束(not null)案例講解
  • MySQL外鍵約束(FOREIGN KEY)案例講解
  • MySQL 外鍵約束和表關(guān)系相關(guān)總結(jié)
  • MySQL完整性約束的定義與實(shí)例教程
  • MySQL 8.0新特性 — 檢查性約束的使用簡(jiǎn)介
  • MySQL中外鍵的創(chuàng)建、約束以及刪除
  • MySQL外鍵約束的實(shí)例講解
  • 詳解MySQL 外鍵約束
  • mysql完整性約束實(shí)例詳解
  • MySQL約束超詳解

標(biāo)簽:珠海 沈陽(yáng) 徐州 沈陽(yáng) 鹽城 黔東 拉薩 移動(dòng)

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Mysql中索引和約束的示例語(yǔ)句》,本文關(guān)鍵詞  Mysql,中,索引,和,約束,的,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Mysql中索引和約束的示例語(yǔ)句》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于Mysql中索引和約束的示例語(yǔ)句的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    监利县| 鹤壁市| 南靖县| 万安县| 堆龙德庆县| 平定县| 揭西县| 临沧市| 香河县| 门源| 乐东| 京山县| 延津县| 平谷区| 日喀则市| 阳江市| 原平市| 龙门县| 哈巴河县| 额尔古纳市| 右玉县| 宿州市| 常州市| 天气| 石阡县| 云霄县| 宝鸡市| 茶陵县| 陆河县| 永顺县| 芦山县| 鹤庆县| 陇川县| 长葛市| 姜堰市| 山阴县| 城口县| 云安县| 金溪县| 敖汉旗| 阿拉尔市|