崇之他和她

导航

day030-2

数据库

  • 事务

    • set autocommit = 0 关闭自动提交
    • start transaction 开启一个食物
    • sql 语句执行
    • commit 提交 rollback 回滚
    • set autocommit = 1 恢复默认值
    • create savepoint 创建保存点
    • rollback to savepoint 回滚到保存点
  • 事务的DSIC四大特性 原子性,一致性,隔离性,持久性

    • 原子性 多条sql执行中要同时成功,或者失败

    • 一致性 数据库数据在执行前后总数据特定保持不变如:A有100 B有100 总数200 A给B50 A剩下50B有150总数还是200,

    • 隔离性

      • 脏读 一个事务读到另一个事务未提交的数据
      • 不可重复读 多次读取的数据不同,别的事务未执行完成和执行完成的不同
      • 幻读 读到新插入的数据
    • 持久性 sql执行提交成功,数据持久化到文件,提交失败数据恢复

  • 索引

    • key/index 普通索引 create index sum_index on tableName(colmun)
    • primary key 唯一主键
    • unique key 避免列重复的索引
  • 数据库操作

    • 创建用户 create user username identified by '123456' 密码

    • 修改密码 set passworld = '111111' 修改当前用户密码

      修改指定用户密码 set passworld for username =passworld('9999999')

    • 重命名用户 runame user username to newusername

    • 分配权限 grant all privileges on * .* to username 所有权限 除了grant 给别的用户授权

    • 查询用户权限 show grants for username

    • 撤销用户指定库的权限

    revoke all privileges on * .*from username username的所有库所有权限都取消

  • 数据库命令导出数据

    • mysqldump -hlocalhost -uroot -ppassworld databasename tablename1 tablename2>d:/sql.sql
    • ​ 主机ip -u用户名 -p密码 库名 表名 > 导出地址/文件名
    • 导入数据 source 地址/文件名 导入前需要创建好数据库 create database databasename
  • 数据库的三大范式

    • 第一范式 原子性 保证每一列不可再分 每个字段值描述一项信息
    • 第二范式 前提需满足第一范式 每张表只做一件事情 每一列需和主键完全相关
    • 第三范式 前提满足前两范式 每张表数据和主键直接相关

jdbcx代码练习

package com.self.jdbc;

import java.sql.*;

/**
 * @ Author     :wwwzhqwww
 * @ Date       :Created in 18:40 2021/2/17
 * @ Description:
 * @ Modified By:
 * @Version: $version$
 */
public class JdbcDemo {

    public static void main(String[] args) throws ClassNotFoundException, SQLException {

        //加载驱动
//        Class.forName("com.mysql.jdbc.Driver");//已经弃用Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'
        Class.forName("com.mysql.cj.jdbc.Driver");
        //用户信息和url
        //useUnicode=trueunicode编码支持中文&characterEncoding=utf8编码格式&useSSL=true使用安全连接&serverTimezone=UTC时区设置mysql8.0以上增加新特性
        String url = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&useSSL=true&serverTimezone=UTC";
        String username = "root";
        String pwd = "zhq521444";

        //连接成功
        Connection connection = DriverManager.getConnection(url,username,pwd);
        //执行sql对象
        Statement statement = connection.createStatement();
//        statement.execute();//执行任何sql
//        statement.executeQuery();//返回数据列表
//        statement.executeUpdate();//返回更新成功行数
        //对象执行sql
        String sql = "select * from student";
        ResultSet resultSet = statement.executeQuery(sql);
        while (resultSet.next()){
            System.out.println("id:"+resultSet.getObject("id"));
            System.out.println("name:"+resultSet.getObject("name"));
        }
        //释放连接
        resultSet.close();
        statement.close();
        connection.close();
    }
}

posted on 2021-02-19 18:36  崇之他和她  阅读(18)  评论(0编辑  收藏  举报