数据库DB:
SQL:结构化查询语言。
MySQL是一种关系型数据库
增:
create databases db_school;
drop database t_student;
use db_school;
create table t_student(,,,);
insert into t_student(,,,)values(,,);
insert into t_student(,,,)values(,,),(,,),(,,);
select*from t_student; *为所有列
delete from
update t_student set s_name=’’ where
查看表结构
DESC
函数的分类
单行函数:接收参数,输出一个结果
多行函数:接收某个列的所有值,输出一个结果
分组函数(多行):AVG/SUM、COUNT、MAX/MIN 不能放在WHERE中
如果要用组函数就放在GROUP BY的 HAVING子句中
多表查询
隐式连接:只能做内连接
消除笛卡尔乘积
WHERE中进行等值连接(主外键等值)
显示连接:
内连接JOIN
外连接LEFT JOIN / RIGHT JOIN ON连接为NULL时不会被过滤
自连接
子查询
ANY ALL
表连接
表联合:UNION去重 UNION ALL 全部
事务并发的问题:
第一类丢失更新:后面回滚的事务会把前面提交的事务操作覆盖
第二类丢失更新:后面提交的事务操作会把前面提交的事务操作覆盖
脏读幻读不可重复读
索引:
length()字节数
char_length()字符数
JDBC
JDBC(Java Data Base Connectivity,Java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。
@Before
@Test
public void test开头的命名方法
//加载驱动(根据类的全限定名称加载字节码到JVM,加载进JVM之后,执行该类的静态代码块,静态代码块:注册驱动)
Class.forName(“com.mysql.jdbc.Driver”);
加载参数指定的类,并且初始化它。
//获取连接对象
Connection connection=DriverManager.getConnection(“jdbc:mysql://host:port/database_name”, ”root”, ”root”);
(JDBC2.0引入javax.sql.DataSource 是为了代替DriverManager)
@Test
public void testCreateTable()
//连接数据库
//创建语句对象
Statement stat = connection.createStatement();
String sql = “创建表”
//执行SQL语句 executeUpdate:执行DDL和DML语句
stat.execteUpdate(sql);/查询 ResultSet result = stat.execteQuery(sql); if(result.next()){result.get}
//释放资源
stat.close();
connection.close();
还有一种是在创建语句对象的时候直接加载sql,防止sql注入,故:
PreparedStatement state = connection.prepareStatement(sql);
ResultSet result = state.excuteQuery();
预处理语句
PreparedStatement防止SQL注入
PreparedStatement不在执行的时候传入SQL语句,在创建的时候
DAO组件的设计
数据访问对象,他是一个数据访问接口
提供CRUD的接口。
properties
事务
同一个任务需要多个数据库连接或操作操作的时候才用到
把一个任务的多个操作看做一个整体
获取自动生成的主键
连接池
C3P0
DBCP:导两个jar包 BasicDataSourceFactory.createDataSource();
可在DBCP中直接加载配置参数:DataSource getupDataSource(){4个参数}
就不需要Class.forName(driverName);等等四条
Druid:一个包 DruidDataSourceFactory.createDataSource(pro);也可以用Druid加载pro
连接池的工作机制:
J2EE服务器启动时会建立一定数量的池连接,并一直维持不少于此数目的池连接。调用:客户端程序需要连接时,池驱动程序会返回一个未使用的池连接并将其表记为忙。如果当前没有空闲连接,池驱动程序就新建一定数量的连接,新建连接的数量有配置参数决定。
释放:当使用的池连接调用完成后,池驱动程序将此连接表记为空闲,其他调用就可以使用这个连接。
(最大维持连接数最大连接数最大等待时间)
DataSource与连接池的关系:
DataSource利用连接池缓存Connection,以达到系统效率的提升,资源的重复利用.而连接池它可以单独存在,不需要依靠DataSource来获取连接,你可以直接调用连接池提供的方法来获取连接.
获取到数据库数据信息(字段信息)
resultSet.getMetaData();
HQL:Hibernate Query Language
Select/update/delete…… from …… where …… group by …… having …… order by …… asc/desc
①
public class Single{
private Single(){};
private static Single single = new Single();
public static Single getInstance(){
return single;
}
}
②
public class Single{
private static Single instance = null;
public static synchronized Single getInstance(){
if(instance == null){
instance = new Single();
return instance;
}
}
}
网友评论