1. 数据库
-
介绍:数据库(database)简称DB,实际上就是一个文件集合,是一个存储数据的仓库,本质就是一个文件系统,数据库是按照特定的格式把数据存储起来,用户可以对存储的数据进行增删改查等操作。
- 以Excel为例,一整个Excel工作簿为数据库;sheet1工作表为数据表。
- 行:记录;列:字段。
-
特点:持久化存储;读写速度极快;保证数据的有效性;对程序支持非常好,容易扩展。
-
分类:
-
关系型数据库:可以保存现实生活中的各种关系数据,数据库中存储数据以表为单位;主流关系型数据库:MySQL,Oracle,SQLServer等
-
非关系型数据库:通常用来解决某些特定的需求,比如高并发访问。主流非关系型数据库:Redis,Mongodb,memacache等
-
2. MySQL
- 介绍:MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),使用最常用的数据库管理语言——结构化查询语言**(SQL)**进行数据库管理。MySQL因为其速度、可靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下,MySQL是管理内容最好的选择。
SQL语句主要分为
- DDL语句:数据定义语言,这些语句定义了不同的数据段、数据库、表、列、索引等数据库对象。
- DML语句:数据操纵语句,用于添加、删除、更新、和查询数据库记录,并检查数据完整性
- DCL语句:数据控制语句,用于控制不同数据段直接许可和访问级别的语句。
数据完整性
在表中为了更加准确的存储数据,保证数据的正确有效,可以在创建表的时候,为表添加一些强制性的验证,包括数据字段的类型、约束。
数据类型
常用数据类型
- 数值类型
- 日期时间类型
- 字符串类型
数值类型
整数类型 | 有符号范围 | 无符号范围 |
---|---|---|
TINYINT(size) | -128~127 | 0~255 |
SMALLINT(size) | -32768~32767 | 0~65535 |
MEDIUMINT(size) | -8388608~8388607 | 0~16777215 |
INT(size) | -2147483648~2147483647 | 0~4294967295 |
BIGINT(size) | -9223372036854775808~9223372036854775807 | 0~18446744073709551615 |
unsignal
无符号;size
显示宽度,默认值11
;够用就好,节省内存
小数类型 | 描述 |
---|---|
FLOAT(size,d) | 带有浮动小数点的小数字。在括号中规定最大位数。在 d 参数中规定小数点右侧的最大位数。 |
DOUBLE(size,d) | 带有浮动小数点的大数字。在括号中规定最大位数。在 d 参数中规定小数点右侧的最大位数。 |
DECIMAL(size,d) | 作为字符串存储的 DOUBLE 类型,允许固定的小数点。(定点数类型) |
float
单精度,double
双精度,decimal
字符串类型 | 字节大小 | 示例 |
---|---|---|
CHAR(size) | 0-255 | char(3)输入’ab’,实际存储为’ab ‘,输入’abcd’,实际存储为’abc’ |
VARCHAR(size) | 0-65535 | varchar(3)输入’ab’,实际存储为’ab’,输入’abcd’,实际存储为’abc’ |
CHAR
长度时一定的,VARCHAR
长度;VACHAR
更加节省内存。
枚举类型 |
---|
对1255个成员的枚举需要1个字节存储;对于25565535个成员,需要2个字节存储。最多允许65535个成员。创建方式:enum(“M”,“F”); |
日期类型
数据类型 | 描述 |
---|---|
DATE() | 日期。格式:YYYY-MM-DD注释:支持的范围是从 ‘1000-01-01’ 到 ‘9999-12-31’ |
DATETIME() | 日期和时间的组合。格式:YYYY-MM-DD HH:MM:SS注释:支持的范围是从 ‘1000-01-01 00:00:00’ 到 ‘9999-12-31 23:59:59’ |
TIME() | 时间。格式:HH:MM:SS 注释:支持的范围是从 ‘-838:59:59’ 到 ‘838:59:59’ |
YEAR() | 2 位或 4 位格式的年。4 位格式:1901 到 2155。2 位格式:70 到 69,表示从 1970 到 2069 |
TIMESTAMP() | 时间戳。格式:YYYY-MM-DD HH:MM:SS注释:支持的范围是从 ‘1970-01-01 00:00:01’ UTC 到 ‘2038-01-09 03:14:07’ UTC |
注意
- decimal表示定点小数,如decimal(5,2)表示共存5位数,小数占2位。不写则默认为decimal(10,0)
- char表示固定长度的字符串,如char(3),如果填充’ab’时会补一个空格为’ab ’
- varchar表示可变长度的字符串,如varchar(3),填充’ab’时就会存储’ab’
- 对于图片、音频、视频等文件,不存储在数据库中,而是上传到某个服务器上,然后在表中存储这个文件的保存路径
- 枚举类型ENUM不区分大小写
详细数据类型可参考:http://blog.csdn.net/anxpp/article/details/51284106
约束
-
主键约束(primary key):它能够唯一确定表中的一条记录,也就是我们通过给某个字段添加约束,就可以使得字段不重复且不为空。
- 当ID列有数字重复时,系统会报错
Duplicate entry '2' for key 'PRIMARY'
,表示数字重复。 - 主键不可以空NULL。
- 当ID列有数字重复时,系统会报错
-
自增约束(auto_increment):自动增加。
-
惟一约束(unique):此字段的值不允许重复。可以为空(与主键约束的区别)。
-
非空约束(not Null):此字段不允许填写空值NULL。
-
默认约束(default):当不填写此值时会使用默认值,如果填写时以填写为准。
-
外键约束(foreign key):对关系字段进行约束,当为关系字段填写值时,会到关联的表中查询此值是否存在,如果存在则填写成功,如果不存在则填写失败并抛出异常。
- 通过填写ID(Class ID)就可以了解到你的班级。这种联系就是外键约束。
来源:oschina
链接:https://my.oschina.net/u/4360870/blog/4919167