2021-01-26 MySQL(三)

学习内容:

MySQL(三)

前言

学习 JAVA 大数据:“钱”景无限

文章目录

一:DQL,DML,DDL,DCL的概念和区别

二:JDBC

一:DQL,DML,DDL,DCL的概念和区别

1.1: SQL(Structured Query Language)语言

      是数据库的结构化查询语言,也是数据库放入核心语言,自1974年开始,最后又美国的ANSI组织宣布sql作为数据库工业标准;

       SQL优势:功能强,高效性,简单易维护;

1.2: SQL分类

       SQL分为四大类:

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

           数据查询语言:DQL

           数据查询语言基本结构由select子句,from子句,where子句组成的查询块;

           Select(字段名表)

           From(表或视图名)

           Where(条件)

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

      数据操纵语言DML  主要有三种形式:

  1.  插入: insert

  2.  更新:update

  3.  删除:delete

 c. 数据定义语言:DDL (Data Definition Language)

           数据定义语言DDL用来创建数据库中的各种对象:表或视图或索引或同义词或聚簇

           Create table/view/index/syn/cluster

 d.数据控制语言:DCL (Data Control Language)

           数据控制语言DCL用来授权或回收数据库的某种特权,并控制数据库操作事物发生的时间和效果,对数据库进行某种监控(监视)

           1: GRANT :授权

           2: ROOLBACK [WORK]TO [SAVEPOINT]:回滚到某个点

             回滚 -- ROOLBACK

             回滚命令是数据库状态回到上次最后提交的状态,其格式为SQL->ROOLBACK

           3:COMMENT[WORK]:提交

             3.1 显示提交

                 SQL -> COMMIT

             3.2 隐式提交(了解)

                 部分SQL是自带隐式提交:

                 Alter,EXIT,CREATE,QUIT ......

             3.3 自动提交

                 把数据库的AUTOCOMENT设置为on,则数据库操作(插入以及修改和删除)语句执行后系统将自动进行提交,其格式为:  SQL-> SET AUTOCOMMIT ->ON

二:JDBC

   a.定义:

            JDBC代表Java数据库连接(Java Database Connectivity),它是用于Java编程语言和数据库之间的数据库无关连接的标准Java API,

            换句话说:JDBC是用于在Java语言编程中与数据库连接的API

 

 

在Java代码中如果要访问MySQL,只需要引入JDBC驱动就行,这里我们导入:mysql-connector-java-8.0.20.jar

右键项目名-->Build Path-->Configure Build Path-->Libraries-->Add External JARs.....-->选择mysql-connector-java-8.0.20.jar-->Apply and Close

JDBC库包括通常与数据库使用相关,如下面提到的每个任务的API -

  • 连接到数据库

  • 创建SQL或MySQL语句

  • 在数据库中执行SQL或MySQL查询

  • 查看和修改结果记录

b.常见的JDBC组件:

JDBC API提供以下接口和类 -

  • DriverManager:此类管理数据库驱动程序列表。 使用通信子协议将来自java应用程序的连接请求与适当的数据库驱动程序进行匹配。在JDBC下识别某个子协议的第一个驱动程序将用于建立数据库连接。

  • Driver:此接口处理与数据库服务器的通信。我们很少会直接与Driver对象进行交互。 但会使用DriverManager对象来管理这种类型的对象。 它还提取与使用Driver对象相关的信息。

  • Connection:此接口具有用于联系数据库的所有方法。 连接(Connection)对象表示通信上下文,即,与数据库的所有通信仅通过连接对象。

  • Statement:使用从此接口创建的对象将SQL语句提交到数据库。 除了执行存储过程之外,一些派生接口还接受参数。

  • ResultSet:在使用Statement对象执行SQL查询后,这些对象保存从数据库检索的数据。 它作为一个迭代器并可移动ResultSet对象查询的数据。

  • SQLException:此类处理数据库应用程序中发生的任何错误。

举例:1:加载jdbc(java数据库连接)驱动--> 2:创建数据库的连接--> 3:创建处理器 --> 4:准备sql --> 5:执行sql--> 6:释放资源

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

public class Demo01 {
    public static void main(String[] args) {
        //1:加载jdbc(java数据库连接)驱动
        try {
            Class.forName("com.mysql.jdbc.Driver");
            System.out.println("加载jdbc成功");
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        /*
         * 2:创建数据库的连接
         */
        /*
         * url:mysql的主机地址+端口号等信息
         *       示例:jdbc:mysql://localhost:3306/db2
         *        jdbc:mysql://是jdbc连接mysql的协议
         *        localhost是msyql的主机地址
         *        3306是mysql的端口
         *        db2是数据库
         *        
         * username: 登录的用户名
         * password: 登录的密码
         */
         String url =
                 "jdbc:mysql://localhost:3306/db2?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8";//
         String user="root";
         String password="root";
         //外面定义为null,里面重新赋值
         Connection con = null;
         try {
            // 给con重新赋值
             con =
                     DriverManager.getConnection(
                             url, 
                             user, 
                             password);
            System.out.println("连接数据库ok");
        } catch (SQLException e) {
            System.out.println("连接数据库失败");
            e.printStackTrace();
        }
         /*
          *  String URL="jdbc:mysql://localhost:3306/jdbc01
          *  ?useUnicode=true&characterEncoding=utf8
          *  &characterEncoding=utf8
          *  &serverTimezone=GMT%2B8 
          *   GMT%2B8 其实是GMT+8 是中国时间,
          *   GMT+8经过url编码就是GMT%2B8 
          *  &useSSL=false"  
          */
         /*
          * 3:创建处理器
          */
         Statement stat = null;//外面定义stat为null
         try {
             //里面重新给stat赋值
              stat = con.createStatement();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        //4:准备sql
         String sql =
                 "insert into testjdbc values(" 
                 + "2"
                 + ",'小张'"
                 + ");";
         String sql2 = "select * from testjdbc";
         //5:执行sql
         try {
            boolean flag = stat.execute(sql);
            boolean flag2 = stat.execute(sql2);  
            System.out.println(flag);
            System.out.println(flag2);
            /*
             * 如果执行的sql是更新数据则返回false,
             * 如果是查询则返回true
             */
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
         //6:释放资源
         try {
            stat.close();//关闭传输器
            con.close();//关闭链接
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }   
    }
}
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值