文章目录

  • 前言
  • 一、SQL是什么?
  • 二、SQL的分类
  • 三、数据库的三大范式
  • 四、数据库的数据类型
  • 4.1、整数类型
  • 4.2、浮点数类型和定点数类型
  • 4.3、字符串类型
  • 4.4、文本类型
  • 4.5、日期与时间类型
  • (1)、YEAR类型
  • (2)、 TIME类型
  • (3)、 DATETIME类型
  • (4)、 TIMESTAMP类型
  • 4.6、二进制类型
  • 五、总结



前言

SQL是 Structured Query Language 的缩写,中文译为“结构化查询语言”。是一种操作数据库的语言,包括创建数据库、删除数据库、查询记录、修改记录、添加字段等。SQL是关系型数据库的标准语言,所有的关系型数据库管理系统(RDBMS),比如 MySQL、Oracle、SQL Server、MS Access、Sybase、Informix、Postgres 等,都将 SQL 作为其标准处理语言。

MySQL是一种开源的关系型数据库管理系统(RDBMS),它是目前全球最流行的数据库之一。下面是对MySQL的总结:

  1. 数据模型:MySQL使用基于表的数据模型,数据以表格的形式组织,并且表格可以之间通过关系进行连接。
  2. 数据类型:MySQL支持多种数据类型,包括整数、浮点数、字符串、日期时间等。
  3. 查询语言:MySQL使用结构化查询语言(SQL)来操作和查询数据。SQL提供了丰富的语法和功能,可以进行数据的插入、更新、删除和查询等操作。
  4. 索引:MySQL支持索引来提高数据检索的效率。索引是一种数据结构,可以加速特定列或列组合的查询。
  5. 事务:MySQL支持事务处理,它使用ACID(原子性、一致性、隔离性、持久性)属性来确保数据的安全性和一致性。
  6. 备份和恢复:MySQL提供了多种备份和恢复的方法,如物理备份、逻辑备份和增量备份等,可以保护数据免受意外损坏或丢失。
  7. 安全性:MySQL提供了访问控制和权限管理机制,可以限制用户对数据库的访问权限,并且支持加密传输和存储敏感数据。
  8. 可扩展性:MySQL可以通过主从复制、分区和集群等技术来实现水平和垂直的扩展,以应对大规模数据和高并发的需求。

总的来说,MySQL是一种功能强大、稳定可靠且易于使用的关系型数据库管理系统。它适用于各种规模的应用程序,并且具有广泛的社区支持和丰富的生态系统。无论是个人项目还是企业级应用,MySQL都是一个可靠的选择。


一、SQL是什么?

Structure Query Language(结构化查询语言)简称SQL,它被美国国家标准局(ANSI)确定为关系型数据库语言的美国标准,后被国际化标准组织(ISO)采纳为关系数据库语言的国际标准。数据库管理系统可以通过SQL管理数据库;定义和操作数据,维护数据的完整性和安全性。

二、SQL的分类

  1. DDL(Data Definition Language) 数据定义语言,用来操作数据库、表、列等; 常用语句:CREATE、 ALTER、DROP
  2. DML(Data Manipulation Language) 数据操作语言,用来操作数据库中表里的数据;常用语句:INSERT、 UPDATE、 DELETE
  3. DCL(Data Control Language) 数据控制语言,用来操作访问权限和安全级别; 常用语句:GRANT、DENY
  4. DQL(Data Query Language) 数据查询语言,用来查询数据 常用语句:SELECT

三、数据库的三大范式

  1. 第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据线;也就是说:每列的值具有原子性,不可再分割。
  2. 第二范式(2NF)是在第一范式(1NF)的基础上建立起来得,满足第二范式(2NF)必须先满足第一范式(1NF)。如果表是单主键,那么主键以外的列必须完全依赖于主键;如果表是复合主键,那么主键以外的列必须完全依赖于主键,不能仅依赖主键的一部分。
  3. 第三范式(3NF)是在第二范式的基础上建立起来的,即满足第三范式必须要先满足第二范式。第三范式(3NF)要求:表中的非主键列必须和主键直接相关而不能间接相关;也就是说:非主键列之间不能相关依赖。

四、数据库的数据类型

使用MySQL数据库存储数据时,不同的数据类型决定了 MySQL存储数据方式的不同。为此,MySQL数据库提供了多种数据类型,其中包括整数类型、浮点数类型、定点 数类型、日期和时间类型、字符串类型、二进制…等等数据类型。

4.1、整数类型

根据数值取值范围的不同MySQL 中的整数类型可分为5种,分别是TINYINT、SMALUNT、MEDIUMINT、INT和 BIGINT。下图列举了 MySQL不同整数类型所对应的字节大小和取值范围而最常用的为INT类型的,

数据类型

字节数

无符号数的取值范围

有符号数的取值范围

TINYINT

1

0~255

-128~127

SMALLINT

2

0~65535

-32768~32768

MEDIUMINT

3

0~16777215

-8388608~8388608

INT

4

0~4294967295

-2147483648~ 2147483648

BIGINT

8

0~18446744073709551615

-9223372036854775808~9223372036854775808

4.2、浮点数类型和定点数类型

在MySQL数据库中使用浮点数和定点数来存储小数。浮点数的类型有两种:单精度浮点数类型(FLOAT)和双精度浮点数类型(DOUBLE)。而定点数类型只有一种即DECIMAL类型。下图列举了 MySQL中浮点数和定点数类型所对应的字节大小及其取值范围:

数据类型

字节数

有符号的取值范围

无符号的取值范围

FLOAT

4

-3.402823466E+38~-1.175494351E-38

0和1.175494351E-38~3.402823466E+38

DOUBLE

8

-1.7976931348623157E+308~2.2250738585072014E-308

0和2.2250738585072014E-308~1.7976931348623157E+308

DECIMAL(M,D)

M+2

-1.7976931348623157E+308~2.2250738585072014E-308

0和2.2250738585072014E-308~1.7976931348623157E+308

从上图中可以看出:DECIMAL类型的取值范围与DOUBLE类型相同。但是,请注意:DECIMAL类型的有效取值范围是由M和D决定的。其中,M表示的是数据的长 度,D表示的是小数点后的长度。比如,将数据类型为DECIMAL(6,2)的数据6.5243 插人数据库后显示的结果为6.52

4.3、字符串类型

在MySQL中常用CHAR 和 VARCHAR 表示字符串。两者不同的是:VARCHAR存储可变长度的字符串。
当数据为CHAR(M)类型时,不管插入值的长度是实际是多少它所占用的存储空间都是M个字节;而VARCHAR(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个字节

4.4、文本类型

文本类型用于表示大文本数据,例如,文章内容、评论、详情等,它的类型分为如下4种:

数据类型

储存范围

TINYTEXT

0~255字节

TEXT

0~65535字节

MEDIUMTEXT

0~16777215字节

LONGTEXT

0~4294967295字节

4.5、日期与时间类型

MySQL提供的表示日期和时间的数据类型分别是 :YEAR、DATE、TIME、DATETIME 和 TIMESTAMP。下图列举了日期和时间数据类型所对应的字节数、取值范围、日期格式以及零值:

数据类型

字节数

取值范围

日期格式

零值

YEAR

1

1901~2155

YYYY

0000

DATE

4

1000-01-01~9999-12-31

YYYY-MM-DD

0000-00-00

TIME

3

-838:59:59~ 838:59:59

HH:MM:SS

00:00:00

DATETIME

8

1000-01-01 00:00:00~9999-12-31 23:59:59

YYYY-MM-DD HH:MM:SS

0000-00-00 00:00:00

TIMESTAMP

4

1970-01-01 00:00:01~2038-01-19 03:14:07

YYYY-MM-DD HH:MM:SS

0000-00-00 00:00:00

(1)、YEAR类型

YEAR类型用于表示年份,在MySQL中,可以使用以下三种格式指定YEAR类型 的值。
1、使用4位字符串或数字表示,范围为’1901’—'2155’或1901—2155。例如,输入‘2019’或2019插入到数据库中的值均为2019。
2、使用两位字符串表示,范围为’00’—‘99’。其中,‘00’—'69’范围的值会被转换为 2000—2069范围的YEAR值,‘70’—'99’范围的值会被转换为1970—1999范围的YEAR 值。例如,输人’19’插人到数据库中的值为2019。
3、使用两位数字表示,范围为1—99。其中,1—69范围的值会被转换为2001— 2069范围的YEAR值,70—99范围的值会被转换为1970—1999范围的YEAR值。例 如,输人19插入到数据库中的值为2019。
请注意:当使用YEAR类型时,一定要区分’0’和0。因为字符串格式的’0’表示的YEAR值是2000而数字格式的0表示的YEAR值是0000。

(2)、 TIME类型

TIME类型用于表示时间值,它的显示形式一般为HH:MM:SS,其中,HH表示小时, MM表示分,SS表示秒。在MySQL中,可以使用以下3种格式指定TIME类型的值。
1、以’D HH:MM:SS’字符串格式表示。其中,D表示日可取0—34之间的值, 插入数据时,小时的值等于(DX24+HH)。例如,输入’2 11:30:50’插入数据库中的日期为59:30:50。
2、以’HHMMSS’字符串格式或者HHMMSS数字格式表示。 例如,输入’115454’或115454,插入数据库中的日期为11:54:54
3、使用CURRENT_TIME或NOW()输入当前系统时间。

(3)、 DATETIME类型

DATETIME类型用于表示日期和时间,它的显示形式为’YYYY-MM-DD HH: MM:SS’,其中,YYYY表示年,MM表示月,DD表示日,HH表示小时,MM表示分,SS 表示秒。在MySQL中,可以使用以下4种格式指定DATETIME类型的值。
以’YYYY-MM-DD HH:MM:SS’或者’YYYYMMDDHHMMSS’字符串格式表示的日期和时间,取值范围为’1000-01-01 00:00:00’—‘9999-12-3 23:59:59’。例如,输人’2019-01-22 09:01:23’或 ‘20140122_0_90123’插人数据库中的 DATETIME 值都为 2019-01-22 09:01:23。
1、以’YY-MM-DD HH:MM:SS’或者’YYMMDDHHMMSS’字符串格式表示的日期和时间,其中YY表示年,取值范围为’00’—‘99’。与DATE类型中的YY相同,‘00’— '69’范围的值会被转换为2000—2069范围的值,‘70’—'99’范围的值会被转换为1970—1999范围的值。
2、以YYYYMMDDHHMMSS或者YYMMDDHHMMSS数字格式表示的日期 和时间。例如,插入20190122090123或者190122090123,插人数据库中的DATETIME值都 为 2019-01-22 09:01:23。
3、使用NOW来输人当前系统的日期和时间。

(4)、 TIMESTAMP类型

TIMESTAMP类型用于表示日期和时间,它的显示形式与DATETIME相同但取值范围比DATETIME小。在此,介绍几种TIMESTAMP类型与DATETIME类型不同的形式:
1、使用CURRENT_TIMESTAMP输入系统当前日期和时间。
2、输人NULL时系统会输入系统当前日期和时间。
3、无任何输入时系统会输入系统当前日期和时间。

4.6、二进制类型

在MySQL中常用BLOB存储二进制类型的数据,例如:图片、PDF文档等。BLOB类型分为如下四种:

数据类型

储存范围

TINYBLOB

0~255字节

BLOB

0~65535字节

MEDIUMBLOB

0~16777215字节

LONGBLOB

0~4294967295字节


五、总结

数据库的作用:

  1. 可以结构化存储大量的数据,方便检索和访问。
  2. 保持数据信息的一致性、完整性,降低数据冗余。
  3. 共享和安全。
  4. 通过组合分析,产生新的有用信息。