更新时间:2020-02-17 10:06:34 来源:极悦 浏览2555次
一.数据库的设计
1. 规范设计数据库的步骤:
收集信息、标识实体、标识实体属性、标识实体之间的关系
2. E-R图:实体——关系图(Entity-Relationship),用来表示实体的组成部分和实体之间的关系。
矩形名词代表实体,椭圆名词代表属性,菱形动词表示关系
3. 数据库模型图UML:数据库模型图是在详细设计步骤时绘制的清晰表示各个实体(数据表),各个字段(列),标识了主外键关系的一个模型图,作用是更直观的展现数据库各个实体以及实体之间的关系。
4. 映射基数:映射基数指的是各个数据实体之间的关联关系,常见映射基数有以下几种:
一对一1:1 一对多1:N
多对一N:1 多对多M:N
5. 三大范式:三大范式(3NF)是规范设计数据库必须遵循的标准,是设计数据库的规范,其中三个范式的具体含义如下:
第一范式(1NF):确保每列的原子性(每列都是不可再分的最小数据单元)
第二范式(2NF):确保每列都和主键相关(每个表只描述一件事情)
第三范式(3NF):每列都和主键直接相关,不能间接相关(除主键列以外的其他列不传递依赖于主键列)
6. 三大范式对性能的影响:有时为了方便检索数据库中的数据,会在设计数据库时适当添加冗余字段,以空间换取时间。其次,在严格遵循使用三大范式设计数据库时会对数据库的性能产生影响。因此实际设计数据库时,既需要考虑三大范式,也需要考虑数据库的系统性能。
二.初识MySQL
1. MySQL是Oracle公司旗下的又一强大的关系型数据库,目前由企业版和社区版两种版本供用户下载使用。
2. 安装MySQL需要遵循的步骤:
①官网下载MySQL,启动安装程序
②设置默认端口号,默认为3306,设置MySQL服务名,默认服务名为MySQL
③设置数据库默认字符集,默认选中latin1(ISO-8859-1),建议设置为utf8,对中文兼容性更好
④勾选安装时自动配置环境变量,也可在安装后手动像配置jdk一样配置MySQL环境变量
⑤选择安装路径,完成安装。
3. 启动MySQL常用DOS命令
①启动MySQL服务
netstartmysql;
②关闭MySQL服务
netstopmysql;
③登录MySQL服务器
mysql-uroot-p密码;
mysql-uroot-p;
Enterpassword:输入密码
④退出MySQL服务器:
exit;
⑤查看系统帮助
HELP指令
4. 回顾SQL语言(StructQueryLanguage)结构化查询语言
SQL语言组成:
DDL数据定义语言,定义数据库、表、约束
DML数据操作语言:数据增删改
DQL数据查询语言:数据查询
DCL数据控制语言:权限的管理和回收等
TCL事务控制语言:事务的处理(此处仅作了解)
①DDL数据定义语言:
创建数据库:
DROPDATABASEIFEXISTS数据库名
CREATEDATABASE数据库名
创建数据库表:
DROPTABLEIFEXISTS数据表名
CREATETABLE表名
(
列名 数据类型 列的特征(null/notnull),约束等
)
添加约束:
ALTERTABLE表名ADDCONSTRAINT约束名 约束类型 约束内容
修改表结构:
ALTERTABLE表名RENAME新表名(修改表名称)
ALTERTABLE表名ADD列名数据类型列的特征(添加列)
ALTERTABLE表名CHANGE原列名新列名数据类型列的特征(修改列名和列的特征)
ALTERTABLE表名DROPCOLUMN列名(删除列)
DML数据操作语言:
插入数据:
①一次插入一条记录
INSERTINTO表名(列名)VALUES(值)
②一次插入多条记录
插入已存在表中:
INSERTINTO表名(列名)VALUES(值),(值),(值)....
插入新表中:自动创建新表
CREATETABLE表名(SELECT语句)
修改数据
UPDATE表名SET列名=值WHERE更新条件
删除数据
DELETEFROM表名WHERE删除条件
清空表中数据
TRUNCATETABLE表名
DELETEFROM表名
DQL数据查询语言:
SELECT列名FROM表名
WHERE查询条件
GROUPBY分组
HAVING分组筛选
ORDERBY排序(ASC升序,默认值/DESC降序)
LIMIT行偏移量,行数
DCL数据控制语言
创建用户:
CREATEUSER用户名
IDENTIFIEDBY密码
创建用户并授权:
GRANT权限ON数据库名.表名
TO用户名@`localhost`
IDENTIFIEDBY密码
修改用户密码:
DOS命令:mysqladmin-u用户名-ppassword新密码
SQL命令:
SETPASSWORDFOR用户名@`localhost`=PASSWORD(新密码)
删除用户:
DROPUSER用户名1@`localhost`,用户名2@主机名
查看所有用户:
USEmysql;
SELECT*FROM`user`;
拓展SHOW语句
①查看所有数据库
SHOWDATABASES;
②查看当前数据库的所有数据库表
USE数据库名;
SHOWTABLES;
③查看默认字符集
SHOWVARIABLESLIKE‘character_set_%’
④查看表结构
DESCRIBE表名
DESC表名
⑤查看导出文件路径
SHOWVARIABLESLIKE‘secure%’
三.子查询
SELECT列名FROM表名
WHERE列名=(子查询)
注意:以上语句中的子查询只能返回唯一结果(因为使用的是关系运算符,关系运算符左右两边的值只能返回唯一结果),如果返回多条记录,将引发querymorethan1row异常
IN/NOTIN子查询
SELECT列名FROM表名
WHERE列名IN(子查询语句)/NOTIN(子查询语句)
IN子查询作用:判断某列的值是否存在于某个范围内,类似于OR运算符的作用,IN后面子查询查询出的结果作为列举值并逐个与IN前面的列值判断,如果IN前面的列值为其中之一,则返回true,都不匹配返回false
NOTIN运算符作用:进行IN子查询的取反操作,及如果如果IN前面的列值为子查询查询出的结果的其中之一,则返回false,都不匹配返回true
EXISTS/NOTEXISTS子查询
SELECT列名FROM表名
WHEREEXISTS(子查询)/NOTEXISTS(子查询)
EXISTS作用:判断某列的值是否存在于子查询语句查询的结果中,仅判断是否存在。如果存在返回true,不存在返回false
NOTEXISTS作用:作用同上,但是是对EXISTS的结果进行取反操作。即不存在返回true,存在返回false
四:MySQL常用函数
字符串函数:
CONCAT()拼接
UPPER()转换为大写
LOWER()转换为小写
SUBSTRING()截取字符串
日期函数:
NOW()当前系统日期和事件
CURDATE()当前系统日期
CURTIME()当期系统时间
DATEDIFF()日期差
数学函数:
CEIL()向上取整
FLOOR()向下取整
ROUND()四舍五入
RAND()返回0-1之间的随机数
五.事务、视图、索引、备份和恢复、数据导入和导出
事务:事务是一个整体,必须同时执行,要么成功,要么失败,从而保证数据库中数据状态一致。
事务的特性(ACID):
原子性:事务是不可再分的最小逻辑工作单元,必须同时执行,要么全部执行,要么都不执行。
一致性:事务在开始前和提交回滚后,数据库中的数据保持一致状态。
隔离性:事务和事务之间相互独立,互不干涉。
持久性:事务成功提交或回滚后,对数据库数据造成的影响是持久的。
语法:
开启事务
BEGIN;
STARTTRANSACTION;
提交事务
COMMIT;
回滚事务
ROLLBACK;
视图:视图可以理解为虚拟表,是表数据的引用。视图可以互相嵌套,主要用来做查询,可以增删改数据,将会同步引用的表的数据。
创建视图:
CREATEVIEW视图名
删除视图
DROPVIEW视图名
查看视图
SELECT*FROMview_name
索引:索引用来提高数据检索速度,提高数据查询的性能。
索引类型:普通索引、主键索引、全文索引、空间索引、唯一索引、组合索引。
创建索引
CREATE(UNIQUE/FULLTEXT/SPATIAL)INDEXindex_name
ONtable_name(column_name)
删除索引
DROPINDEXindex_nameFROMtable_name
查看索引
SHOWINDEXFROMtable_name
备份和恢复:
备份数据库
DOS命令:mysqldump-uroot-p密码数据库名>文件名
恢复数据库
DOS命令:mysql-uroot-p密码数据库名<文件名
SQL命令:
USE数据库名;
SOURCE数据库备份文件名
导出数据:
SELECT...INTOOUTFILE文件名
导入数据:
LOADDATAINFILE文件名INTOTABLE表名
六.JDBC
1.JDBC:Java连接数据库技术,全程JavaDataBaseConnectivity
2.JDBCAPI:使用JDBC常用接口访问和操作数据库
3.使用JDBC访问和操作数据库步骤(纯Java方式)
首先在项目中BuildPathMySQL数据库JAR包
①加载驱动Class.forName(“com.mysql.jdbc.Driver”);
②获取链接
Connectionconn=DriverManager.getConnection(“jdbc:mysql://localhost:3306/数据库名”,”root”,”root”);
参数:连接字符串、用户名、密码
③获取Statement或PreparedStatement接口实例
Statementstmt=conn.createStatement();
PreparedStatementpstmt=conn.preparedStatement(sql语句);
④编写SQL语句
⑤调用Statement或PreparedStatement接口方法执行数据库操作
booleanexecute()查询SQL返回true,其他SQL返回false
IntexecuteUpdate()执行增删改,返回受影响的行数Int类型
ResultSetexecuteQuery()执行查询,返回查询结果集ResultSet对象
⑥处理查询结果
resultSet.next()前进到下一行记录中,读到记录返回true,没有读到记录返回false
getXX()获取每行记录中每列的值
⑦关闭连接,释放资源
先关闭ResultSet,在关闭Statement或PreparedStatement,最后关闭Connection,注意checked异常处理。
七.DAO模式
数据持久化:数据持久化就是将程序中的数据在瞬时状态和持久状态之间相互转换的机制。
DAO层:数据访问层,负责实现数据持久化,对数据库数据的增删改查,降低代码耦合度,提高内聚性。
DAO模式组成:
DAO接口、DAO接口实现类、Entity实体类,BaseDao数据库链接和关闭工具类
Properties类:负责读取数据库配置文件中的驱动、连接字符串、用户名、密码等数据库参数信息
读取步骤:
①创建Properties类的实例
Propertiesproperties=newProperties();
②将配置文件读入InputStream流
InputStreaminputStream=BaseDao.class.getClassLoader().getResourceAsStream(“配置文件名”);
③调用Properties类实例的load()方法读取流
Properties.load(inputStream);//.注意处理checked异常
④调用Properties类的实例的getProperty(Stringkey)方法根据配置文件中的key映射获取到相应的value值
Stringdriver=properties.getProperty(“driver”);
....
实体类标准定义:
①类名public
②属性private
③属性名和映射表的字段名尽量保持一致,采用驼峰命名法。
④提供公有的getter/setter方法封装属性
⑤最好实现java.io.Serializable接口,支持序列化机制。
数据库相关视频教程
oracle数据库教程:
数据库plsql教程:
jdbc数据库教程:
数据库mysql教程:
Java实战项目视频之egov项目视频教程【免费下载】:
Java学生成绩管理系统视频教程【免费下载】:
以上就是极悦注册机构小编介绍的“Java数据库编程实例教程总结”的内容,希望对大家有帮助,如有疑问,请在线咨询,有专业老师随时为你服务。
0基础 0学费 15天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习