Mysql獲取資料庫的所有 表 字段 索引 外來鍵

2021-10-01 05:41:23 字數 3646 閱讀 5286

本文參照:

【mysql獲取資料庫的所有表,以及表所有字段資訊】

【mysql 查詢指定資料庫所有表, 指定表所有列, 指定列所有表 所有外來鍵及索引, 以及索引的建立和刪除】

查詢指定 資料庫 中所有 表 (指定資料庫的,所有表)

// 可以把 table_name 換成 * 號, 檢視更豐富的資訊

select

table_name

from

information_schema. tables

where

table_schema = '資料庫名'

//where 後面還有更多的條件選擇,比如只查出以 oauth_表開頭的表

and table_name like 'oauth_%';

查詢指定 資料庫 中,指定 表 的所有 字段 (指定表的,所有列)

select

column_name

from

information_schema.columns

where

table_schema = '資料庫名'

and table_name = '表名'

select

table_name tablename,

engine,

table_comment tablecomment,

create_time createtime

from

information_schema.tables

where

table_schema = ( select database ( ) )

查詢指定 資料庫 所有表中, 含有 某個字段 的表 (指定列的,所有表)

select

column_name columnname,

data_type datatype,

column_comment columncomment,

column_key columnkey,

extra

from

information_schema.columns

where

table_name = 'table_name'

and table_schema = ( select database ( ) )

order by

ordinal_position

select

table_name

from

information_schema. columns

where

table_schema = '資料庫名'

and table_name in (

select

table_name

from

information_schema. tables

where

table_schema = '資料庫名'

) and column_name = '欄位名';

查詢指定 資料庫 中所有 表 的 外來鍵

select

*from

information_schema.table_constraints

where

//注意指定約束型別, 是為了過濾掉 "primary key, unique"這兩個索引

constraint_type = 'foreign key'

and constraint_schema = '資料庫名'

//如果只查詢外來鍵是以 fk_開頭命名的 (如果你的外來鍵命名以 fk_開頭的話)

and constraint_name like 'fk_%';

查詢指定 資料庫 中所有 表 的 索引 (主鍵,唯一,普通等, 除了外來鍵)

select

*from

information_schema.statistics

where

table_schema = '資料庫名';

//對常用的幾個字段進行說明

//table_schema, 表所在庫

//table_name, 表名

//non_unique, 該索引能否包含重複, 1代表可以, 0代表不可以, 注意primary ,unique 為0,

//用index_name 欄位將兩者區分

//index_name, 索引名

//column_name 表欄位名,(表示此欄位上加了索引)

如果只想查出 某個表 的 索引

//以下兩個 sql 是等價的,

//注意 表名和資料庫名 順序 以及 是否加引號 ''

select * from information_schema.statistics

where table_name = '表名'

and table_schema = '資料庫名'

show index

from 表名

from 資料庫名

select * from information_schema.statistics where table_name='表名' and table_schema='資料庫名';
建立索引

1. alter table

//唯一索引 (文字字段不能新增索引)

alter table `表名` add unique `索引名` (`字段`, `字段`);

//普通索引 (文字字段不能新增索引)

alter table `表名` add index `索引名` (`字段`, `字段`);

//主鍵索引

alter table `表名` add primary key (`字段`);

2. create index

create index `索引名` on `表名` (`字段`, `字段`)

create unique index `索引名` on `表名` (`字段`, `字段`)

刪除索引

//刪除普通索引或唯一索引

1. drop index index_name on talbe_name

2. alter table table_name drop index index_name

注意: 按照一般情況, 主鍵我們一般都是設定為自增的, 所以刪除主鍵索引前, 要先刪掉自增

//刪除自增

alter table `表名` change `列名` `列名` int(10)

//刪除主鍵索引

3. alter table table_name drop primary key

Mysql獲取資料庫的所有表,以及表所有字段資訊

在許多時候,我們需要獲取資料庫中所有的表,比如常見的 生成,腳手架之類的,通過選擇庫中的表,配置幾個類屬性,自動生成實體類,dao,service等。下面是mysql獲取資料庫所有表的語句。select table name tablename,engine,table comment tablec...

sql 查詢所有資料庫 表 字段

sql server 用master資料庫查詢所有的資料庫 use master select name from sysdatabases 用其中的乙個資料庫查詢所有表 use student select id name from sysobjects where type u 根據id查詢某個...

查詢SQL Server資料庫所有表字段備註

select 表名 case when a.colorder 1 then d.name else end,表說明 case when a.colorder 1 then isnull f.value,else end,字段序號 a.colorder,欄位名 a.name,字段說明 isnull g...