系列十 子查询 &正则表达式查询 &运算符的使用

  • 子查询
  • 正则表达式查询
  • 运算符的使用
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#第四十二课时
--子查询的使用
--就是用查询的语句代替条件查询的一部分,查询嵌套


--由[not] in 引发的子集合查询
SELECT id FROM department;
SELECT id ,username FROM employee WHERE depId IN(1,2,3,4)

SELECT id ,username FROM employee WHERE depId IN(SELECT id FROM department);

--由比较运算符引发的子查询
SELECT level FROM scholarship WHERE id = 1;
SELECT id,username FROM student WHERE score >= 90;

SELECT id,username FROM student WHERE score >=(SELECT level FROM scholarship WHERE id = 1);

--由[NOT]EXISTS 引发的子查询
SELECT id FROM department WHERE id = 5;

SELECT id ,username FROM employee WHERE EXISTS(SELECT id FROM department WHERE id = 5);


#第四十三课时
--子查询的其他形式
--使用ANY/SOME/ALL 的子查询
--ANY/SOME表示存在性问题
--ALL 表示任意性问题
--查询所有获得奖学金的人
SELECT id ,username,score FROM student WHERE score >= ANY(SLECT level FROM scholarship);

--将结果集出入到另一张表中
SELECT id ,score FROM student;

INSERT test1(id,num)

--创建表的同时将查询结果插入
CREATE TABEL test2(
id TINYINT UNSIGNED AUTO_INCREMENT KEY,
score TINYINT UNSIGNED
)SELECT id ,score FROM student;



#第四十四课时
--正则表达式查询
--REGEXP'匹配方式'
--常用的匹配方式
--^匹配字符开始的部分
--&匹配字符串结尾的部分
--.代表字符串中热议一个字符
--[字符集合]匹配字符集合中的任意一个字符
--[^字符集合]匹配除了字符集合意外的的任意一个字符,只要含有者之外的字符的字符串都能匹配到
--s1,s2,s3匹配s1,s2,s3张任意一个字符串
--*代表零个一个或着多个其前的字符
--+代表1个或者多个其前的字符
--STRING{N}字符出现N次
--字符串{M,N }字符串至少出现M次,最多N次

--查询用户名以t开始的用户
SELECT * FROM cms_user WHERE username REGEXP '^t';

--查询以g结尾的用户
SELECT * FROM cms_user WHERE username REGEXP 'g$';

--
SELECT *FROM cms_user WHERE username REGEXP 'R..G';
--可以用模糊查询实现相同的效果
SELECT * FROM cms_user WHERE username LIKE 'R__G';

--
SELECT * FROM cms_user WHERE username REGEXP '[lto]';
--除了字符集合内容中的内容都会出现
SELECT * FROM cms_user WHERE username REGEXP '[^l]';
--匹配集合中的任何一个字符串
SELECT * FROM cms_user WHERE username REGEXP 'nf|qu|tf';
--匹配前边的字符
SELECT * FROM cms_user WHERE username REGEXP 'que*';
SELECT * FROM cms_user WHERE username REGEXP 't+';
SELECT * FROM cms_user WHERE username REGEXP 'que{2}';
SELECT * FROM cms_user WHERE username REGEXP 'que*{1,3}';

#第四十五课时
--MySQL中运算符的使用
--算数运算符+ - * / div %
--比较运算符> < = != <=>(检测是否为null) IS NULL NOT BETWEEN AND OR IN
--逻辑运算符&& AND || OR ! NOT XOR
--运算符的优先级