7、Mysql視圖和觸發(fā)器

視圖

視圖是一個虛擬表(非真實存在),其本質(zhì)是【根據(jù)SQL語句獲取動態(tài)的數(shù)據(jù)集,并為其命名】,用戶使用時只需使用【名稱】即可獲取結(jié)果集,并可以將其當(dāng)作表來使用。

  • 臨時表搜索
SELECT
        *
    FROM
        (
            SELECT
                nid,
                NAME
            FROM
                tb1
            WHERE
                nid > 2
        ) AS A
    WHERE
        A. NAME = 'alex';

1、創(chuàng)建視圖

  • 格式:CREATE VIEW 視圖名稱 AS SQL語句
CREATE VIEW v1 AS 
    SELET nid, 
        name
    FROM
        A
    WHERE
        nid > 4

2、刪除視圖

  • 格式:DROP VIEW 視圖名稱
DROP VIEW v1

3、修改視圖

  • 格式:ALTER VIEW 視圖名稱 AS SQL語句
ALTER VIEW v1 AS
    SELET A.nid,
        B. NAME
    FROM
        A
    LEFT JOIN B ON A.id = B.nid
    LEFT JOIN C ON A.id = C.nid
    WHERE
        A.id > 2
    AND C.nid < 5

4、使用視圖

使用視圖時,將其當(dāng)作表進(jìn)行操作即可,由于視圖是虛擬表,所以無法使用其對真實表進(jìn)行創(chuàng)建、更新和刪除操作,僅能做查詢用。

select * from v1

觸發(fā)器

對某個表進(jìn)行【增/刪/改】操作的前后如果希望觸發(fā)某個特定的行為時,可以使用觸發(fā)器,觸發(fā)器用于定制用戶對表的行進(jìn)行【增/刪/改】前后的行為。

1、創(chuàng)建基本語法

  • 插入前
CREATE TRIGGER tri_before_insert_tb1 BEFORE INSERT ON tb1 FOR EACH ROW
BEGIN
    ...
END
  • 插入后
CREATE TRIGGER tri_after_insert_tb1 AFTER INSERT ON tb1 FOR EACH ROW
BEGIN
    ...
END
  • 刪除前
CREATE TRIGGER tri_before_delete_tb1 BEFORE DELETE ON tb1 FOR EACH ROW
BEGIN
    ...
END
  • 刪除后
CREATE TRIGGER tri_after_delete_tb1 AFTER DELETE ON tb1 FOR EACH ROW
BEGIN
    ...
END
  • 更新前
CREATE TRIGGER tri_before_update_tb1 BEFORE UPDATE ON tb1 FOR EACH ROW
BEGIN
    ...
END
  • 更新后
CREATE TRIGGER tri_after_update_tb1 AFTER UPDATE ON tb1 FOR EACH ROW
BEGIN
    ...
END
  • 插入前觸發(fā)器
delimiter //
CREATE TRIGGER tri_before_insert_tb1 BEFORE INSERT ON tb1 FOR EACH ROW
BEGIN

IF NEW. NAME == 'alex' THEN
    INSERT INTO tb2 (NAME)
VALUES
    ('aa')
END
END//
delimiter ;
  • 插入后觸發(fā)器
delimiter //
CREATE TRIGGER tri_after_insert_tb1 AFTER INSERT ON tb1 FOR EACH ROW
BEGIN
    IF NEW. num = 666 THEN
        INSERT INTO tb2 (NAME)
        VALUES
            ('666'),
            ('666') ;
    ELSEIF NEW. num = 555 THEN
        INSERT INTO tb2 (NAME)
        VALUES
            ('555'),
            ('555') ;
    END IF;
END//
delimiter ;

特別的:NEW表示即將插入的數(shù)據(jù)行,OLD表示即將刪除的數(shù)據(jù)行。

2、刪除觸發(fā)器

DROP TRIGGER tri_after_insert_tb1;

3、使用觸發(fā)器

觸發(fā)器無法由用戶直接調(diào)用,而知由于對表的【增/刪/改】操作被動引發(fā)的。

insert into tb1(num) values(666)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • MYSQL 基礎(chǔ)知識 1 MySQL數(shù)據(jù)庫概要 2 簡單MySQL環(huán)境 3 數(shù)據(jù)的存儲和獲取 4 MySQL基本操...
    Kingtester閱讀 8,071評論 5 115
  • 觀其大綱 page 01 基礎(chǔ)知識 1 MySQL數(shù)據(jù)庫概要 2 簡單MySQL環(huán)境 3 數(shù)據(jù)的存儲和獲取 4 M...
    周少言閱讀 3,255評論 0 33
  • 我家有一只可愛的小貓咪,他是我奶奶在路上抱回來老一只小貓咪我看到他就非常喜歡他。它有一身雪白的毛發(fā),還有一對小小...
    梁靜茹A閱讀 295評論 0 0
  • 轉(zhuǎn)眼間使用ReactNative開發(fā)已經(jīng)半年了,從0到現(xiàn)在收獲很多,通過小伙伴們的幫助和自己的學(xué)習(xí),總算掌握了一項...
    精神病患者link常閱讀 302評論 0 2
  • 雄關(guān)漫道征程路,傲骨向天問前途。 愿擒三尺龍泉劍,舍身報國為君死。
    魘客閱讀 508評論 0 2

友情鏈接更多精彩內(nèi)容