mysql查一个表3到5行的数据类型_MySQL入门(三) 数据库表的查询操作【重要】

这篇博客详细介绍了MySQL数据库的查询操作,包括单表查询的多种方式,如选择指定字段、范围查询、子查询、正则表达式查询等,并讲解了多表查询中的内连接、外连接和子查询的使用,还提供了丰富的示例和综合案例,旨在帮助读者掌握数据库查询技巧。
摘要由CSDN通过智能技术生成

序言

本节比较重要,对数据表数据进行查询操作,其中可能大家不熟悉的就对于INNER JOIN(内连接)、LEFT JOIN(左连接)、RIGHT JOIN(右连接)等一些复杂查询。 通过本节的学习,可以让你知道这些基本的复杂查询是怎么实现的,但是建议还是需要多动手去敲,虽然理解了什么是内连接等,但是从理解到学会,是完全不一样的感觉。

--WH

一、单表查询

1.1、查询所有字段

1.2、查询指定字段

1.3、查询指定记录

1.4、带IN关键字的查询

1.5、带BETWEEN AND 的范围查询

1.6、带LIKE的字符匹配查询

1.7、查询空值

1.8、带AND的多条件查询

1.9、带OR的多条件查询

1.10、关键字DISTINCT(查询结果不重复)

1.11、对查询结果排序

1.12、分组查询(GROUP BY)

1.13、使用LIMIT限制查询结果的数量

集合函数查询

1.14、COUNT()函数

1.15、SUM()函数

1.16、AVG()函数

1.17、MAX()函数

1.18、MIN()函数

二、多表查询

小知识

为表取别名

为字段取别名

基于两张表

2.1、普通双表连接查询

2.2、内连接查询

2.3、外连接查询

2.3.1、左外连接查询

2.3.2、右外连接查询

2.4、复合条件连接查询

子查询

2.5、带ANY、SOME关键字的子查询

2.6、带ALL关键字的子查询

2.7、带EXISTS关键字的子查询

2.8、带IN关键字的子查询

2.9、带比较运算符的子查询

合并结果查询

2.10、UNION[ALL]的使用

三、使用正则表达式查询

3.1、查询以特定字符或字符串开头的记录

3.2、查询以特定字符或字符串结尾的记录

3.3、用符号"."来替代字符串中的任意一个字符

3.4、使用"*"和"+"来匹配多个字符

3.5、匹配指定字符串

3.6、匹配指定字符中的任意一个

3.7、匹配指定字符以外的字符

3.8、使用{n,}或者{n,m}来指定字符串连续出现的次数

四、综合案例 练习数据表查询操作

4.1、搭建环境

省略

4.2、查询操作

省略

4.3、在已经创建好的employee表中进行如下操作

4.3.1、计算所有女员工(F)的年龄

4.3.2、使用LIMIT查询从第3条记录开始到第六条记录

4.3.3、查询销售人员(SALSEMAN)的最低工资

4.3.4、查询名字以字母N或者S结尾的记录

4.3.5、查询在BeiJing工作的员工的姓名和职务

4.3.6、使用左连接方式查询employee和dept表

4.3.7、查询所有2001~2005年入职的员工的信息,查询部门编号为20和30的员工信息并使用UNION合并两个查询结果

4.3.8、使用LIKE查询员工姓名中包含字母a的记录

4.3.9、使用REGEXP查询员工姓名中包含T、C或者M 3个字母中任意1个的记录

想直接做题的,跳过讲解,直接到练习区。

这张讲解的目录就是想上面这样,可以直接看自己感兴趣的部分,而不用从最基础的看起,接下来就一步步实现这上面庞大的工作量了。

一、单表查询

创建查询环境

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)

);

解释:

f_id:主键 使用的是CHAR类型的字符来代表主键

s_id:这个其实是批发商的编号,也就是代表该水果是从哪个批发商那里过来的,写这个字段的目的是为了方便后面扩增表。

f_name:水果的名字

f_price:水果的价格,使用的是DECIMAL这个数据类型,如果不清楚这个类型去查看一下上面一篇讲解数据类型的文章。

添加数据。

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都是为了测试所编写的,没有实际意义。

注意:在复制我的代码到cmd窗口时,应注意语句之间不能有空格,不然会报错,我这里是为了使你们观看更清楚,所以每行前面度加有空格,

1.1、查询所有字段

SELECT * FROM fruits;

d72d0a3121927beec57dc674b338e8c4.png

解释:* 代表所有字段,也就是从表中将所有字段下面的记录度查询出来

1.2、查询指定字段

查询f_name 和 f_price 字段的记录

SELECT f_name, f_price FROM fruits;

1302e35616e5ea426216638ca34abbe4.png

1.3、查询指定记录

指定记录:也就是按条件进行查询,将满足一定条件的记录给查询出来,使用WHERE关键字

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

8f29d0ad7972f77d61ba2d146c523081.png

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

8eb91d7e116d02f3173741faebc04bd4.png

1.4、带IN关键字的查询

IN关键字:IN(xx,yy,...) 满足条件范围内的一个值即为匹配项

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

dc3cf4373c9e63dc253b9b461d146df5.png

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

97a21d18b998bc23a3ccf6a52909742b.png

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

238ad39bc92e8202a924b8b53c7d41d3.png

1.5、带BETWEEN AND 的范围查询

BETWEEN ... AND ... : 在...到...范围内的值即为匹配项,

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

fb6550e0cca4a5ba54e7cc281e2e8694.png

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

14daf1ab3f1b0038b5324567ac83dff3.png

1.6、带LIKE的字符匹配查询

LIKE: 相当于模糊查询,和LIKE一起使用的通配符有 "%"、"_"

"%":作用是能匹配任意长度的字符。

"_":只能匹配任意一个字符

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

ff511c412b5f583c12c004a1edc93b01.png

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

515c93e336f8d4f336afcdff1a732f63.png

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

4e034527baec25c8767661689f85707e.png

总结:'%'和'_'可以在任意位置使用,只需要记住%能够表示任意个字符,_只能表示一个任意字符

1.7、查询空值

空值不是指为空字符串""或者0,一般表示数据未知或者在以后在添加数据,也就是在添加数据时,其字段上默认为NULL,也就是说,如果该字段上不插入任何值,就为NULL。此时就可以查询出来。

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

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

这里由于没有合适的数据,就不自己在创建表,添加数据,然后来测试这条语句了,很简单,看一下就应该懂了

1.8、带AND的多条件查询

AND: 相当于"逻辑与",也就是说要同时满足条件才算匹配

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

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值