Mysql基本操作CURD(上)_mysql insert查询出来的数据
🏝️专栏:Mysql_猫咪-9527的博客-CSDN博客
🌅主页:猫咪-9527-CSDN博客“欲穷千里目,更上一层楼。会当凌绝顶,一览众山小。”
目录
1. 创建(create)
全列插入
省略into插入
插入单条记录
插入多条记录
处理重复键
replace into
根据原表创建新表
将查找的内容添加至新表
2. 读取(retrieve)
查询所有列
去重查询
查询特定列
重命名查询
表达式查询
条件查询
排序查询
分页查询
聚合查询
随堂测试
CRUD
create
retrieve
update
delete
1. 创建(create)
create语句用于向数据库中插入新数据。理解如何高效地插入数据是数据库操作的基本技能。 
语法:
这是MySQL中 INSERT 语句的基本语法,用于向数据库表中插入数据。它的结构如下:
基本语法
INSERT [INTO] table_name[(column1, column2, ...)]VALUES (value1, value2, ...) [, (value1, value2, ...)] ...
各部分解释:
INSERT INTO:表示插入数据到指定表。
table_name:指定要插入数据的表名。
(column1, column2, ...):可选部分,列出要插入数据的列名。如果省略列名,默认插入表中的所有列。
VALUES:后面跟随插入的值。每一组值对应表中的列。
value_list:插入的值,可以是单个值,也可以是多个值,多个值之间用逗号隔开。
小知识:
插入大量数据时,使用批量插入可以提高效率,而不是一次插入一条记录。
如果插入数据时,某些字段没有提供值,它们会使用默认值(例如
null或字段定义时的默认值)。其中insert into 可以写为insert,into可以省略。
示例:
- 
全列插入
 
全列插入:所要插入的列可以省略不写,但是必须插入表的全部列。
指定列插入:可以选择要插入列

- 
省略into插入
 
下面两条语句达到的效果一样:

- 
插入单条记录
 
insert into students values (8, 130,\'李明\',\'123\');
- 
插入多条记录
 
insert into students values(9, 131,\'刘亮\',\'166\'),(10,132,\'王强\',\'124\');

- 
处理重复键
 
使用on duplicate key update来更新已有记录。
insert into students values (200, 20010, \'张伟\',\'111111\')on duplicate key update name = \'zhangwe\';




注:



- 
replace into
 
当主键或唯一键冲突时,删除旧记录并插入新记录。
replace into employees (emp_id, emp_name) values (30001, \'陈晨\');



- 
根据原表创建新表
 
create table students_e like students; 
新表复制了原表的表结构,没有复制内容:




- 
将查找的内容添加至新表
 
insert into students_e select *from where name=\'张飞\';
2. 读取(retrieve)
select语句用于查询数据库中的数据。可以通过过滤条件、排序和分页等操作,精确获取所需数据。
基本语法:
SELECT[DISTINCT] {* | {column [, column] ...}[FROM table_name][WHERE ...][ORDER BY column [ASC | DESC], ...]LIMIT ...
各部分解释:
SELECT:用于选择查询的数据。
DISTINCT(可选):如果指定了DISTINCT,则只返回不同的(唯一的)结果。
*:表示选择所有列。
column [, column] ...:表示选择一个或多个特定列。
FROM table_name:指定从哪个表中获取数据。
WHERE ...(可选):可以指定查询的条件,筛选符合条件的记录。
ORDER BY column [ASC | DESC](可选):对结果进行排序,ASC是升序,DESC是降序。
LIMIT ...(可选):限制返回的记录数。
小知识:
distinct关键字用于去重,查询结果中只返回唯一的记录。使用
join可以将多个表的数据结合起来,特别适用于处理关系型数据。
示例:
-- 创建表结构create table exam_result ( id int unsigned primary key auto_increment, name varchar(20) not null comment \'同学姓名\', chinese float default 0.0 comment \'语文成绩\', math float default 0.0 comment \'数学成绩\', english float default 0.0 comment \'英语成绩\');-- 插入测试数据insert into exam_result (name, chinese, math, english) values(\'唐三藏\', 67, 98, 56),(\'孙悟空\', 87, 78, 77),(\'猪悟能\', 88, 98, 90),(\'曹孟德\', 82, 84, 67),(\'刘玄德\', 55, 85, 45),(\'孙权\', 70, 73, 78),(\'宋公明\', 75, 65, 30);
- 
查询所有列
 
select * from exam_result;
- 
去重查询
 
select distinct *from distinct_text;


- 
查询特定列
 
select id,name from exam_result;
- 
重命名查询
 
select id 学号 ,name 姓名 ,math+chinese+english 总分 from exam_result;

- 
表达式查询
 
select 1+1;
select 1>2;


select math+10 from exam_result;
select math from exam_result;


- 
条件查询
 
select emp_name, salary from employee_details where salary < 5000;
比较运算符:

逻辑比较符:

- 
排序查询
 
select emp_name, department from employee_details order by department desc;
排序查询中通过:order by desc(降序)/asc(升序),来确定返回列表的顺序,默认为asc。
注意:未使用order返回的数据是未定义的,请不要依赖
- 
分页查询
 
select emp_id, emp_name from employee_details limit 5 offset 0;
分页查询两种方式:
方案一:
mysql使用 limit 和 offset 来控制分页。
select * from table_name limit 10 offset 20;
limit指定返回记录的数量。offset指定查询结果跳过的记录数。
方案二:
select * from exam_result limit 20,10;
- 逗号前面表示指定查询结果跳过的记录数
 - 逗号后面表示指定返回记录的数量
 

- 
聚合查询
 
select count(*) from employees;
随堂测试
学习到这里的小伙伴我为你们准备了配套练习题快来尝试一下吧
随堂测试链接


