25.数据库用户管理(MySQL备份)
1.为什么要备份? (1).保证重要的数据不丢失。 (2).数据转移 A--->B 2.MySQL数据库备份的方式: (1).物理备份(拷贝data) (2).使用命令行(cmd), (3).导出: 命令行: mysqldump -h(主机名) -uroot -p密码 库名 表名1 表名2 >E:/a.sql; mysqldump -h(主机名) -uroot -p密码 库名 >E:/a.sql; eg:mysqldump -hlocalhost -uroot -p121788 demo1 student >E:/a.sql; (4).导入: sql语句: source 位置; source e:/a.sql;
1.数据库的导出
26.规范数据库设计(重点)
1.为什么要规范数据库设计 2.糟糕的数据库设计 (1).数据冗余,浪费空间 (2).数据插入和删除都会比较麻烦 (3).程序的性能差 3.良好的数据库设计 (1).节省内存空间 (2).保证数据库的完整性 (3).方便我们开发系统 4.软件开发中,关于数据库的设计 (1).分析需求: 分析业务和需要处理的数据库的需求 - [ ] 创建相应的表 (2).概要设计: 设计关系图 E-R 图 - [ ] 表与表之间的关系
27.数据库三大范式:
1.为什么需要数据规范? (1).信息重复 (2).更新异常 (3).插入异常 (4).删除异常
1.第一范式(1NF):要求数据库表中的每一列都是不可分割的原子数据项; 原子性:保证每一列不可以再分,
1.其中地址那个东西概念比较模糊,还能继续再分
2.第一范式正确用法:字段不会再进行分割
2.第二范式(2NF): 满足第一范式,且确保表中的每一列都和主键相关。 也就是说在一个数据库表中,一个表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中。
1.第二范式反列:(id和商品号称为联合主键)数据库的表应该进行拆分
2.我们应该把表的信息进行拆分为多张表
联合主键: 就是两个字段属性/多个字段属性作为主键 (1).在创建表的同时添加联合主键: (2).创建表之后添加联合主键: alter table 表名 add primary key(列名1,列名2); eg: alter table information add primary key(id,goods_id);
1.联合主键:(创建表之后再添加联合主键)
3.第三范式(确保每列都和主键列直接相关,而不是间接相关)《外键》 (1).我们在一个表中,订单编号和商品编号应该分别设置成两张表,运用外键进行关联
1.第三范式:(反列)
2.正列:
28.JDBC
1.数据库驱动: 驱动: 声卡,显卡。 2.为什么要使用数据库驱动? (1).通过驱动实现应用程序和数据库的链接
2.什么是JDBC SUN公司为了简化开发人员的(对数据库的统一)操作,提供了一个(Java数据库的)规范。俗称JDBC==(java database connection),这些规范的实现由厂商来做。 (1).java.sql-jar (2).mysql-connction-jar
29.JDBC链接IDEA
基本步骤: 1.加载驱动 2.地址,用户名,密码 3.链接成功,数据库对象 4.执行sql的对象 5.返回结果级 (链表的形式) 7.释放连接
import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; public class JDBC { public static void main(String[] args) { try { //1.加载驱动 Class.forName("org.gjt.mm.mysql.Driver"); //2.地址,用户名,密码 链接 String url="jdbc:mysql://127.0.0.1:3306/demo1?useUnicode=true&characterEncoding=utf8&useSSl=true"; //支持中文编码,设置字符集 使用安全的链接 String userName="root"; String passWord="121788"; //3.链接成功,数据库对象 connection 代表数据库 Connection cn= DriverManager.getConnection(url,userName,passWord); // String sql="select *from information"; //4.执行sql的对象 preparedStatement执行sql的对象 PreparedStatement preparedStatement=cn.prepareStatement(sql); //5.返回结果级 (链表的形式) ResultSet resultSet = preparedStatement.executeQuery(); //6.遍历 while (resultSet.next()){ System.out.println(resultSet.getString(1)+" "+resultSet.getString(2)+" "+resultSet.getString(3)); } //7.释放连接 resultSet.close(); preparedStatement.close(); cn.close(); } catch (Exception e) { e.printStackTrace(); } } }