十分想念顺店杂可。。。

以下是 MySQL 中常用的基本 SQL 语句大全,按功能分类整理,包含语法和示例,方便参考使用:

一、数据库操作(DDL)

用于创建、删除、切换数据库。

  1. 创建数据库

    -- 基本语法
    CREATE DATABASE [IF NOT EXISTS] 数据库名 [CHARACTER SET 字符集] [COLLATE 排序规则];-- 示例:创建名为testdb的数据库,指定utf8mb4字符集
    CREATE DATABASE IF NOT EXISTS testdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    

  2. 删除数据库

    -- 基本语法
    DROP DATABASE [IF EXISTS] 数据库名;-- 示例:删除testdb数据库(谨慎操作!)
    DROP DATABASE IF EXISTS testdb;
    
  3. 切换 / 使用数据库

    USE 数据库名;-- 示例:使用testdb数据库
    USE testdb;
    
  4. 查看所有数据库

    SHOW DATABASES;
    

二、表操作(DDL)

用于创建、修改、删除表结构。

  1. 创建表

    -- 基本语法
    CREATE TABLE [IF NOT EXISTS] 表名 (列名1 数据类型 [约束],列名2 数据类型 [约束],...[表级约束]
    ) [ENGINE=存储引擎] [CHARACTER SET 字符集];-- 示例:创建user表
    CREATE TABLE IF NOT EXISTS user (id INT PRIMARY KEY AUTO_INCREMENT, -- 主键,自增name VARCHAR(50) NOT NULL, -- 非空age INT DEFAULT 0, -- 默认值phone VARCHAR(20) UNIQUE, -- 唯一约束create_time DATETIME
    ) ENGINE=InnoDB CHARACTER SET utf8mb4;
    
  2. 查看表结构

    -- 方法1
    DESCRIBE 表名;
    -- 简写
    DESC 表名;-- 方法2(更详细)
    SHOW COLUMNS FROM 表名;
    
  3. 修改表结构(ALTER TABLE)

    -- 添加列
    ALTER TABLE 表名 ADD 列名 数据类型 [约束];
    -- 示例:给user表添加email列
    ALTER TABLE user ADD email VARCHAR(100) UNIQUE;-- 修改列类型/约束
    ALTER TABLE 表名 MODIFY 列名 新数据类型 [新约束];
    -- 示例:修改age列为INT,允许NULL
    ALTER TABLE user MODIFY age INT NULL;-- 重命名列
    ALTER TABLE 表名 CHANGE 旧列名 新列名 数据类型 [约束];
    -- 示例:将phone列重命名为mobile
    ALTER TABLE user CHANGE phone mobile VARCHAR(20) UNIQUE;-- 删除列
    ALTER TABLE 表名 DROP 列名;
    -- 示例:删除email列
    ALTER TABLE user DROP email;-- 重命名表
    ALTER TABLE 旧表名 RENAME TO 新表名;
    
  4. 删除表

    -- 基本语法
    DROP TABLE [IF EXISTS] 表名;-- 示例:删除user表
    DROP TABLE IF EXISTS user;
    
  5. 查看当前数据库所有表

    SHOW TABLES;
    

三、数据操作(DML)

用于插入、更新、删除表中的数据。

  1. 插入数据(INSERT)

    -- 插入完整行(按表结构顺序)
    INSERT INTO 表名 VALUES (值1, 值2, ...);-- 插入指定列(推荐,更灵活)
    INSERT INTO 表名 (列1, 列2, ...) VALUES (值1, 值2, ...);-- 批量插入
    INSERT INTO 表名 (列1, 列2) VALUES (值1, 值2), (值3, 值4), ...;-- 示例:插入用户数据
    INSERT INTO user (name, age, mobile, create_time) 
    VALUES ('张三', 25, '13800138000', '2023-01-01 10:00:00');-- 批量插入
    INSERT INTO user (name, age) VALUES ('李四', 30), ('王五', 28);
    
  2. 更新数据(UPDATE)

    -- 基本语法(务必加WHERE,否则更新全表!)
    UPDATE 表名 SET 列1=值1, 列2=值2, ... [WHERE 条件];-- 示例:更新张三的年龄为26
    UPDATE user SET age=26 WHERE name='张三';-- 多条件更新
    UPDATE user SET mobile='13900139000' WHERE name='李四' AND age=30;
    
  3. 删除数据(DELETE)

    -- 基本语法(务必加WHERE,否则删除全表数据!)
    DELETE FROM 表名 [WHERE 条件];-- 示例:删除年龄大于50的用户
    DELETE FROM user WHERE age > 50;-- 清空表(速度更快,自增ID会重置)
    TRUNCATE TABLE 表名; -- 等价于删除表再重建,无法回滚
    

四、数据查询(DQL)

用于从表中查询数据,核心是SELECT语句。

  1. 基础查询

    -- 查询所有列(不推荐,效率低)
    SELECT * FROM 表名;-- 查询指定列
    SELECT 列1, 列2, ... FROM 表名;-- 示例:查询user表的name和age列
    SELECT name, age FROM user;
    
  2. 带条件查询(WHERE)

    SELECT 列名 FROM 表名 WHERE 条件;-- 条件运算符:=、!=、>、<、>=、<=、BETWEEN...AND、IN、LIKE、IS NULL等
    -- 示例1:查询年龄=25的用户
    SELECT * FROM user WHERE age = 25;-- 示例2:查询年龄在20-30之间的用户
    SELECT * FROM user WHERE age BETWEEN 20 AND 30;-- 示例3:查询姓名包含"张"的用户(%匹配任意字符,_匹配单个字符)
    SELECT * FROM user WHERE name LIKE '%张%';-- 示例4:查询手机号为空的用户
    SELECT * FROM user WHERE mobile IS NULL;-- 多条件:AND(且)、OR(或)、NOT(非)
    SELECT * FROM user WHERE age > 25 AND name LIKE '李%';
    
  3. 排序(ORDER BY)

    SELECT 列名 FROM 表名 [WHERE 条件] ORDER BY 列1 [ASC|DESC], 列2 [ASC|DESC];
    -- ASC:升序(默认),DESC:降序-- 示例:按年龄降序排列,年龄相同则按创建时间升序
    SELECT * FROM user ORDER BY age DESC, create_time ASC;
    
  4. 分页(LIMIT)

    SELECT 列名 FROM 表名 [WHERE 条件] LIMIT 起始位置, 条数;
    -- 起始位置从0开始(可省略,默认0)-- 示例1:查询前10条数据
    SELECT * FROM user LIMIT 10;-- 示例2:查询第11-20条数据(起始位置10,取10条)
    SELECT * FROM user LIMIT 10, 10;
    
  5. 去重(DISTINCT)

    SELECT DISTINCT 列名 FROM 表名;-- 示例:查询所有不重复的年龄
    SELECT DISTINCT age FROM user;
    
  6. 聚合函数
    常用聚合函数:COUNT()(计数)、SUM()(求和)、AVG()(平均值)、MAX()(最大值)、MIN()(最小值)。

    -- 示例1:统计用户总数
    SELECT COUNT(*) AS total_users FROM user; -- *包含NULL,COUNT(列名)不包含NULL-- 示例2:计算平均年龄
    SELECT AVG(age) AS avg_age FROM user;-- 示例3:查询最大年龄和最小年龄
    SELECT MAX(age) AS max_age, MIN(age) AS min_age FROM user;
    
  7. 分组查询(GROUP BY + HAVING)

    • GROUP BY:按列分组,常与聚合函数搭配。
    • HAVING:筛选分组后的结果(类似 WHERE,但用于分组)。
    -- 示例1:按年龄分组,统计每个年龄的用户数
    SELECT age, COUNT(*) AS count FROM user GROUP BY age;-- 示例2:筛选用户数>=2的年龄组
    SELECT age, COUNT(*) AS count FROM user GROUP BY age HAVING count >= 2;
    
  8. 多表连接查询
    假设有user表(id, name)和order表(id, user_id, amount),通过user_id关联。

    -- 内连接(INNER JOIN):只返回两表匹配的行
    SELECT u.name, o.amount 
    FROM user u
    INNER JOIN `order` o ON u.id = o.user_id;-- 左连接(LEFT JOIN):返回左表所有行,右表无匹配则为NULL
    SELECT u.name, o.amount 
    FROM user u
    LEFT JOIN `order` o ON u.id = o.user_id;-- 右连接(RIGHT JOIN):返回右表所有行,左表无匹配则为NULL
    SELECT u.name, o.amount 
    FROM user u
    RIGHT JOIN `order` o ON u.id = o.user_id;
    
  9. 子查询
    嵌套在其他查询中的查询,可作为条件、结果集或临时表。

    -- 示例1:子查询作为条件(查询有订单的用户)
    SELECT * FROM user 
    WHERE id IN (SELECT DISTINCT user_id FROM `order`);-- 示例2:子查询作为临时表(查询每个用户的最新订单)
    SELECT u.name, o.amount 
    FROM user u
    JOIN (SELECT user_id, MAX(id) AS max_order_id FROM `order` GROUP BY user_id
    ) tmp ON u.id = tmp.user_id
    JOIN `order` o ON tmp.max_order_id = o.id;
    

五、索引操作(DDL)

-- 创建普通索引
CREATE INDEX 索引名 ON 表名(列名);
-- 示例:给user表的name列创建索引
CREATE INDEX idx_user_name ON user(name);-- 创建复合索引
CREATE INDEX 索引名 ON 表名(列1, 列2, ...);
-- 示例:创建(name, age)复合索引
CREATE INDEX idx_user_name_age ON user(name, age);-- 创建唯一索引
CREATE UNIQUE INDEX 索引名 ON 表名(列名);-- 删除索引
DROP INDEX 索引名 ON 表名;-- 查看表中所有索引
SHOW INDEX FROM 表名;

六、用户与权限(DCL)

-- 创建用户
CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';
-- 示例:允许localhost登录的user1,密码123456
CREATE USER 'user1'@'localhost' IDENTIFIED BY '123456';-- 授予权限(ALL:所有权限,SELECT:查询权限等)
GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名';
-- 示例:授予user1对testdb所有表的查询和插入权限
GRANT SELECT, INSERT ON testdb.* TO 'user1'@'localhost';-- 撤销权限
REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名';-- 删除用户
DROP USER '用户名'@'主机名';-- 查看用户权限
SHOW GRANTS FOR '用户名'@'主机名';

七、事务控制

-- 开始事务
START TRANSACTION;
-- 或 BEGIN;-- 提交事务(永久生效)
COMMIT;-- 回滚事务(撤销操作)
ROLLBACK;-- 设置事务隔离级别(READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ、SERIALIZABLE)
SET TRANSACTION ISOLATION LEVEL 隔离级别;

常用辅助语句

  • 查看当前数据库:SELECT DATABASE();
  • 查看 MySQL 版本:SELECT VERSION();
  • 查看当前用户:SELECT USER();
  • 清空查询缓存(MySQL 8.0 前):RESET QUERY CACHE;

以上涵盖了 MySQL 日常开发中最常用的 SQL 语句,实际使用时需根据具体场景灵活组合,复杂查询建议用EXPLAIN分析执行计划以优化性能。

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

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

相关文章

构建响应式在线客服聊天系统的前端实践 Vue3+ElementUI + CSS3

构建响应式客服聊天系统的前端实践在当今数字化时代&#xff0c;客服系统已成为企业与客户沟通的重要桥梁。一个优秀的在线客服系统不仅需要功能完善&#xff0c;还需要在各种设备上都能提供良好的用户体验。本文将介绍如何构建一个响应式的客服聊天界面&#xff0c;确保在桌面…

C语言memcpy函数详解:高效内存复制的实用工具

目录1. memcpy函数是什么&#xff1f;函数原型2. memcpy函数的用法运行结果&#xff1a;代码解析3. memcpy函数的注意事项3.1 内存区域不重叠3.2 缓冲区大小管理3.3 指针有效性3.4 性能优势3.5 平台兼容性4. 实际应用场景4.1 数组复制4.2 动态内存复制4.3 结构体复制4.4 缓冲区…

多级缓存架构:新品咖啡上线引发的数据库压力风暴与高并发实战化解方案

一、背景&#xff1a;新品咖啡风暴与数据库之痛想象一下&#xff1a;某知名咖啡品牌推出限量版“星空冷萃”&#xff0c;通过社交媒体引爆流量。上午10点开售瞬间&#xff0c;APP与网站涌入数十万用户&#xff0c;商品详情页、库存查询请求如海啸般涌向后台。传统架构下&#x…

888. 公平的糖果交换

目录 题目链接&#xff1a; 题目&#xff1a; 解题思路&#xff1a; 代码&#xff1a; 总结&#xff1a; 题目链接&#xff1a; 888. 公平的糖果交换 - 力扣&#xff08;LeetCode&#xff09; 题目&#xff1a; 解题思路&#xff1a; 前一个数组和sumA,后一个数组sumB,然…

Day01 项目概述,环境搭建

软件开发整体介绍 软件开发流程 需求分析&#xff1a;需求规格说明书、产品原型 设计&#xff1a;UI 设计、数据库设计&#xff0c;接口设计 编码&#xff1a;项目代码、单元测试 测试&#xff1a;测试用例、测试报告 上线运维&#xff1a;软件环境安装、配置 角色分工 项…

Perl Socket 编程

Perl Socket 编程 引言 Perl 语言作为一种强大的脚本语言,在系统管理和网络编程领域有着广泛的应用。Socket 编程是网络编程的核心,它允许程序在网络中进行数据传输。本文将详细介绍 Perl 语言中的 Socket 编程,包括 Socket 的概念、创建、通信以及一些高级应用。 Socket…

3 种简单方法备份 iPhone 上的短信 [2025]

短信通常承载着我们工作和私人生活中有价值的信息和美好的回忆&#xff0c;以及我们不想丢失的特别对话。这就是为什么备份 iPhone 短信如此重要的原因。如果出现问题&#xff0c;比如意外删除或系统问题&#xff0c;备份意味着你可以轻松地恢复短信。在本指南中&#xff0c;我…

Linux库路径三剑客:/usr/lib、/usr/local/lib、~/.local/lib 详解与避坑指南

在Linux的世界里&#xff0c;/usr/lib、/usr/local/lib和~/.local/lib这三个路径看似只是简单的文件夹&#xff0c;实则是软件包管理和开发环境的基石。理解它们的区别&#xff0c;不仅能让你的pip install、make install等命令得心应手&#xff0c;更能避免ImportError、comma…

python 之 autogen-core《二》代理运行环境、应用程序堆栈、代理生命周期

支持两种类型的运行时环境&#xff1a;独立式和分布式 独立代理运行时 独立运行时适用于单进程应用程序&#xff0c;其中所有代理均使用同一种编程语言实现并在同一进程中运行。在 Python API 中&#xff0c;独立运行时的一个示例是SingleThreadedAgentRuntime。 在这里&…

欧姆龙PLC CP1H在视觉检测产线中的应用:以太网模块实现上位机实时采样与触摸屏报警联动

一、行业痛点与解决方案概述以某汽车零部件制造企业的生产线检测系统为例&#xff0c;该企业原本使用欧姆龙CP1H PLC作为主控制器。由于CP1H PLC本身不具备以太网接口&#xff0c;只能通过串口&#xff08;如RS232或RS485&#xff09;进行通讯。这种通讯方式存在传输距离短、传…

快速找到两个 Word 文档之间文字的区别

要快速找到两个 Word 文档之间文字的区别&#xff0c;可以使用 Microsoft Word 自带的“比较&#xff08;Compare&#xff09;”功能&#xff0c;步骤如下&#xff1a; ✅ 方法一&#xff1a;使用 Microsoft Word 的“比较”功能 打开 Microsoft Word。 点击顶部菜单栏中的 “…

ZK首次连接失败,第二次连接成功的问题解决方案

问题 项目中配置zk后&#xff0c;启动时zk第一次链接总是失败&#xff0c;过一会后又会链接成功。异常如下&#xff1a; "C:\Program Files\Java\jdk1.8.0_291\bin\java.exe" -agentlib:jdwptransportdt_socket,address127.0.0.1:58217,suspendy,servern -XX:TieredS…

OpenCV cv2.flip() 函数详解与示例

本文介绍了 OpenCV 中 cv2.flip() 函数的用法&#xff0c;该函数可实现图像的水平、垂直及双向翻转。通过设置 flipCode 参数为 0、1 或 -1&#xff0c;用户可分别获得上下颠倒、左右镜像或 180 旋转的效果。文中提供了详细的参数说明、示例代码以及三种翻转模式的效果对比&…

负氧离子监测站:守护清新空气的科技卫士

负氧离子监测站&#xff1a;守护清新空气的科技卫士 柏峰【BF-FLZ】在公园漫步&#xff0c;在森林中穿梭&#xff0c;或者靠近瀑布倾听水流的轰鸣&#xff0c;我们常常会感叹 “空气真清新”。这种清新的感觉&#xff0c;很大程度上要归功于空气中的负氧离子。负氧离子&#xf…

智慧交通场景下 mAP↑28%:陌讯多模态融合算法实战解析

原创声明本文为原创技术解析&#xff0c;技术参数及架构设计参考自《陌讯技术白皮书》&#xff0c;禁止未经授权的转载与商用。一、行业痛点&#xff1a;智慧交通的检测困境智慧交通系统作为城市基建的核心组成&#xff0c;正面临着复杂环境下的检测精度瓶颈。据《中国智慧交通…

内容分发机制研究:实测一款多源短视频聚合App

还在为刷短视频总是看到重复内容而烦恼吗&#xff1f;今天阿灿给大家推荐一款安卓用户专属的短视频神器&#xff0c;赏颜悦色 &#xff0c;听名字就应该知道这神器差不了&#xff01;02软件介绍这款app只有2.1版本&#xff0c;但功能已经相当强大了。它最大的特点就是多接口随机…

OpenAI 的 GPT-5 来了

OpenAI 推出了新的旗舰 AI 模型 GPT-5&#xff0c;它将为该公司的下一代 ChatGPT 提供支持。 https://openai.com/index/introducing-gpt-5/ GPT-5 于周四发布&#xff0c;是 OpenAI 首个“统一”AI 模型&#xff0c;它将O 系列模型的推理能力与GPT 系列的快速响应能力相结合…

Spring AMQP 入门与实践:整合 RabbitMQ 构建可靠消息系统

Spring AMQP 入门与实践&#xff1a;整合 RabbitMQ 构建可靠消息系统 一、Spring AMQP 是什么&#xff1f; Spring AMQP&#xff08;Application Messaging Protocol&#xff09;是 Spring 官方提供的对 AMQP 协议的封装&#xff0c;其核心模块有两个&#xff1a; spring-am…

图像处理控件Aspose.Imaging教程:使用 C# 将 SVG 转换为 EMF

Aspose.Imaging for .NET是一款深受 .NET 开发人员喜爱的图像处理 SDK&#xff0c;因为它灵活且易于开发人员使用。EMF 图像文件格式提供出色的打印质量和可扩展性。此外&#xff0c;这种图像文件格式还节省存储空间。Aspose.Imaging for .NET 能够使 SVG 到 EMF 的转换变得简…

网络编程——套接字

目录 一、Socket套接字 &#xff08;一&#xff09;概念 &#xff08;二&#xff09;分类 1.流套接字&#xff1a; 2.数据报套接字 3.原始套接字 二、TCP协议VSUDP协议 &#xff08;一&#xff09;有连接VS无连接 &#xff08;二&#xff09;可靠传输VS不可靠传输 &a…