1. 程式人生 > >mysql資料字典

mysql資料字典

節選--《MySQL 5.1簡體中文官方手冊》

第23章:INFORMATION_SCHEMA資訊資料庫

INFORMATION_SCHEMA提供了訪問資料庫元資料的方式。

 元資料是關於資料的資料,如資料庫名或表名,列的資料型別,或訪問許可權等。有些時候用於表述該資訊的其他術語包括“資料詞典”和“系統目錄”。

 INFORMATION_SCHEMA是資訊資料庫,其中儲存著關於MySQL伺服器所維護的所有其他資料庫的資訊。在INFORMATION_SCHEMA中,有數個只讀表。它們實際上是檢視,而不是基本表,因此,你將無法看到與之相關的任何檔案。

每位MySQL使用者均有權訪問這些表,但僅限於表中的特定行,在這類行中含有使用者具有恰當訪問許可權的物件。

標準

在MySQL中,INFORMATION_SCHEMA表結構的實施遵從ANSI/ISO SQL:2003標準,第11部分綱要”。我們的目的在於,獲得與SQL:2003核心特性F021“基本資訊方案”的近似相容。

SQL伺服器2000(也遵從該標準)的使用者可能已注意到它們高度的相似性。但是,MySQL略去了與我們的實施方式不相關的眾多列,並添加了一些MySQL特有的列。其中一種列就是INFORMATION_SCHEMA.TABLES表中的引擎列。

儘管其他DBMS使用了不同的名稱,如syscat或系統,但標準名稱是INFORMATION_SCHEMA

事實上,儘管不需要生成名為INFORMATION_SCHEMA的檔案,我們仍提供了名為INFORMATION_SCHEMA的新資料庫。

可以使用USE語句將INFORMATION_SCHEMA選擇為預設資料庫,但訪問該資料庫中所含表的唯一方式是使用SELECT語句。不能在其中插入內容,不能更新它們,也不能刪除其中的內容。

許可權

當前許可權(SHOW)要求和SELCET許可權要求不存在差別。在任何一種情況下,要想檢視關於它的資訊,需要對某類物件擁有特定許可權。

SELECT ... FROM INFORMATION_SCHEMA語句的目的在於提供一種更為一致的方式,以訪問MySQL所支援的各種SHOW語句(SHOW DATABASESSHOW TABLES等等)提供的資訊。與SHOW相比,使用SELECT有多項優點“

·符合Codd規則。也就是說,所有訪問均是在表上進行的。

·不需要了解新語句的語法。由於他們已知道SELECT的工作方式,僅需瞭解物件名即可。

·實現人無需操心增加關鍵詞方面的事宜。

·有數百萬種可能的輸出變化,而不是一種。這樣,就為對元資料有不同需求的應用程式提供了更高的靈活性。

·由於其他DBMS也採用了這類方式,移植更為容易。

然而,由於SHOW在MySQL的僱員和使用者中十分流行,如果SHOW消失,可能會導致混亂,因此傳統的語法方式無法給出消除SHOW的足夠理由。事實上,在MySQL 5.1中,還對SHOW進行了多項增強。

information_schema 共有17張表

23.1.1. INFORMATION_SCHEMA SCHEMATA表

該方案是資料庫,因此SCHEMATA表提供了關於資料庫的資訊。

標準名稱

SHOW名稱

註釋

CATALOG_NAME

-

NULL

SCHEMA_NAME

Database

DEFAULT_CHARACTER_SET_NAME

DEFAULT_COLLATION_NAME

SQL_PATH

NULL

註釋:SQL_PATH列的之總為NULL

下述語句是等效的:

SELECT SCHEMA_NAME AS `Database
FROM INFORMATION_SCHEMA.SCHEMATA
[WHERE SCHEMA_NAME LIKE 'wild']
SHOW DATABASES
[LIKE 'wild']

23.1.2. INFORMATION_SCHEMA TABLES表

TABLES表給出了關於資料庫中的表的資訊。

標準名稱

SHOW名稱

註釋

TABLE_CATALOG

NULL

TABLE_SCHEMA

Table_...

TABLE_NAME

Table_...

TABLE_TYPE

ENGINE

Engine

MySQL擴充套件

VERSION

Version

MySQL擴充套件

ROW_FORMAT

Row_format

MySQL擴充套件

TABLE_ROWS

Rows

MySQL擴充套件

AVG_ROW_LENGTH

Avg_row_length

MySQL擴充套件

DATA_LENGTH

Data_length

MySQL擴充套件

MAX_DATA_LENGTH

Max_data_length

MySQL擴充套件

INDEX_LENGTH

Index_length

MySQL擴充套件

DATA_FREE

Data_free

MySQL擴充套件

AUTO_INCREMENT

Auto_increment

MySQL擴充套件

CREATE_TIME

Create_time

MySQL擴充套件

UPDATE_TIME

Update_time

MySQL擴充套件

CHECK_TIME

Check_time

MySQL擴充套件

TABLE_COLLATION

Collation

MySQL擴充套件

CHECKSUM

Checksum

MySQL擴充套件

CREATE_OPTIONS

Create_options

MySQL擴充套件

TABLE_COMMENT

Comment

MySQL擴充套件

註釋:

·TABLE_SCHEMATABLE_NAMESHOW顯示中的單個欄位,例如Table_in_db1

·TABLE_TYPE(表型別)應是BASE TABLE(基本表)VIEW(檢視)。如果表是臨時性的,TABLE_TYPE = TEMPORARY。(沒有臨時檢視,因此,因此不存在歧義)。

·如果表位於INFORMATION_SCHEMA資料庫中,TABLE_ROWS列為NULL。對於InnoDB表,在SQL優化中,行計數僅是大概估計值。

·沒有關於表預設字符集的任何資訊。TABLE_COLLATION處於關閉狀態,原因在於校對名稱以字符集名稱開頭。

下述語句是等效的:

SELECT table_name FROM INFORMATION_SCHEMA.TABLES
  [WHERE table_schema = 'db_name']
  [WHERE|AND table_name LIKE 'wild']
SHOW TABLES
  [FROM db_name]
  [LIKE 'wild']

23.1.3. INFORMATION_SCHEMA COLUMNS表

COLUMNS表給出了表中的列資訊。

標準名稱

SHOW名稱

註釋

TABLE_CATALOG

NULL

TABLE_SCHEMA

TABLE_NAME

COLUMN_NAME

Field

ORDINAL_POSITION

參見注釋

COLUMN_DEFAULT

Default

IS_NULLABLE

Null

DATA_TYPE

Type

CHARACTER_MAXIMUM_LENGTH

Type

CHARACTER_OCTET_LENGTH

NUMERIC_PRECISION

Type

NUMERIC_SCALE

Type

CHARACTER_SET_NAME

COLLATION_NAME

Collation

COLUMN_TYPE

Type

MySQL擴充套件

COLUMN_KEY

Key

MySQL擴充套件

EXTRA

Extra

MySQL擴充套件

COLUMN_COMMENT

Comment

MySQL擴充套件

註釋:

·SHOW中,型別顯示包括來自數個不同COLUMNS列的值。

·ORDINAL_POSITION有必要,這是因為,你可能會在某一天需要ORDER BY ORDINAL_POSITION(按ORDINAL_POSITION排序)。不同於SHOW,SELECT沒有自動排序功能。

·CHARACTER_OCTET_LENGTH應與CHARACTER_MAXIMUM_LENGTH相同,但多位元組字符集除外。

·CHARACTER_SET_NAME可由Collation(校對)匯出。例如,如果給出了“SHOW FULL COLUMNS FROM t”,在Collation(校對)列中將見到latin1_swedish_ci的值,字符集由第1個下劃線前的名稱指明。latin1.

下述語句是等效的:

SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_DEFAULT
  FROM INFORMATION_SCHEMA.COLUMNS
  WHERE table_name = 'tbl_name'
  [AND table_schema = 'db_name']
  [AND column_name LIKE 'wild']
SHOW COLUMNS
  FROM tbl_name
  [FROM db_name]
  [LIKE wild]

23.1.4. INFORMATION_SCHEMA STATISTICS表

STATISTICS表給出了關於表索引的資訊。

標準名稱

SHOW名稱

註釋

TABLE_CATALOG

NULL

TABLE_SCHEMA

=資料庫

TABLE_NAME

Table

NON_UNIQUE

Non_unique

INDEX_SCHEMA

=資料庫

INDEX_NAME

Key_name

SEQ_IN_INDEX

Seq_in_index

COLUMN_NAME

Column_name

COLLATION

Collation

CARDINALITY

Cardinality

SUB_PART

Sub_part

MySQL擴充套件

PACKED

Packed

MySQL擴充套件

NULLABLE

Null

MySQL擴充套件

INDEX_TYPE

Index_type

MySQL擴充套件

COMMENT

Comment

MySQL擴充套件

註釋:

·沒有關於這些索引的標準表。上面的列表與SQL伺服器2000中sp_statistics返回的值類似。不同之處在於用CATALOG替換了QUALIFIER,並用SCHEMA替換了OWNER。

顯而易見,前述表和SHOW INDEX的輸出均是由相同的父物件匯出的。因此,相關性已關閉。

下述語句是等效的:

SELECT * FROM INFORMATION_SCHEMA.STATISTICS
  WHERE table_name = 'tbl_name'
  [AND table_schema = 'db_name']
SHOW INDEX
  FROM tbl_name
  [FROM db_name]

23.1.5. INFORMATION_SCHEMA USER_PRIVILEGES表

USER_PRIVILEGES(使用者許可權)表給出了關於全程許可權的資訊。該資訊源自mysql.user授權表。

標準名稱

SHOW名稱

註釋

GRANTEE

例如“user'@'host”

TABLE_CATALOG

NULL

PRIVILEGE_TYPE

IS_GRANTABLE

註釋:

·這是一個非標準表。其值來自mysql.user表。

23.1.6. INFORMATION_SCHEMA SCHEMA_PRIVILEGES表

SCHEMA_PRIVILEGES(方案許可權)表給出了關於方案(資料庫)許可權的資訊。該資訊來自mysql.db授權表。

標準名稱

SHOW名稱

註釋

GRANTEE

例如“user'@'host”

TABLE_CATALOG

NULL

TABLE_SCHEMA

PRIVILEGE_TYPE

IS_GRANTABLE

註釋:

·這是一個非標準表。其值來自mysql.db表。

23.1.7. INFORMATION_SCHEMA TABLE_PRIVILEGES表

TABLE_PRIVILEGES(表許可權)表給出了關於表許可權的資訊。該資訊源自mysql.tables_priv授權表。

標準名稱

SHOW名稱

註釋

GRANTEE

例如“user'@'host”

TABLE_CATALOG

NULL

相關推薦

挨踢小子MySQL資料字典原始碼

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="

PHP線上生成mysql資料字典

<?php header('content-type:text/html;charset=utf-8'); define('DB_HOST','localhost'); define('DB_USER','root'); define('DB_PASS',

生成mysql資料字典

data_dictionary.php &lt;?php /** * 生成mysql資料字典 */ header("Content-type: text/html; charset=utf-8"); //配置資料庫 $dbserver = "127.0.0.1"; $dbusername

MySQL 8.0 參考手冊》第 14 章 MySQL 資料字典

文章目錄 14.1 資料字典模式 資料字典升級過程 使用 MySQL 除錯版本檢視資料字典表 14.2 刪除基於檔案的元資料 14.3 事務型資料字典 14.4 資料字典快取 14.5 I

mysql資料字典

節選--《MySQL 5.1簡體中文官方手冊》 第23章:INFORMATION_SCHEMA資訊資料庫 INFORMATION_SCHEMA提供了訪問資料庫元資料的方式。  元資料是關於資料的資料,如資料庫名或表名,列的資料型別,或訪問許可權等。有些時候用於表述該資訊的其他術語包括“資料詞

Mysql 查詢、匯出資料字典

MYSQL 查詢語句: select TABLE_SCHEMA as '資料庫',TABLE_NAME as '資料表',COLUMN_NAME as '欄位名',COLUMN_TYPE as '欄位型別',COLUMN_COMMENT as '備註' from information

mysql 匯出資料字典

使用Navicat工具 查詢: SELECT TABLE_SCHEMA AS '資料庫', TABLE_NAME AS '表名', COLUMN_NAME AS '欄位名', COLUMN_TYPE AS '欄位型別', COLUMN_COMMENT AS '欄位說明'FROM information_s

MySQL 8.0新特性-資料字典

歡迎關注MySQL 8.0必知必會系列課程。     MySQL8.0必知必會-自動化部署                 https://edu.51c

PowerDesigner 生成資料字典報告(Mysql為例)

前言  專案中需要寫文件生成資料字典,但是本人當然不想自己寫了,這就需要藉助工具來生成,用了好多次,這次記錄一下加深印象。步驟1.開啟PowerDesigner,選擇選單:File ---> Re

mysql資料庫轉換成資料字典的方法(整理)

1、網上找到別人寫好的php資料錶轉換成資料字典的程式“export2.php” 2、修改“export2.php”中連線資料庫的資訊(資料庫IP、資料庫名稱、訪問資料庫的賬號密碼) 3、把

MySQL利用Navicat匯出資料字典

這裡算是一個小技巧 利用mysql的information_schema中的COLUMNS表 和navicat中的匯出功能實現快速匯出資料字典 CREATE TEMPORARYTABLE `COLUMNS` (   `TABLE_CATALOG` varchar(512)

用vim和Markdown, 將MySQL匯出的備份轉換為HTML格式的資料字典

用vim和Markdown, 將MySQL匯出的資料庫製作為資料字典(Markdown表格) 1. 轉換為表格 # 將匯出的各個欄位以'|'分隔 %s/^\s*`\([^`]\+`\)\s*\(\w\+[^ \t]*\)\s*\(.*\)$/| \1 |

Navicat 將mysql、oracle表匯出為資料字典

SELECT column_name, column_type, is_nullable, COLUMN_DEFAULT, column_comment FROM information_s

python查詢mysql字典返回

asc sel 字典 print ict use spider pymysql host # *_*coding:utf-8 *_* import pymysql conn = pymysql.connect(host=‘192.168.33.10‘, user=‘ro

mysql----資料提交

insert_stu_2_tijiao: <%@page contentType="text/html" pageEncoding="UTF-8"%> <html>     <head>  <title>新增任意學生的

mysql 資料型別筆記

一. varchar儲存規則: 4.0版本以下,varchar(20),指的是20位元組,如果存放UTF8漢字時,只能存6個(每個漢字3位元組) 5.0版本以上,varchar(20),指的是20字元,無論存放的是數字、字母還是UTF8漢字(每個漢字3位元組),都可以存放20個,最大大小是6553

mysql資料的匯入和匯出

  一. mysqldump工具基本用法,不適用於大資料備份   1. 備份所有資料庫: mysqldump -u root -p --all-databases > all_database_sql 2. 備份mysql資料庫:mysql

PowerDesign 12.0 & PDMReader輕鬆生成資料字典

前言 最近需要編制專案文件,其中必不可少的內容就是資料字典,手動編制過於麻煩且容易出錯,採用SQL語句查詢表資訊然後整理成文件的方式也是非常的耗時。於是開始搜尋解決方案,瞭解到PowerDesign這個工具。所以下載了PowerDesign,按照個人習慣,總是喜歡使用最新版本,但是使

MySQL資料匯入sql檔案過程中出錯

錯誤型別: ERROR 1231 (42000): Variable 'time_zone' can't be set to the value of 'NULL' ERROR 1231 (42000): Variable 'sql_mode' can't be set to the value of '

mysql 資料操作 單表查詢 limit 練習

    1. 分頁顯示,每頁5條 mysql> select * from employee limit 0,5; +----+------------+--------+-----+------------+---------+--------------+-----