前言?
数据库操作的类均在java.sql包中,嗯~ o(* ̄▽ ̄*)o,java对数据库的操作封装了很多类
(基本上任何一种高级语言都会有其类库/函数库)
面向对象的高级语言会有对应的类库(对开发时常用的工具进行类的抽象)
面向过程的高级语言会有对应的函数库(对开发时常用的工具进行函数的封装)
php这种高级语言既是面向对象也是面向过程的,同时对开发者提供了库函数,也提供了对应的类库
同其高级语言相比,java也不例外,同样提供了对数据库操作的支持?
java提供的对数据库操作的接口允许对不同的数据库来执行sql语句
java语言提供了一组接口,没有提供实现类,这些实现类由各个数据库厂商提供实现,这些实现类就是驱动程序,
当需要在数据库之间切换时,只要更换不同的实现类(即更换数据库驱动程序)就行
下面以mysql数据库举例:
java提供了一组数据库接口,但是都没有实现,因此到现在为止如果只用java的基础类库(操作数据库的)还是满足不了我们操作具体的数据库的,需要每个具体的数据库都对java的数据库操作接口提供各自的实现才能操作具体的数据库
因此各个数据库厂商都对jdbc进行支持,提供了各自操作数据库的实现类,以java的数据库操作接口为基准,规范
下面看一下mysql数据库对java的数据库操作接口的实现类:
将此jar包解压,我们可以发现嗯~ o(* ̄▽ ̄*)o,哇,都是java的数据库接口的实现类哦
不知到大家有没有这样的思考?
我们每天编程必不可少的应用java为我们提供的操作数据库的接口和各个数据库厂商为我们提供的数据库操做的实现类,大家知道为什么我们简单的几句便实现了数据库的访问吗?为什么我们要用不同的实现类?我们为什么可以通过java程序可以实现对数据库的操作呢?
为什么我们用高级语言的操作上附带了sql操作,就可以实现对数据库的操作了呢?
其实这其中有许多底层的东西,首先我们用高级语言操作了数据库,如果想要操作不同的数据库我们必须提供相应的对高级语言操作此数据库的支持
因此数据库驱动程序jar包(类库)是高级语言和数据库之间的连接韧带
有了数据库驱动程序,高级语言才有对相应数据库操作的支持,即数据库驱动程序负责将高级语言对数据库的操作解释为对数据库的相应操作,将数据库的返回结果映射给高级语言
高级语言对数据库的操作-----------------------------------数据库驱动程序-----------------------------------------------数据库
数据库驱动都有什么类型的呢?
1纯java的,是目前最流行的驱动,我们用的各种数据库的驱动程序的jar包
2jdbc-odbc桥数据库驱动
3为applet访问数据库而生的数据库驱动
还记得那些数据库对sql语句的扩展吗?
sqlserver对sql语句提供了扩展 ,Transact-Sql,同时提供了对应的数据库函数
oracle对sql语句提供了扩展,pl/sql,同时提供了对应的数据库函数
mysql数据库以提供了对sql语句的扩展,同时提供了对应的数据库函数
这里想说一句,如果你想实现数据库应用程序可以跨数据库运行,则因该尽量使用标准的sql
mysql数据库的两种存储引擎?
myisam:早期mysql数据库默认的存储引擎
innodb:后期mysql数据库默认的存储引擎,提供了对事务的支持,,事务支持是java ee最重要的特性,因此做java ee开发时一般选用innodb存储引擎
mysql数据库的数据对象?
表/约束/视图/索引/函数/存储过程/触发器
table/constraint/view/index/function/procedure/trigger
约束
NOT NULL/ UNIQUE() /PRIMARY KEY()/ FOREIGN KEY()referrence tablexx()/ CHECK()
虚表dual?
mysql和oracle目前均支持虚表,这个表没有什么含义,只是用来做from后的占位符而已
组函数?
sum() count() min() max() avg()
集合运算?
对select的查询结果集进行交运算,并运算,差运算
要求进行集合运算的两个结果集包含的数据列个数相同,并且类型一致
select 语句 union select 语句
select 语句 minus select 语句---------------------------------mysql不支持
select 语句 intersect select 语句---------------------------------mysql不支持
jdbc实现了什么设计模式?
桥接模式:
定义 :将抽象部分与它的实现部分分离,使它们都可以独立地变化。
意图 :将抽象与实现解耦。
jdbc为所有的数据库厂商提供了统一的接口,由数据库提供商进行具体的实现,体现了抽象与实现分离,这就是桥接模式的体现