MySQL数据库的增删改查(初阶)

目录

插入数据(Insert)

单行插入

批量插入

查询数据(Select)

基本查询

别名

去重:DISTINCT

条件查询

[排序:ORDER BY](#排序:ORDER BY)

分页查询:LIMIT

更新数据(Update)

删除数据(Delete)


插入数据(Insert)

单行插入

sql 复制代码
INSERT INTO students (name, age, grade) VALUES ('Alice', 25, 'A');

批量插入

sql 复制代码
INSERT INTO students (name, age, grade)
VALUES
    ('Bob', 30, 'B'),
    ('Charlie', 22, 'C'),
    ('David', 28, 'A');

查询数据(Select)

基本查询

基本查询使用SELECT语句,你可以检索表中的数据。

sql 复制代码
SELECT * FROM students;

上面的*代表的是查询所有列,如果要查询指定列如下:

比如我要查询一个stuId,stuName

sql 复制代码
SELECT stuId,stuName FROM students;

别名

为查询结果中的列指定别名,表示返回的结果集中,以别名作为该列的名称:

sql 复制代码
SELECT id, name, chinese + math + english 总分 FROM exam_result;

去重:DISTINCT

使用DISTINCT关键字对某列数据进行去重:

sql 复制代码
-- 98 分重复了
SELECT math FROM exam_result;
+--------+
| math |
+--------+
|     98 |
|     78 |
|     98 |
|     84 |
|     85 |
|     73 |
|     65 |
+--------+

去重后面的结果:

sql 复制代码
-- 去重结果
SELECT DISTINCT math FROM exam_result;
+--------+
| math |
+--------+
|     98 |
|     78 |
|     84 |
|     85 |
|     73 |
|     65 |
+--------+

条件查询

条件查询使用WHERE子句来筛选数据。

sql 复制代码
SELECT * FROM students WHERE grade = 'A';

排序:ORDER BY

  1. 没有 ORDER BY 子句的查询,返回的顺序是未定义的,永远不要依赖这个顺序

  2. NULL 数据排序,视为比任何值都小,升序出现在最上面,降序出现在最下面

sql 复制代码
-- 查询同学姓名和 qq_mail,按 qq_mail 排序显示
SELECT name, qq_mail FROM student ORDER BY qq_mail;
SELECT name, qq_mail FROM student  ORDER BY qq_mail DESC;

使用表达式及别名排序:

sql 复制代码
-- 查询同学及总分,由高到低
SELECT name, chinese + english + math FROM exam_result 
 ORDER BY chinese + english + math DESC;
SELECT name, chinese + english + math total FROM exam_result 
 ORDER BY total DESC;

还可以对多个字段进行排序,排序优先级随书写顺序

sql 复制代码
-- 查询同学各门成绩,依次按 数学降序,英语升序,语文升序的方式显示
SELECT name, math, english, chinese FROM exam_result 
 ORDER BY math DESC, english, chinese;

分页查询:LIMIT

按 id 进行分页,每页 3 条记录,分别显示 第 1、2、3 页

sql 复制代码
-- 第 1 页
SELECT id, name, math, english, chinese FROM exam_result ORDER BY id LIMIT 3
OFFSET 0;
-- 第 2 页
SELECT id, name, math, english, chinese FROM exam_result ORDER BY id LIMIT 3
OFFSET 3;
-- 第 3 页,如果结果不足 3 个,不会有影响
SELECT id, name, math, english, chinese FROM exam_result ORDER BY id LIMIT 3
OFFSET 6;

如果是只限制返回前三条数据,我们可以这样:

sql 复制代码
SELECT * FROM students ORDER BY age DESC LIMIT 3;

更新数据(Update)

使用UPDATE语句可以更新表中的数据。

sql 复制代码
UPDATE students SET age = 26 WHERE name = 'Alice';

删除数据(Delete)

使用DELETE语句可以从表中删除数据。

java 复制代码
DELETE FROM students WHERE name = 'Bob';

删除一整张表:

sql 复制代码
-- 删除整张表数据
-- 准备测试表
DROP TABLE IF EXISTS for_delete;
CREATE TABLE for_delete (
 id INT,
 name VARCHAR(20)
);
-- 插入测试数据
INSERT INTO for_delete (name) VALUES ('A'), ('B'), ('C');
-- 删除整表数据
DELETE FROM for_delete;
相关推荐
qq_529835354 分钟前
对计算机中缓存的理解和使用Redis作为缓存
数据库·redis·缓存
月光水岸New2 小时前
Ubuntu 中建的mysql数据库使用Navicat for MySQL连接不上
数据库·mysql·ubuntu
狄加山6752 小时前
数据库基础1
数据库
我爱松子鱼3 小时前
mysql之规则优化器RBO
数据库·mysql
闲猫3 小时前
go orm GORM
开发语言·后端·golang
丁卯4043 小时前
Go语言中使用viper绑定结构体和yaml文件信息时,标签的使用
服务器·后端·golang
chengooooooo3 小时前
苍穹外卖day8 地址上传 用户下单 订单支付
java·服务器·数据库
Rverdoser4 小时前
【SQL】多表查询案例
数据库·sql
Galeoto4 小时前
how to export a table in sqlite, and import into another
数据库·sqlite
人间打气筒(Ada)4 小时前
MySQL主从架构
服务器·数据库·mysql