mysql查询表(单表、多表、正则表达式、集合函数)及练习

2020-07-2817:34:49数据库教程Comments1,897 views字数 18896阅读模式

一、单表查询文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

1.1、查询所有字段文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

1.2、查询指定字段文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

1.3、查询指定记录文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

1.4、带IN关键字的查询文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

1.5、带BETWEEN AND 的范围查询文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

1.6、带LIKE的字符匹配查询文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

1.7、查询空值文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

1.8、带AND的多条件查询文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

1.9、带OR的多条件查询文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

1.10、关键字DISTINCT(查询结果不重复)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

1.11、对查询结果排序文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

1.12、分组查询(GROUP BY)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

1.13、使用LIMIT限制查询结果的数量文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

集合函数查询文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

1.14、COUNT()函数文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

1.15、SUM()函数文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

1.16、AVG()函数文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

1.17、MAX()函数文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

1.18、MIN()函数文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

二、多表查询文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

小知识文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

为表取别名文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

为字段取别名文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

基于两张表文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

2.1、普通双表连接查询文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

2.2、内连接查询文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

2.3、外连接查询文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

2.3.1、左外连接查询文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

2.3.2、右外连接查询文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

2.4、复合条件连接查询文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

子查询文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

2.5、带ANY、SOME关键字的子查询文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

2.6、带ALL关键字的子查询文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

2.7、带EXISTS关键字的子查询文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

2.8、带IN关键字的子查询文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

2.9、带比较运算符的子查询文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

合并结果查询文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

2.10、UNION[ALL]的使用文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

三、使用正则表达式查询文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

3.1、查询以特定字符或字符串开头的记录文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

3.2、查询以特定字符或字符串结尾的记录文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

3.3、用符号"."来替代字符串中的任意一个字符文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

3.4、使用"*"和"+"来匹配多个字符文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

3.5、匹配指定字符串文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

3.6、匹配指定字符中的任意一个文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

3.7、匹配指定字符以外的字符文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

3.8、使用{n,}或者{n,m}来指定字符串连续出现的次数文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

四、综合案例 练习数据表查询操作文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

4.1、搭建环境文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

省略文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

4.2、查询操作文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

省略文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

4.3、在已经创建好的employee表中进行如下操作文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

4.3.1、计算所有女员工(F)的年龄文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

4.3.2、使用LIMIT查询从第3条记录开始到第六条记录文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

4.3.3、查询销售人员(SALSEMAN)的最低工资文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

4.3.4、查询名字以字母N或者S结尾的记录文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

4.3.5、查询在BeiJing工作的员工的姓名和职务文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

4.3.6、使用左连接方式查询employee和dept表文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

4.3.7、查询所有2001~2005年入职的员工的信息,查询部门编号为20和30的员工信息并使用UNION合并两个查询结果文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

4.3.8、使用LIKE查询员工姓名中包含字母a的记录文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

4.3.9、使用REGEXP查询员工姓名中包含T、C或者M 3个字母中任意1个的记录文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

想直接做题的,跳过讲解,直接到练习区。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

这张讲解的目录就是想上面这样,可以直接看自己感兴趣的部分,而不用从最基础的看起,接下来就一步步实现这上面庞大的工作量了。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

--------------------------------------------------------------------------------------------------------------------------------------------------------------------文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

一、单表查询文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

创建查询环境文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

     CREATE TABLE fruits(
           f_id CHAR(10) NOT NULL,
           s_id INT NOT NULL,
           f_name char(255) NOT NULL,
           f_price DECIMAL(8,2) NOT NULL,
           PRIMARY KEY(f_id)
         );

解释:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

f_id:主键 使用的是CHAR类型的字符来代表主键文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

s_id:这个其实是批发商的编号,也就是代表该水果是从哪个批发商那里过来的,写这个字段的目的是为了方便后面扩增表。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

f_name:水果的名字文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

f_price:水果的价格,使用的是DECIMAL这个数据类型,如果不清楚这个类型去查看一下上面一篇讲解数据类型的文章。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

添加数据。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

 INSERT INTO fruits(f_id,s_id,f_name,f_price) VALUES
            ('a1' , 101 , 'apple' , 5.2),
            ('b1' , 101 , 'blackberry' , 10.2),
            ('bs1' , 102 , 'orange' , 11.2),
            ('bs2' , 105 , 'melon' , 8.2),
            ('t1' , 102 , 'banana' , 10.3),
            ('t2' , 102 , 'grape' , 5.3),
            ('o2' , 103 , 'coconut' , 9.2),
            ('c0' , 101 , 'cherry' , 3.2),
            ('a2' , 103 , 'apricot' , 2.2),
            ('l2' , 104 , 'lemon' , 6.4),
            ('b2' , 104 , 'berry' , 7.6),
            ('m1' , 106, 'mango' , 15.6),
            ('m2' , 105 , 'xbabay' , 2.6),
            ('t4' , 107, 'xbababa' , 3.6),
            ('m3' , 105 , 'xxtt' , 11.6),
            ('b5' , 107, 'xxxx' , 3.6 );

blackberry:黑莓  melon:甜瓜  grape:葡萄  coconut:椰子  cherry:樱桃  apricot:杏子  berry:浆果  mango:芒果  后面几个xbabay都是为了测试所编写的,没有实际意义。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

注意:在复制我的代码到cmd窗口时,应注意语句之间不能有空格,不然会报错,我这里是为了使你们观看更清楚,所以每行前面度加有空格,文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

1.1、查询所有字段文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT * FROM fruits;文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

解释:* 代表所有字段,也就是从表中将所有字段下面的记录度查询出来文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

1.2、查询指定字段文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

查询f_name 和 f_price 字段的记录文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

 SELECT f_name, f_price FROM fruits;

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

1.3、查询指定记录文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

指定记录:也就是按条件进行查询,将满足一定条件的记录给查询出来,使用WHERE关键字文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT * FROM fruits WHERE f_name = 'apple';  //将名为apple的记录的所有信息度查询出来

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

 SELECT * FROM fruits WHERE f_price > 15;    //将价格大于15的记录的所有字段  查询出来

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

1.4、带IN关键字的查询文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

IN关键字:IN(xx,yy,...) 满足条件范围内的一个值即为匹配项文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT * FROM fruits WHERE f_name IN('apple','orange');

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT * FROM fruits WHERE s_id IN(101, 105);  //s_id 为101 或者 105 的记录

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT * FROM fruits WHERE s_id NOT IN(101,105); //s_id 不为101或者105的记录

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

1.5、带BETWEEN AND 的范围查询文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

BETWEEN ... AND ... : 在...到...范围内的值即为匹配项,文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT * FROM fruits WHERE f_price BETWEEN 5 AND 15;  //f_price 在5到15之间,包括5和15。

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT * FROM fruits WHERE f_price NOT BETWEEN 5 AND 15;  //f_price 不在5到15之间。

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

1.6、带LIKE的字符匹配查询文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

LIKE: 相当于模糊查询,和LIKE一起使用的通配符有  "%"、"_"文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

"%":作用是能匹配任意长度的字符。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

"_":只能匹配任意一个字符文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT * FROM fruits WHERE f_name LIKE 'b%';  //f_name以b字母开头的所有记录

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT * FROM fruits WHERE f_name LIKE 'b%y';  //f_name以b字母开头,y字母结尾的所有记录

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT * FROM fruits WHERE f_name LIKE '____y';   //此处有四个_,说明要查询以y字母结尾并且y之前只有四个字符的记录

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

总结:'%'和'_'可以在任意位置使用,只需要记住%能够表示任意个字符,_只能表示一个任意字符文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

1.7、查询空值文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

空值不是指为空字符串""或者0,一般表示数据未知或者在以后在添加数据,也就是在添加数据时,其字段上默认为NULL,也就是说,如果该字段上不插入任何值,就为NULL。此时就可以查询出来。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT * FROM 表名 WHERE 字段名 IS NULL;  //查询字段名是NULL的记录
SELECT * FROM 表名 WHERE 字段名 IS NOT NULL;  //查询字段名不是NULL的记录

这里由于没有合适的数据,就不自己在创建表,添加数据,然后来测试这条语句了,很简单,看一下就应该懂了文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

1.8、带AND的多条件查询文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

AND: 相当于"逻辑与",也就是说要同时满足条件才算匹配文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT * FROM fruits WHERE s_id = 101 AND f_price > 5;  //同时满足s_id = 101、f_price >5 这两个条件才算匹配。

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

1.9、带OR的多条件查询文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

OR: 相当于"逻辑或",也就是说只要满足其中一个条件,就算匹配上了,跟IN关键字效果差不多文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT * FROM fruits WHERE s_id = 101 OR f_price > 10;  //s_id =101 或者 f_price >10 ,只要符合其中一个条件,就算匹配

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

可以看到,查询出来的记录,f_price有低于10的,那么其肯定s_id=101,s_id不等于101的,其f_price肯定大于10,这就说明了OR的效果。只要满足其中一个条件,就算匹配。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

1.10、关键字DISTINCT(查询结果不重复)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT s_id FROM fruits;  //查询所有的s_id,会出现很多重复的值。

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

使用DISTINCT就能消除重复的值文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT DISTINCT s_id FROM fruits;

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

将重复的值删除后,就只留下7条记录了。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

1.11、对查询结果排序(ORDER BY)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

看上面输出的值没顺序,可以给他们进行排序。使用关键字 ORDER BY,有两个值供选择 DESC 降序 、 ASC 升序(默认值)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT DISTINCT s_id FROM fruits ORDER BY s_id;    //默认就是升序,

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT DISTINCT s_id FROM fruits ORDER BY s_id DESC;  //使用降序,也就是从高到底排列

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

1.12、分组查询(GROUP BY)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

分组查询很多人不知道什么意思,一开始我也是很蒙圈的,所以没关系,一起来看看。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

分组查询就是将相同的东西分到一个组里面去,现实生活中举个例子,厕所分男女,这也是一个分组的应用,在还没有分男女厕所前,大家度共用厕所,后面通过分男女性别,男的跟男的分为一组,女的和女的分为一组,就这样分为了男女厕所了。这就是分组的意思, 在上面对s_id进行查询的时候,发现很多重复的值,我们也就可以对它进行分组,将相同的值分为一组,文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT s_id FROM fruits GROUP BY s_id;  //将s_id进行分组,有实际意义,按批发商进行分组,从101批发商这里拿的水果度会放在101这个组中

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

解释:将s_id分组后,就没有重复的值了,因为重复的度被分到一个组中去了,现在在来看看每个组中有多少个值文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT s_id, COUNT(f_name), GROUP_CONCAT(f_name) FROM fruits GROUP BY s_id;

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

解释:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

COUNT():这个是下面要讲解到的一个函数,作用就是计算有多少条记录,文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

GROUP_CONCAT(): 将分组中的各个字段的值显示出来文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

 
SELECT s_id, COUNT(f_name), GROUP_CONCAT(f_name), GROUP_CONCAT(f_price) FROM fruits GROUP BY s_id;

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

分组之后还可以进行条件过滤,将不想要的分组丢弃,使用关键字 HAVING文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT s_id,COUNT(f_name),GROUP_CONCAT(f_name) FROM fruits GROUP BY s_id HAVING COUNT(f_name) > 1;
//他能够过s_id分组,然后过滤出水果种类大于1的分组信息。

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

总结:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

知道GROUP BY的意义,并且会使用HAVING对分组进行过滤, HAVING和WHERE都是进行条件过滤的,区别就在于 WHERE 是在分组之前进行过滤,而HAVING是在分组之后进行条件过滤。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

1.13、使用LIMIT限制查询结果的数量文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

LIMIT[位置偏移量] 行数  通过LIMIT可以选择数据库表中的任意行数,也就是不用从第一条记录开始遍历,可以直接拿到 第5条到第10条的记录,也可以直接拿到第12到第15条的记录。 具体看下面例子文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT * FROM fruits LIMIT 4;  
//没有写位置偏移量,默认就是0,也就是从第一条开始,往后取4条数据,也就是取了第一条数据到第4条的数据。

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT * FROM fruits LIMIT 4,3;  //从第5条数据开始,往后取3条数据,也就是从第5条到第8条

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

注意:LIMIT的第一个参数不写默认就是0,也就是说,第一条记录的索引是0,从0开始的,第二个参数的意思是取多少行的记录,需要这两个才能确定一个取记录的范围文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

集合函数查询文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

1.14、COUNT()函数文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

这个函数在上面其实用过,作用是统计数据表中包含的记录行的总数,或者根据查询结果返回列中包含的数据行数,文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

COUNT(*):计算表中的总的行数,不管某列有数值或者为空值,因为*就是代表查询表中所有的数据行文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

COUNT(字段名):计算该字段名下总的行数,计算时会忽略空值的行,也就是NULL值的行。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT COUNT(*) FROM fruits;

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT COUNT(f_name) FROM fruits;  //查询fruits表中f_name字段名下有多少个行数,

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

没有空值,所以计算出来的行数和总的记录行数是一样的。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

1.15、SUM()函数文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SUM()是一个求总和的函数,返回指定列值的总和文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT SUM(f_price) FROM fruits;  //这个没有实际的意义,只是测试SUM()函数有求总和的能力

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

如果有人觉得这个测试的不准,可以手动去加一下所有的f_price。然后来进行对比,反正我是信了。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

1.16、AVG()函数文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

AVG()函数通过计算返回的行数和每一行数据的和,求的指定列数据的平均值(列数据指的就是字段名下的数据,不要搞不清楚列和行,搞不清就对着一张表搞清楚哪个是列哪个是行),通俗点讲,就是将计算得来的总之除以总的记录数,得出一个平均值,文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT AVG(f_price) FROM fruits;

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

就相当于  116/16 = 7.25文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

1.17、MAX()函数文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

MAX()返回指定列中的最大值文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT MAX(f_price) FROM fruits;

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

1.18、MIN()函数文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

MIN()返回查询列中的最小值文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT MIN(f_price) FROM fruits;

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

二、多表查询文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

小知识文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

为表取别名文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

因为是对两张表进行查询了,那么每次写表名的话就有点麻烦,所以用一个简单别名来代表表名文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

格式:表名 AS 别名文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

在下面的例子中会用的到,到时候不要不认识文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

为字段取别名文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

给字段名取别名的原因是有些字段名是为了显示更加清楚,比如文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT f_price AS '价格' FROM fruits;

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

语句执行顺序问题文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

一、sql执行顺序 、文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

(1)from
(2) on
(3) join
(4) where
(5)group by
(6) avg,sum....
(7)having
(8) select
(9) distinct
(10) order by文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

也就是说,我们每次执行的SQL语句,都是从FROM开始的。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

基于两张表文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

搭建查询环境,前面已经有一张表了,现在在增加一张suppliers(供应商)表和前面哪个fruits表创建练习,也就是说 让fruits中s_id字段值指向suppliers的主键值,创建一个外键约束关系。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

CREATE TABLE suppliers  
        (
          s_id INT NOT NULL,
          s_name CHAR(50) NOT NULL,
          s_city CHAR(50) NULL,
          s_zip CHAR(10) NULL,
          s_call CHAR(50) NOT NULL,
          PRIMARY KEY(s_id)
        );

其实这里并没有达到真正的外键约束关系,只是模拟,让fruits中的s_id中的值 能匹配到 suppliers 中的主键值,通过手动添加这种数据,来达到这种关系,反正是死数据,也不在添加别的数据,就不用建立外键约束关系了,这里要搞清楚文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

 INSERT INTO suppliers(s_id,s_name,s_city,s_zip,s_call)
        VALUES
        (101,'Supplies A','Tianjin','400000','18075'),
        (102,'Supplies B','Chongqing','400000','44333'),
        (103,'Supplies C','Shanghai','400000','90046'),
        (104,'Supplies D','Zhongshan','400000','11111'),
        (105,'Supplies E','Taiyuang','400000','22222'),
        (106,'Supplies F','Beijing','400000','45678'),
        (107,'Supplies G','Zhengzhou','400000','33332');

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

2.1、普通双表连接查询文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

问题:查询水果的批发商编号,批发商名字,水果名称,水果价格文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

分析:看下要求,就知道要查询两张表,如果需要查询两张表,那么两张表的关系必定是外键关系,或者类似于外键关系(类似于也就是说两张表并没有真正加外键约束,但是其特点和外键是一样的,就像上面我们手动创建的两张表一样,虽然没有设置外键关联关系,但是其特性跟外键关系是一样的。)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

 SELECT s.s_id,s.s_name,f.f_name,f.f_price FROM fruits AS f, suppliers AS s WHERE f.s_id = s.s_id;

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

解释:这里使用了表别名,并且这里是连接两张表的关系是在于 fruits中的s_id 等于 suppliers中的s_id。 这个大家度能理解把,也就是水果中记录了批发商的编号,通过该编号就能在suppliers表中找到对应的批发商的详细信息,就这样,两张表就联系起来了。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

注意:第一个执行的是FROM,所以上面为表取别名,在语句的任何地方的可以使用。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

2.2、内连接查询文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

知道了上面两张表基本的连接查询后,内连接查询就很简单了,因为内连接跟上面的作用是一样的,唯一的区别就是语法的不一样文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

格式:表名 INNER JOIN 表名 ON 连接条件文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

问题:查询水果的批发商编号,批发商名字,水果名称,水果价格文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT s.s_id,s.s_name,f.f_name,f.f_price
FROM fruits AS f INNER JOIN suppliers AS s
ON f.s_id = s.s_id;

不知道这样写sql语句会不会让你们看的更清楚文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

还需要知道一个特殊一点的东西,那就是自连接查询,什么是自连接查询?就是涉及到的两张表都是同一张表。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

问题:查询供应f_id='a1'的水果供应商提供的其他水果种类?文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT f2.f_id,f2.f_name
FROM fruits AS f1 INNER JOIN fruits AS f2
ON f1.s_id = f2.s_id AND f1.f_id = 'a1';

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

解释:把fruits表分开看成是两张完全一样的表,在f1表中找到f_id='a1'的s_id,然后到f2这张表中去查找和该s_id相等的记录,也就查询出来了问题所需要的结果。还有另一种方法,不用内连接查询,通过子查询也可以做到,下面会讲解,这里先给出答案,到时可以回过头来看看这个题。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT f_id,f_name
FROM fruits
WHERE s_id = (SELECT s_id FROM fruits WHERE f_id='a1');

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

效果和内连接是一样的,其实原理度是一样的,还是借助的两张表,只是这个更容易让人理解,可以通过这个来去理解上面那个自连接查询。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

2.3、外连接查询文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

内连接是将符合查询条件(符合连接条件)的行返回,也就是相关联的行就返回。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

外连接除了返回相关联的行之外,将没有关联的行也会显示出来。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

为什么需要将不没关联的行也显示出来呢?这就要根据不同的业务需求了,就比如,order和customers,顾客可以有订单也可以没订单,现在需要知道所有顾客的下单情况,而我们不能够只查询出有订单的用户,而把没订单的用户丢在一边不显示,这个就跟我们的业务需求不相符了,有人说,既然知道了有订单的顾客,通过单表查询出来不包含这些有订单顾客,不就能达到我们的要求吗,这样是可以,但是很麻烦,如何能够将其一起显示并且不那么麻烦呢?为了解决这个问题,就有了外连接查询这个东西了。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

2.3.1、左外连接查询文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

格式: 表名 LEFT JOIN 表名 ON 条件; 返回包括左表中的所有记录和右表中连接字段相等的记录,通俗点讲,就是除了显示相关联的行,还会将左表中的所有记录行度显示出来。用例子来展示一下所说效果把。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

由于上面我们所用到的fruits和suppliers中的记录都是设计好的,并没有哪个供应商没有提供水果,现在为了体现左外连接的效果,在suppliers中增加两条记录,fruits中并没有对应这两条记录得水果信息,文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

INSERT INTO suppliers VALUES(108,'suppliers T','Jiangxi','33333','11111');
INSERT INTO suppliers VALUES(109,'suppliers Y','Jiangxi','22222','44444');

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT s.s_id,s.s_name,f.f_id,f.f_name
FROM suppliers AS s LEFT JOIN fruits AS f
ON s.s_id = f.s_id;

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

解释:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

suppliers表是在LEFT JOIN的左边,所以将其中所有记录度显示出来了,有关联项的,也有没有关联项的。这就是左外连接的意思,将左边的表所有记录都显示出来(前提是按照我们所需要的字段,也就是SELECT 后面所选择的字段)。如果将suppliers表放LEFT JOIN的右边,那么就不会在显示108和109这两条记录了。来看看文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT s.s_id,s.s_name,f.f_id,f.f_name
FROM  fruits AS f LEFT JOIN suppliers AS s
ON s.s_id = f.s_id;

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

2.3.2、右外连接查询文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

格式: 表名 RIGHT JOIN 表名 ON 条件  返回包括右表中的所有记录和右表中连接字段相等的记录文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

其实跟左外连接差不多,就是将右边的表给全部显示出来文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT s.s_id,s.s_name,f.f_id,f.f_name
FROM  fruits AS f RIGHT JOIN suppliers AS s
ON s.s_id = f.s_id;              //这条语句出来的结果是跟上面左外连接一样,就是调换了一下位置,其实效果还是一样的。

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

注意:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

LEFT JOIN 和 RIGHT JOIN这只是一种写法,其中还有另一种写法  LEFT OUTER JOIN 和 RIGHT OUTER JOIN .文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

一般写这种复杂查询的时候,写sql语句的顺序应该是先从FROM文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

2.4、复合条件连接查询文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

在连接查询(内连接、外连接)的过程中,通过添加过滤条件,限制查询的结果,使查询的结果更加准确,通俗点讲,就是将连接查询时的条件更加细化。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

问题一:在fruits和suppliers表中使用INNER JOIN语法查询suppliers表中s_id为107的供应商的供货信息?文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT s.s_id,s.s_name,f.f_id,f.f_name
FROM suppliers AS s INNER JOIN fruits AS f 
ON s.s_id = f.s_id AND s.s_id = 107;

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

问题二:在fruits表和suppliers表之间,使用INNER JOIN语法进行内连接查询,并对查询结果进行排序文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT s.s_id,s.s_name,f.f_id,f.f_name
FROM suppliers AS s INNER JOIN fruits AS f
ON s.s_id = f.s_id 
ORDER BY f.s_id;        //对f.s_id进行升序。默认的是ASC,所以不用写。

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

对f.s_id进行排序其实也就是对s.s_id进行排序,效果是一样的,因为条件就是f.s_id=s.s_id。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

子查询文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

子查询,将查询一张表得到的结果来充当另一个查询的条件,这样嵌套的查询就称为子查询文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

2.5、带ANY、SOME关键字的子查询文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

搭建环境文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

CREATE TABLE tb11 (num1 INT NOT NULL);
CREATE TABLE tb12 (num2 INT NOT NULL);
INSERT INTO tb11 VALUES(1),(5),(13),(27);
INSERT INTO tb12 VALUES(6),(14),(11),(20);

ANY关键字接在一个比较操作符的后面,表示若与子查询返回的任何值比较为TRUE,则返回TRUE,通俗点讲,只要满足任意一个条件,就返回TRUE。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT num1 FROM tb11 WHERE num1 > ANY(SELECT num2 FROM tb12);
//这里就是将在tb12表中查询的结果放在前一个查询语句中充当条件参数。只要num1大于其结果中的任意一个数,那么就算匹配。

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SOME关键字和ANY关键字的用法一样,作用也相同,这里不做多讲解了。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

2.6、带ALL关键字的子查询文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

使用ALL时表示需要同时满足所有条件。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT num1 FROM tb11 WHERE num1 > ALL(SELECT num2 FROM tb12);  
//num1需要大于所有的查询结果才算匹配

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

2.7、带EXISTS关键字的子查询文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

EXISTS关键字后面的参数是任意一个子查询,如果子查询有返回记录行,则为TRUE,外层查询语句将会进行查询,如果子查询没有返回任何记录行,则为FALSE,外层查询语句将不会进行查询。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SLEECT * FROM tb11 WHERE EXISTS(SELECT * FROM tb12 WHERE num2 = 3);  
//查询tb12中有没有num2=3的记录,有的话则会将tb11的所有记录查询出来,没有的话,不做查询

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

2.8、带IN关键字的子查询文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

这个IN关键字的作用跟上面单表查询的IN是一样的,不过这里IN中的参数放的是一个子查询语句。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT s_id,f_id,f_name
FROM fruits
WHERE s_id IN(SELECT s_id FROM suppliers WHERE s_id = 107);

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

2.9、带比较运算符的子查询文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

除了使用关键字ALL、ANY、SOME等之外,还可以使用普通的比较运算符。来进行比较。比如我们上面讲解内连接查询的时候,就用过子查询语句,并且还是用的=这个比较运算符,这里就不做多解释了,可以往上面看一下文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

合并结果查询文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

利用UNION关键字,可以将查询出的结果合并到一张结果集中,也就是通过UNION关键字将多条SELECT语句连接起来,注意,合并结果集,只是增加了表中的记录,并不是将表中的字段增加,仅仅是将记录行合并到一起。其显示的字段应该是相同的,不然不能合并。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

2.10、UNION[ALL]的使用文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

UNION:不使用关键字ALL,执行的时候会删除重复的记录,所有返回的行度是唯一的,文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

UNION ALL:不删除重复航也不对结果进行自动排序。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

格式:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT 字段名,... FROM 表名
UNION[ALL]
SELECT 字段名,... FROM 表名

问题一:查询所有价格小于9的水果的信息,查询s_id等于101个103所有水果的信息,使用UNION连接查询结果文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT s_id,f_name,f_price FROM fruits WHERE f_price < 9 
UNION ALL
SELECT s_id,f_name,f_price FROM fruits WHERE s_id = 101 OR s_id=103;

解释:显示的字段都是s_id,f_name,f_price,只是将两个的记录行合并到一张表中。仅仅增加的是记录行,而显示的字段还是那三个,没有增加,文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

使用UNION,而不用UNION ALL的话,重复的记录就会被删除掉。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

三、使用正则表达式查询文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

这个非常简单,就是使用REGEXP关键字来指定正则表达式,画一张表格,就能将下面所有的度覆盖掉。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

3.1、查询以特定字符或字符串开头的记录文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT * FROM fruits WHERE f_name REGEXP '^b';    //以b开头的记录文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

就讲解这一个,下面这些的形式跟这个一模一样,唯一的差别就在正则表达式不一样,一般使用这种模糊查询,使用MySQL中的'_'和'%'就已经足够了。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

3.2、查询以特定字符或字符串结尾的记录文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

3.3、用符号"."来替代字符串中的任意一个字符文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

3.4、使用"*"和"+"来匹配多个字符文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

3.5、匹配指定字符串文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

3.6、匹配指定字符中的任意一个文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

3.7、匹配指定字符以外的字符文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

3.8、使用{n,}或者{n,m}来指定字符串连续出现的次数文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

四、综合案例 练习数据表查询操作文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

4.1、搭建环境文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

两张表: employee(员工)表和dept(部门)表。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

CREATE TABLE dept
              (
                d_no INT NOT NULL PRIMARY KEY AUTO_INCREMENT,    //部门编号
                d_name VARCHAR(50),                    //部门名称
                d_location VARCHAR(100)                  //部门地址
              );
               CREATE TABLE employee 
               (
                e_no INT NOT NULL PRIMARY KEY,    //员工编号
                e_name VARCHAR(100) NOT NULL,    //员工姓名
                e_gender CHAR(2) NOT NULL,      //员工性别
                dept_no INT NOT NULL,         //部门编号
                e_job VARCHAR(100) NOT NULL,    //职位
                e_salary SMALLINT NOT NULL,     //薪水
                hireDate DATE,             //入职日期
                CONSTRAINT dno_fk FOREIGN KEY(dept_no) REFERENCES dept(d_no)
               );

表结构文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

插入数据文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

INSERT INTO dept
             VALUES
                (10,'ACCOUNTING','ShangHai'),
                (20,'RESEARCH','BeiJing'),
                (30,'SALES','ShenZhen'),
                (40,'OPERATIONS','FuJian');

单词解释:ACCOUNTING:会计部门  RESEARCH:研发部  SALES:销售部  OPERATIONS:实践部文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

INSERT INTO employee
             VALUES
                (1001, 'SMITH' , 'm' , 20 , 'CLERK' , 800 , '2005-11-12'),
                  (1002, 'ALLEN' , 'f' , 30 , 'SALESMAN' , 1600, '2003-05-12'),
                (1003, 'WARD' , 'f' , 30 , 'SALESMAN' , 1250, '2003-05-12'),
                  (1004, 'JONES' , 'm' , 20 , 'MANAGER' , 2975, '1998-05-18'),
                (1005, 'MARTIN' , 'm' , 30 , 'SALESMAN' , 1250, '2001-06-12'),
                  (1006, 'BLAKE' , 'f' , 30 , 'MANAGER' , 2850, '1997-02-15'),
                (1007, 'CLARK' , 'm' , 10 , 'MANAGER' , 2450, '2002-09-12'),
                  (1008, 'SCOTT' , 'm' , 20 , 'ANALYST' , 3000, '2003-05-12'),
                (1009, 'KING' , 'f' , 10 , 'PRESIDENT' , 5000, '1995-01-01'),
                  (1010, 'TURNER' , 'f' , 30 , 'SALESMAN' , 1500, '1997-10-12'),
                (1011, 'ANAMS' , 'm' , 20 , 'CLERK' , 1100, '1999-10-15'),
                  (1012, 'JAMES' , 'f' , 30 , 'CLERK' , 950, '2008-06-15');

单词解释:SALESMAN:销售员  CLERK:普通职员  MANAGER:经理  PRESIDENT:董事长  ANALYST:分析师  m:male 男性  f:female 女性文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

4.2、查询操作文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

4.2.1、在employee表中,查询所有记录的e_no,e_name和e_salary字段值文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT e_no,e_name,e_salary FROM employee;

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

4.2.2、在employee表中,查询dept_no等于10和20的所有记录文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

方式一:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT * FROM employee WHERE dept_no 
IN
(10,20);

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

方式二:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT * FROM employee WHERE dept_no = 10 
OR
 dept_no = 20;

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

4.2.3、在employee表中,查询工资范围在800~2500之间的员工信息文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT * FROM employee WHERE e_salary 
BETWEEN
 800 
AND
 2500;

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

4.2.4、在employee表中,查询部门编号为20的部门中的员工信息文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT * FROM employee WHERE dept_no = 20;

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

4.2.5、在employee表中,查询每个部门最高工资的员工信息文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

分析:每个员工都可能处于不同的部门,要先找出每个部门中的所有员工,应该想到分组,将相同部门的员工分为一组。然后在使用MAX()函数比较最大的salary。注意不要MAX(GROUP_CONCAT(e_salary)), 这样写就会报错,GROUP_CONCAT(e_salary)是将分组中所有的e_salary显示出来,我们直接MAX(e_salary)就会将该分组中所有的e_salary进行比较,拿到最大的一份。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT e_no,e_name,MAX(e_salary) FROM employee GROUP BY dept_no;

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

我尝试过其他方法,但是最终还是要对在相同部门中的员工做比较,只有通过分组才能对相同部门中的员工做比较,如果不分组,那么将对全部的记录进行比较。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

4.2.6、查询员工BLAKE所在部门和部门所在地文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

分析:看下题目就应该知道是两张表,也就应该使用连接查询,找出是用内连接还是外连接,然后找出连接条件,文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

方式一:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT d.d_no,d.d_name,d.d_location
                 FROM employee AS e,dept AS d
                 WHERE e.e_name = 'BLAKE' AND e.dept_no = d.d_no;

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

方式二:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT d.d_no,d.d_name,d.d_location
                 FROM employee AS e INNER JOIN dept AS d
                 ON e.e_name = 'BLAKE' AND e.dept_no = d.d_no;

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

4.2.7、使用连接查询,查询所有员工的部门和部门信息文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

分析:这个题跟上面哪个题差不多,使用内连接文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT e.e_no,e.e_name,d.d_no,d.d_name,d.d_location
              FROM employee AS e INNER JOIN dept AS d
              ON e.dept_no = d.d_no;

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

4.2.8、在employee中,计算每个部门各有多少员工文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

分析:每个部门用分组文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT COUNT(e.e_name)
              FROM employee AS e  
              GROUP BY e.dept_no

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

注意:SUM()和COUNT()要分清楚,SUM()是计算数值总和的,COUNT()是计算总的记录行数的。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

4.2.9、在employee表中,计算不同类型职员的总工资数文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

分析:对员工职位类型进行分组文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT e.e_job,SUM(e.e_salary)
              FROM employee AS e
              GROUP BY e.e_job;

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

4.2.10、在employee表中,计算不同部门的平均工资文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

分析:对部门进行分组文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT e.dept_no,AVG(e.e_salary)
               FROM employee AS e
               GROUP BY e.dept_no;

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

4.2.11、在employee表中,查询工资低于1500的员工信息文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT * from employee WHERE e_salary < 1500;

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

4.2.12、在employee表中,将查询记录先按部门编号由高到低排列,再按员工工资由高到低排列文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT * FROM employee ORDER BY dept_no DESC,e_salary DESC;

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

4.2.13、在employee表中,查询员工姓名以字母A或S开头的员工信息文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

方式一:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT * FROM employee WHERE e_name LIKE 'A%' OR e_name LIKE 'S%';

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

方式二:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT * FROM employee WHERE e_name REGEXP '^A' OR e_name REGEXP '^S';

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

4.2.14、在employee表中,查询到目前为止,工龄大于等于10年的员工信息文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

方式一:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT * FROM employee WHERE (YEAR(NOW()) - YEAR(hireDate)) > 10;

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

方式二:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT * FROM employee WHERE (YEAR(CURDATE()) - YEAR(hireDate)) > 10;

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

解释:记得我们前一节学的数据类型吗,其中CURDATE()代表的是YYYY-MM-DD, NOW()代表的是YYYY-MM-DD HH:MM:SS,所以这里两个度能用,只要将其截取为为YEAR,然后相减,就能得到相差几年了。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

4.3、在已经创建好的employee表中进行如下操作文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

4.3.1、计算所有女员工(F)的年龄(从入职到现在的时间)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT e.e_name,e.e_gender,YEAR(CURDATE()) - YEAR(e.hireDate)
                 FROM employee AS e
                 WHERE e.e_gender = 'f';

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

4.3.2、使用LIMIT查询从第3条记录开始到第六条记录文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT * FROM employee LIMIT 2,3;

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

4.3.3、查询销售人员(SALSEMAN)的最低工资文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT MIN(e_salary)
                  FROM employee
                  WHERE e_job = 'SALESMAN';

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

4.3.4、查询名字以字母N或者S结尾的记录文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

方式一:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT * FROM employee WHERE e_name LIKE '%N' OR e_name LIKE '%S';

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

方式二:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT * FROM employee WHERE e_name REGEXP 'N$' OR e_name REGEXP 'S$';

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

4.3.5、查询在BeiJing工作的员工的姓名和职务文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

方式一:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT e_name,e_job FROM employee WHERE dept_no = (SELECT d_no FROM dept WHERE d_location = 'BeiJing');

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

方式二:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT e.e_name, e.e_job FROM employee AS e,dept AS d WHERE e.dept_no = d.d_no AND d.d_location = 'BeiJing';

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

方式三:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT e.e_name,e.e_job FROM employee AS e INNER JOIN dept AS d ON e.dept_no = d.d_no AND d.d_location = 'BeiJing';

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

4.3.6、使用左连接方式查询employee和dept表文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT * FROM employee LEFT JOIN dept ON employee.dept_no = dept.d_no;

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

4.3.7、查询所有2001~2005年入职的员工的信息,查询部门编号为20和30的员工信息并使用UNION合并两个查询结果文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT * FROM employee WHERE YEAR(hireDate) BETWEEN 2001 AND 2005
                     UNION
                     SELECT * FROM employee WHERE dept_no IN(20,30);

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

4.3.8、使用LIKE查询员工姓名中包含字母a的记录文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT * FROM employee WHERE e_name LIKE 'a%' OR e_name LIKE '%a' OR e_name LIKE '%a%';

mysql查询表(单表、多表、正则表达式、集合函数)及练习文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

4.3.9、使用REGEXP查询员工姓名中包含T、C或者M 3个字母中任意1个的记录文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html

SELECT * FROM employee WHERE e_name REGEXP '[TCM]';
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19794.html
  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/sjk/19794.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定