MySql

1、初识MySQL

1.1什么是数据库DB

存储数据,管理数据

1.2、数据库分类

关系型数据库:行和列

  • MySQL,Oracle,SQLserver
  • 通过表和表之间,行和列之间的关系进行储存

非关系数据库:

  • Redis,MongoDB
  • 非关系型数据库,对象存储,通过对象自身属性来决定

DBMS数据库管理系统

  • 数据库的管理软件,科学有效管理数据
  • MySQL

1.3MySQL简介

关系型数据库管理系统

1.4、连接数据库

命令行连接

cd C:\Program Files\MySQL\MySQL Server 8.0\bin
mysql -uroot -p123456 --连接 
show databases; --查看所有数据库
describe student;--显示库中所有表的信息
create database ceshi;--创建新的数据库
exit;--退出链接


2、操作数据库

2.1、操作数据库

  1. 创建数据库
  2. 删除数据库
  3. 使用数据库
  4. 查看数据库

2.2、数据库列类型

数值

字符串

时间日期 java.util.Date

null

2.3、数据库的字段属性

2.4、创建数据库表

2.5、数据表的类型


3、事务

事物原则:ACID,原子性,一致性,隔离性,持久性

原子性:

要么都成功,要么都失败

一致性:

事务前后的数据完整性要保持一致

持久性:

事务一旦提交则不可逆,被持久化到数据中

隔离性:
是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,所以要隔离

隔离所导致的一些问题

脏读:

指一个事务读取了另外一个事务未提交的数据

不可重复读:

在一个事务内读取表中的某一行数据,多次读取结果不同(不一定是错误,只是某些场合不对)

虚读:
指在一个事务内读取到了别的事务插入的数据,导致前后读取不一致


4、索引

  • 主键索引

    • 唯一标识,不可重复
  • 唯一索引

    • 避免重复的列出现
  • 常规索引

    • 默认的,index,key
  • 全文索引

    • 特定的数据库引擎下才有

5、JDBC

5.1、数据库驱动

5.2、JDBC

5.3、第一个JDBC程序

Add as Library...

package com.rtt.lesson01;

import java.sql.*;

public class JdbcFirstDemo {

    public static void main(String[] args) throws ClassNotFoundException, SQLException {
        //1.加载驱动
        Class.forName("com.mysql.jdbc.Driver");

        //2.用户信息和url
        String url="jdbc:mysql://localhost:3306/jdbcStudy?useUnicode=true&characterEncoding=utf8&useSSL=false";
        String username="root";
        String password="123456";

        //3.连接成功,数据库对象 Connection代表数据库
        Connection connection = DriverManager.getConnection(url, username, password);

        //4.执行SQL对象 Statement执行sql对象
        Statement statement = connection.createStatement();

        //5.执行sql对象
        String sql="select * from users";
        ResultSet resultSet = statement.executeQuery(sql);//返回的结果集

        while(resultSet.next()){
            System.out.print("id="+resultSet.getObject("id")+" ");
            System.out.print("name="+resultSet.getObject("NAME")+" ");
            System.out.print("pwd="+resultSet.getObject("PASSWORD")+" ");
            System.out.print("email="+resultSet.getObject("email")+" ");
            System.out.println("birth="+resultSet.getObject("birthday"));
        }

        //6.释放连接
        resultSet.close();
        statement.cancel();
        connection.close();
    }
}

  1. 加载驱动
  2. 连接数据库DriverManager
  3. 获得执行sql的对象 statement
  4. 获得返回结果集
  5. 释放连接

5.4、sql注入问题

5.5、PreparedStatement对象

插入

public class TestInsert {
    public static void main(String[] args) {

        Connection conn = null;
        PreparedStatement st = null;

        try {
            conn = JdbcUtils.getConnection();

            String sql="insert into users(id,NAME,PASSWORD,email,birthday)values(?,?,?,?,?)";
            st=conn.prepareStatement(sql);

            st.setInt(1,4);
            st.setString(2,"rtt");
            st.setString(3,"123432");
            st.setString(4,"fasfajkl@qq.com");
            st.setDate(5,new java.sql.Date(new Date().getTime()));

            int i=st.executeUpdate();
            if(i>0){
                System.out.println("插入成功");
            }

        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            JdbcUtils.release(conn,st,null);
        }
    }
}

查询

public class TestSelect {
    public static void main(String[] args) {
        Connection conn=null;
        PreparedStatement st=null;
        ResultSet rs=null;
        try {
            conn=JdbcUtils.getConnection();
            String sql="select * from users where id=?";
            st=conn.prepareStatement(sql);
            st.setInt(1,1);
            rs=st.executeQuery();
            while (rs.next()){
                System.out.println(rs.getString("name"));
            }

        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }finally {
            JdbcUtils.release(conn,st,rs);
        }
    }
}
posted @   尧天天  阅读(51)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示