executeQuery、executeUpdate 和 execute 的区别 ,DDL、DML、DCL、TCL的区别

本文详细解析了在Java中使用JDBC执行SQL语句的三种主要方法:executeQuery、executeUpdate和execute,以及批处理executeBatch的使用场景和优势。深入探讨了每种方法的应用范围,包括数据查询、更新、DDL语句执行以及事务处理。
摘要由CSDN通过智能技术生成

Statement 接口提供了三种执行 SQL 语句的方法:executeQuery、executeUpdate 和 execute。

使用哪一个方法由 SQL 语句所产生的内容决定。

execute():

用于执行返回多个结果集、多个更新计数或二者组合的语句

比较少用

 

executeQuery()

用于产生单个结果集的语句,例如 SELECT 语句。 被使用最多的执行 SQL 语句的方法是 executeQuery。这个方法被用来执行 SELECT 语句,它几乎是使用最多的 SQL 语句。

executeUpdate() : update语句

用于执行 INSERT、UPDATE 或 DELETE DML(数据操纵语言)语句

INSERT、UPDATE 或 DELETE 语句的效果是修改表中零行或多行中的一列或多列。

executeUpdate 的返回值是一个整数,指示受影响的行数(即更新计数)。

以及 SQL DDL(数据定义语言:增删改数据库和表)语句,

例如create table  drop table。用于在数据库中创建新表或删除表,以及为表加入索引等。
对于 CREATE TABLE 或 DROP TABLE 等不操作行的语句,executeUpdate 的返回值总为零。

创建表,改变表,删除表都是 DDL 语句的例子,要用 executeUpdate 方法来执行。

总结方法 executeUpdate 也被用于执行更新表 SQL 语句。实际上,相对于创建表来说,executeUpdate 用于更新表的时间更多,因为表只需要创建一次,但经常被更新。

 

executeBatch():对sql语句进行批量处理

较少用

1.假设使用事务:

 (1)不使用批处理而是一条一条的SQL语句发送给MySQL的方式,如果有很多语句这样执行,每次到要和MySQL通讯,开销太大;另一方面,这样执行的SQL语句如果中间有一条发送错误,后面的SQL语句是不会执行的,理解为抛出异常,后面的语句当然就不执行了

 (2)使用批处理方法,一次过将要执行的SQL语句发送给MySQL,MySQL的机制是:中间有语句错误,后面正确的语句还是会执行

2.假设不使用事务:这个简单,只要事务控制对了,中间有错的话都回滚就是了,后面的SQL语句就无所谓执不执行了

package cn.bl.v2;
 
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.Statement;
 
import org.junit.Test;
 
import cn.bl.DBUtil;
 
/**
 * 批处理
 * @author BarryLee
 * @2018年9月18日@下午11:15:50
 */
public class Batch {
	
	//1.Statement方式
	@Test
	public void test1() throws Exception {
		Connection conn = DBUtil.getConnection();
		Statement st = conn.createStatement();
		for(int i = 0;i<10;i++) {
			//这个sql没什么意义,只是为了区分插入的不同数据罢了
			String sql1 = " insert into pp(name) values('xl"+i+"') ";
			st.addBatch(sql1);
		}
		
		//删除name以xl开头的记录
		String sql2 = " delete from pp where name like 'xl%' ";
		st.addBatch(sql2);
		
		int[]res = st.executeBatch();
		for (int i : res) {//每一行sql的影响记录数
			System.out.println(i);
			//sql1都是输出1
			//sql2对应的是10
		}
	}
	
	//2.PreparedStatement方式
	@Test
	public void test2() throws Exception {
		Connection conn = DBUtil.getConnection();
		String sql = " insert into pp(name) values(?) ";
		PreparedStatement pst = conn.prepareStatement(sql);
		for(int i = 0;i<10;i++) {
			pst.setString(1, "xl"+i);
			pst.addBatch();//这里不能带参
		}
		sql = " delete from pp where name like 'xl%' ";
		pst.addBatch(sql);
		
		int[]res = pst.executeBatch();
		for (int i : res) {//每一行sql的影响记录数
			System.out.println(i);
			//for循环里面添加的sql语句对应的都是输出1
			//最后一句对应的是10
		}
	}
}


 ———————————————— 
版权声明:本文为CSDN博主「逸川同学」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_38238041/article/details/82766046

 

 

补充:

  1. DDL 定义:数据库定义语言 
    用于定义数据库的三级结构,包括外模式、概念模式、内模式及其相互之间的映像,定义数据的完整性、安全控制等约束,用于操作对象和对象的属性 
    DDL的主要语句(操作) 
    Create语句:可以创建数据库和数据库的一些对象。 
    Drop语句:可以删除数据表、索引、触发程序、条件约束以及数据表的权限等。 
    Alter语句:修改数据表定义及属性。
  2. DML 定义:数据操纵语言 用于操作数据库对象中包含的数据,也就是说操作的单位是记录。 
    数据操纵分成数据查询和数据更新两类。数据更新又分成插入、删除、和修改三种操作。 
    DML的主要语句(操作) 
    Select语句:查询符合指定条件的记录 
    Insert语句:向数据表张插入一条记录。 
    Delete语句:删除数据表中的一条或多条记录,也可以删除数据表中的所有记录,但是,它的操作对象仍是记录。 
    Update语句:用于修改已存在表中的记录的内容。
  3. DCL 定义:数据库控制语言 操作是数据库对象的权限,这些操作的确定使数据更加的安全。 
    Grant语句:允许对象的创建者给某用户或某组或所有用户(PUBLIC)某些特定的权限。 
    Revoke语句:可以废除某用户或某组或所有用户访问权限
  4. .TCL 定义:事务控制语言 
    DCL的操作对象(用户),此时的用户指的是数据库用户。 
    SAVEPOINT 设置保存点 
    ROLLBACK 回滚 
    SET TRANSACTION

 

   SQL(Structure Query Language)结构化查询语言是数据库的核心语言,是高级的非过程化编程语言。它功能强大,效率高,简单易学易维护。SQL语言基本上独立于数据库本身、使用的机器、网络、操作系统,基于SQL的DBMS产品可以运行在从个人机、工作站到基于局域网、小型机和大型机的各种计算机系统上,具有良好的可移植性。

SQL结构化查询语言包含6个部分

1.数据查询语言(DQL: Data Query Language)

数据检索语句,用于从表中获取数据。通常最常用的为保留字SELECT,并且常与FROM子句、WHERE子句组成查询SQL查询语句。

语法:

    SELECT <字段名> FROM <表或视图名> WHERE <查询条件>;

2.数据操纵语言(DML:Data Manipulation Language)

主要用来对数据库的数据进行一些操作,常用的就是INSERT、UPDATE、DELETE。

语法:

    INSERT INTO <表名>(列1,列2,...) VALUES (值1,值2,...);

    UPDATE <表名> SET <列名>=新值 WHERE <列名>=某值;

    DELETE FROM <表名> WHERE <列名>=某值;

3.事务处理语言(DPL)

事务处理语句能确保被DML语句影响的表的所有行及时得以更新。TPL语句包括BEGIN TRANSACTION、COMMIT和ROLLBACK。

4.数据控制语言(DCL)

通过GRANT和REVOKE,确定单个用户或用户组对数据库对象的访问权限。

5.数据定义语言(DDL)

常用的有CREATE和DROP,用于在数据库中创建新表或删除表,以及为表加入索引等。

6.指针控制语言(CCL)

它的语句,想DECLARE CURSOR、FETCH INTO和UPDATE WHERE CURRENT用于对一个或多个表单独行的操作。
 ———————————————— 
版权声明:本文为CSDN博主「小贪玩」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u013544734/article/details/80869135

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一身正气z

打赏随心就好

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值