简单了解mysql和我的第一个jdbc程序

一.什么是数据库

数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据运行增删改查等操作。
之前我们在操作数据是存放在内存里的,但是在内存中无法永久保存,于是我们将数据存放入磁盘当中以文件的形式管理,但是数据的形式多种多样,在存储和处理数据方面比较繁琐,于是数据库的优点就体现出来了。

二.什么是mysql

数据库分为分为关系型数据库(SQL)和非关系型数据库(NOSQL),而mysql属于关系型数据库。
在mysql中,要通过SQL语句去操作数据库,SQL语言也是单独的一门语言,只不过其是用来操作数据库的。

1.SQL语句分类

SQL语句分为:

  • DQL:数据查询语言
  • DML: 数据定义语言(对表中的数据进行操作)
  • DDL:数据定义语言(对表结构进行操作)
  • TCL:事务控制语言
  • DCL:数据控制语言

后面主要简单说一说DQL和DML。

和java一样,在SQL语句中也是有着数据类型的,现在我们讲一讲一些常用的数据类型:

2.常用基本数据类型

  • int (整型数据类型)
  • double(浮点型数据类型)
  • char(字符串固定大小)
  • varchar(可变字符串,类似java中的String)
  • blob(存储二进制(字节)的大对象数据,可以存储tup,视频等)
  • text(clob:用来存储大型文本数据)
  • -data (YYYY-MM-DD 日期格式)
  • datatime (YYYY-MM-DD HH:mm:ss 最常用的时间格式)

三.SQL语句

注:在SQL语句中不区分大小写,每一句以分号结尾,所有符号使用英文格式

1.DQL语句(查询语句)

DQL是数据查询语句,关键词为select
简单查询

-- 查看当前MySQL的版本
select version();    
                
-- 查看当前使用的数据库
select databases();                    

-- 查看指定表的字段(如果要查询多个字段用逗号隔开)
select age from student;              

-- 查看表中的所有数据(或者将*转化为所有的字段,使用*效率低)
select * from student;                

-- 给列取别名(也可以把‘as’用空格替换)
select `name` as studentName from student;   

条件查询

select `字段名1`,`字段名2,···`from `表名` where 判断条件; 

2.DML语句

插入数据

insert into `表名`(`字段1`,`字段2`,`字段3`,···) values ('值1','值2','值3');
-- 注意 :
-- 字段或值之间用英文逗号隔开 .
-- ' 字段1,字段2...' 该部分可省略 , 但添加的值务必与表结构,数据列,顺序相对应,且数量一致 .
-- 可同时插入多条数据 , values 后用英文逗号隔开 .

删除数据

delete from `表名` where 判断条件;
-- 注:where后面为判断条件,如果不加where子句,则会删除所有数据。

修改数据·

update `表名` set `字段名1`=1 , `字段名2`=2 ,··· where 判断条件;
-- 注:where后面为判断条件,如果不加where子句,则会修改所有数据。

where字句:

可以简单的理解为 : 有条件地从表中筛选数据,然后在进行前面的增删查改操作。

3.一些简单的DDL语句

SHOW DATABASES                       -- 查看所有数据库
DROP DATABASE `数据库名`             -- 删除数据库
USE `数据库名`                       -- 使用数据库
SHOW TABLES                          -- 展示所有表

四.我的第一个JDBC程序

JDBC代表Java数据库连接(Java Database Connectivity),它是用于Java编程语言和数据库之间的数据库无关连接的标准Java API,换句话说:JDBC是用于在Java语言编程中与数据库连接的API,其内部封装好了如何操作数据库的方法,开发者只需要将SQL语句用字符串的形式作为参数传入即可。
(这里我使用的是驱动jar包是8.0以上的)
首先我们创一个数据库,并且在这个数据库下创建一个数据表,填入一些数据信息:
例:
数据库信息
代码示例:(数据库名为studmessage)

import java.sql.*;

public class Main {
    public static void main(String[] args) {
        Connection connection = null;
        Statement statement = null;
        ResultSet resultSet = null;
        try {
            //获取类的加载器(加载驱动)
            Class.forName("com.mysql.cj.jdbc.Driver");
            //url和用户信息
            String url = "jdbc:mysql://localhost:3306/studmessage?useUnicode=true&characterEncoding=utf8&useSSL=true";
            String name = "root";
            String password = "123456";
            /**
             * URL参数详解:
             * localhost:3306 :本地地址与mysql端口号
             * studmessage: 数据库名(写自己的数据库名)
             * ? : 连接参数
             * useUnicode=true : 使用Unicode码
             * characterEncoding=utf8 :使用UTF-8编码集
             * useSSL=true 使用安全的连接
             */

            //返回数据库对象,将url和用户信息传入getConnection的方法之中
            connection = DriverManager.getConnection(url, name, password);

            //返回操作数据库的对象
            statement = connection.createStatement();

            //将sql语句以字符串的形式保存
            String sql = "select * from student";

            //再将sql语句以参数的形式传入executeQuery
            //得到一个结果集(ResultSet的对象)
            resultSet = statement.executeQuery(sql);

            while (resultSet.next()) {
                System.out.println("id = " + resultSet.getObject("id"));
                System.out.println("name = " + resultSet.getObject("name"));
                System.out.println("sex = " + resultSet.getObject("sex"));
                System.out.println("dateOfBirth = " + resultSet.getObject("dateOfBirth"));
                System.out.println("dateOfAdmission = " + resultSet.getObject("dateOfAdmission"));
                System.out.println("college = " + resultSet.getObject("college"));
                System.out.println("major = " + resultSet.getObject("major"));
                System.out.println("nativePlace = " + resultSet.getObject("nativePlace"));
                System.out.println("nation = " + resultSet.getObject("nation"));
                System.out.println("***********************************************");
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        //资源关闭
        if (resultSet != null) {
            try {
                resultSet.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
        if (statement != null) {
            try {
                statement.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
        if (connection != null) {
            try {
                connection.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
    }
}

示例输出:

id = 1
name = 张三
sex = 男
dateOfBirth = 2002-09-20
dateOfAdmission = 2021-11-09
college = 电气与信息工程学院
major = 软件工程
nativePlace = 云南昆明
nation = 汉族

代码中的一些方法介绍:
executeQuery(string sql) :

将sql语句以参数的形式传入,得到一个查询出来的结果集(ResultSet的对象)。

executeUpdate(string sql):

将sql语句以参数的形式传入,返回一个int值,该值表示数据库中收影响的数据条数

next()

ResultSet(结果集) 指针的初始位置位于第一条数据之前,每使用一次next()指针就会移动到下一行数据,有数据则返回true,否则返回false。

getObject(String columnLabel)

columnLabel : 数据库里面的字段名
返回此时指针所在那一行数据对应字段名的数据。

注意:在资源关闭时应该按照需关闭资源的产生的先后顺序反过来关闭。

  • 9
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值