Mysql数据库——增删改查CRUD

发布于:2025-07-19 ⋅ 阅读:(17) ⋅ 点赞:(0)

一、数据库的基础命令

1.使用客户端连接服务器
mysql -u root -p
2. 使用net命令启动和关闭MYSQL服务器
打开服务:net start mysql版本号
关闭服务:net stop mysql版本号
例如:net start mysql80
3.退出服务器
quit;或者\q;
4.使用“status:”命令查看MySQL的状态信息。
status
5.查看数据库
show databases;
6.创建数据库
create database 库名;
字符集和排序规则都是数据库默认的。
create database [if not exists] 库名;
括号里面的判断可以省略,加上就是判断一下数据库里面有没有你当前创建的库名。
没有就创建成功,有点话创建失败给出一条警告信息。
或自己设置字符集和排序规则的建库方式
例如:创建一个库名为test的数据库,并指定字符集和排序规则。
create database if not exists test character set utf8mb4 collate utf8mb4_0900_ai_ci;
7.查看警告信息。
show warnings;
8.查看当前数据库默认字符集
show variables like ‘%character%’;
9.切换数据库。
use 库名;
10.查看当前选择的数据库名。
select database();
11.删除数据库。
drop database 库名;
接下来开始步入正题。增删改查都是基于表的操作首先需要创建表。

二、创建表

1.创建一张新表
create table 表名 (数据类型 字段名,[数据类型 字段名…]);
例如:创建考试成绩表
CREATE TABLE exam (
id bigint,
name VARCHAR(20),
chinese DECIMAL(3,1),
math DECIMAL(3,1),
english DECIMAL(3,1)
);
大小写都可以,MySQL中不区分大小写。
2.查看表结构
describe 表名;
或 desc 表名;

3.删除表
drop table [if exists] 表名;
4.向表中增加新的字段名
alter table 表名 add column 字段名 数据类型;
例如:向表中增加入学时间属性列,其列名为rxsj,数据类型为datetime型。
alter table xs add column rxsj datetime;
5.修改表中字段名的 类型
alter table 表名 modify 字段名 数据类型;
例如:将表xs中nl(年龄)列数据类型改为int.
alter table xs modify nl int;
6.修改字段名。
alter table 表名 change 旧的字段名 新的字段名 数据类型;
例如:修改cj列名为mark
alter table kc change cj mark char(4);
7.删除列。
alter table 表名 drop column 字段名;
例如:删除mark列
alter table kc drop column mark;
8.修改表名。
alter table 旧的表名 rename to 新的表名;

三、增(create)

insert into 表名 [(字段名,字段名)] values(值1,值1),(值2,值2);
字段名必须和表中的相符,可以是一个或者多个
值的类型必须和字段的类型一致并且要和前面指定的字段名相对应。
字符类型需要用单引号引起来。
字段名省略不写的时候默认是全列插入,所有的列都需要插入值,插入值的顺序和表中字段名的顺序一致。
添加的值可以是一个或者多个。
例如:INSERT INTO exam (id,name, chinese, math, english) VALUES
(1,‘唐三藏’, 67, 98, 56),
(2,‘孙悟空’, 87.5, 78, 77),
(3,‘猪悟能’, 88, 98, 90),
(4,‘曹孟德’, 82, 84, 67),
(5,‘刘玄德’, 55.5, 85, 45),
(6,‘孙权’, 70, 73, 78.5),
(7,‘宋公明’, 75, 65, 30);

四、查询(retrieve)

1.全列查询
select * from 表名;
例如:select * from student;
*代表所有的列。
指定列查询
select 字段名,字段名…from 表名;
例如:select id,name from student;
2.表达式查询
例如:select id,name chinese+math+english from score;
查询语文数学英语成绩的总和。
3.as关键字
例如:select id,name chinese+math+english as ‘总分’ from score;
as可以为表达式或者字段取别名。如果是字符需要用单引号引起来。as也可以省略。
4.distinct
例如:select distinct math from student;
distinct作用是去重。去掉相同的元组。distinct去重标准是两条数据所有的字段都必须一样才会被认为是相同是数据。
5.order by
例如:select * from exam order by math asc;
在exam表中按照数学成绩按照从小到大排列。
order by:排序的作用。asc是升序排序,desc是降序排序。没有写排序规则默认是升序排序。
null值排序视为比任何值都小,升序在最上面,降序在最下面。
5.1使用表达式排序
例如:select id,name,chinese+math+english as ‘总分’ from exam order ‘总分’ by desc;
5.3多级排序
select id,name,chinese,math,english from exam order by chinese desc,math asc,english desc;
先按语文降序排序,再按数学升序排序,再按英语降序排序。

五、条件查询(where)

1.比较运算符
1.1 >,>=,=,<=>,<,<=,!=,between a0 and a1,in(option),is null,is not null,like
分别是大于,大于等于,等于(null不安全)等于(null安全),小于,小于等于。不等于,范围匹配,如果是option中某一个返回true,是空值,不是空值,模糊匹配。
1.2<=>区别=
<=>把 NULL 当成一个“确定的值”来比较。两边同为 NULL 返回 1;一边 NULL、另一边非 NULL 返回 0;两边都非 NULL 时按普通数值/字符串比较。
。=如果两边任意一边为 NULL,结果直接是 NULL(既不是 0 也不是 1)。只有两边都非 NULL 且值相等时才返回 1,不等时返回 0。
因此,当你需要“把 NULL 视为普通值”来做比较(常见于 JOIN 条件或 WHERE 过滤)时,用 <=>;否则用普通 = 即可。
between a0 and a1
between a0 and a1是一个闭区间运算符支持数值,日期,字符串。
例如:SELECT * FROM products WHERE price BETWEEN 10 AND 20;
查询价格在[10,20]区间的产品。
– 日期
WHERE hire_date BETWEEN ‘2024-01-01’ AND ‘2024-12-31’;
– 字符串(按字典序)
WHERE name BETWEEN ‘Alice’ AND ‘Bob’;
in
in是一个用于判断某个值是否在一组给定值中的运算符
WHERE 列名 IN (值1, 值2, 值3, …);
例如:select * from exam where math in(90,91,92);
从 exam 表中选出 math 字段的值为 90、91 或 92 的所有记录。
like

通配符 含义 示例 匹配结果
% 0 个或多个字符 'A%' Apple, A, ABC…
_ 单个字符 'A_' An, At, A1(仅2位)

一个_就可以匹配一个字符两个_ 就可以匹配两个字符以此类推。
– 1. 查找以 A 开头的名字
SELECT * FROM users WHERE name LIKE ‘A%’;
– 2. 查找名字是 4 个字符且以 A 开头
SELECT * FROM users WHERE name LIKE 'A
__'; – 3 个下划线
– 3. 查找包含字母 B 的名字
SELECT * FROM users WHERE name LIKE ‘%B%’;
逻辑运算符

运算符 含义 示例 说明
AND 与(两边都为真才真) WHERE age > 18 AND gender = 'F' 年龄>18 且 性别为女
OR 或(任意一边为真即真) WHERE city = 'BJ' OR city = 'SH' 城市是北京 或 上海
NOT 非(取反) WHERE NOT (score < 60) 分数不低于 60

limit分页查询

参数 含义
偏移量 (offset) 从第几条开始取(第一条是 0)
行数 (rows) 取多少条

例如:SELECT * FROM exam ORDER BY id LIMIT 2 OFFSET 0;
或SELECT * FROM exam ORDER BY id LIMIT 0, 2;
按 id 升序排序,从第 0 条开始取 2 条记录(即第 1、2 条)。

六、修改(update)

UPDATE 表名
SET 列1 = 新值1,
列2 = 新值2,

[WHERE 条件]; – 不写 WHERE 会更新整张表!
例如:把学号为 1001 的学生数学成绩改为 95:
update student set math=95 where id=1001;

七、删除(delete)

目的 示例
删除某一行 DELETE FROM exam WHERE id = 1001;
删除多行 DELETE FROM exam WHERE math < 60;
清空整张表(保留结构) DELETE FROM exam;
删除前 N 条(MySQL 扩展) DELETE FROM exam WHERE math < 60 LIMIT 10;

例如:DELETE FROM student WHERE id = 1001;
总结:
在这里插入图片描述
完结。


网站公告

今日签到

点亮在社区的每一天
去签到