一、MySQL概述
MYSQL(全称为MySQL Database Management System)是一个开源的关系型数据库管理系统,广泛用于各种Web应用程序和服务器环境中。以下是MYSQL的详细介绍:
1. 数据模型:MYSQL是基于关系模型的数据库管理系统,使用表格来组织和存储数据。每个表都由列(字段)和行(记录)组成,通过建立表之间的关系来实现数据的关联和查询。
2. 数据语言:MYSQL使用SQL(Structured Query Language)作为其查询和操作语言。SQL是一种简单易学的语言,用于创建、修改和查询数据库中的表格和数据。通过SQL,用户可以执行诸如插入、更新、删除和查询数据的操作。
3. 性能和可扩展性:MYSQL被广泛认为是高性能和高可扩展性的数据库系统。它通过采用各种技术和优化策略来提高查询和操作的执行效率,包括索引、查询优化器、缓存机制等。此外,MYSQL还支持数据的分区和复制,以支持大规模数据处理和高并发访问。
4. 平台和编程语言支持:MYSQL可在多个操作系统平台上运行,包括Windows、Linux、Unix和Mac OS等。它提供了多种编程语言的API,如PHP、Java、Python等,使得开发人员可以使用自己熟悉的编程语言与MYSQL进行交互。
5. 高级功能:MYSQL提供了许多高级功能,以满足各种数据库需求。这些功能包括事务处理,用于保证数据的一致性和完整性;存储过程和触发器,用于定义和执行复杂的数据库逻辑;视图,用于简化数据查询和访问控制等。
6. 开源社区支持:MYSQL是一种开源软件,具有活跃的开源社区支持。这意味着开发人员可以访问和修改MYSQL的源代码,以满足特定需求和解决问题。开源社区也提供了大量的文档、教程和支持资源,帮助开发人员更好地理解和使用MYSQL。
总体而言,MYSQL作为一种流行的关系型数据库管理系统,具有高性能、可靠性和易于使用的特点。它在广泛的应用程序和环境中得到了验证,并且积极地发展和演化,以满足不断变化的数据库需求。
二、SQL介绍
SQL:全称 Structured Query Language,结构化查询语言。操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准 。
1、SQL通用语法
1). SQL语句可以单行或多行书写,以分号结尾。
2). SQL语句可以使用空格/缩进来增强语句的可读性。
3). MySQL数据库的SQL语句关键字不区分大小写。
4). 注释:- 单行注释:-- 注释内容 或 # 注释内容
- 多行注释:/* 注释内容 */
2、SQL语句的分类
分类 | 全称 | 说明 |
DDL | Data Definition Language | 数据定义语言,用来定义数据库对象(数据库,表,字段) |
DML | Data Manipulation Language | 数据操作语言,用来对数据库表中的数据进行增删改 |
DQL | Data Query Language | 数据查询语言,用来查询数据库中表的记录 |
DCL | Data Control Language | 数据控制语言,用来创建数据库用户、控制数据库的访问权限 |
3、数据库设计-DDL表操作
1.语法及约束
语法
create table 表名(
字段1 字段1类型 [约束] [comment 字段1注释 ],
字段2 字段2类型 [约束] [comment 字段2注释 ],
字段3 字段3类型 [约束] [comment 字段3注释 ],
......
字段n 字段n类型 [约束] [comment 字段n注释 ]
) [ comment 表注释 ] ;
2.约束
概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据。
目的:保证数据库中数据的正确、有效性和完整性。
分类:
约束 | 描述 | 关键字 |
非空约束 | 限制该字段的数据不能为null | NOT NULL |
唯一约束 | 保证该字段的所有数据都是唯一、不重复的 | UNIQUE |
主键约束 | 主键是一行数据的唯一标识,要求非空且唯一 | PRIMARY KEY |
默认约束 | 保存数据时,如果未指定该字段的值,则采用默认值 | DEFAULT |
外键约束 | 用来让两张表的数据之间建立连接,保证数据的一致性和完整性 | FOREIGN KEY |
注意:约束是作用于表中字段上的,可以在创建表/修改表的时候添加约束。
4、数据类型
主要分为三类:数值类型、字符串类型、日期时间类型。
1). 数值类型
类型 | 大小 | 有符号(SIGNED)范围 | 无符号(UNSIGNED)范围 | 描述 |
TINYINT | 1byte | (-128,127) | (0,255) | 小整数值 |
SMALLINT | 2bytes | (-32768,32767) | (0,65535) | 大整数值 |
MEDIUMINT | 3bytes | (-8388608,8388607) | (0,16777215) | 大整数值 |
INT/INTEGER | 4bytes | (-2147483648,2147483647) | (0,4294967295) | 大整数值 |
BIGINT | 8bytes | (-263,263-1) | (0,2^64-1) | 极大整数值 |
FLOAT | 4bytes | (-3.402823466 E+38,3.402823466351 E+38) | 0 和 (1.175494351 E-38,3.402823466 E+38) | 单精度浮点数值 |
DOUBLE | 8bytes | (-1.7976931348623157 E+308,1.7976931348623157 E+308) | 0 和 (2.2250738585072014 E-308,1.7976931348623157 E+308) | 双精度浮点数值 |
DECIMAL | 依赖于M(精度)和D(标度)的值 | 依赖于M(精度)和D(标度)的值 | 小数值(精确定点数) |
2). 字符串类型
类型 | 大小 | 描述 |
CHAR | 0-255 bytes | 定长字符串(需要指定长度) |
VARCHAR | 0-65535 bytes | 变长字符串(需要指定长度) |
TINYBLOB | 0-255 bytes | 不超过255个字符的二进制数据 |
TINYTEXT | 0-255 bytes | 短文本字符串 |
BLOB | 0-65 535 bytes | 二进制形式的长文本数据 |
TEXT | 0-65 535 bytes | 长文本数据 |
MEDIUMBLOB | 0-16 777 215 bytes | 二进制形式的中等长度文本数据 |
MEDIUMTEXT | 0-16 777 215 bytes | 中等长度文本数据 |
LONGBLOB | 0-4 294 967 295 bytes | 二进制形式的极大文本数据 |
LONGTEXT | 0-4 294 967 295 bytes | 极大文本数据 |
3). 日期时间类型
类型 | 大小 | 范围 | 格式 | 描述 |
DATE | 3 | 1000-01-01 至 9999-12-31 | YYYY-MM-DD | 日期值 |
TIME | 3 | -838:59:59 至 838:59:59 | HH:MM:SS | 时间值或持续时间 |
YEAR | 1 | 1901 至 2155 | YYYY | 年份值 |
DATETIME | 8 | 1000-01-01 00:00:00 至 9999-12-31 23:59:59 | YYYY-MM-DD HH:MM:SS | 混合日期和时间值 |
TIMESTAMP | 4 | 1970-01-01 00:00:01 至 2038-01-19 03:14:07 | YYYY-MM-DD HH:MM:SS | 混合日期和时间值,时间戳 |