欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

mysql視圖之創(chuàng)建可更新視圖的方法詳解

 更新時(shí)間:2019年12月16日 08:47:13   作者:luyaran  
這篇文章主要介紹了mysql視圖之創(chuàng)建可更新視圖的方法,結(jié)合實(shí)例形式分析了mysql可更新視圖的具體創(chuàng)建、使用方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下

本文實(shí)例講述了mysql視圖之創(chuàng)建可更新視圖的方法。分享給大家供大家參考,具體如下:

我們知道,在mysql中,視圖不僅是可查詢的,而且是可更新的。這意味著我們可以使用insert或update語(yǔ)句通過(guò)可更新視圖插入或更新基表的行。 另外,我們還可以使用delete語(yǔ)句通過(guò)視圖刪除底層表的行。但是,要?jiǎng)?chuàng)建可更新視圖,定義視圖的select語(yǔ)句不能包含以下任何元素:

  • 聚合函數(shù),如:min,max,sum,avg,count等。
  • DISTINCT子句
  • GROUP BY子句
  • HAVING子句
  • 左連接或外連接。
  • UNION或UNION ALL子句
  • SELECT子句中的子查詢或引用該表的where子句中的子查詢出現(xiàn)在FROM子句中。
  • 引用FROM子句中的不可更新視圖
  • 僅引用文字值
  • 對(duì)基表的任何列的多次引用

我們?nèi)绻褂胻emptable算法創(chuàng)建視圖,則無(wú)法更新視圖,不過(guò)有時(shí)可以使用內(nèi)部連接創(chuàng)建基于多個(gè)表的可更新視圖。廢話不多說(shuō),讓我們先來(lái)看看如何創(chuàng)建一個(gè)可更新的視圖。我們先來(lái)嘗試基于offices表創(chuàng)建一個(gè)名為officeInfo的視圖,它指的是offices表中的三列:officeCode,phone 和 city:

CREATE VIEW officeInfo
 AS
  SELECT officeCode, phone, city
  FROM offices;

接下來(lái),使用以下語(yǔ)句從officeInfo視圖中查詢數(shù)據(jù):

SELECT
  *
FROM
  officeInfo;

執(zhí)行上面查詢語(yǔ)句,得到以下結(jié)果:

mysql> SELECT * FROM officeInfo;
+------------+------------------+---------------+
| officeCode | phone      | city     |
+------------+------------------+---------------+
| 1     | +1 650 219 4782 | San Francisco |
| 2     | +1 215 837 0825 | Boston    |
| 3     | +1 212 555 3000 | NYC      |
| 4     | +33 14 723 4404 | Paris     |
| 5     | +86 33 224 5000 | Beijing    |
| 6     | +61 2 9264 2451 | Sydney    |
| 7     | +44 20 7877 2041 | London    |
+------------+------------------+---------------+
7 rows in set

然后,使用以下update語(yǔ)句通過(guò)officeInfo視圖更改officeCode的值為:4的辦公室電話號(hào)碼:

UPDATE officeInfo
SET
  phone = '+86 089866668888'
WHERE
  officeCode = 4;

最后,驗(yàn)證更改結(jié)果,通過(guò)執(zhí)行以下查詢來(lái)查詢officeInfo視圖中的數(shù)據(jù):

mysql> SELECT
  *
FROM
  officeInfo
WHERE
  officeCode = 4;

+------------+------------------+-------+
| officeCode | phone      | city |
+------------+------------------+-------+
| 4     | +86 089866668888 | Paris |
+------------+------------------+-------+
1 row in set

完事我們可以通過(guò)從information_schema數(shù)據(jù)庫(kù)中的views表查詢is_updatable列來(lái)檢查數(shù)據(jù)庫(kù)中的視圖是否可更新,比如,我們來(lái)查詢luyaran數(shù)據(jù)庫(kù)獲取所有視圖,并顯示哪些視圖是可更新的:

SELECT
  table_name, is_updatable
FROM
  information_schema.views
WHERE
  table_schema = 'luyaran';

執(zhí)行上面查詢語(yǔ)句,得到以下結(jié)果:

+------------------+--------------+
| table_name    | is_updatable |
+------------------+--------------+
| aboveavgproducts | YES     |
| bigsalesorder  | YES     |
| customerorders  | NO      |
| officeinfo    | YES     |
| saleperorder   | NO      |
+------------------+--------------+
5 rows in set

我們?cè)賮?lái)嘗試通過(guò)視圖刪除行,首先,創(chuàng)建一個(gè)名為items的表,在items表中插入一些行,并創(chuàng)建一個(gè)查詢包含價(jià)格大于700的項(xiàng)的視圖:

USE testdb;
-- create a new table named items
CREATE TABLE items (
  id INT AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(100) NOT NULL,
  price DECIMAL(11 , 2 ) NOT NULL
);
-- insert data into the items table
INSERT INTO items(name,price)
VALUES('Laptop',700.56),('Desktop',699.99),('iPad',700.50) ;
-- create a view based on items table
CREATE VIEW LuxuryItems AS
  SELECT
    *
  FROM
    items
  WHERE
    price > 700;
-- query data from the LuxuryItems view
SELECT
  *
FROM
  LuxuryItems;

執(zhí)行上面查詢語(yǔ)句后,得到以下結(jié)果:

+----+--------+--------+
| id | name  | price |
+----+--------+--------+
| 1 | Laptop | 700.56 |
| 3 | iPad  | 700.5 |
+----+--------+--------+
2 rows in set

完事使用DELETE語(yǔ)句來(lái)刪除id為3的行:

DELETE FROM LuxuryItems
WHERE
  id = 3;

mysql返回一條消息,表示有1行受到影響:

Query OK, 1 row affected

我們來(lái)再次通過(guò)視圖檢查數(shù)據(jù):

mysql> SELECT * FROM LuxuryItems;
+----+--------+--------+
| id | name  | price |
+----+--------+--------+
| 1 | Laptop | 700.56 |
+----+--------+--------+
1 row in set

我們還可以從基表items查詢數(shù)據(jù),以驗(yàn)證DELETE語(yǔ)句是否實(shí)際刪除了該行:

mysql> SELECT * FROM items;
+----+---------+--------+
| id | name  | price |
+----+---------+--------+
| 1 | Laptop | 700.56 |
| 2 | Desktop | 699.99 |
+----+---------+--------+
2 rows in set

我們可以看到,ID為3的行在基表中被刪除。

好啦,本次記錄就到這里了。

更多關(guān)于MySQL相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《MySQL查詢技巧大全》、《MySQL事務(wù)操作技巧匯總》、《MySQL存儲(chǔ)過(guò)程技巧大全》、《MySQL數(shù)據(jù)庫(kù)鎖相關(guān)技巧匯總》及《MySQL常用函數(shù)大匯總

希望本文所述對(duì)大家MySQL數(shù)據(jù)庫(kù)計(jì)有所幫助。

相關(guān)文章

  • mysql 8.0.12 安裝使用教程

    mysql 8.0.12 安裝使用教程

    這篇文章主要為大家詳細(xì)介紹了mysql 8.0.12 安裝使用教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • win10下mysql 8.0.13 安裝配置方法圖文教程

    win10下mysql 8.0.13 安裝配置方法圖文教程

    這篇文章主要為大家詳細(xì)介紹了win10下mysql 8.0.13安裝配置方法圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • mysql 設(shè)置默認(rèn)的時(shí)間值

    mysql 設(shè)置默認(rèn)的時(shí)間值

    由于MySQL目前字段的默認(rèn)值不支持函數(shù)
    2009-05-05
  • Mysql中order by、group by、having的區(qū)別深入分析

    Mysql中order by、group by、having的區(qū)別深入分析

    本篇文章是對(duì)Mysql中order by、group by、having的區(qū)別進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • 手把手帶你徹底卸載MySQL數(shù)據(jù)庫(kù)

    手把手帶你徹底卸載MySQL數(shù)據(jù)庫(kù)

    相信大家都因?yàn)楦鞣N各樣的原因可能需要卸載MySQL或者卸載重裝,但是如果MySQL不能清理干凈的話是很容易出現(xiàn)問(wèn)題的,這篇文章主要給大家介紹了關(guān)于如何徹底卸載MySQL數(shù)據(jù)庫(kù)的相關(guān)資料,需要的朋友可以參考下
    2022-06-06
  • 安裝SQL server出現(xiàn)“服務(wù)沒(méi)有及時(shí)響應(yīng)啟動(dòng)或控制請(qǐng)求”的解決方案

    安裝SQL server出現(xiàn)“服務(wù)沒(méi)有及時(shí)響應(yīng)啟動(dòng)或控制請(qǐng)求”的解決方案

    這篇文章主要給大家解決了安裝SQL server出現(xiàn)“服務(wù)沒(méi)有及時(shí)響應(yīng)啟動(dòng)或控制請(qǐng)求”,文中有詳細(xì)的解決方案,有需要的同學(xué)可以參考閱讀下
    2023-08-08
  • Mysql5 字符集編碼問(wèn)題解決

    Mysql5 字符集編碼問(wèn)題解決

    mysql 創(chuàng)建 數(shù)據(jù)庫(kù)時(shí)指定編碼很重要,很多開(kāi)發(fā)者都使用了默認(rèn)編碼,但是我使用的經(jīng)驗(yàn)來(lái)看,制定數(shù)據(jù)庫(kù)的編碼可以很大程度上避免倒入導(dǎo)出帶來(lái)的亂碼問(wèn)題。
    2009-10-10
  • 一篇文章講解清楚MySQL索引

    一篇文章講解清楚MySQL索引

    這篇文章主要用一篇文章講解清楚MySQL索引的相關(guān)資料,十分的細(xì)致全面,推薦給大家,需要的朋友可以參考下
    2022-10-10
  • MySQL連接查詢你真的學(xué)會(huì)了嗎?

    MySQL連接查詢你真的學(xué)會(huì)了嗎?

    日常使用數(shù)據(jù)庫(kù)查詢語(yǔ)句時(shí),單表查詢嘗嘗不能滿足項(xiàng)目的業(yè)務(wù)需求,在項(xiàng)目開(kāi)發(fā)過(guò)程中,有很多需求都是要涉及到多表的連接查詢,這篇文章主要給大家介紹了關(guān)于MySQL連接查詢的相關(guān)資料,需要的朋友可以參考下
    2021-06-06
  • MySQL表的基本查詢操作大全(這一篇夠了)

    MySQL表的基本查詢操作大全(這一篇夠了)

    表的增刪查改,簡(jiǎn)稱表的?CURD?操作?:?Create(創(chuàng)建),Update(更新),Retrieve(讀取),Delete(刪除),這篇文章主要介紹了MySQL表的基本查詢操作,感興趣的朋友一起看看吧
    2024-02-02

最新評(píng)論