視圖可以說是一種虛擬表,建立在基本表的基礎上,通過關聯一個表或者多個表來獲取多個表中需要的字段,視圖只是用來查詢數據並不能用來存儲數據信息。
我有以下幾張表:
-------image表----
----org表------
-----user表-----
----album表----
我要將以上四張表關聯,可以用sql的join連接語句,但是會很麻煩,現在在mysql中創建一個視圖會很方便的解決這四個表連接的問題。sql語句如下:
CREATE
VIEW v_image_org_user_album AS--創建視圖並命名v_image_org_user_album
SELECT --先開from中表的命名
a.id AS imgid,--將a表中的id命名為新的表(視圖)中的imgid字段,剩下的都一樣,就是將之前的字段重新命名到新視圖表中的字段
a.comment AS comment,
a.createtime AS createtime,
a.path AS path,
b.name AS authorname,
b.orgcode AS userorgcode,
c.name AS orgname,
e.name AS album
FROM
t_image a,--image表命名為a
t_user b,--user表命名為b
t_organization c,--organzation表命名為c
t_album_image d,--album_image表命名為d
t_album e--album表命名為e
WHERE
a.useracc = b.account
AND b.orgcode = c.orgcode
AND a.id = d.imageid
AND d.albumid = e.id
在數據庫中的的編譯器中執行該段sql語句,生成以v_image_org_user_album命名的視圖表,並且會自動匹配到數據庫中存儲的數據
然后在項目中創建相應的域類(grails項目),字段就是視圖表中新命名的字段,就可以直接按照新字段進行sql語句的增刪改查操作,但是,項目移植時視圖要重新生成。這樣就將多個表進行關聯了,可以直接使用視圖表中的字段。