MySQL学习知识点(一)

简介: 教程来源 https://app-ac8abncezqpt.appmiaoda.com MySQL核心知识,涵盖基础概念、安装配置、SQL命令、数据类型(数值/字符串/日期/JSON)、表操作(建删改查、索引、引擎)等,兼顾初学者入门与DBA进阶需求。

MySQL 作为全球最受欢迎的开源关系型数据库管理系统,凭借其高性能、可靠性、易用性,成为 Web 开发、企业应用、大数据处理等领域的基础设施。本文将系统全面地梳理 MySQL 的核心知识点,从基础概念到高级特性,帮助初学者建立完整的知识体系,也为有经验的 DBA 和开发者提供深入的技术参考。
f703fe06-d166-4d2f-95af-620ceb4d35fc.png

一、MySQL 基础

1.1 数据库基本概念
数据库(Database):按照数据结构组织、存储和管理数据的仓库。

关系型数据库:基于关系模型,使用表(Table)来存储数据,通过 SQL 进行操作。

核心术语:

表(Table):数据的二维结构,由行和列组成

行(Row):也称为记录,代表一条完整的数据

列(Column):也称为字段,代表数据的某个属性

主键(Primary Key):唯一标识每条记录的字段

外键(Foreign Key):关联其他表主键的字段

索引(Index):提高查询效率的数据结构

1.2 MySQL 安装与配置
Windows 安装:

# 下载 MySQL Installer
# 选择 Developer Default 安装类型
# 设置 root 密码
# 配置环境变量

Linux 安装(Ubuntu):

# 更新包管理器
sudo apt update

# 安装 MySQL
sudo apt install mysql-server

# 安全配置
sudo mysql_secure_installation

# 启动服务
sudo systemctl start mysql
sudo systemctl enable mysql

# 登录
mysql -u root -p

macOS 安装:

# 使用 Homebrew
brew install mysql

# 启动服务
brew services start mysql

# 登录
mysql -u root

1.3 基本操作命令

-- 查看所有数据库
SHOW DATABASES;

-- 创建数据库
CREATE DATABASE mydb;
CREATE DATABASE IF NOT EXISTS mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- 使用数据库
USE mydb;

-- 查看当前数据库
SELECT DATABASE();

-- 删除数据库
DROP DATABASE mydb;
DROP DATABASE IF EXISTS mydb;

-- 查看所有表
SHOW TABLES;

-- 查看表结构
DESC users;
DESCRIBE users;
SHOW COLUMNS FROM users;

-- 查看建表语句
SHOW CREATE TABLE users;

二、数据类型

2.1 数值类型
image.png

-- 使用示例
CREATE TABLE products (
    id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    price DECIMAL(10, 2) NOT NULL,  -- 10位总长度,2位小数
    quantity INT DEFAULT 0,
    status TINYINT DEFAULT 1 COMMENT '1:上架 0:下架'
);

2.2 字符串类型
image.png

CREATE TABLE articles (
    title VARCHAR(200) NOT NULL,
    content LONGTEXT,
    status ENUM('draft', 'published', 'archived') DEFAULT 'draft',
    tags SET('tech', 'life', 'sports', 'music')
);

2.3 日期时间类型

image.png

CREATE TABLE logs (
    id INT PRIMARY KEY,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    log_date DATE,
    log_time TIME
);

-- 常用函数
SELECT NOW();           -- 当前日期时间
SELECT CURDATE();       -- 当前日期
SELECT CURTIME();       -- 当前时间
SELECT UNIX_TIMESTAMP(); -- Unix 时间戳
SELECT FROM_UNIXTIME(1234567890); -- 时间戳转日期

2.4 JSON 类型(MySQL 5.7+)

-- 创建 JSON 字段
CREATE TABLE users (
    id INT PRIMARY KEY,
    name VARCHAR(50),
    profile JSON
);

-- 插入 JSON 数据
INSERT INTO users VALUES (1, '张三', '{"age": 25, "city": "北京", "hobbies": ["reading", "coding"]}');

-- JSON 函数
SELECT JSON_EXTRACT(profile, '$.age') FROM users;
SELECT profile->'$.age' FROM users;                    -- 简写
SELECT profile->>'$.city' FROM users;                  -- 去除引号

-- 修改 JSON
UPDATE users SET profile = JSON_SET(profile, '$.age', 26) WHERE id = 1;
UPDATE users SET profile = JSON_INSERT(profile, '$.email', 'zhang@example.com');
UPDATE users SET profile = JSON_REMOVE(profile, '$.hobbies[0]');

三、表操作

3.1 创建表

-- 基本创建
CREATE TABLE users (
    id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL UNIQUE,
    email VARCHAR(100) NOT NULL UNIQUE,
    password VARCHAR(255) NOT NULL,
    age TINYINT UNSIGNED,
    gender ENUM('male', 'female', 'other') DEFAULT 'other',
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    INDEX idx_username (username),
    INDEX idx_created (created_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- 使用 SELECT 创建表(复制表结构)
CREATE TABLE users_backup LIKE users;
CREATE TABLE users_copy AS SELECT * FROM users WHERE 1=0; -- 只复制结构

-- 创建临时表
CREATE TEMPORARY TABLE temp_users SELECT * FROM users WHERE age > 18;

3.2 修改表

-- 添加列
ALTER TABLE users ADD COLUMN phone VARCHAR(20) AFTER email;
ALTER TABLE users ADD COLUMN address TEXT;

-- 修改列
ALTER TABLE users MODIFY COLUMN phone VARCHAR(15);
ALTER TABLE users CHANGE COLUMN phone mobile VARCHAR(20);
ALTER TABLE users ALTER COLUMN age SET DEFAULT 18;

-- 删除列
ALTER TABLE users DROP COLUMN address;

-- 重命名表
RENAME TABLE users TO members;
ALTER TABLE members RENAME TO users;

-- 添加索引
ALTER TABLE users ADD INDEX idx_email (email);
ALTER TABLE users ADD UNIQUE INDEX idx_username (username);
ALTER TABLE users ADD FULLTEXT INDEX idx_content (content);

-- 删除索引
ALTER TABLE users DROP INDEX idx_email;

-- 修改存储引擎
ALTER TABLE users ENGINE=InnoDB;

3.3 删除表

-- 删除表
DROP TABLE IF EXISTS users_backup;

-- 清空表(重置 AUTO_INCREMENT)
TRUNCATE TABLE users_temp;

-- TRUNCATE vs DELETE
-- TRUNCATE: 快速清空,不记录日志,重置自增,不可回滚
-- DELETE: 逐行删除,记录日志,可回滚

来源:
https://app-ac8abncezqpt.appmiaoda.com

相关文章
|
2天前
|
SQL 运维 监控
MySQL学习知识点(终)
教程来源 https://app-adtysnu98v0h.appmiaoda.com MySQL核心运维技能:涵盖性能监控(状态变量、慢日志、Performance Schema)、高可用架构(主从/主主复制、读写分离、分区表)、安全实践(防SQL注入、SSL/TLS加密、审计日志)及故障排查(连接、性能、数据恢复),助力高效稳定运维。
|
1月前
|
存储 Web App开发 缓存
C盘清理终极指南:从“红色警报”到“空间自由”的实战攻略
本合集提供高效C盘清理与系统优化全攻略:涵盖回收站/临时文件清理、Windows更新残留删除、休眠/虚拟内存精简、微信/浏览器/PS等软件专项瘦身,以及分区扩容、系统迁移等终极方案,助你5分钟释放5GB、20分钟腾出20GB,告别空间焦虑!
2498 2
|
10天前
|
人工智能 Linux API
从0到130个龙虾AI员工!OpenClaw企微落地全流程(阿里云+本地部署+API配置+避坑实录)
2026年,AI协作的终极形态已从“单点工具”进化为“规模化AI员工军团”。当多数人还在纠结单Agent的功能调试时,已有先行者通过OpenClaw+The Agency在企微生态中搭建起130个AI员工团队——覆盖客户服务、内容创作、数据分析、项目管理等全场景,实现7×24小时无间断协作。OpenClaw作为核心基座,凭借其极速迭代的特性(2026年3月13日刚发布v2026.3.13版本,优化移动端布局与浏览器自动化能力),成为规模化AI部署的首选工具。
429 5
|
10天前
|
算法 Java 关系型数据库
JVM GC 深度破局:G1 与 ZGC 底层原理、生产调优全链路实战
本文深度解析JDK17主流GC:G1(默认,兼顾吞吐与延迟)与ZGC(革命性低延迟,STW<1ms)。涵盖核心理论(可达性分析、三色标记)、内存布局、全流程机制(SATB写屏障 vs 染色指针+读屏障)、关键参数调优及生产选型指南,助你精准定位性能瓶颈,高效优化JVM。
276 4
|
13天前
|
Rust 中间件 API
BustAPI:当 Python 遇上 Rust,Web 框架也能“起飞“
BustAPI 是融合 Python 易用性与 Rust 高性能的 Web 框架:基于 PyO3 封装 Actix-Web,保留 Flask 风格语法,请求性能提升 10–50 倍;支持自动文档、类型校验、异步、中间件等生产级功能,迁移零成本,部署极简——让 Python 服务轻松应对高并发。
|
13天前
|
人工智能 安全 API
从零到一玩转 OpenClaw:1分钟部署、阿里云百炼API配置与 Skills 拓展及问题解答
OpenClaw(前身为Clawdbot、Moltbot)作为2026年热门的开源AI自动化工具,凭借自然语言驱动、多场景适配的核心优势,在个人办公与中小企业协同中得到广泛应用。很多用户部署后发现其仅能满足基础交互需求,核心原因在于未配置针对性的Skills(技能插件)。本文将完整覆盖本地多系统(MacOS/Linux/Windows11)部署、阿里云云端部署、阿里云百炼API配置、Skills安装与分类推荐、常见问题排查等核心内容,所有操作步骤均经过实测验证,代码可直接复制使用,帮助用户快速搭建功能完善的OpenClaw环境。
341 4
|
13天前
|
人工智能 监控 Java
Java接入AI大模型:适配与稳定调用实践指南
本文聚焦Java企业接入AI大模型的核心痛点——多模型统一适配难、生产调用不稳定,提出分层架构与工程化解决方案,并介绍JBoltAI框架如何通过标准化接口、异步容错、动态路由等能力,助力Java团队高效、可靠地落地AI应用。(239字)
105 2
|
1月前
|
存储 弹性计算 人工智能
挖到宝了!阿里云服务器38元一年,2核2G、200M峰值带宽、40G系统盘,不限流量超划算
2026年阿里云服务器低价攻略:新用户轻量服务器2核2G仅38元/年(200M带宽+40G SSD),ECS普惠款99元起;推荐多年付享3折、叠加秒杀/券/组合购,个人省80%、企业省40%+。避坑关键:勿原价购、慎选按量付费、按需配置。
|
1月前
|
JavaScript 前端开发
如何在Vite创建的Vue项目中全局注入SCSS变量/混合器?
如何在Vite创建的Vue项目中全局注入SCSS变量/混合器?
380 158
|
10天前
|
人工智能 自然语言处理 算法
智变之下:AI对金融行业的颠覆性冲击
随着人工智能技术进入规模化落地阶段,其对各行业的重构力度持续升级。在众多受影响行业中,金融行业凭借其标准化、数据驱动的特性,成为AI冲击力最强的领域。本文从业务流程、岗位结构、产业模式三个维度,结合AI在风控、服务、运营等场景的应用案例,剖析AI对金融行业的颠覆性影响,同时探讨冲击背后的行业转型机遇与挑战,论证金融行业是AI发展冲击最深远、最彻底的行业,其变革不仅重塑行业格局,更推动金融服务向更高效、精准、普惠的方向迭代。

热门文章

最新文章