1. 程式人生 > 實用技巧 >使用RedisTemplate快取List的一系列操作示例

使用RedisTemplate快取List的一系列操作示例

mysql進行多表查詢的方法:1、使用SELECT子句進行查詢;2、使用表的別名進行查詢;3、通過內連線進行查詢;4、通過巢狀進行查詢;5、通過多表聯合進行查詢。

一、使用SELECT子句進行多表查詢

SELECT 欄位名 FROM 表1,表2 … WHERE 表1.欄位 = 表2.欄位 AND 其它查詢條件

SELECT a.id,a.name,a.address,a.date,b.math,b.english,b.chinese FROM tb_demo065_tel AS b,tb_demo065 AS a WHERE a.id=b.id

:在上面的的程式碼中,以兩張表的id欄位資訊相同作為條件建立兩表關聯,但在實際開發中不應該這樣使用,最好用主外來鍵約束來實現

二、使用表的別名進行多表查詢

示例:

SELECT a.id,a.name,a.address,b.math,b.english,b.chinese FROM tb_demo065  a,tb_demo065_tel  b WHERE a.id=b.id AND b.id='$_POST[textid]'

SQL語言中,可以通過兩種方式為表指定別名:

1、通過關鍵字AS指定,如
SELECT a.id,a.name,a.address,b.math,b.english,b.chinese FROM tb_demo065 AS a,tb_demo065_tel AS b WHERE a.id=b.id

2、在表名後直接加表的別名實現


SELECT a.id,a.name,a.address,b.math,b.english,b.chinese FROM tb_demo065  a,tb_demo065_tel  b WHERE a.id=b.id

使用表的別名應注意幾下幾點

● (1別名通常是一個縮短了的表名,用於在連線中引用表中的特定列,如果連線中的多個表中有相同的名稱列存在,必須用表名或表的別名限定列名
● 如果定義了表的別名就不能再使用表名

三、簡單巢狀查詢(子查詢、內連線)

子查詢:子查詢是一個SELECT查詢,返回單個值且巢狀在SELECT、INSERT、UPDATE和DELETE語句或其它查詢語句中,任何可以使用表示式的地方都可以使用子查詢。例:

SELECT id,name,sex,date FROM tb_demo068 WHERE id in(SELECT id FROM tb_demo068 WHERE id='$_POST[test]')

內連線:把查詢結果作為WHERE子句的查詢條件即稱為內連線


SELECT filedlist FROM table1 [INNER] JOIN table2 ON table1.column1 = table2.column1

其中,filedlist是要顯示的欄位,INNER表示表之間的連線方式為內連線,table1.column1=table2.column1用於指明兩表間的連線條件,如:


SELECT a.name,a.address,a.date,b.chinese,b.math,b.english FROM tb_demo065 AS a INNER JOIN tb_demo065_tel AS b on a.id=b.id

四、複雜的巢狀查詢

多表之間的巢狀查詢可以通過謂詞IN實現,語法格式如下:

test_expression[NOT] IN{

 subquery

}

引數說明:test_expression指SQL表示式,subquery包含某結果集的子查詢

多表巢狀查詢的原理:無論是多少張表進行巢狀,表與表之間一定存在某種關聯,通過WHERE子句建立此種關聯實現查詢

五、多表聯合查詢

利用SQL語句中的UNION,可以將不同表中符合條件的資料資訊顯示在同一列中。例:
SELECT * FROM tb_demo074_student UNION SELECT * FROM tb_demo074_fasten

使用UNION時應注意以下兩點:

● 在使用UNION運算子組合的語句中,所有選擇列表的表示式數目必須相同,如列名、算術表示式及聚合函式等
● 在每個查詢表中,對應列的資料結構必須一樣。

六、複雜內連線查詢

複雜的內連線查詢是在基本的內連線查詢的基礎上再附加一些查詢條件,如:

SELECT a.name,a.address,a.date,b.chinese,b.math,b.english FROM tb_demo065 AS a INNER JOIN tb_demo065_tel AS b on a.id=b.id WHERE b.id=(SELECT id FROM  tb_demo065 WHERE tb_demo065.name='$_POST[text]')

總之,實現表與表之間的關聯的本質是兩表之間存在共同的資料項或者相同的資料項,通過WHERE 子句或內連線INNER JOIN … ON 語句將兩表連線起來,實現查詢。