恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

MySQL 数据库(三):SQL 语法

  • 首页
  • 资讯中心
  • /
  • MySQL 数据库(三):SQL 语法

相关资讯

基于大语言模型的多智能体策略博弈:从囚徒困境到复杂交互 2026/8/18 11:28:48
ezdxf 快速上手:用 Python 批量读写 DXF 图纸的完整实战手册 2026/8/18 11:28:48
埃及伊蚊吸血行为检测数据集 | 7800张YOLO昆虫行为数据集 2026/8/18 11:23:48

最新资讯

多智能体协同架构在自适应网络安全故障排查中的设计与实践
键盘侠的福音:Zed 让快捷键学会了“看人下菜碟”
电动汽车热失控原理与主动安全防护指南
老Mac免费续命指南:OpenCore Legacy Patcher零基础升级实战与避坑手册
SAMA框架:技能增强智能体如何实现多视频深度理解与推理
KMS_VL_ALL_AIO使用教程:一个脚本搞定Windows和Office激活,支持180天自动续期

今日推荐

数据缺失处理:从MCAR、MAR到MNAR的机制解析与多重插补实践
MAGS-SLAM:多智能体协同3D高斯泼溅SLAM系统解析
LLM智能体记忆管理:基于关键词门控的混合激活机制CAMeR详解

本周热门

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码
【双层规划,节点出清价,绿证交易,CVaR方法】两级电力市场环境下计及风险的省间交易商最优购电模型附Matlab代码
隐式mpc+自适应mpc+时变mpc,线性时变模型预测控制附Simulink仿真

本月精选

如何用DamaiHelper实现演唱会门票的智能自动化抢购:完整技术解决方案指南
第4篇:59 倍性能差距的索引瓶颈定位——一次教科书级的全表扫描调优
终极歌词批量下载神器:5分钟解决离线音乐库歌词同步难题

MySQL 数据库(三):SQL 语法

发布时间:2026/8/18 11:28:48
MySQL 数据库(三):SQL 语法 一、SQL 语言分类分类全称作用关键字DDLData Definition Language定义数据结构CREATE、ALTER、DROPDMLData Manipulation Language操作数据INSERT、UPDATE、DELETEDQLData Query Language查询数据SELECTDCLData Control Language权限管理GRANT、REVOKETCLTransaction Control Language事务控制COMMIT、ROLLBACK、SAVEPOINT二、DDL数据库与表结构管理1. 数据库操作-- 创建数据库 CREATE DATABASE IF NOT EXISTS mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- 查看所有数据库 SHOW DATABASES; -- 切换数据库 USE mydb; -- 查看当前数据库 SELECT DATABASE(); -- 删除数据库 DROP DATABASE IF EXISTS mydb;2. 创建表建表规范CREATE TABLE IF NOT EXISTS users ( id INT PRIMARY KEY AUTO_INCREMENT COMMENT 用户ID, username VARCHAR(50) NOT NULL UNIQUE COMMENT 用户名, email VARCHAR(100) NOT NULL UNIQUE COMMENT 邮箱, age INT DEFAULT 0 COMMENT 年龄, status TINYINT DEFAULT 1 COMMENT 状态0-禁用 1-正常, created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT 创建时间, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 更新时间 ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT用户表;3. 修改表结构-- 添加列 ALTER TABLE users ADD COLUMN phone VARCHAR(20) COMMENT 手机号; -- 修改列类型 ALTER TABLE users MODIFY COLUMN phone VARCHAR(30); -- 修改列名 ALTER TABLE users CHANGE COLUMN phone mobile VARCHAR(30); -- 删除列 ALTER TABLE users DROP COLUMN mobile; -- 添加索引 CREATE INDEX idx_username ON users(username); CREATE UNIQUE INDEX idx_email ON users(email); -- 查看表结构 DESC users; SHOW CREATE TABLE users;4. 删除表DROP TABLE IF EXISTS users; TRUNCATE TABLE users; -- 清空数据保留结构三、DML数据操作1. INSERT插入数据-- 插入单条完整记录 INSERT INTO users (username, email, age) VALUES (张三, zhangsanexample.com, 25); -- 插入多条记录 INSERT INTO users (username, email, age) VALUES (李四, lisiexample.com, 30), (王五, wangwuexample.com, 28); -- 插入部分字段其他字段使用默认值 INSERT INTO users (username, email) VALUES (赵六, zhaoliuexample.com); -- 从另一张表插入 INSERT INTO users_backup SELECT * FROM users;2. UPDATE更新数据-- 更新单条记录必须带 WHERE UPDATE users SET age 26 WHERE username 张三; -- 更新多条记录 UPDATE users SET status 0 WHERE age 18; -- 多字段更新 UPDATE users SET age age 1, updated_at NOW() WHERE age 30; -- ⚠️ 不带 WHERE 会更新全表 UPDATE users SET status 1; -- 危险操作3. DELETE删除数据-- 删除单条记录 DELETE FROM users WHERE username 赵六; -- 删除多条记录 DELETE FROM users WHERE status 0; -- 删除全部数据但保留表结构 DELETE FROM users; -- 逐行删除速度慢 -- 更快的清空方式 TRUNCATE TABLE users; -- 重建表速度极快不能回滚4. REPLACE替换/插入-- 如果主键或唯一键冲突先删除再插入 REPLACE INTO users (id, username, email) VALUES (1, 张三, zhangsanexample.com);四、DQL数据查询核心1. 基础查询-- 查询所有字段 SELECT * FROM users; -- 查询指定字段 SELECT id, username, email, age FROM users; -- 查询并去重 SELECT DISTINCT age FROM users; -- 字段别名 SELECT id, username AS name, age FROM users; -- 限制返回行数 SELECT * FROM users LIMIT 10; SELECT * FROM users LIMIT 10 OFFSET 20; -- 第21-30条2. WHERE 条件过滤-- 比较运算 SELECT * FROM users WHERE age 18; SELECT * FROM users WHERE age BETWEEN 18 AND 30; SELECT * FROM users WHERE age IN (18, 25, 30); -- 字符串匹配 SELECT * FROM users WHERE username LIKE 张%; -- 以张开头 SELECT * FROM users WHERE username LIKE %三; -- 以三结尾 SELECT * FROM users WHERE username LIKE %小%; -- 包含小 -- 空值判断 SELECT * FROM users WHERE phone IS NULL; SELECT * FROM users WHERE phone IS NOT NULL; -- 逻辑组合 SELECT * FROM users WHERE age 18 AND status 1; SELECT * FROM users WHERE age 18 OR age 60; SELECT * FROM users WHERE NOT (status 0);3. 排序-- 单字段排序 SELECT * FROM users ORDER BY age DESC; -- 降序 SELECT * FROM users ORDER BY age ASC; -- 升序默认 -- 多字段排序 SELECT * FROM users ORDER BY age DESC, created_at ASC;4. 分组与聚合-- 常用聚合函数COUNT、SUM、AVG、MAX、MIN SELECT COUNT(*) AS total FROM users; SELECT AVG(age) AS avg_age FROM users; SELECT MAX(age) AS max_age, MIN(age) AS min_age FROM users; -- 分组统计 SELECT status, COUNT(*) AS count, AVG(age) AS avg_age FROM users GROUP BY status; -- 分组后过滤HAVING SELECT status, COUNT(*) AS count FROM users GROUP BY status HAVING count 5; -- 分组前过滤WHERE与分组后过滤HAVING的区别 SELECT status, COUNT(*) AS count FROM users WHERE age 18 -- 分组前过滤 GROUP BY status HAVING count 5; -- 分组后过滤5. 连接查询多表查询内连接INNER JOIN-- 查询用户及其订单 SELECT u.id, u.username, o.order_id, o.amount FROM users u INNER JOIN orders o ON u.id o.user_id;左连接LEFT JOIN-- 查询所有用户及其订单包括没有订单的用户 SELECT u.id, u.username, o.order_id, o.amount FROM users u LEFT JOIN orders o ON u.id o.user_id;右连接RIGHT JOIN-- 查询所有订单及其用户包括没有用户的订单极少使用 SELECT u.username, o.order_id, o.amount FROM users u RIGHT JOIN orders o ON u.id o.user_id;自连接-- 查询员工及其上级 SELECT e.name AS employee, m.name AS manager FROM employees e LEFT JOIN employees m ON e.manager_id m.id;6. 子查询-- WHERE 中的子查询 SELECT * FROM users WHERE age (SELECT AVG(age) FROM users); -- FROM 中的子查询 SELECT avg_age FROM (SELECT AVG(age) AS avg_age FROM users) AS t; -- EXISTS 子查询 SELECT * FROM users u WHERE EXISTS (SELECT 1 FROM orders o WHERE o.user_id u.id);五、常用函数字符串函数SELECT CONCAT(Hello, , World); -- Hello World SELECT LENGTH(Hello); -- 5 SELECT UPPER(hello); -- HELLO SELECT LOWER(HELLO); -- hello SELECT SUBSTRING(Hello World, 1, 5); -- Hello SELECT TRIM( Hello ); -- Hello SELECT REPLACE(Hello World, World, MySQL); -- Hello MySQL日期时间函数SELECT NOW(); -- 当前日期时间 SELECT CURDATE(); -- 当前日期 SELECT CURTIME(); -- 当前时间 SELECT DATE_ADD(NOW(), INTERVAL 1 DAY); -- 明天 SELECT DATE_SUB(NOW(), INTERVAL 1 MONTH); -- 上个月 SELECT DATEDIFF(NOW(), 2024-01-01); -- 天数差 SELECT DATE_FORMAT(NOW(), %Y-%m-%d %H:%i:%s); -- 格式化日期数值函数SELECT ROUND(3.14159, 2); -- 3.14 SELECT CEIL(3.14); -- 4 SELECT FLOOR(3.14); -- 3 SELECT ABS(-5); -- 5 SELECT RAND(); -- 随机数 (0-1)条件函数-- IF 函数 SELECT IF(age 18, 成年, 未成年) AS age_group FROM users; -- CASE WHEN类似 switch SELECT CASE WHEN age 18 THEN 未成年 WHEN age 30 THEN 青年 WHEN age 60 THEN 中年 ELSE 老年 END AS age_group FROM users;六、索引-- 创建索引 CREATE INDEX idx_age ON users(age); CREATE UNIQUE INDEX idx_email ON users(email); CREATE INDEX idx_age_status ON users(age, status); -- 联合索引 -- 查看索引 SHOW INDEX FROM users; -- 删除索引 DROP INDEX idx_age ON users;

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号