✨哈喽,进来的小伙伴们,你们好耶!✨
🛰️🛰️系列专栏:【通关MySQL】
✈️✈️本篇内容:MySQL增删改查(CRUD)。
🚀🚀代码存放仓库gitee:Java数据结构代码存放!
⛵⛵作者简介:一名双非本科大三在读的科班Java编程小白,道阻且长,你我同行!
目录
语法:
- INSERT [INTO] table_name
- [(column [, column] ...)]
- VALUES (value_list) [, (value_list)] ...
1、首先创建一个学生表
- DROP TABLE IF EXISTS student;
- CREATE TABLE student (
- id INT,
- sn INT comment '学号',
- name VARCHAR(20) comment '姓名',
- qq_mail VARCHAR(20) comment 'QQ邮箱'
- );
运行结果:
- INSERT INTO student VALUES(1,101,'张三','123@qq.com');
- INSERT INTO student VALUES (2,201,'李四','1234@qq.com');
运行结果:
- insert into student (id,sn,name,qq_mail) values
- (3,301,'王五','234@qq.com'),
- (4,401,'赵六','345@qq.com');
运行结果:
语法:
- SELECT
- [DISTINCT] {* | {column [, column] ...}
- [FROM table_name]
- [WHERE ...]
- [ORDER BY column [ASC | DESC], ...]
- LIMIT ...
案列:创建一个考试成绩表
- DROP TABLE IF EXISTS exam_result;
- CREATE TABLE exam_result (
- id INT,
- name VARCHAR(20),
- chinese DECIMAL(3,1),
- math DECIMAL(3,1),
- english DECIMAL(3,1)
- );
插入测试数据
- INSERT INTO exam_result (id,name, chinese, math, english) VALUES
- (1,'唐三藏', 67, 98, 56),
- (2,'孙悟空', 87.5, 78, 77),
- (3,'猪悟能', 88, 98.5, 90),
- (4,'曹孟德', 82, 84, 67),
- (5,'刘玄德', 55.5, 85, 45),
- (6,'孙权', 70, 73, 78.5),
- (7,'宋公明', 75, 65, 30);
运行结果:
通常情况下不建议使用*全列查询
1、查询的列越多,意味着需要传输的数据量越大;
2、可能会影响到索引的使用。
select * from exam_result;
运行结果:
指定列的顺序不需要按照表中的列顺序来。
select id,name,chinese from exam_result;
运行结果:
运行结果:
select distinct math from exam_result;
运行结果:
语法:
- -- ASC 为升序(从小到大)
- -- DESC 为降序(从大到小)
- -- 默认为 ASC
- SELECT ... FROM table_name [WHERE ...]
- ORDER BY column [ASC|DESC], [...];
SELECT name, English FROM exam_result ORDER BY English;
降序排列:
SELECT name, English FROM exam_result ORDER BY English desc;
运行结果:
当使用 SELECT 语句进行查询时,MySQL 允许用户对表达式的左边操作数和右边操作数进行比较,比较结果为真,则返回 1,为假则返回 0,比较结果不确定则返回 NULL。MySQL 支持的比较运算符如下表所示。
逻辑运算符:
案列演示
-- 查询英语不及格的同学及英语成绩 ( < 60 )
SELECT name, english FROM exam_result WHERE english < 60;
-- 查询语文成绩好于英语成绩的同学
SELECT name, chinese, english FROM exam_result WHERE chinese > english;
运行结果:
- select * from exam_result where chinese > 80 or math >70 and english >70;
-
- select * from exam_result where( chinese > 80 or math >70) and english >70;
运行结果:
1、between …… and……
查询语文成绩在80-90之间的学生姓名;
SELECT name, chinese FROM exam_result WHERE chinese BETWEEN 80 AND 90;
2、in
SELECT name, math FROM exam_result WHERE math IN (58, 59, 98, 99);
运行结果:
- -- % 匹配任意多个(包括 0 个)字符
- SELECT name FROM exam_result WHERE name LIKE '孙%';__ 匹配到孙悟空、孙权
- -- _ 匹配严格的一个任意字符
- SELECT name FROM exam_result WHERE name LIKE '孙_';__ 匹配到孙权
运行结果:
语法:
- -- 起始下标为 0
- -- 从 0 开始,筛选 n 条结果
- SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n;
- -- 从 s 开始,筛选 n 条结果
- SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT s, n;
- -- 从 s 开始,筛选 n 条结果,比第二种用法更明确,建议使用
- SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n OFFSET s;
案例、按id进行分页,每页三条记录
- select id,name,math,english,chinese from exam_result order by id limit 3 offset 0;
- select id,name,math,english,chinese from exam_result order by id limit 3 offset 3;
- select id,name,math,english,chinese from exam_result order by id limit 3 offset 6;
运行结果:
语法:
语法:DELETE FROM table_name [WHERE ...]
案列:删除孙权的考试成绩
DELETE FROM exam_result where name = '孙权';
运行结果:(表中已无孙权的考试成绩)
OK以上就是关于MySQL增删改查的基础部分全部内容了,学习MySQL难度不是很高,重要的是多加练习提高熟练度,还有在写MySQL语句的时候我们可以先在记事本上来提前写好语句然后在粘贴到MySQL上,这样有助于提高我们的学习效率,同时发现语句错误可以及时更改,博主后续会持续更新MySQL进阶增删改查的内容,创作不易,期待你的一键三连!