《java高级第十章 数据库基础课件》由会员分享,可在线阅读,更多相关《java高级第十章 数据库基础课件(26页珍藏版)》请在金锄头文库上搜索。
1、第 十 章,数据库,理解数据库基本理论 理解SQLite数据库基本操作 掌握SQL语句基本操作 会运用Java程序操作数据库,本章内容,10.1 数据库概述,数据库 数据库管理系统 结构化查询语言SQL,10.1 数据库概述,数据库 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今五十年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不再仅仅是存储和管理数据,而转变成用户所需要的各种数据管理的方式。 数据库特点: 1)数据完整性 2)数据共享性,10.1 数据库概述,数据库管理系统: 数据库管理系统(DataBase Management S
2、ystem)是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称DBMS。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。用户通过dbms访问数据库中的数据,数据库管理员也通过dbms进行数据库的维护工作。它可使多个应用程序和用户用不同的方法在同时或不同时刻去建立,修改和询问数据库。DBMS提供数据定义语言DDL(Data Definition Language)与数据操作语言DML(Data Manipulation Language),供用户定义数据库的模式结构与权限约束,实现对数据的追加、删除等操作。 常见的关型数据库管理系统有:Oracle,MS SQLSe
3、rver,DB2,Mysql,Access等,10.1 数据库概述,结构化查询语言SQL 结构化查询语言(Structured Query Language)简称SQL,结构化查询语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。 结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统可以使用相同的结构化查询语言语言作为数据输入与管理的接口。,10.1 数据库概述,结构化查询语言SQL 大多数都遵循 ANSI SQL 标准。SQL语言包
4、含4个部分: 1)数据定义语言(DDL), 例如:CREATE、DROP、ALTER等语句。 2) 数据操作语言(DML), 例如:INSERT(插入)、UPDATE(修改)、DELETE(删除)语句。 3)数据查询语言(DQL), 例如:SELECT语句。 4)数据控制语言(DCL), 例如:GRANT、REVOKE、COMMIT、ROLLBACK等语句。,10.2 SQLite数据库,SQLite数据库特点 下载和安装 常用图形化Sqlite管理工具,10.2 SQLite数据库,SQLite数据库特点 SQLite是一款轻型的数据库,是一种关系型数据库管理系统,它的设计目标是嵌入式的,而
5、且目前已经在很多嵌入式产品中使用了它. 它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。 SQLite第一个Alpha版本诞生于2000年5月. 至今已经有10多个年头,SQLite也迎来了一个版本 SQLite 3已经发布。它的官方网站是:http:/www.sqlite. org或者,10.2 SQLite数据库,下载
6、和安装 链接: http:/www.sqlite.org/sqlite-shell-win32-x86-3071000.zip 假设解压后将其中的Sqlite3.exe文件放置在D盘下,进入DOS命令行, 输入命令进行创建一个数据库文件test.db后并退出,10.2 SQLite数据库,常用图形化Sqlite管理工具 SQLite有很多优秀的图形化管理工具:如sqliteaadministrator,sqlite developer, sqlite database browser。这些工具已内置了sqlite3数据库,无需再进行数据库连接配置,可直接使用. Sqlite Developer
7、初始界面如下图,其操作和微软的MSSQL Server Manager类似。,10.3 SQL基本操作,数据类型 约束 创建表 Insert 语句 Update 语句 Select 语句 Delete语句,10.3 SQL基本操作,数据类型 大多数数据库的一个字段都指定了相关的数据类型,相当于Java语言编程中数据类型。而SQLite采用的是动态数据类型,可以对字段不指定任何数据类型,SQLite会根据存入值自动判断。SQLite具有以下五种数据类型: 1)NULL:空值相当于Java中null。 2)INTEGER:带符号的整型,相当于Java中int型。 3)REAL:浮点数字,相当于Ja
8、va中float/double型。 4)TEXT/VARCHAR:字符串文本,相当于Java中String类。 5)BLOB:二进制对象,相当于Java中byte数组。,10.3 SQL基本操作,约束 数据库中存储数据的时候,有一些数据有明显的约束条件。 比如一所学校关于教师的数据表,其中的字段列可能有如下约束: 年龄 - 至少大于20岁。如果你想录入一个小于20岁的教师,系统会报错 国籍 - 默认中国。所谓默认,就是如果你不填写,系统自动填上默认值 姓名 - 不能为空。每个人都有名字嘛 员工号 - 唯一。这个可不能乱,工资发错了就麻烦了 上面提到的大于、默认、不能为空、唯一等等,就是数据的约
9、束条件。,10.3 SQL基本操作,约束 在用 CREATE TABLE 创建表的时候,就应该将每个字段列的约束条件事先说明(如果有的话), 以后再往表里输入数据的时候,系统会自动为我们检查是否满足约束条件,如果不满足系统会报错。SQLite3有如下约束: NOT NULL - 非空 UNIQUE - 唯一 PRIMARY KEY - 主键 FOREIGN KEY - 外键 CHECK - 条件检查 DEFAULT - 默认,10.3 SQL基本操作,创建表,create table student( id INTEGER PRIMARY KEY AUTOINCREMENT, name VAR
10、CHAR(20) NOT NULL, cid INTEGER, gender BIT DEFALT(1), age INTEGER CHECK(age18 and age60), score REAL );,10.3 SQL基本操作,Insert 语句,insert into student (name,cid,gender,age,score) values(宋江,1,1,45,46.5);,10.3 SQL基本操作,update 语句,1) 将所有学生的成绩加上3.5分 update student set score=score+3.5; 2) 将学生中姓名叫”杨雄”改为”杨志” upd
11、ate student set name=杨志 where name=杨雄;,10.3 SQL基本操作,Select 语句,1) 查询所有学生信息 select * from student 2) 查询编号为1学生信息 select * from student where id=1; 3) 查询所有姓名中包含”娘”字的学生信息 select * from student where name like %娘%; 4) 查询学生表的所有学生的编号,姓名和成绩三项信息 select id,name,score from student;,10.3 SQL基本操作,delete句,1) 删除成绩小
12、于60分学生信息 delete from student where score60; 2) 删除所学生信息 delete from student;,10.4 JDBC,JDBC概念 JDBC(Java Data Base Connectivity,Java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC为工具/数据库开发人员提供了一个标准的API,据此可以构建更高级的工具和接口,使数据库开发人员能够用纯 Java API 编写数据库应用程序。 简单地说,JDBC 可做三件事:与数据库建立连接、发送操
13、作数据库的语句并处理结果。下列代码段给出了以上三步的基本示例:,10.4 JDBC,创建数据库的连接 要使Java程序能够连接到,需要获得的相应的JDBC驱动程序,本章使用sqlite3 JDBC程序包,该包含三个文件: 1) readme文本文件,告诉开发如何使用sqlitejdbc 2) sqlitejdbc.jar Java API 需要复制到系统的JRElibext目录下 3) sqlitejdbc.dll 本地动态链接库,需要复制到系统的JREbin目录下.,10.4 JDBC,创建数据库的连接 接下来需要在Java程序中完成以下两步操作获得与数据库连接对象Connection 第一
14、步:装载驱动程序 Class.forName(org.sqlite.JDBC); 第一步:建立连接 Connection conn= DriverManager.getConnection(jdbc:sqlite:stu.db,); 第一个参数是协议url,第二个参数用户名,第三个参数是密码,如果没有用户名和密码可以上行代码方式表示. Connection对象代表与数据库的连接。连接过程包括所执行的SQL语句和在该连接上所返回的结果。,10.4 JDBC,发送操作数据库的语句 连接一旦建立,就可用来向它所涉及的数据库传送SQL语句。JDBC提供了三个类,用于向数据库发送SQL语句。Connec
15、tion接口中的三个方法可用于创建这些类的实例。下面列出这些类及其创建方法: 1) Statement:由方法Connection对象的createStatement所创建。Statement对象用于发送简单的SQL语句。 2) PreparedStatement:由方法Connection对象的prepareStatement所创建。PreparedStatement对象用于发送带有一个或多个输入参数的SQL语句。 3) CallableStatement:由方法prepareCall所创建。CallableStatement对象用于执行SQL储存程序。,10.4 JDBC,处理结果 完成向数据库发送操作语句,也就是通过Statement,PreparedStatement, CallableStatement对象的execute/executeXXX方法,数据库系统执行后通常会返回一个结果,这个结果主要有两种形式: 1) 对于插入,更新,删除操作完成后返回一个操作受影响的行数 2) 对于查询返回是查询的结果集Resultset,本章完,