入门必看! MySQL增删改查全套示例SQL 直接复制运行

修改数据

sql 复制代码
1. update 的作用就是修改表中已有的数据
2. update users set username = 'user-2' where id = 2;
3. update 表名称 set 字段名称 = 新值 where 条件 (基础语法)

修改后进行确认

bash 复制代码
1. select * from users where id = 2;

修改多个字段

bash 复制代码
1. update users set username = 'user-3', password = '234567' where id = 2;

SQL语法

ini 复制代码
1. 不必完全写成一行,字段比较多的时候,那么可以进行换行,换行的好处是更加的清晰,也不容易遗漏逗号。

```SQL
    update users 
    set 
        username = 'user-4', 
        password = '2345678' 
    where id = 2;
``` 

updated_at 时间字段

sql 复制代码
1. updated_at 表示数据最后一次修改的时间
2. 在users表中,设计时间 updated_at datetime default current_timestamp
3. default current_timestamp 在新增数据时,会默认生成当前时间
4. 所以说当我们修改用户资料的时候,也需要同步更新 updated_at

updated_at 如何更新呢?

scss 复制代码
1. now() 获取当前的时间
2. select now();

where 在 update 中的重要性

ini 复制代码
1. 如果没有写条件查询,就是写where,那么你怎么知道你修改的是那一条数据呢?
2. 错误示范如下:
```SQL
    update users 
    set 
        username = 'user-4', 
        password = '2345678' 
``` 

删除数据

sql 复制代码
1. delete 的作用就是删除
2. delete from users where id = 2;
3. delete from 表名称 where 条件
4. 删除前先查询
5. 折行写
```SQL
    delete from users
    where id = 2;
``` 
6. 完整的流程为 1.先查询 2.确认数据 3.删除 4.确认删除结果

where 在 delete 中的重要性

markdown 复制代码
1. delete from users;  
2. 删除表中所有的数据;  

3. 删除表中所有数据会有什么影响呢?
    3.1 users 表还在
    3.2 字段也还在
    3.3 但表中的数据就已经全部删除了

drop table 删除表

markdown 复制代码
1. drop table users; 删除整张表
2. drop table 表名称;
    1. 删除整张表
    2. 表结构没有了
    3. 表数据没有了

delete 和 drop 的区别

markdown 复制代码
1. delete 删除表中的数据,但是表还在。
2. drop   删除整张表,数据和结构都没有了

进阶的增删改查-1

查询

sql 复制代码
1. select * from user_info order by age desc;
2. select * from user_info order by 字段名 排序规则
3. order by 表示进行排序
4. desc     表示从大到小进行排序
5. asc      表示从小到大进行排序

6. select * from user_info where age > 18;

修改

ini 复制代码
1. update user_info set age = 21 where name = '张三';

删除

ini 复制代码
1. delete from user_info where name = '张三';
2. 删除分软删除和物理删除(硬删除)
  • 总结
    1. 写删除和修改时,一定要写 where 1.1 如果不写 where 的话就会有危险的操作,比如把表的数据删除掉。

    2. 先查再改,先查再删。 2.1 select * from user_info where name = '张三';

    3. 先不要求快,先追求稳。 3.1 看懂SQL 3.2 你自己能写 3.3 你应该知道你写的这个语句,执行后有什么结果

进阶的增删改查-2

插入

scss 复制代码
1. decimal(5, 2) 数据类型表示可以有小数且可以有两位。应用场景比如说学生分数。

查询

sql 复制代码
1. 常见的比较运算符号
    1.1 =  等于
    1.2 >  大于
    1.3 <  小于
    1.4 >= 大于等于
    1.5 <= 小于等于
    1.6 != 不等于
    1.7 <> 不等于

2. AND 和 OR
    2.1 AND 表示并且的意思
    2.2 OR  表示或者的意思

    2.3 select * from student where age > 18 and gender = '女';
    2.4 select * from student where 条件1 and 条件2;

    2.5 select * from student where age < 18 or score > 90;
    2.6 select * from student where 条件1 or 条件2;

3. between and
    3.1 between and 表示查询一个范围,区间。
    3.2 select * from student where age between 18 and 20;
    3.3 意思是大于等于18岁,并且小于等于20岁。
    3.4 select * from student where age between 条件1 and 条件2;

4. in 
    4.1 查询多个值
    4.2 select * from student where age in(18, 19, 20);

修改

删除

  • 总结

进阶的增删改查-3

插入

查询

sql 复制代码
1. 空值判断
    1.1 is null 表示就是没有值, 就是表示这个字段没有值。
    1.2 注意不是 0, fasle, ''
    1.3 有些值是可以非必填写的。

    1.4 select * from student where address is null;  表示查询地址为空
    1.5 select * from student where 字段名称 is null;

    1.6 select * from student where address is not null; 表示查询地址不为空
    1.6 select * from student where 字段名称 is not null; 

2. LIKE 模糊查询    
    2.1 模糊查询,比如说 全国姓氏分布,`小`字开头的
    2.2 经常和%一起使用。
    2.3 %     表示任意多个字符
    2.4 小%   表示以`小`字开头
    2.5 %小%  表示中间包含`小`字
    2.6 %小   表示以`小`字结尾

    2.7 select * from student where name like '小%'; 模糊查询,查询名字中是小字开头的
    2.8 select * from student where name like '条件%';

    2.9 select * from student where address like '%州'; # 模糊查询,查询名字中是州字结尾的
    2.10 select * from student where address like '%条件';

3. LIMIT 分页 
    1. MySQL中常用的分页就是 LIMIT
    2. select * from student limit 5;   代表着只查询5条数据
    3. select * from student limit 条数

    4. select * from student limit 起始位置, 条数; 
    5. select * from student limit 0, 5;
    
4. 综合

```sql
    /*
        查询 性别为女 并且 分数大于等于 80分
        并进行从大到校的分数排序
        请对查询的结果进行分页,每页5条。
    
    */

    select * from student
    where gender = '女' and score >= 80
    order by score desc 
    limit 0, 5;    

```

修改

删除

  • 总结

    分页公式
    1. pageNumber, pageSize

    2. pageNumber 代表着页面数 1

    3. pageSize 页面的条数 10

    4. 起始位置:起始位置 = (pageNumber - 1) * 页面的条数

    5. (1 - 1) * 10 = 0; 第一页的起始数据

    6. (2 - 1) * 10 = 10; 第二页的起始数据

    7. (3 - 1) * 10 = 20; 第三页的起始数据

基础的

sql 复制代码
# 完整内容
# 使用数据库
use news_admin_api1;

# 修改某一个字段名的数值
update users set username = 'user-2' where id = 2;

# 修改后进行确认
select * from users where id = 2;
select * from users where username = 'user-2';

# 修改多个字段的值,可以折行写。
update users 
set 
	username = 'user-4', 
	password = '2345678' 
where id = 2;

# 获取当前的时间
select now();

# 修改多个字段的值,并同步更新时间。
update users 
set 
	username = 'user-5', 
	password = '23456789',
	update_at = now()
where id = 2;

# 删除一条数据
delete from users where id = 2;

# 删除表中所有的数据
delete from users;

进阶-1

sql 复制代码
# 新建数据库
create database mysql_study;

# 使用数据库
use mysql_study;

# 建表
create table user_info (
	id int primary key auto_increment,
	name varchar(50) not null,
	age int,
	created_at datetime default current_timestamp
);

# 插入值
insert into user_info (name, age) values ('张三', 18);
insert into user_info (name, age) values ('李四', 19);
insert into user_info (name, age) values ('王五', 20);

# 查询插入值
select * from user_info;

# 只查询某个字段
select age from user_info;

# 按照年龄进行排序,从大到小。
select * from user_info order by age desc;

# 按照年龄进行排序,从小到大。
select * from user_info order by age asc;

# 查询年龄大于18岁的用户
select * from user_info where age > 18;

# 查询年龄小于19岁的用户
select * from user_info where age < 19;

进阶-2

sql 复制代码
# 创建数据库
create database if not exists mysql_study1;

# 使用
use mysql_study1;

# 删除表
drop table if exists student;

# 创建表
create table student(
	id int primary key auto_increment,
	name varchar(50) not null,
	age int,
	gender varchar(10),
	score decimal(5, 2),
	address varchar(100),
	created_at datetime default current_timestamp
);


# 插入数据
INSERT INTO student (name, age, gender, score, address) VALUES ('小明', 18, '男', 88.50, '北京');
INSERT INTO student (name, age, gender, score, address) VALUES ('小红', 19, '女', 92.00, '上海');
INSERT INTO student (name, age, gender, score, address) VALUES ('小刚', 20, '男', 76.50, '广州');
INSERT INTO student (name, age, gender, score, address) VALUES ('小丽', 17, '女', 95.00, '深圳');
INSERT INTO student (name, age, gender, score, address) VALUES ('小军', 21, '男', 67.00, '杭州');
INSERT INTO student (name, age, gender, score, address) VALUES ('小美', 18, '女', 81.00, '成都');
INSERT INTO student (name, age, gender, score, address) VALUES ('大壮', 22, '男', 59.00, '武汉');
INSERT INTO student (name, age, gender, score, address) VALUES ('阿强', 20, '男', 73.50, '西安');
INSERT INTO student (name, age, gender, score, address) VALUES ('阿花', 19, '女', 86.00, '南京');
INSERT INTO student (name, age, gender, score, address) VALUES ('小天', 18, '男', 90.00, '苏州');

# 查询表所有数据
SELECT * FROM student;

# 查询年龄大于18岁的,并且性别是女生的学生
select * from student where age > 18 and gender = '女';

# 查询年龄小于18岁的,或者分数大于90分的学生
select * from student where age < 18 or score > 90;

# 查询年龄18岁到20岁之间的学生
select * from student where age between 18 and 20;

# 查询年龄在18、19、20 岁的学生
select * from student where age in(18, 19,20);

进阶-3

sql 复制代码
    # 创建数据库
create database if not exists mysql_study1;

# 使用
use mysql_study1;

# 删除表
drop table if exists student;

# 创建表
create table student(
	id int primary key auto_increment,
	name varchar(50) not null,
	age int,
	gender varchar(10),
	score decimal(5, 2),
	address varchar(100),
	created_at datetime default current_timestamp
);


# 插入数据
INSERT INTO student (name, age, gender, score, address) VALUES ('小明', 18, '男', 88.50, '北京');
INSERT INTO student (name, age, gender, score, address) VALUES ('小红', 19, '女', 92.00, '上海');
INSERT INTO student (name, age, gender, score, address) VALUES ('小刚', 20, '男', 76.50, '广州');
INSERT INTO student (name, age, gender, score, address) VALUES ('小丽', 17, '女', 95.00, '深圳');
INSERT INTO student (name, age, gender, score, address) VALUES ('小军', 21, '男', 67.00, '杭州');
INSERT INTO student (name, age, gender, score, address) VALUES ('小美', 18, '女', 81.00, '成都');
INSERT INTO student (name, age, gender, score, address) VALUES ('大壮', 22, '男', 59.00, '武汉');
INSERT INTO student (name, age, gender, score, address) VALUES ('阿强', 20, '男', 73.50, '西安');
INSERT INTO student (name, age, gender, score, address) VALUES ('阿花', 19, '女', 86.00, '南京');
INSERT INTO student (name, age, gender, score, address) VALUES ('小天', 18, '男', 90.00, '苏州');

# 查询表所有数据
SELECT * FROM student;

# 查询年龄大于18岁的,并且性别是女生的学生
select * from student where age > 18 and gender = '女';

# 查询年龄小于18岁的,或者分数大于90分的学生
select * from student where age < 18 or score > 90;

# 查询年龄18岁到20岁之间的学生
select * from student where age between 18 and 20;

# 查询年龄在18、19、20 岁的学生
select * from student where age in(18, 19,20);

# 空值判断,首先插入数据时,先模拟一个有空值的数据
insert into student (name, age, gender, score) values ('测试同学', 23, '男', 70);

# 查询地址为空的同学
select * from student where address is null;

# 查询地址不为空的同学
select * from student where address is not null;

# 模糊查询,查询名字中是小字开头的
select * from student where name like '小%';

# 模糊查询,查询名字中是州字结尾的
select * from student where address like '%州';

# 分页查询,查询前5条学生信息
select * from student limit 5;

# 分页查询,查询第一页,每页5条数据
select * from student limit 0, 5;

# 分页查询,查询第一页,每页10条数据
select * from student limit 0, 10;

# 分页查询,查询第二页,每页10条数据
select * from student limit 10, 10;

# 分页查询,查询第三页,每页10条数据
select * from student limit 20, 10;

# 综合
select * from student
where gender = '女' and score >= 80
order by score desc 
limit 0, 5;
相关推荐
huipeng9261 小时前
企业级微服务开发实战(二):微服务基础设施搭建与中间件部署
java·redis·mysql·spring cloud·微服务·nacos·rabbitmq
可乐ea1 小时前
【知识获取与分享社区项目 | 项目日记第 24 天】终章总结:从认证、发布、计数、Feed、搜索到 RAG:完整复盘一个知识社区后端系统
java·spring boot·redis·mysql·elasticsearch·ai·kafka
小小编程路2 小时前
MySQL9.0|融合向量的新一代关系数据库安装配置教程
mysql
不会就选b11 小时前
MySQL之视图
数据库·mysql
kkk哥16 小时前
weixin121作品集展示微信小程序
java·mysql·微信小程序·ssm·b/s架构·作品集展示微信小程序
We Just Keep growing16 小时前
【MySQL进阶篇】—— 视图、存储过程、存储函数、触发器
数据库·mysql
梦想的颜色17 小时前
MySQL 数据存储结构与查询执行生命周期深度解析
运维·数据结构·数据库·mysql·线程·优化
神龙斗士24017 小时前
增删改查操作
数据库·mysql
就叫_这个吧19 小时前
Java+MySQL+Mybatis+Junit4实现学生信息管理系统
java·mysql·mybatis