第一章 数据库的设计
1、为什么需要设计数据库
2、设计数据库的步骤
3、概要设计-绘制E-R图
4、逻辑设计-绘制数据库模型图
5、数据规范化
第二章 初识mysql
1、mysql简介
历史:AB--2008SUN--2009 Oracle
版本:社区版(免费开源);企业版(收费开源,功能更完善)
优势:运行速度快;使用成本低;容易使用;可移植性强;适用更多的用户
2、mysql的配置
配置:端口设置3306;默认字符集设置为utf8;将bin目录写入环境变量;root帐号密码设置
3、命令行连接mysql
检查是否启动服务:计算机管理处检查
检查bin目录是否写入环境变量
命令行连接数据库:mysql -h localhost -u root -p
4、命令行操作mysql
mysql中的数据库类型:系统数据库(mysql、test、performance_schema、information_schema)、用户数据库()
操作数据库:
创建数据库 create database 数据库名
查看数据库列表 show database
选择数据库 use 数据库名
删除数据库 drop database 数据库名
5、sqlyong管理工具
6、使用sql语句操作数据表
回顾结构化查询语言(sql),sql语言包括一下部分:DML(数据操作语言,插入、修改、删除表中的数据)、DDL(创建或删除数据库对象)、DQL(数据查询语言)、DCL(数据控制语言,数据库组件的权限)
创建数据表步骤:确定表中的字段;确定字段的数据类型;给表中添加约束;创建各表的关系
数据类型:数值类型()、字符串类型()、日期类型()
创建表语法:create table[if not exists]表名(字段1 数据类型 [字段属性|约束][索引][注释])
字段的约束及属性:非空约束(not null)、默认约束(default)、唯一约束(unique key)、主键约束(primary key)、外键约束(foreign key)、自动增长(Auto_increment)
注释:comment、
查看表:show tables
查看表的定义:desc 表名
删除表:drop table 表名
7、mysql的存储引擎
常用的存储引擎:INnoDB(默认)、MyISAM
指定表的存储引擎:engine=存储引擎
8、mysql的系统帮助
help 需要帮助的名称(help int)
第三章 高级查询(一)
1、修改表名
alter table rename[to]
添加字段:altert table 表名 ADD 字段名 数据类型[属性]
修改字段:alter table 表名 change 原字段名 新字段名 数据类型[属性]
删除字段:alter table 表名 drop 字段名
添加主外键:''
添加主键约束:alter table 表名 add constraint 主键名 primary key 表名(主键字段)
添加外键:alter table 表名 add constraint fk外键名 foreign key (外键字段) references 关联表名(关联字段)
2、DML语句回顾
插入数据:
插入单行记录 insert into 表名[(字段名列表)]values(值列表)
插入多行记录 insert into 新表 (字段名列表)values(值列表1),(值列表2)
将查询结果插入到新表中 create table 新表(select 字段1,字段2...from 原表)
更新数据记录 update 表名 set 字段1=值1,字段2=值2...[where条件]
删除数据记录 delete from 表名 [where 条件];truncate table 表名;
*trcate删除表中数据,删除后将重置自增列,表结、索引、字段不变
3、数据查询
select 字段名列表 from 表名[where 查询条件][group by分组字段名][order by排序字段名](ASC或DESC)[limit 位置偏移量,行数]
limit 对查询结构进行限定
常用函数:
聚合函数(AVG()、MAX()、MIN()、SUM()、COUNT())
字符串函数(CONCAT(str1,str2)连接字符串、INSERT()、LOWER()全部转换为小写、UPPER()、SUBSTRING())
时间日期函数(NOW()、YEAR())
数学函数(CEIL()不小于该值的最小整数、FLOOR()不大于该值的最大整数、RAND()随机数)
4、子查询
将一个查询嵌套在另一个查询中
in子查询后可跟随返回多条记录子查询用于检测某字段的值是否存在与某个范围
5、in和not in子查询
in关键字可以父查询匹配子查询的多个字段值
第四章 高级查询(二)
1、EXISTS和NOT EXISTS子查询
判断数据库对象是否存在,存在返回true,不存在返回false
2、子查询注意事项
子查询可以嵌套在sql语句的任何表达式出现的位置,子查询结果为单行单列,但不必指定列名
只出现在子查询中而没有出现在父查询中的表不能包含在输出列表中,
3、sql语句的综合应用
***********第五章 *事务、视图、*索引、备份和恢复
1、事务
含义:事物是一种机制,一个操作序列,包含了一组数据操作命令
属性:原子性(事务元素是不可分的),一致性(事物完成时,数据必须处于一致的),隔离性(对数据进行修改的所有并发事务是彼此隔离的),持久性(不管系统是否发生了故障,事务处理的结果都是永久的)
1)执行事务:
语法:开始事务(begin),提交事务(commit),回滚事务(rollback)
2)设置自动提交关闭或开启
set autocommit=0|1(0关闭自动提交,1开启自动提交)
编写事务遵循原则:
事务尽可能简短
事物中的访问数据量尽量最少
查询数据时尽量不用事务
在事务先处理过程中尽量不要出现等待用户输入的情况
2、视图
1)使用视图原因:安全,隐藏部分数据符合用户日常业务逻辑,借助视图能把复杂的代码封装保存
视图是一种查看数据库中一个或多个表中数据的方法,虚拟表
2)视图用途:筛选表中的行;防止未经许可的用户访问敏感数据;将多个物理数据表抽象为一个逻辑数据表
3)给用户带来的好处:结果跟容易理解;获得数据更容易
给开发人员带来的好处:限制数据检索更容易;维护应用程序更容易
4)如何创建使用视图:
使用sql语句创建视图create view 视图名 as
使用sql语句删除视图drop view 视图名
使用sql语句查看视图数据 select 字段1,字段2...from 视图名
使用视图注意事项:每个视图可以使用多个表;与查询相似一个视图可以嵌套另一个视图,最好不要超过3个;对视图数据进行增,删,改操作直接引用表中数据;视图数据来自多个表时,不允许添加和删除数据
3、索引
通过索引找到指定的值,再跟随指针到达包含该值的行,用以提高数据库的检索速度,改善数据库性能
分类:普通索引(加快对数据得出访问速度),唯一索引(不允许重复但允许为空),主键索引(主键索引是唯一索引的特例),复合索引(多个列设为索引),全文索引(定义索引列上支持全文查找),空间索引(图片、视频等比较占内存不常用)
索引有B-树索引和哈希索引
InnoDB和MyISAM储存引擎支持B-树索引
创建索引:CREATE[UNIQUE/FULLTEXT/SPATIAL]INDEX 索引名 ON 表名 (列名[索引长度])只有字符串类型才能指定长度
删除索引:DROP INDEX 索引名 ON 表名(注意:删除表时,该表的索引同时被删除,删除索引列时该索引也会被删除)
标准可以建立索引的列:
1)频繁搜索的列
2)经常用作查询的列
3)经常排序分组的列
4)经常用作连接的列(主/外键)
不用创建索引的列:
1)仅包含几个不同值的列
2)表中仅有几行,规模小的表
经验:1)查询时减少使用*返回全部列,带*的不会使用索引查询
2)索引应该字节数尽量小
3)where 条件中带索引的列应该尽量往前
4)避免在order by 中使用索引
查看索引:SHOW INDEX FROM 表名
4、数据库的恢复和备份
使用mysqldump命令备份数据库:mysqldump -u root -h localhost -p 数据库名[列]列不填默认全部备份
mysqldump 常用参数(p123)
使用mysql恢复数据 :mysql -u root -p[数据库名 ]
第六章 银行存取款系统
第七章 JDBC
1、JDBC简介
java通过jdbc技术实现对数据库的连接
工作原理:
2、连接数据库
3、Statement和ResultSet接口
4、PreparedStatement接口
第八章 DAO模式
1、JDBC的封装
2、properties类
3、使用实体类传递数据