当前位置: 首页 > ai >正文

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

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.xdnf.cn/news/12679.html

相关文章:

  • 基于python的酒水零食商城系统
  • 数论总结,(模版与题解)
  • 【Overleaf Latex模板】厦门大学课程论文Overleaf Latex模板 中文版
  • 1.认识Spring
  • 如何区分 “通信网络安全防护” 与 “信息安全” 的考核重点?
  • 在命令行直接执行可以执行成功,加入crontab定时任务执行shell脚本不成功失败的问题解决方法
  • 摩尔信使MThings V0.8.0更新要点
  • 楼宇自控通过智慧节能管理,为建筑碳中和按下加速键
  • 《经济学原理》第9版第5章弹性及其应用
  • Mybatis-Plus的Iservice接口
  • 基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解
  • pygame开发的坦克大战
  • 【HTTP三个基础问题】
  • python调用其它程序 os.system os.subprocess
  • ICPC nanchang 2025 M
  • Codeforces Round 509 (Div. 2) C. Coffee Break
  • 关于GitHub action云编译openwrt
  • 【Python】屏幕像素颜色值的获取
  • uniapp 对接腾讯云IM群组成员管理(增删改查)
  • 14.MySQL使用C语言连接
  • 20、typedef和typename
  • 什么是异步 I/O?深入解析从基础到实践
  • 多区域协同的异地多活AI推理服务架构
  • 手机端抓包大麦网抢票协议:实现自动抢票与支付
  • 【C++进阶篇】C++11新特性(下篇)
  • 领域驱动设计(DDD)
  • 我计划做自己的小项目了
  • 多文化软件团队的协作之道:在认知差异中寻找协同的支点
  • BeckHoff(倍福) PLC 顺控器执行超时故障在北尔触摸屏显示的实现
  • CKA考试知识点分享(1)---HPA