在程式開發時,不可避免的要用到檢視,首先我們來看看檢視到底有什麼作用:
簡單性:看到的就是需要的。檢視不僅可以簡化使用者對資料的理解,也可以簡化他們的操作。那些被經常使用的查詢可以被定義為檢視,從而使得使用者不必為以後的操作每次制定全部的條件。
安全性:通過檢視用固話只能查詢和修改他們所能見到的資料。資料庫中的其他資料則既看不見也取不到。資料庫授權命令可以使每個使用者對資料庫的檢索限制到特定的資料庫物件上,但不能授權到資料庫特定行和特定的列上。
其他的優點暫時省略。
檢視中我們用的最多的可能就是多表查詢了,既然檢視有這麼多的優點,那麼我們就來說說如何多表查詢
兩個表查詢:
情景1
如圖所示:
其中foodtypeid為第二個表的主鍵,那麼當我們要篩選出這樣的資料(foodid、foodtypename、foodname、price)的時候就要用到多表查詢了,是這樣做的:
select foodinfo.foodid, foodtypeinfo.foodtypename ,
foodinfo.foodname ,foodinfo.price
from foodinfo inner join foodtypeinfo
on foodinfo.foodtypeid =foodtypeinfo .foodtypeid
情景2如圖所示:
大家可以看到第一張表和上面的相比增加了兩個字段,其中我們要用到的就有managerid,第二張表還是原來那張表,增加的第三張表中我們也用到managerid,最後查詢的結果想要看到的是(foodid、foodtypename、foodname、price,managerid),是這樣操作的:
select foodinfo.foodid, foodtypeinfo.foodtypename ,
foodinfo.foodname ,foodinfo.price,
managerinfo.managerid
from (foodinfo inner join foodtypeinfo
on foodinfo.foodtypeid =foodtypeinfo .foodtypeid )
inner join managerinfo on managerinfo.managerid =foodinfo .managerid
看到上面的我們是不是可以總結出這樣的規律呢?
我們以五個表為例來說明一下:
首先前面的選擇表頭的東西就省略了,直接寫表和表之間的關係:
from((((表 inner join 表 on 表.欄位名 =表.欄位名)
innner join 表 on 表.欄位名=表.欄位名)
inner join 表 on表.欄位名=表.欄位名)
inner join 表 on 表.欄位名=表.欄位名
多表查詢 多表查詢 多表查詢
查詢語法 select 列表名稱 from 表明列表 where 笛卡爾積 有兩個集合a,b,取這兩個集合的所有組成情況 要完成多表查詢,需要消除無用的資料 多表查詢分類 1 內連線查詢 1 隱式內連線 使用where消除無用的資料 例子 select t1.name,t1.gender,t2.na...
多表的查詢
返回多表的記錄的笛卡爾積。第一張表 5 第二章表 7,返回5 7 35 select c.id,c.name,o.order number,o.price from customer c cross join orders o 1 隱式內連線 select from customer c,order...
mysql 多表查詢or MySQL 多表查詢
前期準備 建表create table dep id int,name varchar 20 create table emp id int primary key auto increment,name varchar 20 enum male female not null default ma...