系列八 条件语句在各个部分的应用

更新,插入,删除记录的中的数据

  • 条件更新、条件删除
  • 连接查询
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#第三十六课时
--条件更新
UPDATE cms_user SET age = age - 3 WHERE username LIKE '____';
--更新前三条记录,让已有年龄+10
UPDATE cms_user SET age = age +10 LIMIT 3;
--按照id降序排列
UPDATE cms_user SET age = age +10 ORDER BY id DESC LIMIT 3;
--条件删除
DELETE FROM cms_user WHERE sex = 'man' ORDER BY age DESC LIMIT 3;

#第三十七课时
--连接查询
--将两个或两个以上的表按某个条件链接起来,从中个选取出需要的数据
--链接插叙是同时查询两个或两个以上的表时使用的。
--当不同的表中存在相同意义的字段是,可以通过该字段链接这几个表

--内连接查询
--显示连个表中符合链接条件的记录
--JOIN / CROSS JOIN / INNER JOIN
--通过on连接条件

--查询cms_user表中id,username
--查询provinces表中,proName;
SELECT cms_user.id ,username ,proName FROM cms_user,provinces;
--并不能实现想要的目的


--cms_user的ProId对应省份表中的id,使用where第一次筛选,与内连接语句是等价的
SELECT cms_user.id ,username ,proName FROM cms_user,provinces
WHERE cms_user.proId = provinces.id;

--用内连接的方式把各个表中的相关信息统一为同一个表中的信息
--查询cms_user表中的id,username,email,sex;
--查询procinces表中的proName
SELECT u.id,u.username,u.email,u.sex,p.proName
FROM cms_user AS u
INNER JOIN provinces AS p
ON u.proId = p.id;

--通过on连接条件
SELECT u.id,u.username,u.email,u.sex,p.proName
FROM cms_user AS u
CROSS JOIN provinces AS p
ON u.proId = p.id;

--查询cms_user表中id,username,sex
--查询procinces表中的proName
--条件是cms_user 的性别是男的用户
--根据p.proName进行分组GROUP
--对分组结果进行二次筛选,跳出组中人数大于等于一的人。
SELECT u.id,u.username,u.email,u.sex,p.proName,COUNT(*)AS totalUsers
FROM cms_user AS u
JOIN provinces AS p
ON u.proId = p.id
WHERE u.sex = 'man'
GROUP BY p.proName
HAVING COUNT(*) >= 1
ORDER BY u.id ASC
LIMIT 0,2;

#第三十八课时
--外联结查询
--左外连接LEFT[OUTER]JOIN显示左全部记录及右表符合链接条件的记录
--右外连接RIGHT[OUTER]JOIN显示右表全部记录及左表符合链接条件的记录
SELECT u.id,u.username,u.email,u.sex,p.proName,COUNT(*)AS totalUsers
FROM cms_user AS u
LEFT JOIN provinces AS p
ON u.proId = p.id;
--左外连接就是一左边的表为查询主表,从左边寻找满足条件要求的项,并在右表中找到对应的数据