MySQL檢視,show命令大全
1.什麼是MySQL檢視呢?
檢視是虛擬表,是從資料庫中一個或多個表中匯出來的表,其內容由查詢定義;同真實表(基表)一樣,檢視包含一系列帶有名稱的欄位和記錄,在使用檢視時動態生成。檢視的資料變化會影響到基表,基表的資料變化也會影響到檢視(insert、update、delete
)。
另外,建立檢視需要有create view
許可權,並且查詢的列有select
許可權,使用create or update or alter
修改檢視,還需要有相應的drop
許可權。
檢視可以查詢、修改和刪除,但不允許通過檢視向基表插入資料。
檢視的做用
對其中所引用的基礎表來說,檢視的做用類似於篩選,定義檢視的篩選可以來自當前或者其他資料庫的一個或多個表,也可以是其他檢視;通過檢視進行查詢沒有任何限制,通過它們進行資料修改時的限制也很少。
使用檢視的優點
-
安全性,檢視的安全性可以防止未授權使用者檢視特定的行或列,使有許可權使用者只能看到表中特定行的方法,如下:
-
在表中增加一個標誌使用者名稱的列。
-
建立檢視,使使用者只能看到標有自己使用者名稱的行。
-
把檢視授權給其他使用者。
-
-
簡單性,看到的就是需要的。檢視不僅可以簡化使用者對資料的理解,也可以簡化他們的操作。那些被經常使用的查詢可以被定義為檢視,從而使得使用者不必為以後的操作每次指定全部的條件。
-
邏輯資料獨立性,檢視可以使應用程式和資料庫表在一定程度上獨立。如果沒有檢視,程式一定是建立在表上的。有了檢視之後,程式可以建立在檢視之上,從而程式與資料庫表被檢視分割開來。檢視可以在以下幾個方面使程式與資料獨立。
如果應用建立在資料庫表上,當資料庫表發生變化時,可以在表上建立檢視,通過檢視遮蔽表的變化,從而使應用程式可以不動。
如果應用建立在資料庫表上,當應用發生變化時,可以在表上建立檢視,通過檢視遮蔽應用的變化,從而使資料庫表不動。
如果應用建立在檢視上,當資料庫表發生變化時,可以在表上修改檢視,通過檢視遮蔽表的變化,從而使應用程式可以不動。
如果應用建立在檢視上,當應用發生變化時,可以在表上修改檢視,通過檢視遮蔽應用的變化,從而使資料庫可以不動。
2.建立檢視
mysql> CREATE VIEW v1 AS -> SELECT * FROM city WHEREcountrycode='CHN' LIMIT 10; Query OK, 0 rows affected (0.01 sec)
檢視檢視
mysql> select * from v1; +------+--------------------+-------------+--------------+------------+ | ID | Name | CountryCode | District | Population | +------+--------------------+-------------+--------------+------------+ | 1890 | Shanghai | CHN | Shanghai | 9696300 | | 1891 | Peking | CHN | Peking | 7472000 | | 1892 | Chongqing | CHN | Chongqing | 6351600 | | 1893 | Tianjin | CHN | Tianjin | 5286800 | | 1894 | Wuhan | CHN | Hubei | 4344600 | | 1895 | Harbin | CHN | Heilongjiang | 4289800 | | 1896 | Shenyang | CHN | Liaoning | 4265200 | | 1897 | Kanton [Guangzhou] | CHN | Guangdong | 4256300 | | 1898 | Chengdu | CHN | Sichuan | 3361500 | | 1899 | Nanking [Nanjing] | CHN | Jiangsu | 2870300 | +------+--------------------+-------------+--------------+------------+
修改檢視
ALTER VIEW 檢視名稱 as SQL語句;
刪除檢視
DROP VIEW 檢視名稱;
information_schema是檢視庫(虛擬庫): USE information_schema; SHOW TABLES; -- 返回了一堆檢視
#檢視資料庫中的所有檢視
-- information_schema.TABLES中常用的欄位 DESC infoRmation_schema.TABLES; TABLE_SCHEMA -- 庫名 TABLE_NAME -- 表名 ENGINE -- 引擎 TABLE_ROWS -- 錶行數 AVG_ROW_LENGTH -- 表中行平均長度(位元組) INDEX_LENGTH -- 索引的佔用空間大小(位元組)
#show命令大全
show databases; -- 檢視所有資料庫 show tables; -- 檢視當前庫的所有表 show TABLES FROM -- 檢視某個指定庫下的表 show create database world -- 檢視建庫語句 show create table world.city -- 檢視建表語句 show grants for root@'localhost' -- 檢視使用者的許可權資訊 show charset; -- 檢視字符集 show collation -- 檢視校對規則 show processlist; -- 檢視資料庫連線情況 show index from -- 表的索引情況 show status -- 資料庫狀態檢視 show STATUS LIKE '%lock%'; -- 模糊查詢資料庫某些狀態 show VARIABLES -- 檢視所有配置資訊 show variables LIKE '%lock%'; -- 檢視部分配置資訊 show engines -- 檢視支援的所有的儲存引擎 show engine innodb status\G -- 檢視InnoDB引擎相關的狀態資訊 show binary logs -- 列舉所有的二進位制日誌 show master status -- 檢視資料庫的日誌位置資訊 show binlog evnets in -- 檢視二進位制日誌事件 show slave status \G -- 檢視從庫狀態 show RELAYLOG EVENTS -- 檢視從庫relaylog事件資訊 desc (show colums from city) -- 查看錶的列定義資訊 -- 不知道更多,請使用help help show