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
    评论
好的,我可以为您介绍一下JDBC技术的应用案例。 JDBC是Java Database Connectivity的缩写,是Java EE平台中用于访问数据库的一种标准。下面以一个简单的数据库开发基础案例为例,介绍JDBC技术的应用。 首先,我们需要先在本地安装并配置好MySQL数据库,并创建一个名为"test"的数据库,以及一个名为"user"的表,表结构如下: ```sql CREATE TABLE user ( id INT(11) NOT NULL AUTO_INCREMENT, username VARCHAR(50) NOT NULL, password VARCHAR(50) NOT NULL, PRIMARY KEY (id) ); ``` 然后,我们需要在Java项目中导入MySQL的JDBC驱动包,这里以MySQL Connector/J驱动为例。在项目中引入驱动包后,我们可以通过以下代码连接到数据库,并执行一些基本的查询和插入操作。 ```java import java.sql.*; public class JDBCTest { public static void main(String[] args) { Connection conn = null; Statement stmt = null; ResultSet rs = null; try { // 加载MySQL的JDBC驱动 Class.forName("com.mysql.jdbc.Driver"); // 建立数据库连接 conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "password"); // 创建Statement对象,用于执行SQL语句 stmt = conn.createStatement(); // 执行查询操作 rs = stmt.executeQuery("SELECT * FROM user"); // 遍历查询结果集 while (rs.next()) { int id = rs.getInt("id"); String username = rs.getString("username"); String password = rs.getString("password"); System.out.println("id: " + id + ", username: " + username + ", password: " + password); } // 执行插入操作 stmt.executeUpdate("INSERT INTO user (username, password) VALUES ('testuser', 'testpassword')"); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } finally { // 关闭连接和Statement对象 try { if (rs != null) rs.close(); if (stmt != null) stmt.close(); if (conn != null) conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } } ``` 以上代码中,我们首先加载MySQL的JDBC驱动,然后建立数据库连接,并创建Statement对象,用于执行SQL语句。接着,我们执行一个查询操作,遍历查询结果集并输出每行数据;然后执行一个插入操作,向user表中插入一条记录。最后,我们关闭连接和Statement对象。 这就是一个简单的JDBC技术的应用案例,通过JDBC技术,我们可以在Java程序中方便地访问和操作数据库

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值