MYSQL数据库开发之路-----数据查询二

目录

函数聚合查询

count()函数

sum()函数

avg()函数

max函数 

min函数 

连接查询

内连接查询

外连接查询 

左外连接

右外连接

 复合条件连接查询

子查询

带关键字in的子查询

带比较运算符的子查询

带关键字exists的子查询

为表和字段取别名


函数聚合查询

        聚合函数查询最大的特点就是它们根据一组数据求出一个值。聚合函数的结果值只根据选定行中非null的值计算,null值忽略

count()函数

        count()函数,对于参数“*”,返回选择集合中所有行的数目,包含null值的行;其他的参数返回选择集合中非null值的行的数目

#查询表中记录的行数
SELECT COUNT(*) FROM tb_login;

sum()函数

        sum()函数可以求出表中某个字段取值的总和

#求id字段的总和
SELECT SUM(id) FROM tb_admin;

avg()函数

        avg()函数可以求出表中某个字段取值的平均值

#求id字段的平均值
SELECT avg(id) FROM tb_admin;

max函数 

        max函数 可以求出表中某个字段取值的最大值      

#求id字段的最大值
SELECT max(id) FROM tb_admin;

min函数 

        max函数 可以求出表中某个字段取值的最小值

#求id字段的最小值
SELECT min(id) FROM tb_admin;

连接查询

        连接查询是把不同表的记录连接到一起的最普遍的方法。

内连接查询

        内连接(inner join)是最普遍的连接类型,而且是最均称的,因为它们要求构成连接的每一部分的每一个表的匹配,不匹配的行将被排除。

        内连接最常见的例子是相等连接,即连接后的 表中的每个字段 与每个表中的都相同。

这种情况下,最后的结果集 只包含 参加连接的表中与指定字段相符的行。

SELECT *FROM tb_login,tb_book WHERE tb_book.`user`=tb_login.`user`;

外连接查询 

        外连接 指使用outer join 关键字将两个表连接起来。外连接生成的结果集不仅包含符合连接条件的行数据,而且还包括

        左表(左外连接时的表)、右表(右外连接时的表)或两边连接表(全外连接时的表)中所有的数据行,语法格式如下:

  select 字段名称 from 表名1 left|right join 表名2 on 表名1.字段名1=表名2.字段名2

左外连接

        左外连接(left join) 指将 左表中的所有数据  分别与 右表中的每条数据进行连接组合 ,返回的结果除内连接的数据外,还包括 左表中不符合条件的数据,并在右表中的相应列中添加null值

SELECT * FROM tb_login LEFT JOIN tb_book ON tb_login.`user`=tb_book.`user`;

右外连接

        右外连接(right join) 指将 右表中的所有数据  分别与 左表中的每条数据进行连接组合 ,返回的结果除内连接的数据外,还包括 右表中不符合条件的数据,并在左表中的相应列中添加null值

SELECT * FROM tb_login right JOIN tb_book ON tb_login.`user`=tb_book.`user`;

 复合条件连接查询

        在连接查询时,也可以增加其他的限制条件。通过多个条件的复合查询,使得查询结果更加准确

SELECT section ,tb_book.`user`,books ,tb_login.`id` FROM tb_book,tb_login WHERE tb_book.`user`=tb_login.`user` AND tb_book.`id` >5;

子查询

        子查询就是select查询的另一个查询的附属,在外面一层的查询中使用里面一层查询产生的结果集。这样就是不是执行两个或多个独立的查询,而是执行包含一个或多个子查询的单独查询。

        当遇到多层查询时,从最内层的查询开始,然后由内向外查询

带关键字in的子查询

        只有子查询返回的结果列只包含一个值时,比较运算符才适用,如果一个子查询返回的结果集是值的列表,这时比较运算符就必须用in代替

SELECT* FROM tb_login WHERE USER IN(SELECT USER FROM tb_book);

带比较运算符的子查询

        子查询可以使用比较运算符,包括=、!=、>、>=、<和<=等。

SELECT id ,books FROM tb_book WHERE id>=(SELECT COUNT(*) FROM tb_login );

带关键字exists的子查询

        使用关键字exists时,内层查询语句不返回查询的记录,而是返回一个真假值。如果内层查询到记录时,就返回一个真值,否则返回一个假值。只有当返回真值时外层查询语句才会进行查询。

SELECT*FROM tb_book WHERE EXISTS (SELECT *FROM tb_login WHERE id=4);

为表和字段取别名

        在查询时,可以为表和字段去一个别名,这个别名可以代替其指定的表和字段

为表取别名:

#p 就是别名
select *from tb_login p where p.user='mr';

为字段取别名:

        语法:字段名 [as] 别名

select section as login_section,name as login_name from tb_login;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值