最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Mysql中索引和約束的示例語句

 更新時間:2021年01月03日 09:51:21   作者:碼客  
這篇文章主要介紹了Mysql中索引和約束的相關(guān)資料,幫助大家更好的理解和使用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 = '表名';

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

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;

自增

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

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ù)據(jù)庫主鍵重復(fù),那么我們就要批量修改主鍵的值,為了避免重復(fù)我們可以把自增的數(shù)字改為字符串

步驟基本上有以下幾步

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

修改主鍵值的時候要注意

如果包含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)后兩個參數(shù)為原數(shù)字進制和要轉(zhuǎn)換后的進制。

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

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

您可能感興趣的文章:

相關(guān)文章

  • 解決MySQL客戶端輸出窗口顯示中文亂碼問題的辦法

    解決MySQL客戶端輸出窗口顯示中文亂碼問題的辦法

    這篇文章主要介紹了解決MySQL客戶端輸出窗口顯示中文亂碼問題的辦法,需要的朋友可以參考下
    2015-12-12
  • MySQL中的唯一索引的簡單學(xué)習(xí)教程

    MySQL中的唯一索引的簡單學(xué)習(xí)教程

    這篇文章主要介紹了MySQL中的唯一索引的簡單學(xué)習(xí)教程,是MySQL入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-11-11
  • Mysql?刪除重復(fù)數(shù)據(jù)保留一條有效數(shù)據(jù)(最新推薦)

    Mysql?刪除重復(fù)數(shù)據(jù)保留一條有效數(shù)據(jù)(最新推薦)

    這篇文章主要介紹了Mysql?刪除重復(fù)數(shù)據(jù)保留一條有效數(shù)據(jù),實現(xiàn)原理也很簡單,mysql刪除重復(fù)數(shù)據(jù),多個字段分組操作,結(jié)合實例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2023-02-02
  • Mysql遷移DM國產(chǎn)達夢數(shù)據(jù)庫完整步驟記錄

    Mysql遷移DM國產(chǎn)達夢數(shù)據(jù)庫完整步驟記錄

    最近工作中用到國產(chǎn)數(shù)據(jù)庫達夢,簡稱DM,下面這篇文章主要給大家介紹了關(guān)于Mysql遷移DM國產(chǎn)達夢數(shù)據(jù)庫完整步驟的相關(guān)資料,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2024-07-07
  • mysql整數(shù)數(shù)據(jù)類型深入解析

    mysql整數(shù)數(shù)據(jù)類型深入解析

    本篇文章是對mysql中的整數(shù)數(shù)據(jù)類型進行了詳細的分析介紹,需要的朋友參考下
    2013-06-06
  • MySQL中出現(xiàn)亂碼問題的終極解決寶典

    MySQL中出現(xiàn)亂碼問題的終極解決寶典

    這篇文章主要介紹了MySQL中出現(xiàn)亂碼問題的終極解決寶典,包括編碼轉(zhuǎn)換和SQL數(shù)據(jù)進出等方面,無比給力,極力推薦這篇精華翻譯!需要的朋友可以參考下
    2015-08-08
  • MySQL中count(*)、count(1)和count(col)的區(qū)別匯總

    MySQL中count(*)、count(1)和count(col)的區(qū)別匯總

    count()函數(shù)是用來統(tǒng)計表中記錄的一個函數(shù),返回匹配條件的行數(shù),下面這篇文章主要給大家總結(jié)介紹了關(guān)于MySQL中count(*)、count(1)和count(col)的區(qū)別,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下。
    2018-03-03
  • Mysql的Explain使用方式及索引總結(jié)

    Mysql的Explain使用方式及索引總結(jié)

    這篇文章主要介紹了Mysql的Explain使用方式及索引總結(jié),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • Ubuntu安裝MySQL的三種方式以及卸載MySQL

    Ubuntu安裝MySQL的三種方式以及卸載MySQL

    在Linux系統(tǒng)中,卸載MySQL可通過dpkg-l和grep命令組合來查詢已安裝的MySQL相關(guān)軟件包,然后使用適當(dāng)命令進行卸載,安裝MySQL時,可以選擇直接安裝或編譯安裝,直接安裝需要設(shè)置密碼,編譯安裝需選擇帶boost庫的版本,初始化MySQL時要指定data目錄
    2024-10-10
  • 輕松上手MYSQL之SQL優(yōu)化之Explain詳解

    輕松上手MYSQL之SQL優(yōu)化之Explain詳解

    Explain是SQL分析工具中非常重要的一個功能,它可以模擬優(yōu)化器執(zhí)行查詢語句,幫助我們理解查詢是如何執(zhí)行的,這篇文章主要給大家介紹了關(guān)于輕松上手MYSQL之SQL優(yōu)化之Explain詳解的相關(guān)資料,需要的朋友可以參考下
    2024-06-06

最新評論

鹰潭市| 牙克石市| 宁阳县| 临泉县| 大埔县| 湛江市| 华阴市| 吐鲁番市| 宁武县| 土默特左旗| 紫金县| 双流县| 平邑县| 新巴尔虎右旗| 姚安县| 德保县| 三门县| 西乌珠穆沁旗| 万安县| 平山县| 大渡口区| 轮台县| 普陀区| 百色市| 黄大仙区| 宁阳县| 富平县| 三明市| 昂仁县| 龙口市| 曲水县| 巴里| 石棉县| 阿拉善右旗| 黔西县| 梨树县| 青州市| 永春县| 茌平县| 东至县| 连城县|