Mysql数据库(下)

在正常的运行SQL语句是需要分为检查和提交,检查就是检查SQL语句的书写是否正确,而提交就是把SQL语句提交运行,然后出结果。一般SQL语句都是自动提交,所以不关闭一般在快速运行中不h会被轻易辨认出来,而关闭自动提交的事务为conn.setAuto Commit(false);还有一个是事务回滚,在代码运行过程中出现错误可以用事务回滚回到上一级,回滚为conn.rollback();最后一个事务为提交事务,在各项工作通过之后加入提交后才会出现结果,代码为conn.commit();

        事务有四大特性,他们分别是:

        ①原子性

                事务是一个整体,无法分割,只能一起成功或者失败。

        ②一致性

                事务执行之前和之后都必须处于一种一致的状态。

        ③隔离性

                多事务并发时,互相独立,互不影响。

        ④持久性

                数据库数据若不变更,会永久不变。

        约束,MySQL的约束是数据库用来确保数据满足业务规则的手段,对数据做的条件限制。

                约束的类型:

                        1、主键约束(PRIMAR YKEY);

                        2、唯一约束(UNIQUE);

                        3、非空约束(NOT NULL);

                        4、检查约束(CHECK);

                        5、外键约束(FOREIGN KEY);

        注意主键约束,是不为空且唯一,每个表只会有一个约束并且会主动加入索引,唯一约束就是让这一列不能重复,非空约束就是这列不能为空,检查约束可用来实施一些简单的规则,比如列值必须在某个范围内。检查的规则必须是一个结果为true或false 的表达式检查约束可用来实施一些简单的规则,比如列值必须在某个范围内。

多表查询:多表查询意思是将多个数据表链接在一起,在一起展现,需要注意的是,多表查询需要两个表有主外键关系,方法如下:

                select 表1 . 列1 , 表1 . 列2 , 表1 . 列2 , 表2 , 列2 where 表1 left join 表2 on 表1 . 列2=表2 , 列2;

        注意:表1的列1为主键,而表2的列1为外键,所以两个表能够联表查询。

        俩目标查询的关键词有 :left join ,right join 这两个为最常用的两个常用词

        JDBC:JDBC就是一个起到链接作用的接口,可以打通Java与MySQL两个平台的交互,因为JDBC的存在,两个各立的平台能够数据互通,JDBC的代码的形式,主要是有MVC架构、MySQL驱动、链接文件组成。

        MVC分层模型,如下:

 

jdbc.properties 为存储驱动与MySQL用户名、密码、地址的地方。如下图

 Util包内的内容如下:

 

package com.nz.Util;

import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;

public class MySQLDriverUtil {
   
   //外层定义全局类变量,以便使用
   public static final Properties pro = new Properties();
   //静态代码块,只执行一次类加载
   static{
      //将配置文件转为输入流
      InputStream is = MySQLDriverUtil.class.getResourceAsStream("/jdbc.properties");
      try {
         //加载配置文件
         pro.load(is);
         is.close();
         //类加载驱动
         Class.forName(pro.getProperty("driver"));
      } catch (Exception e) {
         e.printStackTrace();
      }
      
   }
   
   //1.在全局创建一个静态的ThreadLocal的对象 全局线程栈
   private static ThreadLocal<Connection> tl = new ThreadLocal<Connection>();
         
   //对本机建立jdbc链接
   public static Connection getConnect(){
      //2.先从ThreadLocal中获取当前线程上绑定的Connection对象
      Connection conn = tl.get();
      try {
         //3.判断数据库连接对象是否为null 
         if(conn == null){ //4.如果为null 创建一个新的数据库连接
            conn = DriverManager.getConnection(pro.getProperty("url"), pro.getProperty("username"), 
                     pro.getProperty("password"));
            //5.将新的数据库连接存储到ThreadLocal对象中
            tl.set(conn);
         }
      } catch (Exception e) {
         e.printStackTrace();
      }
      return conn;
      
   }

   //关闭连接流,并清空全局线程栈
   public static void flowClose(Connection con){
      try {
         con.close();
         tl.remove();
      } catch (SQLException e) {
         e.printStackTrace();
      }
   }
   
   //关闭update流
   public static void flowClose(Connection con, PreparedStatement ps){
      try {
         con.close();
         ps.close();
         tl.remove();
      } catch (SQLException e) {
         e.printStackTrace();
      }
   }
   //关闭select流,并销毁全局线程栈
   public static void flowClose(Connection con, PreparedStatement ps,ResultSet rs){
      try {
         con.close();
         ps.close();
         rs.close();
         tl.remove();
      } catch (SQLException e) {
         e.printStackTrace();
      }
   }
   
}

 以上便是多表查询与jdbc的内容。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值