1.整型与浮点型
这里我们围绕的实际业务需求为图书馆里系统的简单模拟。
需求 | 图书管理系统 |
---|---|
业务需求 | 图书管理系统主要提供图书信息和读者基本信息的维护以及借阅等功能;读者借阅图书的押金为200元,所以读 者的账户余额不能低于200元,每借阅一本图书的费用为所借图书价格的5%。 |
数据需求 | ①图书类别的标准指定;②图书的基本库存信息;③读者的基本信息;④图书的借阅情况 |
图书类别表:
类别编号(category_id) | 类别名称(category) | 父类别(parent_id) |
---|---|---|
1 | 计算机 | 0 |
2 | 医学 | 0 |
3 | 编程语言 | 1 |
4 | 数据库 | 1 |
5 | 儿科学 | 2 |
图书信息表:
图书编号(book_id) | 类别编号(book_category_id) | 书名(book_name) | 作者(author) | 价格(price) | 出版社(press) | 出版时间(pubdate) | 库存(store) |
---|---|---|---|---|---|---|---|
20150201 | 3 | Java编程思想 | (美)埃克尔 | 79.8 | 机械工业出版社 | 2007-4 | 5 |
20150202 | 4 | PHP和MySQL Web开发 | Luke Welling等 | 95 | 机械工业出版社 | 2009-4 | 2 |
20150301 | 3 | Spring源码深度解析 | (郝佳 | 69 | 人民邮电出版社 | 20013-9 | 3 |
20160801 | 5 | Java编程思想 | 汪受文 | 136 | 北京大学出版社 | 2011-4 | 1 |
20170401 | 5 | 小儿推拿秘笈 | 李德修 | 24.5 | 机械工业出版社 | 2007-4 | 4 |
读者信息表(表名:reader):
身份证号(card_id) | 姓名(name) | 性别(sex) | 年龄(age) | 联系电话(tel) | 余额(balance) |
---|---|---|---|---|---|
210210199901011111 | 张飞 | 女 | 18 | 13566661111 | 300 |
210210199802012222 | 李月 | 女 | 19 | 13566662222 | 200 |
210210199703013333 | 王鹏 | 男 | 20 | 13566663333 | 300 |
210210199604014444 | 刘鑫 | 男 | 21 | 13566664444 | 400 |
210210199505015555 | 杨磊 | 男 | 22 | 13566665555 | 500 |
图书借阅信息表:
图书编号(card_id) | 身份证号(name) | 借出日期(sex) | 归还日期(age) | 是否归还(tel) |
---|---|---|---|---|
20150201 | 210210199901011111 | 2017-5-5 | 2017-6-5 | 是 |
20160801 | 210210199802012222 | 2017-6-5 | 2017-7-5 | 是 |
20150201 | 210210199703013333 | 2017-8-5 | 2017-9-5 | 是 |
20160801 | 210210199604014444 | 2017-10-15 | 2017-11-5 | 否 |
20150201 | 210210199802012222 | 2017-10-18 | 2017-11-18 | 否 |
上面用到了各种各样的数据类型,有时间的,有数字的,还有字符串类型的,那么到底什么是数据类型呢?
数据类型是指数据列、存储过程参数、表达式和局部变量的数据特征,它决定了数据的存储格式,代表了不同的信息类型。
浮点型在数据库中存放的是近似值,而定点类型在数据库中存放的是精确值。图中的M是小数点之前的位数和小数点之后的位数之和,D是小数点后面的位数。这里M>=D
2.日期时间型和字符型
字符型
字符串类型用来存储字符串数据,除了可以存储字符串数据之外,还可以存储其它数据,比如图片和声音的二进制数据。
CHAR和VARCHAR类型的区别就是CHAR是定长存储,VARCHAR是不定长(可变)存储的。举例说明二者区别:
假设sex只需要1个字节就可以存储到数据库中。现在定义如下:
sex CHAR(6),
sex VARCHAR(6),
在 sex CHAR(6)的定义中,数据库中使用一个字节存储有效数据,余下的5个字节用空代替,但是这5个字节还是要被分配占用;相反,在sex VARCHAR(6)中,数据库使用1个字节存储有效数据,余下的5个字节不会被占用,它根据实际需求灵活分配存储空间,但是最大只能用6个字节来存储数据。
注意:在MySQL中,一个字节可以存储一个汉字;在oracle中,两个字节才可以存储一个汉字。
另外,TEXT,MEDIUMTEXT和LONGTEXT类型一般用于存储较大的文本数据。