MySQL 语法与基础完全指南

MySQL 是最流行的开源关系型数据库管理系统之一,广泛应用于 Web 应用程序开发。本文将全面介绍 MySQL 的基础知识和完整语法结构。

一、MySQL 基础概念

1. 数据库基本术语

  • 数据库(Database): 存储数据的集合

  • 表(Table): 数据以表格形式组织

  • 列(Column): 表中的一个字段

  • 行(Row): 表中的一条记录

  • 主键(Primary Key): 唯一标识表中每一行的列

  • 外键(Foreign Key): 建立表之间关系的列

2. MySQL 数据类型

数值类型

TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT
FLOAT, DOUBLE
DECIMAL(M,D) - 精确小数

字符串类型

CHAR(M) - 固定长度
VARCHAR(M) - 可变长度
TEXT - 长文本
BLOB - 二进制数据

日期时间类型

DATE - YYYY-MM-DD
TIME - HH:MM:SS
DATETIME - YYYY-MM-DD HH:MM:SS
TIMESTAMP - 时间戳
YEAR - 年份

二、数据库操作

1. 创建数据库

CREATE DATABASE database_name;
CREATE DATABASE IF NOT EXISTS database_name;

2. 选择数据库

USE database_name;

3. 删除数据库

DROP DATABASE database_name;
DROP DATABASE IF EXISTS database_name;

4. 查看数据库

SHOW DATABASES;

三、表操作

1. 创建表

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

示例:
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
email VARCHAR(100) UNIQUE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
is_active BOOLEAN DEFAULT TRUE
);

2. 查看表结构

DESCRIBE table_name;
DESC table_name; -- 简写
SHOW COLUMNS FROM table_name;

3. 修改表

添加列

ALTER TABLE table_name
ADD column_name datatype constraints;

修改列

ALTER TABLE table_name
MODIFY COLUMN column_name new_datatype new_constraints;

删除列

ALTER TABLE table_name
DROP COLUMN column_name;

重命名表

RENAME TABLE old_name TO new_name;
ALTER TABLE old_name RENAME TO new_name;

4. 删除表

DROP TABLE table_name;
DROP TABLE IF EXISTS table_name;

5. 查看所有表

SHOW TABLES;

四、数据操作语言(DML)

1. 插入数据

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

多行插入:
INSERT INTO table_name (column1, column2, ...)
VALUES
(value1, value2, ...),
(value1, value2, ...),
...;

2. 查询数据

基本查询:
SELECT column1, column2, ...
FROM table_name;

查询所有列:
SELECT * FROM table_name;

条件查询:
SELECT column1, column2, ...
FROM table_name
WHERE condition;

3. 更新数据

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

4. 删除数据

DELETE FROM table_name WHERE condition;

删除所有数据但保留表结构:
DELETE FROM table_name;

TRUNCATE TABLE table_name;

五、数据查询进阶

1. 排序

SELECT column1, column2, ...
FROM table_name
ORDER BY column1 [ASC|DESC], column2 [ASC|DESC], ...;

2. 限制结果

SELECT column1, column2, ...
FROM table_name
LIMIT number;

分页查询:
SELECT column1, column2, ...
FROM table_name
LIMIT offset, count;

3. 去重

SELECT DISTINCT column1, column2, ...
FROM table_name;

4. 聚合函数

COUNT(), SUM(), AVG(), MAX(), MIN()

示例:
SELECT COUNT(*) FROM table_name;
SELECT AVG(price) FROM products;

5. 分组

SELECT column1, aggregate_function(column2)
FROM table_name
GROUP BY column1;

6. 过滤分组

SELECT column1, aggregate_function(column2)
FROM table_name
GROUP BY column1
HAVING condition;

7. 连接查询

内连接

SELECT a.column1, b.column2
FROM table1 a
INNER JOIN table2 b ON a.common_field = b.common_field;

左连接

SELECT a.column1, b.column2
FROM table1 a
LEFT JOIN table2 b ON a.common_field = b.common_field;

右连接

SELECT a.column1, b.column2
FROM table1 a
RIGHT JOIN table2 b ON a.common_field = b.common_field;

全连接

SELECT a.column1, b.column2
FROM table1 a
FULL JOIN table2 b ON a.common_field = b.common_field;

8. 子查询

SELECT column1, column2
FROM table1
WHERE column1 IN (SELECT column1 FROM table2 WHERE condition);

六、约束

1. 主键约束

CREATE TABLE table_name (
id INT PRIMARY KEY,
...
);


CREATE TABLE table_name (
id INT,
...,
PRIMARY KEY (id)
);

2. 外键约束

CREATE TABLE orders (
order_id INT PRIMARY KEY,
customer_id INT,
...,
FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
);

3. 唯一约束

CREATE TABLE table_name (
email VARCHAR(100) UNIQUE,
...
);

4. 非空约束

CREATE TABLE table_name (
username VARCHAR(50) NOT NULL,
...
);

5. 默认值

CREATE TABLE table_name (
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
...
);

6. 检查约束

CREATE TABLE table_name (
age INT CHECK (age >= 18),
...
);

七、索引

1. 创建索引

CREATE INDEX index_name
ON table_name (column1, column2, ...);

2. 唯一索引

CREATE UNIQUE INDEX index_name
ON table_name (column_name);

3. 删除索引

DROP INDEX index_name ON table_name;

八、视图

1. 创建视图

CREATE VIEW view_name AS
SELECT column1, column2, ...
FROM table_name
WHERE condition;

2. 使用视图

SELECT * FROM view_name;

3. 修改视图

ALTER VIEW view_name AS
SELECT column1, column2, ...
FROM table_name
WHERE new_condition;

4. 删除视图

DROP VIEW IF EXISTS view_name;

九、存储过程和函数

1. 创建存储过程

DELIMITER //
CREATE PROCEDURE procedure_name(parameters)
BEGIN
-- SQL语句
END //
DELIMITER ;

2. 调用存储过程

CALL procedure_name(arguments);

3. 创建函数

DELIMITER //
CREATE FUNCTION function_name(parameters)
RETURNS datatype
BEGIN
-- SQL语句
RETURN value;
END //
DELIMITER ;

4. 调用函数

SELECT function_name(arguments);

十、触发器

1. 创建触发器

DELIMITER //
CREATE TRIGGER trigger_name
BEFORE/AFTER INSERT/UPDATE/DELETE
ON table_name FOR EACH ROW
BEGIN
-- 触发器逻辑
END //
DELIMITER ;

2. 删除触发器

DROP TRIGGER IF EXISTS trigger_name;

十一、事务控制

1. 开始事务

START TRANSACTION;

2. 提交事务

COMMIT;

3. 回滚事务

ROLLBACK;

4. 设置保存点

SAVEPOINT savepoint_name;

5. 回滚到保存点

ROLLBACK TO savepoint_name;

十二、用户和权限管理

1. 创建用户

CREATE USER 'username'@'host' IDENTIFIED BY 'password';

2. 授予权限

GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'host';
GRANT SELECT, INSERT ON database_name.table_name TO 'username'@'host';

3. 撤销权限

REVOKE ALL PRIVILEGES ON database_name.* FROM 'username'@'host';

4. 刷新权限

FLUSH PRIVILEGES;

5. 删除用户

DROP USER 'username'@'host';

十三、备份与恢复

1. 备份数据库

mysqldump -u username -p database_name > backup.sql

2. 恢复数据库

mysql -u username -p database_name < backup.sql

十四、常用函数

1. 字符串函数

CONCAT(), SUBSTRING(), TRIM(), UPPER(), LOWER(), LENGTH()

2. 数值函数

ROUND(), CEIL(), FLOOR(), ABS(), MOD()

3. 日期函数

NOW(), CURDATE(), CURTIME(), DATE_FORMAT(), DATEDIFF()

4. 条件函数

IF(), CASE WHEN THEN ELSE END, COALESCE(), NULLIF()

总结

本文涵盖了 MySQL 的基础知识和完整语法结构,从数据库和表的创建、数据操作到高级查询、事务控制和用户管理。MySQL 是一个功能强大且灵活的关系型数据库系统,掌握这些基础知识将为您开发数据库驱动的应用程序打下坚实基础。

在实际应用中,还需要根据具体业务需求设计合理的数据库结构,创建适当的索引以提高查询性能,并使用事务来保证数据的一致性。随着对 MySQL 的深入理解,您还可以探索更多高级特性,如分区表、复制、集群等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/78942.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Sqlalchemy Model转换成Pydantic Model示例】

【Sqlalchemy Model转换成Pydantic Model示例】 由于Sqlalchemy和Pydantic的模型字段类型可能有差异, 所以需要一个通用的装换类 def sqlalchemy_to_pydantic_v2(sqlalchemy_model, pydantic_model):"""通用函数&#xff0c;将 SQLAlchemy 模型实例转换为 Pyd…

2025年欧洲西南部大停电

2025年4月28日&#xff0c;欧洲西南部出现大规模停电&#xff0c;西班牙、葡萄牙和法国南部均受到影响。有报道指出停电可能与 欧洲电网出现问题有关&#xff0c;但最终原因尚未确定。由于停电&#xff0c;上述地区的交通和通信服务均受到严重影响&#xff0c;交通信号灯停止工…

Java EE初阶——计算机是如何工作的

1. cpu 冯诺依曼体系&#xff08;Von Neumann Architecture&#xff09; • CPU 中央处理器: 进⾏算术运算和逻辑判断. • 存储器: 分为外存和内存, ⽤于存储数据(使⽤⼆进制⽅式存储) • 输⼊设备: ⽤⼾给计算机发号施令的设备. • 输出设备: 计算机个⽤⼾汇报结果的设…

飞鸟游戏模拟器 1.0.3 | 完全免费无广告,内置大量经典童年游戏,重温美好回忆

飞鸟游戏模拟器是一款专为安卓用户设计的免费游戏模拟器&#xff0c;内置了大量经典的童年游戏。该模拟器拥有丰富的游戏资源&#xff0c;目前已有约20,000款游戏&#xff0c;包括多种类型如冒险、动作、角色扮演等。用户可以直接搜索查找想要玩的游戏进行下载并启动。游戏库中…

网络爬取需谨慎:警惕迷宫陷阱

一、技术背景:网络爬虫与数据保护的博弈升级 1. 问题根源:AI训练数据爬取的无序性 数据需求爆炸:GPT-4、Gemini等大模型依赖数万亿网页数据训练,但大量爬虫无视网站的robots.txt协议(非法律强制),未经许可抓取内容(如新闻、学术论文、代码),引发版权争议(如OpenAI被…

Qwen3简介:大型语言模型的革命

Qwen3简介&#xff1a;大型语言模型的革命 Qwen系列语言模型的最新发布——Qwen3&#xff0c;标志着人工智能&#xff08;AI&#xff09;技术的一次重大飞跃。基于前代版本的成功&#xff0c;Qwen3在架构、推理能力和多项先进功能上都取得了显著提升&#xff0c;正在重新定义大…

MODSIM选型指南:汽车与航空航天企业如何选择仿真平台

1. 引言 在竞争激烈的汽车与航空航天领域&#xff0c;仿真技术已成为产品研发不可或缺的环节。通过在设计阶段验证概念并优化性能&#xff0c;仿真平台能有效缩短开发周期并降低物理样机制作成本。 MODSIM&#xff08;建模与仿真&#xff09;作为达索系统3DEXPERIENCE平台的核…

linux 内核 debugfs 使用介绍

一&#xff1a;概述 debugfs 是 Linux 内核提供的一个特殊的虚拟文件系统&#xff0c;用于 暴露内核模块&#xff08;如驱动&#xff09;内部的调试信息或控制接口&#xff0c;供开发者、调试人员实时查看和排查问题。即 debugfs 就是一个“调试专用的 /proc 或 /sys”&#xf…

ZYNQ笔记(十五):PL读写PS DDR(自定义IP核-AXI4接口)

版本&#xff1a;Vivado2020.2&#xff08;Vitis&#xff09; 任务&#xff1a;PL 端自定义一个 AXI4 接口的 IP 核&#xff0c;通过 AXI_HP 接口对 PS 端 DDR3 进行读写 测试&#xff0c;读写的内存大小是 4K 字节&#xff0c; 目录 一、介绍 &#xff08;1&#xff09;…

Redis 小记

Redis 命令小记 Redis 是一个文本/二进制数据库&#xff08;textual/binary database&#xff09; CLI 命令 redis-cli, redis-server, redis-benchmark, redis-check-dump, redis-check-aof redis-cli 执行命令 # 方式 1 redis-cli -h 127.0.0.1 -p 6379 > 127.0.0.1:63…

如何在idea中编写spark程序

在 IntelliJ IDEA 中编写 Spark 程序的详细指南 在大数据处理领域&#xff0c;Apache Spark 凭借其强大的分布式计算能力&#xff0c;成为了众多开发者的首选工具。而 IntelliJ IDEA 作为一款功能强大的集成开发环境&#xff08;IDE&#xff09;&#xff0c;为编写 Spark 程序…

各类神经网络学习:(十一)注意力机制(第3/4集),位置编码

上一篇下一篇注意力机制&#xff08;2/4集&#xff09;注意力机制&#xff08;4/4集&#xff09; 位置编码 R N N RNN RNN 和 L S T M LSTM LSTM 这些网络都是串行执行的&#xff0c;在潜移默化中&#xff0c;就包含了顺序关系&#xff0c;也就是词序关系。而注意力机制是并行…

《Python Web部署应知应会》Flask网站隐藏或改变浏览器URL:从Nginx反向代理到URL重写技术

Flask网站隐藏或改变浏览器显示URL地址的实现方案&#xff1a;从Nginx反向代理到URL重写技术 引言 在Web应用开发中&#xff0c;URL路径的安全性往往被忽视&#xff0c;这可能导致网站结构和后端逻辑被攻击者轻易推断。对于Flask框架开发的网站&#xff0c;如何隐藏或改变浏览…

elementui里的el-tabs的内置样式修改失效?

1.问题图 红框里的是组件的内置样式&#xff0c;红框下的是自定义样式 2.分析 2.1scoped vue模板编译器在编译有scoped的stye标签时&#xff0c;会生成对应的postCSS插件&#xff0c;该插件会给每个scoped标记的style标签模块&#xff0c;生成唯一一个对应的 data-v-xxxhash…

大数据测试集群环境部署

Hadoop大数据集群搭建&#xff08;超详细&#xff09;_hadoop_小飞飞519-GitCode 开源社区 hadoop集群一之虚拟机安装(mac)_hadoop_皮皮虾不皮呀-华为开发者空间 hadoop集群二之hadoop安装_hadoop_皮皮虾不皮呀-华为开发者空间 虚拟机如何查看gateway | PingCode智库

Nginx 核心功能笔记

目录 一、Nginx 简介 二、核心功能详解 三、关键指令解析 四、性能优化要点 五、常见应用场景 一、Nginx 简介 定位 高性能的 HTTP/反向代理服务器&#xff0c;同时支持邮件协议代理&#xff08;IMAP/POP3/SMTP&#xff09;。采用 事件驱动、异步非阻塞 架构&#xff0c;…

强化学习(二)马尔科夫决策过程(MDP)

1. 简介 马尔可夫决策过程正式地描述了强化学习的环境其中环境是完全可观测的即当前状态完全表征了这个过程几乎所有的强化学习问题都可以形式化为马尔可夫决策过程&#xff0c;例如&#xff1a; 最优控制主要处理连续的马尔可夫决策过程部分可观察的问题可以转化为马尔可夫决…

Day16(贪心算法)——LeetCode45.跳跃游戏II763.划分字母区间

1 LeetCode45.跳跃游戏II 1.1 题目描述 与跳跃游戏类似&#xff0c;跳跃游戏II给定长为n的从0开始索引的整数数组nums&#xff0c;nums[i]是你在i处能向右跳跃的最大步数&#xff0c;求到达数组最后一个索引处需要跳跃的最少次数。   一个示例&#xff1a;nums[2,3,1,1,4]&a…

告别碎片化!两大先进分块技术如何提升RAG的语义连贯性?

研究动机 论文核心问题及研究背景分析 1. 研究领域及其重要性 研究领域&#xff1a;检索增强生成&#xff08;Retrieval-Augmented Generation, RAG&#xff09;系统&#xff0c;结合自然语言处理&#xff08;NLP&#xff09;与信息检索技术。重要性&#xff1a; RAG通过动态…

leetcode day37 474

474 一和零 给你一个二进制字符串数组 strs 和两个整数 m 和 n 。 请你找出并返回 strs 的最大子集的长度&#xff0c;该子集中 最多 有 m 个 0 和 n 个 1 。 如果 x 的所有元素也是 y 的元素&#xff0c;集合 x 是集合 y 的 子集 。 示例 1&#xff1a; 输入&#xff1a;s…