一、数据库的介绍:
关系型数据库和非关系型数据
关系型数据库(RDBMS):
是指采用了关系模型来组织数据的数据库。 简单来说,关系模型指的就是二维表格模型,而一个
关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。其中我们熟知的 MySQL、Oracle、SQL Server都是关系型数据库。非关系型数据库:
不规定基于SQL实现。现在更多是指NoSQL数据库,如:
1. 基于键值对(Key-Value):如 memcached、redis
2. 基于文档型:如 mongodb
3. 基于列族:如 hbase
4. 基于图型:如 neo4j二、客户端与服务器
在我们进行数据库编程讲解之前,我们需要介绍一些关于客户端与服务器的知识。
主动发送数据的一方叫做客户端,被动的接收数据的一端叫做服务器,客户端给服务器发送数据叫做响应。服务器与客户端不是一对一的关系,而是一个服务器可以连接多个客户端,客户端与服务器之间通过网络进行链接,也就是说,我们在之后通过数据库的客户端编写的一些指令都是通过网络传递给服务器,然后服务器对发送过来的指令进行相应的操作。
三、数据库的数据类型
数据库中提供了许许多多的数据类型来进行不同数据的存储。
(1)整形数据
整形数据不同于之前学习过的编程语言,数据库中的整形数据根据其表示的数据的范围不同,可以分成五类。
数据类型所占字节数无符号数表示的范围有符号数表示的范围tinyint10~255-128~127smallint20~65535-32768~32768midiumint30~16777215-8388608~8388608int40~4294967295-2147483648~ 2147483648bigint80~18446744073709551615
-9223372036854775808~9223372036854775808
(2)浮点数与定点数
数据库中的浮点数包括了float单精度浮点数,double双精度浮点数以及定点数decimal。单精度和双精度浮点数是我们已经比较熟悉的类型了,那么定点数是一种可以指定精确度的数据类型。
数据类型 | 字节数 | 无符号数的取值范围 | 有符号数取值范围 |
float | 4 | 0和1.175494351E-38~3.402823466E+38 | -3.402823466E+38~-1.175494351E-38 |
double | 8 | 0和2.2250738585072014E-308~1.7976931348623157E+308 | -1.7976931348623157E+308~2.2250738585072014E-308 |
decimal(M,D) | M+2 | 0和2.2250738585072014E-308~1.7976931348623157E+308 | -1.7976931348623157E+308~2.2250738585072014E-308 |
float和double的精确度必然是double的精确度高,而decimal能表示指定长度的数字。
decimal(M,D)中的M代表了数据的长度,所占的字节是M+2,而D所表示的就是数据的小数点后面的有效范围。
比如45.345236,我们用decimal(8,3)表示此数据,此数据就会被存储为45.345,此数据类型能够存储八位,但因为只需要保留三位小数,再加上两位的整数部分,最终的结果也就是45.345.
(3)字符串类型
在数据库中,除了我们耳熟能详的char类型能够存储字符以外,还有varchar也可以存储字符串类型。值得注意的是,MySQL中没有字符类型。
数据类型 | 字节数 |
char(M) | M |
varchar(M) | 最大值为M+1 |
char进行指定字符大小之后无论输入的字符串大小是多大,此类型的数据规定多大就算是多大,也就是char(M)中M的大小。
varchars(M)是可以改变大小的,所占的大小是传入的字符串的长度+1;
例子 | char(3) | 所占字节 | varchar(3) | 所占字节 |
‘’ | ‘’ | 3 | ‘’ | 1 |
‘a’ | ‘a’ | 3 | ‘a’ | 2 |
‘ab’ | ‘ab’ | 3 | ‘ab’ | 3 |
‘abc’ | ‘ab’ | 3 | ‘abc’ | 4 |
‘abcd’ | ‘ab’ | 3 | ‘abc’ | 4 |
char(3) 比varchar(3)少一个字符的存储长度。
(4)大篇幅字符串类型(文本类型)
文本类型是记录文章,文稿等大篇幅的文字的类型。
数据类型 | 储存范围 |
tinyint | 0~255字节 |
text | 0~65535字节 |
mediumtext | 0~16777215字节 |
bigtext | 0~4294967295字节 |
(5)日期类型
MySQL还提供了多种的日期类型的存储方式
data:只保存日期
time:只保存时间,形如“HH:MM:SS”
year:只保存年,可以用数字或者字符串来表示,形如“‘2018’,2018”;
datatime:保存日期和时间
timestamp:保存日期和时间
四 数据库的增删查操作
(1)查看数据库
我们在创建数据库之前想看一下所有的数据库
show databases;
库中除了java106是作者自己之前创建的库之外,剩下的都是mysql自带的库,大家不要对他们进行操作。
(2)创建数据库
create database person charset utf8;
charset是指定字符编码,utf8是汉语的编码,加上这一断语句才可以进行汉语的存储。
在我们进行创建数据库之后,会有一段提示:Query OK, 1 row affected (0.00 sec)
Query OK表示的时候此操作是正确的,可执行的
1 row affected表示的是此操作对几行数据进行更改
(0.00 sec)此为操作所用的时间。
(3)删除数据库
删除数据库是非常危险的,因为数据库通过网络发给服务器删除请求之后,就会对硬盘上的数据进行永久性的删除,不存在撤销操作,所以没事不要删库玩,特别是公司的生产环境数据库,千万不要删!!!
drop database person;
五 表的增删查操作
数据库就像是一个大型的仓库,而每一张表就相当于一个货架,上面摆放着货物。我们上述的建库操作之后还不能保存我们的数据,我们还需要建立一张表来存储信息。
(1)表的创建
1、因为一张表是附属于独立的数据库之下的,所以我们首先要选择一个数据库进行创建表操作。
2、创建表的时候我们需要指定这张表用来存储什么类型的信息,这就需要利用数据库的数据类型了。
use person;/*选择数据库person*/
create table studnt (id int, name varchar(20));/*创建表并且指定类型*/
(2)查看表
show tables;
我们可以把整体的数据库当作仓库集合,一个数据库就是一个仓库,show datables就是显示所有的数据库,table可以相当于一个货架集合,就是所有的货架,show tables就是显示这个仓库中的所有的货架。
(3)删除表
drop student;