PHP重点知识复习 – MySQL的SQL语句编写

一、MySQL的关联更新UPDATE语句

1.关联更新

真题测试:有A(id,sex,par,c1,c2),B(id,age,c1,c2)两张表,其中A.id与B.id关联,现在要求写出一条SQL语句,将B中age>50的记录的c1,c2更新到A表中统一记录中的c1,c2字段中

解答:

UPDATE A,B SET A.c1 = B.c1, A.c2 = B.c2 WHERE A.id = B.id AND B.age > 50;

UPDATE A INNER JOIN B ON A.id = B.id SET A.c1 = B.c1, A.c2 = B.c2 WHERE B.age > 50;

二、MySQL的关联查询语句

六种关联查询

交叉连接(CROSS JOIN),内连接(INNER JOIN),外连接(LEFT JOIN/RIGHT JOIN),联合查询(UNION与UNION ALL),全连接(FULL JOIN)

1.交叉连接

SELECT * FROM A,B(,C); 或者

SELECT * FROM A CROSS JOIN B (CROSS JOIN C);

没有任何关联条件,结果是笛卡尔积,结果集会很大,没有意义,很少使用

2.内连接

SELECT * FROM A,B WHERE A.id = B.id; 或者

SELECT * FROM A INNER JOIN B ON A.id = B.id;

多表中同时符合某种条件的数据记录的集合

内连接分为三类

等值连接:ON A.id = B.id

不等值连接:ON A.id > B.id

自连接:SELECT * FROM A T1 INNER JOIN A T2 ON T1.id = T2.pid;

3.外连接

左外连接:LEFT OUTER JOIN,以左表为主,先查询出左表,按照ON后的关联条件匹配右表,没有匹配到的用NULL填充,可以简写成 LEFT JOIN

右外连接:RIGHT OUTER JOIN,以右表为主,先查询出右表,按照ON后的关联条件匹配左表,没有匹配到的用NULL填充,可以简写成 RIGHT JOIN

4.联合查询

SELECT * FROM A UNION SELECT * FROM B UNION......

就是把多个结果集集中在一起,UNION前的结果为基准,需要注意的是联合查询的列数要相等,相同的记录行会合并

5.嵌套查询

用一条SQL语句的结果作为另外一条SQL语句的条件

SELECT * FROM A WHERE id IN (SELECT id FROM B);

解题方法

根据考题要搞清楚表的结构和多表之间的关系,根据想要的结果思考使用哪种关联方式,通常把要查询的列先写出来,然后分析这些列都属于哪些表,才考虑使用关联查询。

真题测试

为了记录足球比赛的结果,设计表如下

其中,match赛程表中的hostTeamID与guestTeamID都和team表中的teamID关联,查询2002-6-1到2006-7-1之间举行的所有比赛,并且用以下形式列出:拜仁 2:0 不莱梅 2006-6-21

解答:

SELECT t1.teamName, m.matchResult, t2.teamName, m.matchTime FROM match as m LEFT JOIN team as t1 ON m.hostTeamID = t1.teamID, LEFT JOIN team as t2  ON m.guestTeamID = t2.teamID  WHERE m.matchTime BETTWEN "2006-6-1" AND "2006-7-1";

 

此部分内容参考教程 《SQL语句设计》

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇