mySql、oracle数据表的单表增删改查及多表关联查询

本文详细介绍了在Oracle和MySQL数据库中如何进行单表的增删改查操作,以及如何编写SQL语句实现多表关联查询。在Oracle中新增数据与MySQL有所不同,主键需手动指定。同时,文章提供了一种建立数据库连接的方法,并给出了单表tb_info(包含ID、NAME、AGE字段)的示例操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        在对mySql、oracle数据库进行操作的时候,我们往往会有这样的困惑:

        1、新增oracle数据时,按照mySql的写法为什么新增不了?

        2、多个数据表,通过外键关联,如何通过一条sql语句把所有需要的表关联起来并且获取到我所需要的数据内容?

       那么在下面,将详细讲解单表的增删改成及多表的关联查询该如何书写sql语句:


      首先,我们要建立数据库的连接,在src目录下面创建一个db.properties的类,里面封装的内容为:

user=数据库用户名
password=数据库密码
url=jdbc\:oracle\:thin\数据库连接地址
driver=oracle.jdbc.driver.OracleDriver
  
      我们接下来要创建一个JDBC工具类,用于封装连接数据库的连接:
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

public class JDBCUtils {
	private static String driver;
	private static String url;
	private static String user;
	private static String password;
	
	
	
	static{
		
		try {
			//0读取配置文件
			Properties prop  = new Properties();
			
			InputStream is = JDBCUtils.class.getResourceAsStream("/db.properties");
			
			prop.load(is);
			
			is.close();
			
			driver = prop.getProperty("driver");
			url = prop.getProperty("url");
			user = prop.getProperty("user");
			password = prop.getProperty("password");
			
			//1 注册驱动
			Class.forName(driver);
		} catch (Exception e) {
			e.printStackTrace();
		}
		
	}
	
	//1 获得连接
	public static Connection getConnection(){
		Connection conn = null;
		try {
			//2 获得连接
			conn = DriverManager.getConnection(url, user, password);
		} catch (Exception e) {
			e.printStackTrace();
			throw new RuntimeException("创建连接失败!");
		}
		
		return conn;
	}
	
	//2 释放资源
		//1> 参数可能为空
		//2> 调用close方法要抛出异常,确保即使出现异常也能继续关闭
		//3>关闭顺序,需要从小到大
	public  static void  close(Connection conn , Statement st , ResultSet rs){
		
		try {
			if(rs!=null){
				rs.close();
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}finally{
			try {
				if(st!=null){
				st.close();	
				}
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}finally{
				try {
					if(conn!=null){
						conn.close();	
						}
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			
		}
		
	}
	
	
	public static void main(String[] args) {
		System.out.println(getConnection());
	}
}

      在这两步准备工具完成之后,接下来就是我们的重头戏了


      一、单表的增删改查

    单表的结构为:表名:tb_info      字段名:①主键:ID 自增    ②用户名:NAME  ③年龄:AGE

       1、新增:新增不同于mySql的新增语句,因为mySql中主键一旦设置好,那么在我们执行新增语句时,主键会自动+1,不需要我们做其他操作,如:

            mySql的新增语句为:

   

    //当调用这个方法时会会获取一个返回值,当返回值为1时,证明新增了一条数据
    public int inserInto(){
        //定义一个默认数值为0
		int count = 0;
		//1. 获得连接
		Connection conn = JDBCUtils.getConnection();

		String name = "老王";
		String age = "18";

		//2. 准备sql
		String sql =  " INSERT INTO tb_info (NAME,AGE) VALUES (?,?)";
		//3. 获得PrepareStatement对象 
		PreparedStatement ps = null;
		try {
			ps = conn.prepareStatement(sql);
			//4. 设置参数
			ps.setString(1,name);
			ps.setString(2,age);
			//5. 执行sql
			count = ps.executeUpdate();
			//如果result !=1,没有获取到数据,证明保存失败
			return count;
		} catch (SQLException e) {
			e.printStackTrace();
		}finally{
			//6. 关闭资源
			JDBCUtils.close(conn, ps, null);
		}
		return count;
    }
             
           但是这条语句在oracle中就不适用了,因为mySql的主键在你新增数据时,会自动新增,但是oracle中就不会,他需要你去执行新增时,获取一下当前表中的序列号的下       一个数值,然后传入主键中,若不知道序列号是哪个,我们可以通过查询所有序列号语句来执行查询:
   查询所有序列号语句:select * from user_sequences; 语句来查找所有的序列号;

   如果还是不知道序列号是哪个或者不能用,我们可以新建一个序列号:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值