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

Mysql数据库——增删改查CRUD

文章目录

    • 一、数据库的基础命令
    • 二、创建表
    • 三、增(create)
    • 四、查询(retrieve)
    • 五、条件查询(where)
    • 六、修改(update)
    • 七、删除(delete)

一、数据库的基础命令

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;
总结:
在这里插入图片描述
完结。

http://www.xdnf.cn/news/15642.html

相关文章:

  • *SFT深度实践指南:从数据构建到模型部署的全流程解析
  • 1-大语言模型—理论基础:详解Transformer架构的实现(1)
  • LeetCode|Day18|20. 有效的括号|Python刷题笔记
  • 【数据可视化-67】基于pyecharts的航空安全深度剖析:坠毁航班数据集可视化分析
  • 小记_想写啥写啥_实现行间的Latex公式_VScode始终折叠大纲
  • 【Linux】基本指令(入门篇)(上)
  • 从0开始学习R语言--Day50--ROC曲线
  • 【深度学习】神经网络 批量标准化-part6
  • 苹果ios系统IPA包企业签名手机下载应用可以有几种方式可以下载到手机?
  • Go运算符
  • vue2 面试题及详细答案150道(91 - 100)
  • 系统IO对于目录的操作
  • 在断网情况下,网线直接连接 Windows 笔记本和 Ubuntu 服务器进行数据传输
  • AI产品经理面试宝典第36天:AI+旅游以及行业痛点相关面试题的指导
  • 小红书采集工具:无水印图片一键获取,同步采集笔记与评论
  • Golang 中 JSON 和 XML 解析与生成的完全指南
  • SpringBoot切片上传+断点续传
  • vue3引入cesium完整步骤
  • NVIDIA 驱动安装失败问题排查与解决(含离线 GCC 工具链安装全过程)
  • 如何防止GitHub上的敏感信息被泄漏?
  • Visual Studio C++编译器优化等级详解:配置、原理与编码实践
  • imx6ull UI开发
  • 20250718-1-Kubernetes 应用程序生命周期管理-应用部署、升级、弹性_笔记
  • 短视频矩阵的时代结束了吗?
  • 【推理的思想】程序正确性证明(一):演绎推理基础知识
  • 网络编程(modbus,3握4挥)
  • 代码随想录算法训练营第二十四天
  • 包管理工具npm cnpm yarn的使用
  • 【47】MFC入门到精通——MFC编辑框 按回车键 程序闪退问题 ,关闭 ESC程序退出 问题
  • LVS集群