MySQL01-MySQL基础概念&数据类型

1. 数据库相关概念

1.1 数据库的四个基本概念

1.1.1 数据(Data)

即 data,数据是数据库中存储的基本对象,是用来描述事物的符号记录,数据有两个特点:

  1. 数据在不同的语境有不同的含义,也称语义;
  2. 数据与数据的语义是不可分割的;

1.1.2 数据库(DB)

即 DataBase,数据库就是存储数据的仓库,是长期存储在计算机内的,有组织的,可共享的大量数据的集合。数据库有以下基本特征:

  1. 数据按一定的数据模型组织、描述和储存;
  2. 可为各种用户共享冗余度较小易扩展
  3. 数据独立性较高

1.1.3 数据库管理系统(DBMS)

即 DataBase Management System,数据库管理系统就是操作和管理数据库的大型软件,是为了科学地组织和存储数据,高效地获取和维护数据而开发的、位于数据库应用系统和操作系统之间的大型而复杂的软件系统,主流的关系型数据库管理系统有Oracle、MySQL、Microdoft SQL Server等。

1.1.4 数据库系统(DBS)

即 DataBase System,数据库系统是指在计算机系统中引入数据库后的系统组成,在不引起混淆的情况下常常把数据库系统简称为数据库,包括数据库数据库管理系统(及外围的应用开发工具)数据库应用程序数据库管理员(DBA)四个基本构成,其中数据库管理系统是整个数据库系统的核心。

1.2 数据库其他概念

1.2.1 关系型数据库(RDBMS)

即建立在关系模型基础上,由多张相互连接的二维表组成的数据库。关系型数据库有两个特点:

  1. 使用表存储数据,格式统一,便于维护;
  2. 使用 SQL 语言操作,标准统一,使用方便;

1.7 基本概念间的关系

用户(如数据库管理员)通过 SQL 语言操作数据库管理系统,通过数据库管理系统管理数据库及数据库里的数据,这个过程又是在数据库系统里完成的。

graph LR subgraph 数据库系统 A("数据库管理员(DBA)") -- 通过SQL操作 --> B("数据库管理系统(DBMS)") B -- 管理 --> C("数据库(DB)") C -- 包含 --> D("数据(Data)") end

2. 数据库存储结构

在存储数据的过程中会用到数据库服务器,所谓数据库服务器,简单来说就在计算机上安装一个数据库管理系统(如MySQL),这个计算机就是一个简单的数据库服务器,数据库服务器建立在数据库系统基础上,拥有数据库系统的特性。

数据库管理系统可以管理多个数据库,一般开发人员会针对一个应用创建一个数据库,为保存应用中实体的数据,会在数据库中创建多个表(用于存储和描述数据的逻辑结构),每个表都记录着实体的相关信息。

数据库服务器、数据库和表的关系如图所示:

flowchart LR A((用户1)) <--> D(Web服务器); B((用户2)) <--> D; C((用户3)) <--> D; D <--> E("数据库管理系统(DBMS)"); subgraph 数据库服务器 E <--SQL--> F[(数据库1)] E <--SQL--> G[(数据库2)] F --- H(数据表1); F --- I(数据表2); G --- J(数据表1); G --- K(数据表2); end

数据库中包括表和索引,表则由表头、表的记录和表的字段组成。数据存储在表中,表的横向称为行,每一行的内容为记录,表的纵向称为列,每一列的内容为字段。数据表组成结构如下:

3. SQL基本概念

3.1 SQL的概述

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

3.2 SQL的优点

  1. 简单易学,具有很强的操作性;
  2. 绝大多数重要的数据库管理系统均支持SQL;
  3. 高度非过程化,用SQL操作数据库时大部分的工作由DBMS自动完成;

3.3 SQL的分类

SQL语言共分为四大类:数据定义语言DDL,数据操纵语言DML,数据控制语言DCL,数据查询语言DQL

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

3.4 SQL的通用语法

  1. SQL语句可以单行或多行书写,以分号结尾。
  2. SQL语句可以使用 空格或缩进 来增强语句的可读性。
  3. MySQL数据库的SQL语句不区分大小写,关键字建议使用大写。
  4. MySQL注释:
单行注释:-- 注释内容 或 # 注释内容(MySQL特有)
多行注释:/* 注释内容 */

4. 数据库数据类型

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

4.1 数值类型

需要注意的是,数值类型分为带符号的(signed)和无符号的(unsigned)两种,这里的符号指的是 - 号,带符号类型可以表示正数、负数或 0,无符号类型则仅能表示大于等于 0 的值。

使用时,数值类型默认都是带符号的,要表示一个数值类型无符号,只需在该类型后加 unsigned 即可,如以下用无符号 TINYINT 类型表示年龄:

age tinyint unsigned

4.1.1 整数类型

根据数值取值范围的不同,MySQL 中的整数类型可分为5种,分别是 TINYINT、SMALUNT、MEDIUMINT、INT 和 BIGINT,其中最常见的即为 INT 类型。

数据类型 字节数 无符号数的取值范围 带符号数的取值范围 描述
TINYINT 1 0~255 -128~127 小整数值
SMALLINT 2 0~65535 -32768~32768 大整数值
MEDIUMINT 3 0~16777215 -8388608~8388608 大整数值
INT(INTEGER) 4 0~4294967295 -2147483648~ 2147483648 大整数值
BIGINT 8 0~18446744073709551615 -9223372036854775808~9223372036854775808 极大整数值

4.1.2 浮点数、定点数类型

在MySQL数据库中使用浮点数和定点数来存储小数,浮点数的类型有两种:单精度浮点数类型(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

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

4.2 字符串类型

MySQL 中的字符串类型有以下几种,其中常用的是 CHAR 和 VARCHAR。

数据类型 储存范围 用途
CHAR 0~255 定长字符串
VARCHAR 0~65535 变长字符串
TINYBLOB 0~255 不超过255个字符的二进制字符串
TINYTEXT 0~255 短文本字符串
BLOB 0~65535 二进制形式的长文本数据
TEXT 0~65535 长文本数据
MEDIUMBLOB 0~16777215 二进制形式的中等长度文本数据
MEDIUMTEXT 0~16777215 中等长度文本数据
LONGBLOB 0~4294967295 二进制形式的极大文本数据
LONGTEXT 0~4294967295 极大文本数据

对于 CHAR 类型和 VARCHAR 类型,CHAR 存储定长的字符串,VARCHAR 存储可变长度的字符串,两者的应用也有区别。

CHAR 类型数据所占空间是固定的,当数据为 CHAR(m) 类型时,不管插入值的长度是实际是多少它所占用的存储空间都是m个字节,因此 CHAR 类型适合用于数据长度固定的场景,比如性别、用户ID等;

VARCHAR 类型数据所占空间是随实际数据长度变化的,当数据为VARCHAR(m) 时,所对应的数据所占用的字节数为实际长度加1,因此 VARCHAR 类型用于表示大文本数据,例如,文章内容、评论、详情等。

4.3 日期与时间类型

MySQL提供的表示日期和时间的数据类型分别是 :YEAR、DATE、TIME、DATETIME 和 TIMESTAMP。在SQL语句中使用日期常量时,必须用英文的单引号或双引号引起来,否则执行结果不正确:

数据类型 字节数 取值范围 日期格式 零值
YEAR 1 1901~2155 YYYY 0000
DATE 3 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

其中,YEAR 类型表示年份值;DATE 类型表示日期值;TIME 类型表示时间值或持续时间;DATETIME 类型表示混合日期和时间值;TIMESTAMP 类型表示混合日期和时间值,即时间戳。

4.4 二进制类型

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

数据类型 储存范围
TINYBLOB 0~255
BLOB 0~65535
MEDIUMBLOB 0~16777215
LONGBLOB 0~4294967295
posted @ 2024-02-16 00:19  luomocn  阅读(63)  评论(0)    收藏  举报