mysql从入门到精通

发布于:2024-07-03 ⋅ 阅读:(15) ⋅ 点赞:(0)

一.MySQL基础知识

1. 介绍MySQL:了解MySQL是什么,其特点和优势。

1.1 开源免费:MySQL 是开源软件,可以免费使用。同时,MySQL 也有企业版提供商用许可。
1.2 关系型数据库:MySQL 是一种关系型数据库管理系统,数据存储在表格中,并且表格之间可以建立关系。
1.3 多平台支持:MySQL 可以运行在多种操作系统上,包括 Windows、Linux、Mac OS 等。
1.4 高性能:MySQL 具有优秀的性能,能够处理大规模的数据集和高并发的请求。
1.5 易用性:MySQL 的语法简单易懂,易于学习和使用,适合初学者和专业人士。
1.6 标准化:MySQL 遵循 SQL 标准,支持广泛的 SQL 功能和语法。
1.7 数据安全:MySQL 提供了多种安全功能,如用户权限管理、数据加密等,确保数据的安全性。
1.8 扩展性:MySQL 支持可扩展性,在需求增长时可以轻松扩展服务器和数据。
1.9 存储过程和触发器:MySQL 支持存储过程和触发器,可以在数据库端执行一系列操作。
1.10 复制和集群:MySQL 支持主从复制和集群部署,可以提高系统的可用性和性能。
1.11社区支持:MySQL 拥有庞大的开源社区,提供了丰富的文档、教程和支持资源。
MySQL 被广泛应用于 Web 开发、企业应用、移动应用等领域,是许多流行的网站和应用程序的首选数据库系统之一。MySQL 的灵活性、性能和可靠性使其成为许多开发者和企业的首选数据库管理系统之一。

2. 数据库基础概念:数据库、表、字段、数据类型等基本概念。

2.1 数据库(Database)

数据库是一个结构化的数据集合,通常以表的形式组织和存储数据,以便于有效地访问、管理和更新。数据库可以被视为一个电子化的文件柜或数据仓库,用于存储有组织的数据。

  • 关系型数据库(RDBMS):数据库中的数据以表格的形式存储,表格由行和列组成,其中每一行称为记录(或数据行),每一列称为字段(或数据项)。
  • 非关系型数据库:与关系型数据库不同,非关系型数据库采用更灵活的数据模型,如文档型、键值对型、列存储型等。

2.2 表(Table)

表是数据库中数据的结构化表示,由行(记录)和列(字段)组成。

  • 行(Row):表中的每一行代表一个记录,包含一组相关的数据。
  • 列(Column):表中的每一列代表一个数据字段,定义了记录中存储的特定信息类型。

2.3 字段(Field)

字段是表中的一个单元格,用于存储表中每个记录的特定数据类型。

  • 字段名:每个字段都有一个唯一的名称,用于标识字段在表中的位置和含义。
  • 数据类型:每个字段都具有特定的数据类型,如整数、字符、日期等,用于定义字段可以存储的数据格式和范围。

2.4 数据类型(Data Types)

数据类型定义了字段可以存储的数据类型和范围。不同的数据库管理系统支持不同的数据类型,但通常包括以下几类:

2.4.1整数类型

存储整数值,如INT、BIGINT、SMALLINT等。

数据类型 所属类型 字节数 无符号数的取值范围 有符号数的取值范围
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

此外还有下面的这些字符串类型,用于表示大文本数据,例如,文章内容、评论、详情等。

类型 描述 大小
TINYTEXT 短文本字符串,最多255个字符 0 - 255 字节
TEXT 文本字符串,最多65535个字符 0 - 65535 字节
MEDIUMTEXT 中等长度文本字符串,最多16777215个字符 0 - 16777215 字节
LONGTEXT 长文本字符串,最多4294967295个字符 0 - 4294967295 字节
BINARY(n) 固定长度的二进制字符串,最多255个字节 0 - 255 字节
VARBINARY(n) 变长二进制字符串,最多65535个字节 0 - 65532 字节
TINYBLOB 短二进制数据,最多255个字节。 0 - 255 字节
BLOB 二进制数据,最多65535个字节。 0 - 65535 字节
MEDIUMBLOB 中等长度二进制数据,最多16777215个字节 0 - 16777215 字节
LONGBLOB 长二进制数据,最多4294967295个字节 0 - 4294967295 字节
2.4. 2浮点数类型

存储带有小数点的数值,如FLOAT、DOUBLE等。

数据类型 所属类型 字节数 无符号数的取值范围 有符号数的取值范围
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.2250738585072014E308~1.7976931348623157E+308
DECIMAL(M,D 浮点数 M+2 -1.7976931348623157E+308~2.2250738585072014E-308 0和2.2250738585072014E-308~1.7976931348623157E+308
2.4.2 字符类型

在MySQL中常用CHAR 和 VARCHAR 表示字符串,存储字符和字符串,如CHAR、VARCHAR等。

数据类型 描述 存储长度 适用场景和特点
CHAR(n) 定长字符串 n 字符 - 存储固定长度的字符串
VARCHAR(n) 可变长度字符串 取决于数据长度,存储可变长度的字符串,最多可以存储 n 个字符 实际占用的存储空间取决于实际存储的字符串长度,效率较高。适合存储长度不固定的文本数据,如用户名、地址、备注等
2.4.3 日期和时间类型

存储日期、时间或日期时间数据,如DATE、TIME、DATETIME等。

类型 描述 格式 范围 大小
DATE 日期,格式为 ‘YYYY-MM-DD’。 ‘1000-01-01’ 到 ‘9999-12-31’ 3 字节
TIME 时间,格式为 ‘HH:MM:SS’。 ‘-838:59:59’ 到 ‘838:59:59’ 3 字节
DATETIME 日期和时间,格式为 ‘YYYY-MM-DD HH:MM:SS’。 ‘1000-01-01 00:00:00’ 到 ‘9999-12-31 23:59:59’ 8 字节
TIMESTAMP 时间戳,自1970年1月1日起的秒数(UNIX时间戳),UTC时区。 ‘1970-01-01 00:00:01’ 到 ‘2038-01-19 03:14:07’ 4 字节
YEAR 年份,格式为 ‘YYYY’。 1901 到 2155 1 字节
2.4.4 二进制类型

MySQL中的二进制类型主要用于存储二进制数据,例如图片、音频、视频等。以下是MySQL中常见的二进制类型及其描述:

类型 描述 范围和大小
BINARY(n) 固定长度的二进制字符串,最多255个字节。 0 到 255 字节
VARBINARY(n) 变长二进制字符串,最多65535个字节。 0 到 65532 字节
TINYBLOB 短二进制数据,最多255个字节。 0 到 255 字节
BLOB 二进制数据,最多65535个字节。 0 到 65535 字节
MEDIUMBLOB 中等长度二进制数据,最多16777215个字节。 0 到 16777215 字节
LONGBLOB 长二进制数据,最多4294967295个字节。 0 到 4294967295 字节
2.4.5其他类型

除了字符串、日期时间和二进制类型外,MySQL还支持其他几种重要的数据类型:

  1. 数值类型:包括整数(如INT、BIGINT)和浮点数(如FLOAT、DOUBLE),用于存储数值数据。整数类型适合存储整数值,而浮点数类型适合存储带有小数点的数值。
  2. 布尔类型:MySQL支持BOOLEAN类型,尽管它本质上被解释为TINYINT(1)。用于存储逻辑值,可以是TRUE或FALSE。
  3. 枚举类型:ENUM类型允许将数据存储为预定义的字符串值列表中的一个。它适合存储仅限于有限选项的数据,例如性别或状态。
  4. 集合类型:SET类型也类似于ENUM,但允许存储多个预定义字符串值中的一个或多个组合。适合于具有多个选项的数据,但每个实例可能具有不同的组合。
  5. 空间数据类型:MySQL支持用于存储和处理空间数据的空间数据类型,例如点、线、多边形等,通过SPATIAL索引可以进行高效的空间查询。

3 数据库语句的基本操作

SQL语句可以执行各种操作,包括数据查询、插入、更新和删除等。以下是SQL中常见的基本操作示例:

3.1. 查询数据

SELECT column1, column2, ...
FROM table_name
WHERE condition;

示例:

SELECT * FROM users WHERE age > 25;

3.2 插入数据

INSERT INTO table_name (column1, column2, ...)
VALUES (value1, value2, ...);

示例:

INSERT INTO users (name, age, email) VALUES ('John Doe', 30, 'john.doe@example.com');

3.3 更新数据

UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;

示例:

UPDATE users SET age = 31 WHERE name = 'John Doe';

3.4 删除数据

DELETE FROM table_name
WHERE condition;

示例:

DELETE FROM users WHERE id = 1;

3.5 创建表

   CREATE TABLE table_name (
       column1 datatype constraints,
       column2 datatype constraints,
       ...
   );

示例:

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50) NOT NULL,
    age INT,
    email VARCHAR(100)
);

3.6 修改表结构

ALTER TABLE table_name
ADD column_name datatype constraints;

示例:

ALTER TABLE users
ADD phone VARCHAR(20);

3.7 删除表

DROP TABLE table_name;

示例:

DROP TABLE users;

这些是SQL中最基本和常见的操作,用于管理数据库中的数据和表结构。

4 数据表的约束关系

当涉及到数据库设计时,约束是定义在表列级别的规则,用于限制数据的类型、值范围和关系。以下是常见的数据库约束及其简要描述:

约束类型 描述
NOT NULL 确保列中的值不为空值。
UNIQUE 确保列中的所有值是唯一的(不允许重复)。
PRIMARY KEY 结合UNIQUENOT NULL约束,用于唯一标识表中的每一行。
FOREIGN KEY 用于建立表与表之间的关系,确保外键列的值必须来自于另一表的主键或唯一键。
CHECK 定义在列级别的条件,确保列中的值满足特定的条件。
DEFAULT 在没有指定值时,为列设置默认值。

示例

  • NOT NULL

    CREATE TABLE users (
        id INT PRIMARY KEY,
        username VARCHAR(50) NOT NULL,
        email VARCHAR(100) NOT NULL
    );
    
  • UNIQUE

    CREATE TABLE products (
        product_id INT PRIMARY KEY,
        product_name VARCHAR(50) UNIQUE,
        price DECIMAL(10, 2)
    );
    
  • PRIMARY KEY

    CREATE TABLE orders (
        order_id INT PRIMARY KEY,
        customer_id INT,
        order_date DATE,
        FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
    );
    
  • FOREIGN KEY

    CREATE TABLE order_details (
        order_detail_id INT PRIMARY KEY,
        order_id INT,
        product_id INT,
        quantity INT,
        FOREIGN KEY (order_id) REFERENCES orders(order_id),
        FOREIGN KEY (product_id) REFERENCES products(product_id)
    );
    
  • CHECK

    CREATE TABLE employees (
        employee_id INT PRIMARY KEY,
        employee_name VARCHAR(100),
        salary DECIMAL(10, 2) CHECK (salary > 0)
    );
    
  • DEFAULT

    CREATE TABLE customers (
        customer_id INT PRIMARY KEY,
        customer_name VARCHAR(100),
        membership_level VARCHAR(20) DEFAULT 'Standard'
    );
    

这些约束能够确保数据库中的数据完整性和一致性,使得数据库设计更加健壮和可靠。

2. MySQL安装和配置:如何下载、安装和配置MySQL数据库。

4. 连接MySQL:通过命令行或图形化工具连接到MySQL数据库。

二.MySQL查询和操作数据**

  1. 创建数据库和表:学习如何创建数据库和表格结构。
  2. 插入数据:向数据库表中插入数据。
  3. 查询数据:使用SELECT语句查询数据库中的数据。
  4. 更新和删除数据:学习如何更新和删除数据库中的数据。
  5. 过滤和排序数据:使用WHERE和ORDER BY子句过滤和排序数据。

三.MySQL高级功能和优化**

  1. 索引:了解索引的作用和不同类型的索引。
  2. 数据完整性与约束:学习如何使用约束保证数据完整性。
  3. 数据库事务:介绍事务的概念和如何管理事务。
  4. 查询优化:优化查询语句的性能,避免慢查询。

四.MySQL管理和备份**

  1. 用户管理:创建用户、分配权限和管理用户账号。
  2. 数据库备份与恢复:如何定期备份数据库,并在需要时恢复数据。
  3. 数据库维护:优化数据库表格、重建索引等数据库维护操作。

五.MySQL安全和扩展**

  1. 数据库安全:保护数据库免受恶意攻击,设置权限和加密数据等。
  2. 数据库扩展:处理大规模数据和高并发访问,分库分表等数据库扩展技术。