<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>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                [TOC] # 1. 創建視圖的語法 轉載自:https://www.cnblogs.com/ljxt/p/11613167.html **** ```sql CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}] [DEFINER = {user | CURRENT_USER}] [SQL SECURITY {DEFINER | INVOKER}] VIEW view_name [(column_list}] AS select_statement [WITH [CASCADED | LOCAL | CHECK OPTION] ``` **1. `OR REPLACE`** 表示在創建視圖時候會替換已有視圖。 **2.`ALGORITHM`** 選擇在處理定義視圖的select語句中使用的方法。 ``` – UNDEFINED:MySQL將自動選擇所要使用的算法 – MERGE:將視圖的語句與視圖定義合并起來,使得視圖定義的某一部分取代語句的對應部分 – TEMPTABLE:將視圖的結果存入臨時表,然后使用臨時表執行語句 ``` 缺省`ALGORITHM`選項等同于`ALGORITHM = UNDEFINED`。 **3.`DEFINER`** 指出誰是視圖的創建者或定義者。 ``` – definer= '用戶名'@'登錄主機' – 如果不指定該選項,則創建視圖的用戶就是定義者, 指定關鍵字CURRENT_USER(當前用戶)和不指定該選項效果相同 ``` **4.`SQL SECURITY`** 定義視圖的`select`權限,`SQL SECURITY`選項決定了執行的結果。 ``` – SQL SECURITY DEFINER:定義(創建)視圖的用戶必須對視圖所訪問的表具有select權限, 也就是說將來其他用戶訪問表的時候以定義者的身份,此時其他用戶并沒有訪問權限。 – SQL SECURITY INVOKER:訪問視圖的用戶必須對視圖所訪問的表具有select權限。 ``` 缺省`SQL SECURITY`選項等同于`SQL SECURITY DEFINER`。 <br/> 視圖權限總結: 使用root用戶定義一個視圖(推薦使用第一種):u1、u2 1)u1作為定義者定義一個視圖,u1對基表有select權限,u2對視圖有訪問權限:u2是以定義者的身份訪問可以查詢到基表的內容; 2)u1作為定義者定義一個視圖,u1對基表沒有select權限,u2對視圖有訪問權限,u2對基表有select權限:u2訪問視圖的時候是以調用者的身份,此時調用者是u2,可以查詢到基表的內容。 **5. `select_statement`** 表示select語句。 **6. `[WITH [CASCADED | LOCAL] CHECK OPTION]`** 表示視圖在更新時保證在視圖的權限范圍之內。該選項可以保證數據的安全性,所以建議加上它。 ```sql mysql> create view view_name [(column_list)] as select_statement with check option; ``` <br/> # 2. 視圖創建演示 **1. 視圖是基于已有的表創建的,所以先創建表** ```sql drop table if exists `author`; create table `author`( `id` int(11) primary key not null auto_increment, `author_name` varchar(255) default null )engine=INNODB default charset=utf8; insert into `author`(`id`, `author_name`) values(1, "張三"); insert into `author`(`id`, `author_name`) values(2, "李四"); insert into `author`(`id`, `author_name`) values(3, "王五"); insert into `author`(`id`, `author_name`) values(4, "趙六"); drop table if exists `blog`; create table `blog`( `id` int(11) primary key not null auto_increment, `title` varchar(50) default null, `content` varchar(255) default null, `author_id` int(11) default null, CONSTRAINT `fk-author` FOREIGN key (`author_id`) REFERENCES `author`(`id`) )engine=INNODB default charset=utf8; insert into `blog`(`id`, `title`,`content`,`author_id`) values(1, "張三博客", "張三博客內容", 1); insert into `blog`(`id`, `title`,`content`,`author_id`) values(2, "李四博客", "李四博客內容", 2); insert into `blog`(`id`, `title`,`content`,`author_id`) values(3, "王五博客", "王五博客內容", 3); ``` **2. 創建視圖** ```sql # 定義視圖 mysql> create view v_author_blog as select a.id, a.author_name, b.title from author a, blog b where a.id=b.author_id order by a.id asc with check option; # 查看視圖信息 mysql> desc v_author_blog; +-------------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------------+--------------+------+-----+---------+-------+ | id | int | NO | | 0 | | | author_name | varchar(255) | YES | | NULL | | | title | varchar(50) | YES | | NULL | | +-------------+--------------+------+-----+---------+-------+ # 查詢視圖 mysql> select * from v_author_blog; +----+-------------+--------------+ | id | author_name | title | +----+-------------+--------------+ | 1 | 張三 | 張三博客 | | 2 | 李四 | 李四博客 | | 3 | 王五 | 王五博客 | +----+-------------+--------------+ ``` (1)可以看到視圖將我們不需要的數據過濾掉,將相關的列名用我們自定義的列名替換。 (2)如果創建視圖時不明確指定視圖的列名,那么列名就和定義視圖的`select`子句中的列名完全相同。 (3)如果顯式的指定視圖的列名就按照指定的列名。 >[warning]注意:顯示指定視圖列名,要求視圖名后面的列的數量必須匹配select子句中的列的數量。
                  <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>

                              哎呀哎呀视频在线观看