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的新資料庫。
許可權
當前許可權(SHOW)要求和SELCET許可權要求不存在差別。在任何一種情況下,要想檢視關於它的資訊,需要對某類物件擁有特定許可權。
SELECT ... FROM INFORMATION_SCHEMA語句的目的在於提供一種更為一致的方式,以訪問MySQL所支援的各種SHOW語句(SHOW DATABASES、SHOW 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_SCHEMA和TABLE_NAME是SHOW顯示中的單個欄位,例如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 <?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; +----+------------+--------+-----+------------+---------+--------------+----- |