7、MySQL資料庫的視圖操作

來源:互聯網
上載者:User

標籤:視圖、mysql、索引

上一張內容在結尾階段引入了MySQL資料庫的視圖概念,本章將纖細介紹視圖的集中用法。在建立視圖之前先建立學生表,學院表和學員資訊表,通過使用視圖對著三張表的操作,使我們對視圖有一個基本的認識和瞭解。

使用視圖的原則:

1、視圖名字唯一性

2、視圖的建立個數不受限制,使用者可以建立多個視圖

3、使用者建立視圖,必須從資料庫管理員得到許可權。

4、視圖可以嵌套,

5、一些資料庫管理系統禁止使用者在查詢語句中使用order by子句。

一、建立實用表資料

建立學生表

mysql> create table studenginfo(sno int(4) zerofill,sname varchar(18),sex ENUM(‘男‘,‘女‘) not null default ‘女‘,address varchar(48) default ‘北京‘,dno int(3));Query OK, 0 rows affected (0.07 sec)

建立學院表

create table recruitinfo(address varchar(18) not null,score float not null,snum int(3) not null);Query OK, 0 rows affected (0.08 sec)mysql> show create table department\G;*************************** 1. row ***************************       Table: departmentCreate Table: CREATE TABLE `department` (  `dno` int(2) NOT NULL,  `dname` varchar(18) NOT NULL,  `dnum` int(3) NOT NULL DEFAULT ‘0‘) ENGINE=InnoDB DEFAULT CHARSET=utf81 row in set (0.00 sec)

為學生表建立索引

mysql> create index name_index on studentinfo (sname);

二、視圖:

視圖作為查詢資料的另外一種形式,利用視圖,使用者可以集中、簡化和定製資料庫,同時提供了安全保證

視圖是從一個或過個表中匯出的表,其結構和資料是建立在對標的查詢基礎之上的。就本質而言,視圖是一張虛表。

視圖建立文法:

create view <view_name> [column1,column2...] asselect <column_name> from <tb_name>;

其中[column1,column2,...]為可選項,預設是子查詢結果中的欄位名,select語句指明了視圖中的欄位機器資料。

強調:

1、視圖建立後,只在資料字典中存放視圖的定義,而其中的select語句並不執行

2、只有當使用者對視圖進行操作時,才按照視圖的定義將資料從基本表中取出。

建立視圖:

1、建立一個與studentinfo相同資訊的視圖

mysql> create view studentinfo_view as select * from studentinfo;select * from studentinfo_view;

2、為視圖建立視圖

mysql> create view boy_view as select * from studentinfo_view where sex=‘男‘;

3、為列建立視圖並查看其資訊

mysql> create view nameaddress_view as select sname,address from studentinfo;

4、建立與表具有不同欄位名的視圖

mysql> create view New_view(boy_name,boy_address) as select sname,address from studentinfo where sex=‘男‘;Query OK, 0 rows affected (0.00 sec)

5、利用視圖簡化表的複雜串連

建立一個關於學生資訊表(studentinfo)、招生資訊表(Recruitinfo)和Department的關聯。

sname、dname和dnum三個欄位。

mysql> create view join_view as select sname,dname,score from studentinfo s,department d,recruitinfo r where s.address=r.address and s.dno=d.dno;Query OK, 0 rows affected (0.00 sec)mysql> select * from join_view;+-----------+--------------------+-------+| sname     | dname              | score |+-----------+--------------------+-------+| 張平      | 汽車系             | 648.5 || 李山      | 電子工程系         |   560 || 王彤      | 汽車系             | 654.5 || 張偉      | 電腦工程系       |   638 || 高守傳    | 機械工程           |   650 || 劉紅      | 工程物理系         | 629.5 || 張勇      | 應用數學系         |   625 || 劉曉      | 電子工程系         |   650 || 吳軍      | 電子工程系         |   631 || 張大山    | 材料工程系         |   635 |+-----------+--------------------+-------+10 rows in set (0.03 sec)

6、視圖簡化複雜查詢的過程

6.1 給予學生表,建立boys_view視圖,包含所有男同學資訊

mysql> create view boys_view as select * from studentinfo where sex=‘男‘;

給予recruitinfo表,建立視圖score_view,包含錄取分數高於630的所有學生的資訊

mysql> create view boyscore_view as select * from score_view where sno in (select sno from boys_view);mysql> select * from boyscore_view;+------+-----------+-----+---------+------+| sno  | sname     | sex | address | dno  |+------+-----------+-----+---------+------+| 0005 | 高守傳    | 男  | 山東    |    3 || 0004 | 張偉      | 男  | 浙江    |    1 || 0009 | 吳軍      | 男  | 山西    |    4 || 0010 | 張大山    | 男  | 陝西    |    7 |+------+-----------+-----+---------+------+4 rows in set (0.00 sec)mysql> create view result_view (sname,dname) as select boyscore_view.sname,department.dname from boyscore_view,department where boyscore_view.dno=department.dno;Query OK, 0 rows affected (0.00 sec)

刪除視圖

文法:drop view view_name

drop view studentinfo_view

注意:視圖在物理上是不存在的,只是一個查詢結果,是一個被儲存的查詢。create view語句只是儲存了視圖的定義,所以在使用drop view語句刪除視圖時,刪除的也只是視圖的定義,對實際表中的資料沒有影響。


本文出自 “小熊營運” 部落格,請務必保留此出處http://maoxiaoxiong.blog.51cto.com/11705634/1983954

7、MySQL資料庫的視圖操作

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.