MYSQLDAY2

mysql day2

数据加密MD5

INSERT INTO testmd VALUES (1,'ZHANGSAN','123456'),(2,'LISI','123456') -- 123456是密码
UPDATE testmd5 SET pwd = MD5(pwd) WHERE ID =1 -- 使用md5将pwd进行加密
​
-- 插入时加密
INSERT INTO testmd5 VALUES(4,'XIAOMING',MD5('123456'))
-- 校验
SELECT * FROM testmd5 WHERE `NAME` = 'XIAOMING' AND PWD = MD5('123456')

image-20210908205751006

脏读: 一个事务读了另一个事务未提交的数据。

不可重复读:在一个事务内读取表中的某一行数据,多次读取结果不一致。

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

CREATE DATABASE SHOP CHARACTER SET UTF8 COLLATE UTF8_GENERAL_CI
USE shop
CREATE TABLE `account`(
 `id`INT(3) NOT NULL AUTO_INCREMENT,
 `name` VARCHAR(30) NOT NULL,
 `money`DECIMAL(9,2) NOT NULL,
PRIMARY KEY (`id`)
)ENGINE = INNODB DEFAULT CHARSET = UTF8
`account`INSERT INTO `account`('')
​
INSERT INTO `ACCOUNT` (`NAME`,`MONEY`)
VALUES ('A',2000.00),('B',10000.00)
-- 模拟事务
SET autocommit =0 ; -- 关闭自动提交
START TRANSACTION -- 开启一个新事务
UPDATE `account` SET money=money-500 WHERE `name` = 'A'-- A-500
UPDATE `account` SET money=money+500 WHERE `name` = 'B' -- B+500
​
COMMIT; -- 提交事务
ROLLBACK; -- 回滚
SET autocommit  =1; -- 开启自动提交
​

用户权限

create user xxx identified by '******'   -- 创建用户密码
set password = PASSWORD ('******')   -- 修改当前密码
set password for xxx  = PASSWORD ('*****') -- 修改指定用户密码
rename user xxx to xxx    -- 修改用户名
grant all privileges on *.* to xxx     -- 给用户除授权以外的所有权限
SHOW GRANT FOR XXX      -- 查看用户权限
revoke all privileges on *.* from xxx     -- 撤销用户权限
drop user xxx    -- 删除用户
​

数据库备份

  1. 拷贝date 文件

  2. 使用sqlyog手动导出 右键备份

  3. 使用命令行导出mysqldump

mysqldump -hlocalhost -uroot -p123456 school >D:/a.sql
source >D:/a.sql

比较好看的前端

ANT design

范式

第一范式

保证每一列不可再分

第二范式

每张表只描述一件事情, 且满足第一范式

第三范式

确保数据表中的每一列数据都和主键直接相关,而不能间接相关,且满足第二范式

规范性和性能的问题

(阿里)关联查询的表不得超过三张

在商业化中,用户的体验要求数据库的性能更加重要

在规范性能的问题上,能考虑范式规范就尽量考虑

故意给表加一些冗余字段 (可以将多表查询变为单表查询)

故意增加一些计算列 将大数据量降低为小数据量的查询:索引

JDBC

package com.company;
​
import javax.print.DocFlavor;
import java.sql.*;
​
public class Main {
​
   public static void main(String[] args) throws ClassNotFoundException, SQLException {
   //加载驱动
       Class.forName("com.mysql.jdbc.Driver");
   //用户名url
       String url = "jdbc:mysql://localhost:3306/jdbcstudy?useUnicode=true&characterEncoding=utf8&useSSL=false";
       String username = "root";
       String passwword  = "123456";
       //连接成功,数据库对象,Connection代表数据库
​
       Connection connection = DriverManager.getConnection(url,username,passwword);
       //执行Sql的对象Statement   执行sql的对象
       Statement statement =  connection.createStatement();
       //执行sql语言命令
       String sql = "SELECT * FROM users";
       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("password=" + resultSet.getObject("PASSWORD"));
           System.out.println("email=" + resultSet.getObject("email"));
           System.out.println("birth=" + resultSet.getObject("birthday"));
      }
       
       resultSet.close();
       statement.close();
       connection.close();
       
  }
}
​

注意要将jdbc的包导入lib文件夹

并点击add as library

步骤:

  1. 加载驱动

  2. 连接数据库 DriverManager

  3. 获得执行sql的对象 Statement

  4. 获得返回的结果集

  5. 释放连接

posted on 2021-09-13 17:20  想变成鹰的麻雀  阅读(110)  评论(0)    收藏  举报

导航