SQL的分类:
DDL:数据定义语言
操作对象:数据库和表
关键字:create、alter、drop
DML: 数据操作语言
操作对象:记录
关键字:insert、update、delete
DQL: 数据查询语言
DCL: 数据控制语言
操作对象:用户、权限、事务
关键字:grant
where和having的区别:
1.where是对分组前的数据进行过滤,不能使用聚合函数
2.having是对分组后的数据进行过滤,可以使用聚合函数
在Oracle中没有varchar,这是MySQL方言
MySQL Java
date:日期 Java..sql.Date
time:时间
timestamp:时间戳 若类型为timestamp的字段给值为null,则会自动用当前的时间赋值
datetime:日期+时间
text:一部小说等长文本,对应Java中的Java.sql.Clob
blob:二进制数据,对应Java中的Java.sql.Blob
//
truncate:清空表
格式:truncate 表名;干掉表,重新创建一张空表
truncate和delete的区别:
delete属于DML语句 truncate属于DDL语句
delete逐条删除 truncate删掉表,重新创建
因此:delete表之后,再insert一条数据,自增id是继删除前的值递增的,表维护了一个全局变量
truncate表之后,自增id是重新开始从头自增
auto_increment 自增
使用前提:
1.被修饰字段类型支持自增操作
2.被修饰字段必须是一个key,一般是primary key
外键约束:
一般不使用,使用Java程序来维护数据完整性,即使要使用,也是在项目上线前夕添加
开发中:
一对多:使用外键,不添加约束
多对多:建立中间表,将两个表的主键设置为联合主键
内连接:
格式1.:select a.*,b.* from a [inner] join b on ab的连接条件
格式2: select a.*,b.* from a,b where ab的连接条件
外连接:select a.*,b.* from a left [outer] join b on 连接条件
左外连接:先展示left join左边的表a所有数据,根据关联查询join右边的表,符合条件展示出来,不符合条件以null展示
右外连接:同理
左外右外使用情景:查询所有用户订单、查询所有部门的职员人数
子查询: 一个查询的条件依赖另一个查询的结果
JDBC: java操作数据库,是Oracle公式制定的一套规范接口,不同的数据库公司提供不同的实现类(数据库驱动)
jdbc操作步骤:
注册驱动、获取连接、编写SQL、创建预编译语句执行者、设置SQL参数、执行SQL、处理结果、释放资源
常见的配置文件格式
1.properties 内容格式:key=value
2.xml
若我们的配置文件为properties,并且放在src目录下,则我们可以通过ResourceBundle工具快速获取里面的配置信息
使用步骤:
1.获取ResourceBundle对象;
static ResourceBundle getBundle("文件名且不带后缀");
2.通过ResourceBundle对象获取配置信息
String getString(String key) 通过指定key获取value
连接池:
管理数据库连接
作用:提高项目性能
所有连接池必须实现一个接口:javax.sql.DataSource
自定义一个连接池
常用连接池;
DBCP:
apache公司
不能自动回收空闲连接
C3P0:
有自动回收空闲连接的功能
配置文件名称:
c3p0.properties或者c3p0-config.xml
配置文件路径:src下
/
增强方法:
1.继承
2.装饰者模式(静态代理)
使用步骤:
1.装饰者和被装饰者实现同一个接口或者继承同一个类
2.装饰者中有被装饰者的引用
3.对需要加强的方法进行增强
4.对不需要加强的方法使用原来的方法即可
3.动态代理