JDBC编程
本章重点
- 关系数据库与SQL语句
- SQL语法
- JDBC核心API
- 使用JDBC执行SQL语句
- 分析数据库的两种方式
- 事务
- JDBC中的事务控制
JDBC概述
- 通过使用JDBC API,Java程序可以非常方便地操作各种主流数据库,这便是Java语言的巨大魅力所在。而且由于Java语言的跨平台性,所以使用JDBC API所编写的程序不仅可以实现跨数据库,还可以实现跨平台,具有非常优秀的可移植性。
- 程序使用JDBC API以同一的方式来连接不同的数据库,然后通过Statment对象来执行标准的SQL语句,并可以获得SQL语句访问数据库的结果。因此掌握标准的SQL语句是学习JDBC编程的基础,本章将会简要介绍关系数据库理论基础,并以MySQL数据库为例来讲解标准SQL语句的语法细节。包括基本查询语句,多表连接查询和子查询等。
JDBC驱动示意
- 为了JDBC程序可以跨越平台执行,则需要不同数据库厂商提供的相应驱动,下面显示了JDBC驱动的示意图。
插入图片1
JDBC驱动程序类型
- 第一种JDBC驱动:成为JDBC-ODBC桥,这种驱动是最早实现的JDBC驱动程序,主要目的是为了快速推广JDBC。这种驱动将JDBC API映射到ODBC API,JDBC-ODBC也需要驱动,这种驱动由Sun公司提供实现
- 第二种JDBC驱动:直接将JDBC API映射成数据库特定的客户端API。这种驱动程序包含特定数据库的本地代码,用于访问特定数据库的客户端。
- 第三种JDBC驱动:支持三层结构的JDBC访问方式。主要用于Applet阶段,通过Applet访问数据库。
- 第四种JDBC驱动:是纯Java的,直接与数据库实例交互。这种驱动是智能的,它知道数据库使用的底层鞋业。这种驱动是目前最流行的JDBC驱动。
安装MySQL
- 下载MySQL安装软件
- 开始安装MySQL后,在出现的对话框中单击“NEXT"按钮。
- 单击对话框的”NEXT“按钮,将出现安装组件和安装路径的对话框。
- 单机对话框中的”NEXT“按钮,将可开始安装MySQL数据库
- 配置数据库时注意选择合适的字符集,并设置密码。
MySQL的常见命令
- show databases;
- drop database 数据库名;
- use 数据库名
- show tables;
- desc表名
MySQL的两种存储机制
- MyISAM:这是MySQL早期默认的存储机制,对事务支持不够好
- InnoDB:InnoDB提供事务安全的存储机制。InnoDB通过建立行级锁来保证事务的完整性,并以Oracle风格的共享锁来处理Select语句。系统默认启动InnoDB机制,如果不想使用InnoDB标,可以使用skip-innodb选项。
SQL语句
-
SQL的全称是Structured Query Language,也就是结构化查询语言。SQL是操作和检索关系型数据库的标准语言,标准SQL语句可用于操作任何关系数据库。
-
使用SQL语句,管理员和数据管理员(DBA)可以完成如下的任务:
在数据库中检索需要的信息对数据库的信息进行及时更新
改变数据库的结构
更改系统的安全设置
增加用户对数据库或者表的使用权限
SQL语句分类
- 查询语句:主要由于select关键字完成, 查询语句是SQL语句中最复杂,功能最丰富的语句
- DML语句(Data Manipuation Language,即数据操作语言):主要由 insert、update和delete三个关键字完成。
- DDL语句(Date Definition Language,即使数据定义语言):主要由create、later、drop和truncate四个关键字完成
- DCL语句(Data Control Language,即是数据控制语言):主要由grant和revoke两个关键字完成。
- 事务控制语句:主要由commit、rollback和savepoint三个关键字完成。
DDL语句
-
DDL语句是操作数据库对象的语句,包括
创建(create)
删除(drop)
修改(alter)数据库对象
数据库对象
对象名称 | 对应关键字 | 描述 |
---|---|---|
表 | table | 表是存储数据的逻辑单元,以行和列的形式存在;列就是字段,行就是记录 |
数据字典 | 就是系统表,存放数据库相关信息的表。系统表里的数据通常由数据库系统维护。程序员通常不应该手动修改系统表及内部数据,程序员只可 查看系统表的数据 | |
约束 | constraint | 执行数据校验的规则,用于保证数据完整性的规则 |
视图 | view | 一个或者多个数据表里数据的逻辑显示。视图并不存储数据 |
索引 | index | 用于提高查询的性能,相当于书的目录 |
函数 | function | 用于完成一次特定的计算,具有一个返回值 |
存储过程 | procedure | 用于完成一次完整的业务处理,没有返回值,但可通过传出参数将多个值传给调用环境 |
触发器 | tigger | 相当于一个事件监听器,当数据库发生特定事件后,触发器被触发,完成响应的处理。 |
创建的语法
create table[模式名.]表名
(
可以有多个列定义
columnName1 datatype[default expr],
...
)
修改表(增加列)的语法
alter table(表名)
add(
--可以有多个列定义
column_name1 datatype[default expr],
...
)
修改表(修改列)的语法
- alter table表名
- modify column_name datatype[default expr]
- [first|after col_name];
修改表(删除列)的语法
- alter table表名
- drop_column_name
删除表的语法
- drop table的表名;
约束
- 大部分数据库支持下面五类完整性约束:
- NOT NULL:非空约束,指定某列不能为空
- UNIQUE:唯一约束,指定某列或者几列组合不能重复
- PRIMARY KEY:主键,指定该列的值可以唯一地表示该条记录
- FOREIGH KEY:外键,指定该行记录从属于主表中的一条记录,主要用于保证参照完整性
- CHECK:检查,指定一个布尔表达式,用于指定对应列的值必须满足该表达式
索引
- 索引是存放在模式(schema)中的一个数据库对象,虽然索引总是从属于数据表,但它也和数据表一样,属于数据库对象。创建索引唯一的作用就是加速对表的查询,索引通过使用快速访问路径访问方法来快速定位数据,从而减少了磁盘的I/O。
- 创建索引有两种方式:
- 自动:当在表中定义逐渐约束、唯一约束和外键约束,系统会为该数据列自动创建对应的索引
- 手动:用户可以手动创建索引来加速查询
- 删除索引也有两种方式:
自动:数据表被删除时,该表上的索引自动被删除。 - 手动:用户可以手动删除指定数据表上的指定索引。