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;