未分类

数据库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;

}

}

}

你可能感兴趣的:(未分类)