• 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

  • 相关阅读:
    【C语言】顺序表(上卷)
    Kafka关键原理
    webpack 中 require.context() 的用法
    c++一级练习题
    J2Cache
    [附源码]java毕业设计咖啡销售管理系统-
    Spire.Office for Java 7.10.4 ~Spire.Office 旗舰版
    目标检测论文解读复现之二:基于改进YOLOv5的轻量化航空目标检测方法
    Find My运动相机|苹果Find My技术与相机结合,智能防丢,全球定位
    vue:write-excel-file页面文字转为xlsx文件
  • 原文地址:https://blog.csdn.net/software7503/article/details/127707783