在现代的程序开发中,大量的开发都用到了数据库。使用数据库可以方便地实现数据的存储及查询,以下对Java的数据库操作技术——JDBC进行学习。
1)JDBC(Java Database Connectivity,Java数据库连接),提供了一种与平台无关的用于执行SQL语句的标准Java API,可以方便地实现多种关系数据库的统一操作,它由一组用Java语句编写的类和接口组成。
在实际开发中可以直接使用JDBC进行各个数据库的连接与操作,而且可以方便地向数据库中发送各种SQL命令。在JDBC中提供的是一套标准的接口。这样,各个支持Java的数据库生产商只要按照此接口提供相应的实现,就可以使用JDBC进行操作,极大地体现了Java的可移植性的设计思想。
2 ) JDBC本身提供的是一套数据库操作标准,同时这些标准需要各个数据库厂商实现,所以针对每一个数据库厂商都会提供一个JDBC的驱动程序,目前比较常见的JDBC驱动程序可分为如下4类:
use firstdb; drop table if exists user; create table user ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(30) NOT NULL, password VARCHAR(32) NOT NULL, age INT NOT NULL, sex VARCHAR(6) DEFAULT 'male', birthday DATE );
序号 | 数据类型 | 长度 | 描述 |
1 | TINYINT(M)、BIT、BOOL、BOOLEAN | 1 | 如果为无符号数,则存储在0~225的数,否则可以存储从-128~127的数 |
2 | SMALLINT(M) | 2 | 如果为无符号数,则存储在0~65335的数,否则可以存储从-32768~32767的数 |
3 | MEDIUMINT(M) | 3 | 如果为无符号数,则存储在0~16777215的数,否则可以存储从-8388608~8388607的数 |
4 | INT(M)、INTEGER(M) | 4 | 如果为无符号数,则存储在0~4294967295的数,否则可以存储从-2147483648~2147483647的数 |
5 | BIGINT(M) | 8 | 如果为无符号数,则存储在0~18446744073709551615的数,否则可以存储从-9223372036854775808~9223372036854775807的数 |
6 | FLOAT(precision) | 4或8 | 这里的precision是可以直达53的整数。如果precesion<=24则转换为FLOAT,如果precision>24并且precision<=53则转换为DOUBLE |
7 | FLOAT(M,D) | 4 | 单精度浮点数 |
8 | DOUBLE(M,D)、DOUBLE PRECISION、REAL | 8 | 双精度浮点数 |
9 | DECIMAL(M,D)、DEC、NUMERIC、FIXED | M+1或M+2 | 未打包的浮点数 |
10 | DATE | 3 | 以YYYY-MM-DD的格式显示 |
11 | DATETIME HH:MM:SS |
8 | 以YYYY-MM-DD的格式显示 |
12 | TIMESTAMP | 4 | 以YYYY-MM-DD的格式显示 |
13 | TIME | 3 | 以HH:MM:SS的格式显示 |
14 | YEAR | 1 | 以YYYY的格式显示 |
15 | CHAR(M) | M | 定长字符串 |
16 | VARCHAR(M) | 最大M | 变长字符串。M<=255 |
17 | TINYBLOB、TINYTEXT | 最大255 | TINYBLOB为大小写敏感,而TINYTEXT不是大小写敏感的 |
18 | BLOB、TEXT | 最大64KB | BLOB为大小写敏感的,而TEXT不是大小写敏感的 |
19 | MEDIUMBLOB MEDIUMTEXT |
最大16MB | MEDIUMBLOB为大小写敏感的、而MEDIUMTEXT不是大小写敏感的。 |
20 | LONGBLOB LONGTEXT |
最大4GB | LONGBLOB为大小写敏感的,而LONGTEXT不是大小写敏感的 |
21 | ENUM(VALUE1,...) | 1或2 | 最大可达65535个不同的值 |
22 | SET(VALUE1,…) | 可达8 | 最大可达64个不同的值 |
3)删除数据
删除表中的数据,可以使用如下的格式:
DELETE FROM 表名称[删除条件];
在进行删除数据时,最好指定删除的条件,若没有指定,则表示删除一张表中的全部数据。
例如删除id为1的数据:
DELETE FROM user WHERE id=1
4)更新数据
当需要修改数据表中的某些记录时,就可以使用update语句,格式如下:
UPDATE 表名称 SET 字段1=值1, ..., 字段n=值n [WHERE 更新条件];
修改时也需要指定修改条件,否则数据表的全部记录都将被修改。一般的条件都使用id表示。
例如:
UPDATE user SET name='xxx', age=5, birthday='2012-1-1' WHERE id=2;
5)查询数据
在SQL语法中,如果要查看表中的记录内容,可以通过查询语句完成,可以通过查询语句完成,用户发出查询指令时会将全部的查询结果返回给用户,查询语句的格式如下:
SELECT {*|column alias}
FROM 表名称 别名
[WHERE condition(s)]; -->设置查询条件
查询全部数据:
SELECT * FROM user;
查询user表中的姓名和生日:
SELECT name, birthday FROM user;
查询姓名或密码中包含字母m的用户:
SELECT * FROM user WHERE name LIKE '%m%' OR password LIKE '%m%';
上述查询语句中使用了LIKE语句,用于进行数据的模糊查询,其中%表示匹配任意的数据。以上的查询是将全局的数据都取了出来,如果要想取出数据库表中的一部分数据,则在查询的最后加上一个LIMIT语句即可。格式如下:
SELECT 字段 FROM 表 WHERE 条件 LIMIT 开始行,取出的数据个数;
例如(取出第1~5行的记录):
SELECT * FROM user WHERE name LIKE '%m%' OR password LIKE '%m%' LIMIT 0,5;
这种SQL语句在Java分页开发中使用非常广泛。
在当前的开发中一般比较常见的数据库有Oracle、DB2、MySQL等。这些数据库在使用时都支持标准的SQL语法操作,所以各个数据库只要了解其基本命令就可以很快滴上手开发。
以上内容来自于《Java开发实战经典》