<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # MySQL 中的視圖 > 原文: [http://zetcode.com/databases/mysqltutorial/views/](http://zetcode.com/databases/mysqltutorial/views/) 在 MySQL 教程的這一部分中,我們將提及視圖。 ## 查看定義 視圖是來自一個或多個表的數據的特定外觀。 它可以按特定順序排列數據,突出顯示或隱藏某些數據。 視圖由存儲的查詢組成,該查詢可作為由查詢結果集組成的虛擬表訪問。 與普通表不同,視圖不構成物理模式的一部分。 它是根據數據庫中的數據計算或整理的動態虛擬表。 視圖是偽表。 它是一個存儲查詢,看起來像一個表。 它可以像表一樣被引用。 視圖可以將用戶限制為特定的行或列,從而增強安全性。 它們可用于連接多個表中的列,使它們看起來像一個表。 它們可用于提供匯總信息。 有幾個限制適用于視圖。 這里是其中的一些: * `SELECT`語句不能包含子查詢 * `SELECT`語句不能引用系統或用戶變量 * 定義中引用的任何表或視圖都必須存在 * 無法創建臨時視圖 * `VIEW`不能與觸發器關聯 ## 創建,修改和刪除視圖 在下一個示例中,我們創建一個簡單的視圖。 我們使用`CREATE VIEW`語法創建視圖。 ```sql mysql> SELECT * FROM Cars; +----+------------+--------+ | Id | Name | Cost | +----+------------+--------+ | 1 | Audi | 52642 | | 2 | Mercedes | 57127 | | 3 | Skoda | 9000 | | 4 | Volvo | 29000 | | 5 | Bentley | 350000 | | 6 | Citroen | 21000 | | 7 | Hummer | 41400 | | 8 | Volkswagen | 21600 | +----+------------+--------+ ``` 這是我們的數據,我們在該數據上創建視圖。 ```sql mysql> CREATE VIEW CheapCars AS -> SELECT Name FROM Cars WHERE Cost<25000; ``` 我們創建一個視圖`CheapCars`。 這些是價格低于 25000 的汽車。 ```sql mysql> SELECT * FROM CheapCars; +------------+ | Name | +------------+ | Skoda | | Citroen | | Volkswagen | +------------+ ``` 視圖是無法查詢的數據庫對象。 有三輛便宜的汽車。 ```sql mysql> ALTER VIEW CheapCars AS SELECT Name FROM Cars -> WHERE Cost<30000; mysql> SELECT * FROM CheapCars; +------------+ | Name | +------------+ | Skoda | | Volvo | | Citroen | | Volkswagen | +------------+ ``` 我們可以重新定義視圖。 假設我們現在認為如果汽車的價格低于 30000,則它會便宜。我們使用`ALTER VIEW`語句修改了我們的視圖。 如果我們刪除從中選擇數據的表,對視圖會發生什么? ```sql mysql> DROP TABLE Cars; mysql> SELECT * FROM CheapCars; ERROR 1356 (HY000): View 'mydb.CheapCars' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them ``` 查詢視圖時,我們收到上述錯誤。 ```sql mysql> SOURCE cars.sql mysql> SELECT * FROM CheapCars; +------------+ | Name | +------------+ | Skoda | | Citroen | | Volkswagen | +------------+ ``` 當我們重新創建表時,視圖將再次起作用。 ```sql mysql> DROP VIEW CheapCars; ``` 最后,使用`DROP VIEW`語法刪除視圖。 ## 尋找視圖 我們將提到幾種在 MySQL 數據庫中查找視圖的方法。 ```sql mysql> SHOW FULL TABLES; +----------------+------------+ | Tables_in_mydb | Table_type | +----------------+------------+ | AA | BASE TABLE | ... | Chars | BASE TABLE | | CheapCars | VIEW | | Customers | BASE TABLE | | Dates | BASE TABLE | | Decimals | BASE TABLE | | FavoriteCars | VIEW | ... ``` 我們可以使用`SHOW FULL TABLES`語句列出數據庫中的所有表。 在`Table_type`列中,我們可以看到它是表還是視圖。 ```sql mysql> SELECT TABLE_NAME, TABLE_TYPE FROM information_schema.TABLES; +---------------------------------------+-------------+ | TABLE_NAME | TABLE_TYPE | +---------------------------------------+-------------+ | CHARACTER_SETS | SYSTEM VIEW | | COLLATIONS | SYSTEM VIEW | | COLLATION_CHARACTER_SET_APPLICABILITY | SYSTEM VIEW | | COLUMNS | SYSTEM VIEW | | COLUMN_PRIVILEGES | SYSTEM VIEW | | ENGINES | SYSTEM VIEW | ... | Chars | BASE TABLE | | CheapCars | VIEW | | Customers | BASE TABLE | | Dates | BASE TABLE | | Decimals | BASE TABLE | | FavoriteCars | VIEW | ... ``` 在`information_schema`數據庫中,有一個`TABLES`表。 `TABLE_NAME`和`TABLE_TYPE`列為我們提供了有關表名及其類型的信息。 ```sql mysql> SELECT TABLE_NAME FROM information_schema.VIEWS; +--------------+ | TABLE_NAME | +--------------+ | CheapCars | | FavoriteCars | +--------------+ ``` 這是查找視圖的最直接方法。 我們查詢`information_schema`數據庫的`VIEWS`表。 ## 使用`UNION`創建視圖 的`UNION`運算符用于結果集組合兩個或更多`SELECT`語句。 每個選擇必須具有相同的列數。 ```sql mysql> CREATE VIEW FavoriteCars AS -> SELECT * FROM Cars WHERE Id=7 -> UNION SELECT * FROM Cars WHERE Id=4 -> UNION SELECT * FROM Cars WHERE Id=5; ``` 我們創建一個名為`FavoriteCars`的視圖。 在此視圖中,我們有三行被認為是最喜歡的。 三個`SELECT`語句與`UNION`運算符組合在一起。 ```sql mysql> SELECT * FROM FavoriteCars; +----+---------+--------+ | Id | Name | Cost | +----+---------+--------+ | 7 | Hummer | 41400 | | 4 | Volvo | 29000 | | 5 | Bentley | 350000 | +----+---------+--------+ ``` 這是視圖中的`SELECT`。 在 MySQL 教程的這一部分中,我們使用了視圖。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看