数据库操作
一、数据库基本知识
-
数据库的主要特点
- 实现数据共享。数据共享包含所有用户可同时存取数据库中的数据,也包括用户可以用各种方式通过接口使用数据库,并提供数据共享
- 减少数据的冗余度。同文件系统相比,数据库实现了数据共享从而避免了用户各自建立应用文件,减少了大量的重复数据,减少数据冗余,维护了数据的一致性
- 数据的独立性。其包括数据库中数据库的逻辑结构和应用程序相互独立,也包括数据物理结构的变化不影响数据的逻辑结构
- 数据实现集中控制。文件管理方式中,数据处于一种分散状态,不同的用户或同一用户在不同处理中其文件之间毫无关系。利用数据库可对数据进行集中控制和管理,并通过数据模型表示各种数据的组织以及数据之间的关系。
- 数据的一致性和可维护性,以确保数据的安全性和可靠性。
- 安全性控制;以防止数据丢失、错误更新、越权使用
- 完整性控制:保证数据的正确性、有效性、相容性
- 并发控制,使在同一时间周期内,允许对数据实现多路存取,又能防止用户之间的不正常交互作用
- 故障的发现和恢复
-
数据库基本结构
- 物理数据层:他是数据库的最内层,是物理存储设备上实际存储的数据集合,这些数据是原始数据,是用户加工的对象,由内部模式描述的指令操作处理的字符和字组成
- 概念数据层:他是数据库的中间一层,是数据库整体逻辑表示,指出每个数据的逻辑定义及数据间的逻辑联系,是存储记录的集合;它所涉及的是数据库所有对象的逻辑关系,而不是他们的物理情况,是数据库管理员概念下的数据库
- 逻辑数据层:它是用户所看到和使用的数据库,是一个或特定用户所使用的数据集合,即逻辑记录的集合
-
数据库种类及功能
- 层次型数据库
- 网状型数据库
- 面向对象型数据库
- 关系型数据库
-
数据库语言
-
数据定义语言(Data Definition Language , DDL)
create、alter、drop等
-
数据操纵语言(Data Manipulation Language, DML)
select、insert、update、delete等
-
数据控制语言(Data Control Language, DCL)
grant、revoke等
-
事务控制语言(Transaction Control Language)
commit、rollback等
-
SELECT语句
select 所要查询的字段列表 from 表名
where 条件表达式 group by 字段名 having 条件表达式(指定分组的条件)
order by 字段名{ASC|DESC}
-
将tb_temp表中所有女员工的姓名、年龄按年龄升序的形式查询出来
select name,age from tb_temp where sex=“女” order by age{ASC};
-
-
INSERT语句
insert into 表名[(字段1,字段2,······)] values(属性值1,属性值2,······)
-
向tb_temp表中插入数据
insert into tb_temp values(2,“丽丽”,“女”,“销售部”);
-
-
UPDATE语句
update 表名 set 字段名 = 新的字段值 where 条件表达式
-
修改tb_temp中id为2的员工年龄
update tb_temp set age = 24 where id = 2;
-
-
DELETE语句
delete from 表名 where 条件表达式
-
将tb_temp表中id 为1024的员工删除
delete from tb_temp where id = 1024;
-
-
二、JDBC概述
-
JDBC-ODBC桥:它是一个驱动程序,完成从JDBC到ODBC操作之间的转换工作,允许JDBC的驱动程序被用作ODBC的驱动程序。
-
加载JDBC-ODBC桥的驱动程序;建立JDBC-ODBC桥连接器。(不在常用了,现在常用的是JDBC)
Class.forName("sun.jdbc.odbc.JdbcodbcDriver");
-
使用Connection接口,并通过DriverManager类的静态方法getConnection()创建连接对象。
Connection conn = DriverManager.getConnection("jdbc:odbc:数据源名字","username","password"); //例如 Connection conn = DriverManager.getConnection("jdbc:odbc:Tom","liu","123456");
-
向数据库发送SQL语句。使用Statement声明一个SQL语句对象,并通过刚才创建的连接数据库对象conn的createStatement()方法创建这个SQL对象
Statement sql = conn.createStatement();
-
-
JDBC技术:是一种底层的API,访问数据库时需要在业务逻辑层嵌入SQL语句;面向关系,依赖关系模型;不能直接访问数据库,必须依赖于JDBC驱动程序。
- 与数据建立连接
- 向数据库发送SQL语句
- 处理数据库返回的结果
-
JDBC驱动程序类型
-
总体结构:应用程序、驱动程序管理器、驱动程序、数据源
-
驱动程序:
-
JDBC-ODBC桥:依靠ODBC驱动器和数据库通信。这种连接方式必须将ODBC二进制代码加载到使用该驱动程序的每台客户机上。(企业、三层结构的服务器代码)
-
本地API一部分用java编写的驱动程序:把客户机的API上的jdbc调用转换为Oracle、DB2、Sybase、或其他DBMS的调用。
也需要将二进制代码加载到使用该驱动程序的每台客户机上
-
JDBC网络驱动:将JDBC转换为与DBMS无关的网络协议,又被某一个服务器转换为DBMS协议,是一种利用java编写的驱动程序,也是最为灵活的JDBC驱动程序
-
本地协议驱动:纯java的驱动程序。将JDBC调用直接转换为DBMS所使用的网络协议,允许从客户机上直接调用DBMS服务器。
-
-
三、JDBC常用类和接口
-
Connection接口:代表与特定数据库的连接,在连接上下文中执行SQL语句并返回结果
-
Statement接口:用于在已经建立连接的基础上向数据库发送SQL语句
-
PreparedStatement接口:用来动态的执行SQL语句
-
DriverManager类:用来管理数据库中所有的驱动程序
-
ResultSet接口:类似于一个临时表,用来暂时存放数据库查询操作所获得的结果集
四、数据库操作步骤
-
连接数据库
Connection con; //声明接口对象 Class.forNme("net.sourceforge.jtds.jdbc.Driver"); //加载数据库驱动类 //通过访问数据库的URL获取数据库连接对象 con = DriverManager.getConnection("jdbc:jtds:"+"sqlserver://localhost:1433/db_jdbc","sa","123456"); Conn c = new Conn(); //实例化本类对象 c.getConnection(); //调用连接数据库的方法
-
向数据库发送SQL语句
try{ Statement sql = con.createStatement(); //创建Statement类对象 }catch(SQLException e){ e.printStackTrace(); }
-
处理查询结果集
ResultSet res = sql.executeQuery("select * from tb_temp");
-
顺序查询
res = sql.executeQuery("select * from tb_temp"); while(res.next()){ //顺序查询,如果当前语句不是最后一条,则进入循环 //·········· }
-
模糊查询
res = sql.executeQuery("select * from tb_temp where"+"name like '张%"); //将姓张的人信息查询出来
-
预处理语句
//查询编号为19的人的信息 sql = con.prepareStatement("select * from tb_temp"+"where id = ?"); //实例化预处理对象 ,?表示通配符 sql.setInt(1,19); //设置参数,1表示从左向右第几个通配符,19表示通配符的值为19(举一反三) res = sql.executeQuery(); //执行预处理语句