数据库学习(二)——MySQL语句

news2025/6/9 2:16:38

MySQL 语句分为:

语句类型作用关键字示例
数据查询(DQL)查询数据SELECT
数据操作(DML)插入、更新、删除数据INSERT, UPDATE, DELETE
数据定义(DDL)定义或修改表结构CREATE, ALTER, DROP
事务控制(TCL)控制事务执行BEGIN, COMMIT, ROLLBACK
权限控制(DCL)管理权限GRANT, REVOKE

一、查询语句(SELECT

用于从数据库中检索数据,是最常用的 SQL 语句。

语法结构:

SELECT column1, column2, ...
FROM table_name
WHERE condition
GROUP BY column
HAVING condition
ORDER BY column ASC|DESC
LIMIT offset, count;

关键部分解析:

  • SELECT指定查询哪些列,可以用 * 表示全部列;
  • FROM:指定查询的数据表
  • WHERE筛选符合条件的记录(过滤行);
  • GROUP BY:将结果按某列分组
  • HAVING:对分组后的结果进行条件过滤(区别于 WHERE,HAVING 针对聚合结果);
  • ORDER BY:对结果排序(升序 ASC降序 DESC);
  • LIMIT:限制返回的记录数及偏移量。

示例:

SELECT name, COUNT(*) AS orders_count
FROM customers
JOIN orders ON customers.id = orders.customer_id
WHERE age > 18
GROUP BY name
HAVING orders_count > 5
ORDER BY orders_count DESC
LIMIT 10;

注意:

  • customers 表和 orders连接数据(将每一个顾客(customers 表)与其在 orders 表中的订单匹配起来)。
  • 筛选年龄大于 18 的顾客。
  • 按顾客姓名分组,统计每个顾客的订单数量。
  • 只返回订单数量超过 5 的顾客。
  • 按订单数量降序排列。
  • 只显示前 10 条结果。

二、数据插入语句(INSERT

用于添加新记录

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

注意:

  • 列出需要插入值的列名对应的值
  • 也可以一次插入多条数据。

三、数据更新语句(UPDATE

用于修改已有数据

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

注意:

  • WHERE 是关键,指定更新哪些行。若无 WHERE,所有行都会被更新!

四、数据删除语句(DELETE

用于删除表中的数据

DELETE FROM table_name
WHERE condition;

注意:

  • 需使用WHERE 指定删除哪些行,没有 WHERE 会删除所有数据,。

五、表结构操作(DDL)

1. 创建表:

CREATE TABLE table_name (
  id INT PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(50) NOT NULL,
  age INT,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

注意:

字段名类型约束/说明
idINT主键,自动递增。用于唯一标识每一行记录。
nameVARCHAR(50)最多可存储 50 个字符,不能为空(NOT NULL)。
ageINT存储年龄,整数类型,可以为空(没有 NOT NULL 约束)。
created_atTIMESTAMP时间戳字段,默认值为当前时间CURRENT_TIMESTAMP)。自动记录创建时间。

2. 修改表:

ALTER TABLE table_name
ADD COLUMN email VARCHAR(100);

注意:

  • 修改已有表 table_name新增一个名为 email 的字段,数据类型为 VARCHAR(100)

3. 删除表:

DROP TABLE table_name;

注意:

  • 该代码会删除整个表 table_name

六、事务控制语句

用于保证数据操作的完整性

语句作用说明
START TRANSACTION;显式开启一个事务
BEGIN;等价于 START TRANSACTION开启事务
COMMIT;提交事务,使所有操作永久生效
ROLLBACK;回滚事务,撤销事务内的所有操作
SAVEPOINT 名称;设置一个保存点,可用于局部回滚
ROLLBACK TO SAVEPOINT 名称;回滚到指定保存点
RELEASE SAVEPOINT 名称;删除保存点(不是必须的,但可清理命名空间)
SET AUTOCOMMIT = 0;禁用自动提交(事务需手动提交)

示例——基本事务控制:

START TRANSACTION;

UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;

COMMIT;

注意:

  • 如果两个 UPDATE 都成功,就 COMMIT,资金划转完成。
  • 如果任一失败,执行 ROLLBACK;,保持原始状态。

七、索引相关语句

索引提升查询性能

CREATE INDEX idx_name ON table_name(column_name);
DROP INDEX idx_name ON table_name;

注意:

  • CREATE语句给 users 表的 email 列建立一个索引,查询时 WHERE email = 'xxx' 会更快。
  • DROP语句删除名为 idx_name 的索引。

八、权限控制语句

用于 授予、撤销和查看数据库用户对数据库对象(如数据库、表、列等)的访问权限

语句作用
GRANT授权,赋予用户某些权限
REVOKE撤销,取消用户已有权限
SHOW GRANTS查看某用户的权限
CREATE USER创建新用户
DROP USER删除用户
SET PASSWORD修改用户密码
FLUSH PRIVILEGES刷新权限表(一般不再手动调用)

示例——完整授权流程:

-- 创建用户(创建一个名为 dev 的新用户,密码为 devpass,允许从任意主机(%)连接)
CREATE USER 'dev'@'%' IDENTIFIED BY 'devpass';

-- 授权开发者对 testdb 所有表有全部权限
GRANT ALL PRIVILEGES ON testdb.* TO 'dev'@'%';

-- 查看权限
SHOW GRANTS FOR 'dev'@'%';

-- 撤销 DELETE 权限
REVOKE DELETE ON testdb.* FROM 'dev'@'%';

-- 删除用户
DROP USER 'dev'@'%';

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

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

相关文章

sql入门语句-案例

Sql入门 数据库、数据表、数据的关系介绍 数据库 用于存储和管理数据的仓库 一个库中可以包含多个数据表 数据表 数据库最重要的组成部分之一 它由纵向的列和横向的行组成(类似excel表格) 可以指定列名、数据类型、约束等 一个表中可以存储多条数据 数据 想要永久化存储…

A Survey on the Memory Mechanism of Large Language Model based Agents

目录 摘要Abstract1. LLM-Based Agent的Memory1.1 基础概念1.2 用于解释Memory的例子1.3 智能体记忆的定义1.3.1 狭义定义(肯定不用这个定义)1.3.2 广义定义 1.4 记忆协助下智能体与环境的交互过程1.4.1 记忆写入1.4.2 记忆管理1.4.3 记忆读取1.4.4 总过程 2. 如何实现智能体记…

华为OD机试 - 猴子吃桃 - 二分查找(Java 2025 B卷 200分)

public class Test14 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);while (sc.hasNext()) {String[] s = sc.nextLine().split(" ");int[] arr = new int[s.length-1];int count = Integer.parseInt(s[s

【设计模式-5】设计模式的总结

说明:介绍完所有的设计模式,本文做一下总结 设计模式介绍 博主写的设计模式博客如下: 【设计模式-1】UML和设计原则 【设计模式-2.1】创建型——单例模式 【设计模式-2.2】创建型——简单工厂和工厂模式 【设计模式-2.3】创建型——原型…

【无人机】无人机UAV、穿越机FPV的概念介绍,机型与工具,证书与规定

【无人机】无人机UAV、穿越机FPV的概念介绍,机型与工具,证书与规定 文章目录 1、无人机的定义、概念、技术栈1.1 无人机的概念1.2 无人机技术(飞控,动力,通信) 2、无人机机型2.1 DJI无人机 (航拍…

链表好题-多种实现

143. 重排链表 - 力扣(LeetCode) 这道题非常经典,很多大厂都作为面试题。 方法一:寻找中点翻转链表合并链表 class Solution { public:void reorderList(ListNode* head) {if (head nullptr) {return;}ListNode* mid middleNo…

oracle数据恢复—oracle数据库执行truncate命令后的怎么恢复数据?

oracle数据库误执行truncate命令导致数据丢失是一种常见情况。通常情况下,oracle数据库误操作删除数据只需要通过备份恢复数据即可。也会碰到一些特殊情况,例如数据库备份无法使用或者还原报错等。下面和大家分享一例oracle数据库误执行truncate命令导致…

OneNet + openssl + MTLL

1.OneNet 使用的教程 1.在网络上搜索onenet,注册并且登录账号。 2.产品服务-----物联网服务平台立即体验 3.在底下找到立即体验进去 4.产品开发------创建产品 5.关键是选择MQTT,其他的内容自己填写 6.这里产品以及开发完成,接下来就是添加设…

分享两个日常办公软件:uTools、PixPin

1. uTools 网址:https://u.tools/ 这是一个高效智能的在线工具平台。 特点: 专为提升用户的工作效率跟生活便利性设计。 优点: 1:由国内团队开发。 2:通过插件化的方式为用户提供多样化的功能支持。 3&#xf…

Golang基础学习

​​​​​​​​​​ 初见golang语法 go项目路径 cd $GOPATH //ls可以看到有bin,pkg,src三个文件 cd src/ mkdir GolangStudy cd GolangStudy mkdir firstGolanggo程序执行: go run hello.go//如果想分两步执行: go build hello.go ./hello导入包的方式 import "f…

Spark 之 DataFrame 开发

foreachPartition val data = spark.sparkContext.parallelize(1 to 100)// 使用 foreachPartition 批量处理分区 data.foreachPartition {partitionIterator =

嵌入式学习笔记 - freeRTOS xTaskResumeAll( )函数解析

第一部分 移除挂起等待列表中的任务 while( listLIST_IS_EMPTY( &xPendingReadyList ) pdFALSE )//循环寻找直到为空,把全部任务扫描一遍 { pxTCB ( TCB_t * ) listGET_OWNER_OF_HEAD_ENTRY( ( &xPendingR…

机器学习KNN算法全解析:从原理到实战

大家好!今天我们来聊聊机器学习中的"懒人算法"——KNN(K-Nearest Neighbors,K近邻)算法。这个算法就像个"墙头草",它不学习模型参数,而是直接根据邻居的"投票"来做决策&…

【QT】自定义QWidget标题栏,可拖拽(拖拽时窗体变为normal大小),可最小/大化、关闭(图文详情)

目录 0.背景 1.详细实现 思路简介 .h文件 .cpp文件 0.背景 Qt Linux;项目遇到问题,解决后特此记录 项目需要,个性化的标题栏(是个widget),在传统的三个按钮(最大化、最小化、关闭&#xf…

FPGA定点和浮点数学运算-实例对比

在创建 RTL 示例时,经常使用 VHDL 2008 附带的 VHDL 包。它提供了出色的功能,可以高效地处理定点数,当然,它们也是可综合的。该包的一些优点包括: 有符号和无符号(后缀和后缀)定点向量。轻松将定…

Linux编程:2、进程基础知识

一、进程基本概念 1、进程与程序的区别 程序:静态的可执行文件(如电脑中的vs2022安装程序)。进程:程序的动态执行过程(如启动后的vs2022实例),是操作系统分配资源的单位(如 CPU 时…

Cursor Rules 使用

前言 最近在使用 Cursor 进行编程辅助时,发现 AI 生成的代码风格和当前的代码风格大相径庭。而且有时它会输出很奇怪的代码,总是不符合预期。 遂引出本篇,介绍一下 Rules ,它就可以做一些规范约束之类的事情。 什么是 Cursor R…

服务器数据恢复—服务器raid5阵列崩溃如何恢复数据?

服务器数据恢复环境&故障: 某品牌型号为X3850服务器上有一组由14块数据盘和1块热备盘组建的raid5磁盘阵列。 服务器在正常使用过程中突然崩溃,管理员查看raid5阵列故障情况的时发现磁盘阵列中有2块硬盘掉线,但是热备盘没有启用。 服务器数…

Go语言堆内存管理

Go堆内存管理 1. Go内存模型层级结构 Golang内存管理模型与TCMalloc的设计极其相似。基本轮廓和概念也几乎相同,只是一些规则和流程存在差异。 2. Go内存管理的基本概念 Go内存管理的许多概念在TCMalloc中已经有了,含义是相同的,只是名字有…

【DAY41】简单CNN

内容来自浙大疏锦行python打卡训练营 浙大疏锦行 知识点: 数据增强卷积神经网络定义的写法batch归一化:调整一个批次的分布,常用与图像数据特征图:只有卷积操作输出的才叫特征图调度器:直接修改基础学习率 卷积操作常…