1. 程式人生 > 其它 >MySQL檢視,show命令大全

MySQL檢視,show命令大全

1.什麼是MySQL檢視呢?

檢視是虛擬表,是從資料庫中一個或多個表中匯出來的表,其內容由查詢定義;同真實表(基表)一樣,檢視包含一系列帶有名稱的欄位和記錄,在使用檢視時動態生成。檢視的資料變化會影響到基表,基表的資料變化也會影響到檢視(insert、update、delete)。

另外,建立檢視需要有create view許可權,並且查詢的列有select許可權,使用create or update or alter修改檢視,還需要有相應的drop許可權。

檢視可以查詢、修改和刪除,但不允許通過檢視向基表插入資料。

檢視的做用

對其中所引用的基礎表來說,檢視的做用類似於篩選,定義檢視的篩選可以來自當前或者其他資料庫的一個或多個表,也可以是其他檢視;通過檢視進行查詢沒有任何限制,通過它們進行資料修改時的限制也很少。

使用檢視的優點

  • 安全性,檢視的安全性可以防止未授權使用者檢視特定的行或列,使有許可權使用者只能看到表中特定行的方法,如下:

    1. 在表中增加一個標誌使用者名稱的列。

    2. 建立檢視,使使用者只能看到標有自己使用者名稱的行。

    3. 把檢視授權給其他使用者。

  • 簡單性,看到的就是需要的。檢視不僅可以簡化使用者對資料的理解,也可以簡化他們的操作。那些被經常使用的查詢可以被定義為檢視,從而使得使用者不必為以後的操作每次指定全部的條件。

  • 邏輯資料獨立性,檢視可以使應用程式和資料庫表在一定程度上獨立。如果沒有檢視,程式一定是建立在表上的。有了檢視之後,程式可以建立在檢視之上,從而程式與資料庫表被檢視分割開來。檢視可以在以下幾個方面使程式與資料獨立。

如果應用建立在資料庫表上,當資料庫表發生變化時,可以在表上建立檢視,通過檢視遮蔽表的變化,從而使應用程式可以不動。

如果應用建立在資料庫表上,當應用發生變化時,可以在表上建立檢視,通過檢視遮蔽應用的變化,從而使資料庫表不動。

如果應用建立在檢視上,當資料庫表發生變化時,可以在表上修改檢視,通過檢視遮蔽表的變化,從而使應用程式可以不動。

如果應用建立在檢視上,當應用發生變化時,可以在表上修改檢視,通過檢視遮蔽應用的變化,從而使資料庫可以不動。

2.建立檢視

mysql> CREATE VIEW v1 AS
    -> SELECT * FROM city WHERE
countrycode='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