数据库总结/个人总结
Posted 老茶icon
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库总结/个人总结相关的知识,希望对你有一定的参考价值。
目录
- 数据库
- 数据和信息
- 数据库
- 数据库管理系统
- 总结
- 常见的数据库管理系统
- 连接查询
- 嵌套查询
- Jar
- 在Java项目中使用.jar文件
- JDBC
- 单表查询
- SQL注入
- 简化JDBC
- 视图View
- 事务transaction
- 存储引擎
数据库
顾名思义,保存数据
数据和信息
Data数据
- 任何描述事物的文字或符号都可以称为数据。
- 软件开发就是为了收集数据,从中筛选出有用的信息。
- 信息就是进过分析筛选后的数据。
- 数据需要保存,保存的介质有内存或硬盘。
- 内存中的数据是临时的,随着系统的关闭,数据也会消失。
- 硬盘中的数据是永久,就算系统关闭,数据依然保留。
- excel等文件保存数据是一种保存到硬盘中的途径,
- 如果需要大量数据保存,文件系统就不再方便。
- 使用一个系统化的数据仓库才能高效地管理数据。
数据库
- DataBase ,称为数据库,简称DB运行在操作系统上,按照一定的数据结构,保存数据的仓库。是一个电子化的文件柜。
- 数据永久保存在硬盘中。
数据库管理系统
- DataBase Manager System,简称DBMS
通常所说的数据库,其实是指数据库管理系统,如mysql、SQLServer、Oracle等。 - 是一种操作和管理数据库的大型软件,用于建立、使用和维护数据库。
总结
数据Data需要永久保存在数据库中
学号(字段) 姓名(字段) 专业(字段)
1001 小王 计算机
1002 小李 计算机
1003 小赵 计算机
数据库DB是运行在操作系统上的一个软件
数据库管理系统DBMS是管理数据库的一个软件
学习数据库就是学习如何使用DBMS创建、使用数据仓库来管理数据
常见的数据库管理系统
关系型数据库
- 关系型数据库是主流的数据库类型。
- 数据通过行row和列column的形式(表格)保存。
每行称为一条记录。
每列称为一个字段。
连接查询
交叉连接、笛卡尔积
将两张表中的数据两两组合,得到的结果就是交叉连接的结果,也称为笛卡尔积。
集合A:a,b
集合B:1,2,3
集合A x 集合B = a1,a2,a3,b1,b2,b3
select * from 表1,表2;
select * from 表1 cross join 表2;
select * from 表1 inner join 表2;
以上三种方式都能将两张表中的数据互相组合,其中有很多无效数据。
内连接
在交叉连接的基础上,筛选出关联的数据。
select * from 表1,表2 where 表1.字段 = 表2.字段;
select * from 表1 inner join 表2 on 表1.字段 = 表2.字段;
-- 如查询所有图书详情和类型名
select * from 图书详情表 t1,图书类型表 t2 where t1.类型编号 = t2.类型编号;
select * from 图书详情表 t1 inner join 图书类型表 t2 on t1.类型编号 = t2.类型编号;
- 通常是通过主表的主键字段关联从表的外键字段
- 如果两张表中关联的字段名一致,一定要通过"表名.字段名"进行区分,通常还会给表重命名
- 如果使用inner join,带条件时需要加入where子句;如果使用,隔开多个表,带条件时需要使用and拼接条件
- 内连接只会显示两张表中有关联的数据
左连接
-- 保证左表数据显示完整的情况下,关联右表中的数据,没有关联的用null表示
select * from 表1 left join 表2 on 表1.字段 = 表2.字段
-- 最终显示表1中的所有数据,关联表2中的数据
右连接
-- 保证右表数据显示完整的情况下,关联左表中的数据,没有关联的用null表示
select * from 表1 right join 表2 on 表1.字段 = 表2.字段
-- 最终显示表2中的所有数据,关联表1中的数据
嵌套查询
将查询出的结果继续使用在另一个查询语句中
-- 查询价格最低的图书信息
select * from book_info where book_price = (select min(book_price) from book_info)
-- 按类型分组,查询每组中图书价格大于平均价格的图书
select * from book_info bi inner join
(select type_id,avg(book_price) as avg from book_info group by type_id)temp
on bi.type_id = temp.type_id where book_price > avg
Jar
以.jar为后缀的文件,称为Java的归档文件。保存的是Java的字节码.class文件
在Java程序中导入某个.jar文件后,就能使用其中的.class文件。
在Java项目中使用.jar文件
1.创建一个Java项目,在其中最好新建一个文件夹,将.jar文件保存在里面
2.在.jar文件上右键,点击“add as library”
JDBC
Java DataBase Connectivity Java数据库连接
用于Java程序连接不同的数据库。
实际是Java中定义的相关数据库连接时所需的接口的集合,不同的数据库对其进行了实现。
核心接口
-
Connection:用于设置连接的数据库的地址、账号、密码
-
PreparedStatement:用于预处理、执行SQL语句
-
**ResultSet:**用于保存查询后的数据
以上接口都来自于java.sql包中
单表查询
import java.sql.*;
public class Main
public static void main(String[] args) throws ClassNotFoundException, SQLException
//连接mysql数据库实现单表查询
//1.加载连接MySQL的驱动
Class.forName("com.mysql.cj.jdbc.Driver");
//2.连接数据库,提供要连接的数据库的URL、用户名、密码
String url = "jdbc:mysql://localhost:3306/gamedb?serverTimezone=Asia/Shanghai";
Connection conn = DriverManager.getConnection(url, "root", "root");
//3.构造查询的sql语句
String sql = "select * from hero";
//4.处理sql语句
PreparedStatement pst = conn.prepareStatement(sql);
//5.处理执行sql语句后的结果
ResultSet rs = pst.executeQuery();
//6.循环遍历读取查询后的数据
while (rs.next())
//根据字段名获取
int id = rs.getInt("id");
//根据字段顺序获取
String name = rs.getString(2);
String sex = rs.getString(3);
int price = rs.getInt(4);
String makeTime = rs.getString(5);
String position = rs.getString(6);
System.out.println(id+"\\t"+name+"\\t"+sex+"\\t"+price+"\\t"+makeTime+"\\t"+position);
//7.关闭连接
rs.close();
pst.close();
conn.close();
SQL注入
在构造sql语句时,如果使用字符串拼接的方式构造可变的sql语句,可能会造成sql注入的风险,导致执行不是预期的sql语句
-- 如删除的sql String sql="delete from 表 where 主键="+参数;
-- 实际传递 '' or 1=1
delete from 表 where 主键= '' or 1=1
-- 导致条件永远成立,最终删除了所有数据
-- 查询的sql String sql="select * from 表 where name="+name +"and pwd="+pwd;
-- 实际第一个参数传递 '' or 1=1 --
select * from 表 where name = '' or 1=1 -- pwd=
-- 导致第二个参数被注释,第一个参数永远成立
在构造sql语句时,使用?占位,通过preparestatement方法防止sql注入的风险
简化JDBC
DBUtil数据库工具类
import java.sql.*;
/*
* 定义数据库工具类,简化JDBC操作
* 可以简化的操作
* 1.加载驱动 √
* 2.连接数据库 √
* 6.关闭 √
* */
public class DBUtil
/*
* 定义静态代码块用于加载驱动
* */
static
try
Class.forName("com.mysql.cj.jdbc.Driver");
catch (ClassNotFoundException e)
System.out.println("驱动不存在" + e);
//定义静态常量保存连接数据库的字符串
private final static String URL = "jdbc:mysql://localhost:3306/gamedb?serverTimezone=Asia/Shanghai";
private final static String USERNAME = "root";
private final static String PASSWORD = "root";
/*
* 定义静态方法获取连接对象
* */
public static Connection getConn()
Connection connection = null;
try
connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
catch (SQLException e)
System.out.println("连接数据库信息异常" + e);
return connection;
/*
* 定义静态方法释放资源
* */
public static void release(Connection conn, PreparedStatement pst, ResultSet rs)
//使用了哪个接口就关闭那个接口
try
if (rs != null)
rs.close();
if (pst != null)
pst.close();
if (conn != null)
conn.close();
catch (SQLException e)
System.out.println("关闭异常" + e);
视图View
视图可以当做数据库中的一个临时表,保存一些较为复杂的查询后的结果。
之后可以直接通过该视图查询数据,不需要再次编写复杂的sql语句。
视图同时可以隐藏一些查询细节,定制查询数据。
创建视图
create view 视图名 as
查询的sql语句;
使用视图
修改视图中的数据,会直接修改原始表中的数据。
select * from 视图名;
删除视图
drop view 视图名;
事务transaction
事务是由一组sql语句组成的执行单元,这些sql之间一般都互相依赖。
如A给B转账
1.update 表 set money = money-1000 where id=1
2.update 表 set money = money+1000 where id=2
以上两句sql组成了一个转账的事务。一个事务要么全部执行,要么全部不执行。
事务的特性ACID
Atomicity原子性
事务是最小的执行单元,要么全部执行,要么全部不执行。
Consistency一致性
事务执行前后,必须让所有数据保持一致状态。(总体数据守恒)
create view 视图名 as
查询的sql语句;
select * from 视图名;
drop view 视图名;
Isolation隔离性
多个事务并发执行时应该互相隔离,互不影响。
Durability持久性
事务一旦提交,对数据的改变是永久的。
存储引擎
- MySQL5.5版本之前,默认使用MyIsam存储引擎,不支持事务
- MySQL5.5版本之后,默认使用InnoDB存储引擎,支持事务
个人总结
软件工程——个人总结
一 本课程对我带来的收获
1 学习和使用的新软件
dreamweaver;
2 学习和使用的新工具
墨刀, Axure
3 学习和掌握的新语言新平台
新语言:php, html
新平台:新浪云,sql
4 完成代码情况
我主要负责的是网页后端的编写大概完成了 500行代码
5 学习和掌握的新方法
在此次实践中 我学习了原型设计,数据库的建立,软件测试 ,网页编辑等方面的知识。
二 总结和展望
1 在软件过程课上的经验总结
在项目过程中我们团队虽然遇到了很多的困难,但在我们团队不懈的努力之下还是克服了重重困难,基本实现项目之初设计的构想的功能。不仅在完成项目的过程中学习到了很多新的技能,还在共同探讨之中增进了彼此之间的友谊,希望以后能有更多机会去实战这类的项目。
2 对学弟学妹的建议
这是团队的项目,每位成员要全身心的投入到项目中,积极参加项目中的各个环节,还有就是要注意代码的规范性,以便于团队中的其他人阅读你的代码。
3 分析自己的团队
我们团队基本都经历过,最后到达了创造阶段。我们会积极沟通,避免不必要的矛盾;合理分工,提高工作效率;在自己负责的的部分遇到困难时,也能过积极地去学习完善或者请教高手,我们会为了项目的顺利完成而携手作战。
4 个性发挥,包括图文、照片和创意等
团队设计项目的时候要有自己独特的功能或者亮点,在开发过程中要成分发挥自己的特长,为自己的团队做出贡献。
以上是关于数据库总结/个人总结的主要内容,如果未能解决你的问题,请参考以下文章