MySql数据库

数据库的五个基本单位

数据库服务器
数据库
数据表
数据字段
数据行

分类

关系型数据库
oracle
mysql
postgresql
SQL server
…..

非关系数据库
Redis
MongoDB
CouchDB
… …

选择MySql的原因

良好的生态
开源、免费
性能强劲

什么是sql

SQL(Structured Query Language)结构化查询语言的缩写,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存储数据以及查询、更新和管理关系型数据库系统;同时也是数据库脚本文件的扩展名。

1974年,在IBM的圣约瑟研究实验室研制的大型关系数据库管理系统SYSTEM R中,使用了SEQUEL语言,后来发展称为SQL语言。

1986年10月,美国国家标准协会对SQL进行规范后,以此作为关系式数据库管理系统的标准语言,1987年得到国际标准组织的支持称为国际标准。不过各种流行的数据库系统在其实践过程中都对SQL规范作了某些编改和扩充,所以,实际上不同数据库系统之间的SQL不能完全相互通用。

sql分类

数据定义语言(DDL),例如:CREATE、DROP、ALTER等语句。

数据操作语言(DML),例如:INSERT、UPDATE、DELETE。

数据查询语言(DQL),例如:SELECT语句。

数据控制语言(DCL),例如:GRANT、REVOKE。

数据事务语言(DTL),例如:BEGIN、COMMIT、ROLLBACK等语句

数据类型

整型

image.png

浮点类型

image.png

浮点是非精确值,会存在不太准确的情况;而decimal叫做定点数,在MySQL内部本质上是用字符串存储的。
实际使用过程中如果存在金额、钱精度要求比较高的浮点数存储,建议使用decimal(定点数)这个类型。

字符类型

image.png

字符类型的区别

1. char类型用于定长字符串,并且必须在圆括号内用一个大小修饰符来定义。这个大小修饰符的范围从 0-255。比指定长度大的值将被截短,而比指定长度小的值将会用空格作填补。
*2. varchar把这个大小视为值的大小,长度不足的情况下不用空格补足,只使用存储字符串实际需要的长度,但长于指定的值仍然会被截短。
*3. text类型与blob类型对于字段长度要求超过 255 个的情况下,MySQL提供了text和blob两种类型。根据存储数据的大小,它们都有不同的子类型。这些大型的数据用于存储文本块或图像。
*4. binary声音文件等二进制数据类型。
*5. text和blob类型在分类和比较上存在区别。blob类型区分大小写,而 text不区分大小写。大小修饰符不用于各种 blob和text子类型。

时间类型

image.png

复合类型

image.png

Enum类型

ENUM 类型因为只允许在集合中取得一个值,有点类似于单选项。在处理相互排拆的数据时容易让人理解,比如人类的性别。ENUM 类型字段可以从集合中取得一个值或使用null值,除此之外的输入将会使 MySQL 在这个字段中插入一个空字符串。另外如果插入值的大小写与集合中值的大小写不匹配,MySQL会自动使用插入值的大小写转换成与集合中大小写一致的值。

ENUM 类型在系统内部可以存储为数字,并且从1开始用数字做索引。一个 ENUM 类型最多可以包含 65536 个元素,其中一个元素被 MySQL 保留,用来存储错误信息,这个错误值用索引 0 或者一个空字符串表示。

MySQL 认为 ENUM 类型集合中出现的值是合法输入,除此之外其它任何输入都将失败。这说明通过搜索包含空字符串或对应数字索引为 0 的行就可以很容易地找到错误记录的位置。

set类型

SET 类型与 ENUM 类型相似但不相同。SET类型可以从预定义的集合中取得任意数量的值。并且与 ENUM 类型相同的是任何试图在 SET 类型字段中插入非预定义的值都会使MySQL插入一个空字符串。如果插入一个即有合法的元素又有非法的元素的记录,MySQL 将会保留合法的元素,除去非法的元素。

一个 SET 类型最多可以包含 64 项元素。在 SET 元素中值被存储为一个分离的“位”序列,这些“位”表示与它相对应的元素。“位”是创建有序元素集合的一种简单而有效的方式。

并且它还去除了重复的元素,所以SET类型中不可能包含两个相同的元素。
希望从 SET 类型字段中找出非法的记录只需查找包含空字符串或二进制值为 0 的行。

UNSIGNED

UNSIGNED(无符号) 主要用于整型和浮点类型,使用无符号。即没有前面面的负号,所有的数都为正数。

存储位数更长。tinyint整型的取值区间为,-128~127。而使用无符号后可存储0-255个长度。

创建时在整型字段语句后接上unsigned

zerofull

0(不是空格)可以用来增补输出的值。使用这个修饰符可以阻止 MySQL 数据库存储负值。

创建时在整型字段语句后接上zerofill

auto_increment

自动增加,只用于整型,可以设置起始值,默认为1

常与后面primary key一起使用

创建表时在整型字段后加上:auto_increment=起始值 primary key

修改起始值:alter table user auto_increment=起始值

default

default属性确保在没有任何值可用的情况下,赋予某个常量值,这个值必须是常量,因为MySQL不允许插入函数或表达式值。

此外,此属性无法用于BLOB或TEXT列。如果已经为此列指定了NULL属性,没有指定默认值时默认值将为NULL,否则默认值将依赖于字段的数据类型。

创建表时在字段语句后接上:default '值'

not null

如果将一个列定义为not null,将不允许向该列插入null值。建议在重要情况下始终使用not null属性,因为它提供了一个基本验证,确保已经向查询传递了所有必要的值。

创建时在字段语句后接上:not null

null为列指定null属性时,该列可以保持为空,而不论行中其它列是否已经被填充。记住,null精确说法是“无”,而不是空字符串或0。

你可能感兴趣的:(MySql数据库)