4-MySQL新增,修改,删除,查询数据各种语句详细讲解

select * from 班级表;
select * from 学生表;
select * from 课程表;
select * from 成绩表;
-- 查看表结构 desc 表名
desc 学生表;
-- 1.新增记录,给所有字段赋值时,可以省略字段列表,输入的值必须与字段的顺序一致
insert into 学生表 values(4,'李四',22,2,'男','362135198808081183');
-- 2.新增记录,给部分字段赋值时,必须有字段列表,输入的值与列表的顺序一致,不允许为空的字段必须输入值;
insert into 学生表(学号,姓名,班级ID) values(5,'小丽',2);
insert into 学生表(姓名,学号,班级ID) values('王老五',6,2);
-- 3.新增记录时,用set语句赋值
insert into 学生表 set 学号=7,姓名='张三丰',班级ID=1;
-- 4.用一个insert语句,新增多条记录
insert into 课程表 values(4,'JAVASCRIPT',4),(5,'C语言',4),(6,'JQUERY',2);
-- 5.批量插入数据,把数据从一个表查询出来,插入到另一个表中,前提条件:表结构兼容
create table 课程表1
(
    课程ID int primary key,
    课程名称 varchar(30),
    学分 tinyint
)
select * from 课程表;
select * from 课程表1;
insert into 课程表1(课程ID,课程名称,学分) select * from 课程表;

-- update语句:更新数据
select * from 学生表;
-- 更新一个字段:更新王老五年龄为45岁
update 学生表 set 年龄=45 where 学号=6;
-- 更新多个字段,多个字段之间用逗号分隔
update 学生表 set 年龄=30,班级ID=2,身份证号='362135198808081184' where 学号=7;
-- 批量更新:更新所有高技2班同学的年龄为18岁
update 学生表 set 年龄=18 where 班级ID=2;

-- delete 语句:删除语句,没有条件的删除语句会删除表中所有记录
-- 删除张三丰
delete from 学生表 where 学号=7;
-- 批量删除:删除所有身份证号为空的学生记录
delete from 学生表 where 身份证号 is null;
-- truncate table :删除表中所有记录,性能比delete语句快,一旦删除不可恢复,不能带条件
select * from 课程表1;
truncate table 课程表1;
/*
    从逻辑上说,TRUNCATE 语句与 DELETE 语句作用相同,但是在某些情况下,两者在使用上有所区别。
    DELETE 是 DML 类型的语句;TRUNCATE 是 DDL 类型的语句。它们都用来清空表中的数据。
    DELETE 是逐行一条一条删除记录的;TRUNCATE 则是直接删除原来的表,再重新创建一个一模一样的新表,而不是逐行删除表中的数据,执行数据比 DELETE 快。因此需要删除表中全部的数据行时,尽量使用 TRUNCATE 语句, 可以缩短执行时间。
    DELETE 删除数据后,配合事件回滚可以找回数据;TRUNCATE 不支持事务的回滚,数据删除后无法找回。
    DELETE 删除数据后,系统不会重新设置自增字段的计数器;TRUNCATE 清空表记录后,系统会重新设置自增字段的计数器。
    DELETE 的使用范围更广,因为它可以通过 WHERE 子句指定条件来删除部分数据;而 TRUNCATE 不支持 WHERE 子句,只能删除整体。
    DELETE 会返回删除数据的行数,但是 TRUNCATE 只会返回 0,没有任何意义。
    当不需要该表时,用 DROP;当仍要保留该表,但要删除所有记录时,用 TRUNCATE;当要删除部分记录时,用 DELETE。

*/
select * from 课程表;
delete from 课程表 where 课程ID=6;
insert into 课程表(课程名称,学分) values('JQUERY',2);

/*
select语句:查询语句
*号表示查询所有字段,如果只要查询部分字段,那么需要使用字段列表
*/
select * from 学生表;
-- 查询班级ID=2,年龄小于18岁的所有男生
-- 查询所有字段
select * from 学生表 where 班级ID=2 and 性别='男' and 年龄<18;
-- 查询部分字段
select 姓名,年龄,性别 from 学生表;
-- 字段名称可以取别名,在字段名称后面加一个空格,然后再写别名

select 姓名 学生姓名,年龄 学生年龄,性别 学生性别 from 学生表;

-- 所有的学生年龄增加10岁
select 姓名,年龄+10 年龄,性别 from 学生表;

-- 销售表
create table 销售表
(
    产品编码 char(3) primary key,
    产品名称 varchar(30) not null,
    单价        decimal(18,2) default 0,
    销售数量 int ,
    销售日期 datetime default now()
)

insert into 销售表(产品编码,产品名称,单价,销售数量,销售日期) values('001','华为P5',6000,18,now());
insert into 销售表(产品编码,产品名称,单价,销售数量,销售日期) values('002','华为Mate5',5480,28,now());
insert into 销售表(产品编码,产品名称,单价,销售数量,销售日期) values('003','OPPO',3000,48,now());
insert into 销售表(产品编码,产品名称,单价,销售数量,销售日期) values('004','小米',4888,38,now());
insert into 销售表(产品编码,产品名称,单价,销售数量,销售日期) values('005','VIVO',2888,38,'2020-10-1 10:10:10');
insert into 销售表(产品编码,产品名称,单价,销售数量) values('006','IPHONE14',12888,18);

select * from 销售表;
-- 统计每部手机的销售收入,查询语句中的总计是计算出来的,表中不存在该字段
select 产品编码,产品名称,单价,销售数量,单价*销售数量 总计,销售日期 from 销售表;
-- /除法运算符,%,mod取模运算(求余数)
SELECT 8/10,8 %10,8 mod 10;
select 8+10+5-3*2/6;

-- 查询班级ID=2或者班级ID=3,年龄小于18岁的所有男生
select * from 学生表 where (班级ID=2 or 班级ID=3) and 性别='男' and 年龄<18;

-- not非(取反)

select 1,not 1,not 100,not 0;


-- is null 表示值为空,is not null 值不为空
select * from 学生表;
insert into 学生表(学号,姓名,班级ID,性别) values(5,'小丽',3,'女');
insert into 学生表(学号,姓名,班级ID,性别) values(6,'小小',1,'女');
-- 查询所有身份证号码为空的学生信息
select * from 学生表 where 身份证号 is null;
-- 查询所有身份证号码不为空的学生信息


select * from 学生表 where 身份证号 is not null;

insert into 学生表(学号,姓名,班级ID,性别) values(7,'',3,'男');

select * from 学生表 where 姓名='';
-- 范围查询 between 最小值 and 最大值
-- 查询所有年龄大于等于16,并且年龄小于等于20的所有学生信息

select * from 学生表 where 年龄 between 16 and 20;
-- 等价于
select * from 学生表 where 年龄 >= 16 and  年龄<=20;

select * from 销售表;
-- 查询13号的销售记录
select * from 销售表 where 销售日期 between '2022-10-13 00:00:00' and '2022-10-13 23:59:59';
/*
    like:模糊查询
    通配符:
        下划线(_):表示一个任意字符
         %号:表示多个任意字符
*/

select * from 学生表;
-- 查询所有姓李的学生信息;
select * from 学生表 where 姓名 like '李%';
-- 查询所有姓李的,姓名只有2个字的学生信息;

select * from 学生表 where 姓名 like '李_';

-- 查询学生姓名中包含有“小”字的学生信息;
select * from 学生表 where 姓名 like '%小%';

-- 查询学生姓名中不包含有“小”字的学生信息;
select * from 学生表 where 姓名 not like '%小%';
-- in语句:就是枚举类型
-- 查询班级ID=2或者班级ID=3,年龄小于18岁的所有男生
select * from 学生表 where 班级ID in(2,3) and 性别='男' and 年龄<18;
-- 等价
select * from 学生表 where (班级ID=2 or 班级ID=3) and 性别='男' and 年龄<18;
-- 查询班级ID<>2并且班级ID<>3,年龄小于18岁的所有男生
select * from 学生表 where 班级ID not in(2,3) and 性别='男' and 年龄<18;

本人从事软件项目开发20多年,2005年开始从事Java工程师系列课程的教学工作,录制50多门精品视频课程,包含java基础,jspweb开发,SSH,SSM,SpringBoot,SpringCloud,人工智能,在线支付等众多商业项目,每门课程都包含有项目实战,上课PPT,及完整的源代码下载,有兴趣的朋友可以看看我的在线课堂

讲师课堂链接:https://edu.csdn.net/lecturer/893

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CSDN专家-赖老师(软件之家)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值