Java开发之数据库基本原理

在现代的程序开发中,大量的开发都用到了数据库。使用数据库可以方便地实现数据的存储及查询,以下对Java的数据库操作技术——JDBC进行学习。

一、JDBC概述

1)JDBC(Java Database Connectivity,Java数据库连接),提供了一种与平台无关的用于执行SQL语句的标准Java API,可以方便地实现多种关系数据库的统一操作,它由一组用Java语句编写的类和接口组成。


在实际开发中可以直接使用JDBC进行各个数据库的连接与操作,而且可以方便地向数据库中发送各种SQL命令。在JDBC中提供的是一套标准的接口。这样,各个支持Java的数据库生产商只要按照此接口提供相应的实现,就可以使用JDBC进行操作,极大地体现了Java的可移植性的设计思想。


2 ) JDBC本身提供的是一套数据库操作标准,同时这些标准需要各个数据库厂商实现,所以针对每一个数据库厂商都会提供一个JDBC的驱动程序,目前比较常见的JDBC驱动程序可分为如下4类:

  • JDBC-ODBC桥驱动
ODBC(Open Database Connectivity,开放数据库连接):微软公司提供的一套数据库操作的编程接口,Sun公司的JDBC实现实际上也是模仿了ODBC的设计。
  • JDBC本地驱动
  • JDBC网络驱动
  • 本地协议纯JDBC驱动

3)JDBC的主要操作类及接口
JDBC的核心是为用户提供Java API类库,让用户能够创建数据库连接、执行SQL语句、检索结果集、访问数据库元数据等。
Java程序开发人员可以利用这些类库来开发数据库应用程序。

在JDBC的基本操作中最常用的类和接口就是DriverManager、Connection、Statement、Result、PreparedStatement。

二、MySQL数据库

MySQL是一个小型关系型数据库管理系统, 开发者为瑞典MySQL AB公司。2008年1月被Sun公司收购。

安装的版本:mysql-installer-community-5.6.11.0
在数据库配置时选择默认配置即可,端口设置时默认值是3306.
注:
修改数据库编码
如果在数据库配置时没有选择好编码,则以后在插入数据时有可能出现乱码,此时可以直接打开MySQL安装目录,找到其中的my.ini文件,将全部的default-character-set内容修改,如下所示:
default-character-set = gbk
修改完之后,将MySQL数据库的服务重新启动即可。

MySQL常用命令
1)连接MySQL数据库
mysql -u用户名 -p密码
例如:mysql -uroot -proot

2)创建数据库
  • 创建数据库:CREATE DATABASE 数据库名称;
  • 删除数据库:DROP DATABASE 数据库名称;
3)使用数据库
USE 数据库名称;

4)创建数据库表
连接到数据库后,就可以执行建表语句,使用17-4所示的语句格式,可以创建数据库表
CREATE TABLE 表名称(
字段名称1 字段类型 [DEFAULT 默认值] [约束],
字段名称2 字段类型 [DEFAULT 默认值] [约束],
...,
字段名称n 字段类型 [DEFAULT 默认值] [约束]
);

例如:
mysql> create table firstTable(
    -> id       INT     AUTO_INCREMENT  PRIMARY KEY,
    -> name     VARCHAR(30)     NOT NULL,
    -> password VARCHAR(32)     NOT NULL,
    -> age      INT              NOT NULL
    -> );


5)查看表结构
如果要查看一个表结构,则可以直接使用desc命令,格式如下:
DESC 表名称;

例如:



6)删除数据库表,
语法如下:
DROP TABLE 表名称

7)查看数据库信息
在MySQL中可以通过show命令查看全部的数据库以及一个数据库下的全部表,如下:
查看全部数据库:SHOW DATABASES;
查看一个数据库的全部表:SHOW TABLES;


三、SQL语法基础

SQL(Structured Query Language, 结构查询语言)是一个功能强大的数据库语言,SQL通常用于与数据库的通信。SQL是关系数据库管理系统的标准语言。
SQL功能强大,概括起来可以分为如下几组:
  • DML(Data Manipulation Language,数据操作语言):用于检索或者修改数据。
  • DDL(Data Definition Language,数据定义语言):用于定义数据的结构,如创建、修改该或者删除数据库对象。
  • DCL(Data Control Language,数据控制语言):用于定义数据库用户的权限。
在MySQL数据库中良好地支持了标准的SQL语法,以下分别对数据库的增加、修改、删除、查询语句进行介绍。

数据库创建脚本:
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
);

运行脚本如下:
mysql> source create_table;
Database changed
Query OK, 0 rows affected (0.11 sec)


Query OK, 0 rows affected (0.09 sec)

以上数据库脚本在执行时先判断数据库中是否存在表,如果存在则先删除之后再进行创建。创建时人员编号使用AUTO_INCREMENT完成自动增长列的操作。


1)MySQL中的数据类型

如下表 所示:
序号数据类型长度描述
1TINYINT(M)、BIT、BOOL、BOOLEAN1如果为无符号数,则存储在0~225的数,否则可以存储从-128~127的数
2SMALLINT(M)2如果为无符号数,则存储在0~65335的数,否则可以存储从-32768~32767的数
3MEDIUMINT(M)3如果为无符号数,则存储在0~16777215的数,否则可以存储从-8388608~8388607的数
4INT(M)、INTEGER(M) 4如果为无符号数,则存储在0~4294967295的数,否则可以存储从-2147483648~2147483647的数
5BIGINT(M) 8如果为无符号数,则存储在0~18446744073709551615的数,否则可以存储从-9223372036854775808~9223372036854775807的数
6FLOAT(precision)4或8这里的precision是可以直达53的整数。如果precesion<=24则转换为FLOAT,如果precision>24并且precision<=53则转换为DOUBLE
7FLOAT(M,D)4单精度浮点数
8DOUBLE(M,D)、DOUBLE PRECISION、REAL8双精度浮点数
9DECIMAL(M,D)、DEC、NUMERIC、FIXEDM+1或M+2未打包的浮点数
10DATE3以YYYY-MM-DD的格式显示
11DATETIME
HH:MM:SS
8以YYYY-MM-DD的格式显示
12TIMESTAMP4以YYYY-MM-DD的格式显示
13TIME3以HH:MM:SS的格式显示
14YEAR1以YYYY的格式显示
15CHAR(M)M定长字符串
16VARCHAR(M)最大M变长字符串。M<=255
17TINYBLOB、TINYTEXT最大255TINYBLOB为大小写敏感,而TINYTEXT不是大小写敏感的
18BLOB、TEXT最大64KBBLOB为大小写敏感的,而TEXT不是大小写敏感的
19MEDIUMBLOB
MEDIUMTEXT
最大16MBMEDIUMBLOB为大小写敏感的、而MEDIUMTEXT不是大小写敏感的。
20LONGBLOB
LONGTEXT
最大4GBLONGBLOB为大小写敏感的,而LONGTEXT不是大小写敏感的
21ENUM(VALUE1,...)1或2最大可达65535个不同的值
22SET(VALUE1,…)可达8最大可达64个不同的值

其中最长的数据类型是INT、FLOAT、VARCHAR(M)、TEXT、DATE、DATETIME、BLOB。

2)增加数据
向表中增加数据,格式如下:
INSERT INTO 表名称[(字段1, 字段2, 字段3, ..., 字段n)] VALUES (值1,值2, 值3,...,值n)

此处需要注意的是,若增加的数据是字符串时,则一定要用单引号"’"括起来;如果是数组,则不需要单引号“‘”;若是日期,则按照标准的日期格式进行插入。

例如:
mysql> insert into user(name, password, age, sex, birthday) values ('wxe', '8888
888', 26, 'male', '1987-1-1');
Query OK, 1 row affected (0.13 sec)
mysql> insert into user (name, password, age, sex, birthday) values ('dff', '666
666', 23, 'female', '1989-1-1');
Query OK, 1 row affected (0.05 sec)

通过如下命令查看效果:


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开发实战经典》

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值