暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

小白篇(四):Mysql数据库学习-Sql语句之DML语法

数据在此 2021-03-25
1177
简短介绍

大家好,明天就是中秋和国庆节了。先祝大家双节快乐。前一篇文章给分享了下什么是DDL,给大家复习下。DDL就是对数据库或表结构的操作,如:创建、修改、删除结构。好学者都懂得温故而知新,保持良好的习惯,可以快速的提升自己。




01


什么是DML


DML是Data Manipulation Language的缩写。是指对数据进行操作的语言。我们通常操作数据使用的指令集合就叫DML语法。一般包含:select、insert、update、delete 这些语法。在工作中如果能够灵活并且熟练的使用这些语法。也可以算作一个Sql大神了。不要小看这些语法,工作中通常会有组合的使用情况。Sql是进入大数据的必备技能。




02


DML操作实战


  • 1、select语法:查询表数据使用,可以同时关联多种表进行查询。但是需要弄清楚表中数据存储的关系。如:1对1、1对多、多对多的数据关系。

  • 举例说明:一张客户信息表、一张订单信息表、一张产品表、一张实名表

  • 1对1的情况: 客户与实名表,是一对一的关系

  • 1对多的情况:客户与订单,是一对多的关系

  • 多对多的情况:产品与订单,是多对多的关系。理解这些关系,便于我们可以灵活的利用select查找出需要的数据。

    -- 为select准备测试表和数据
    -- 创建客户表(测试表)
    create table customer_info
    (
    cut_id int comment '客户id',
    cut_name varchar(2) comment '客户姓名'
    );
    -- 插入数据(测试数据)
    insert into customer_info(cut_id,cut_name) values(1,'张三');
    insert into customer_info(cut_id,cut_name) values(2,'李四');
    -- 创建客户订单表(测试表)
    create table order_info
    (
    cut_id int comment '客户ID',
    order_number varchar(20) comment '订单编号',
    order_time datetime comment '订单时间'
    );
    -- 插入数据(测试数据)
    insert into order_info(cut_id,order_number,order_time) values(1,'NO001','2020-09-29');
    insert into order_info(cut_id,order_number,order_time) values(1,'NO001','2020-10-01');
    复制

    select语法结构图
    一、普通查询
      select * from customer_info ; -- 查询所有客户数据
      复制

      二、条件查询(and 、or、like、in 、not in)
        -- and表示必须同时满足条件
        select * from customer_info where cut_id = 1 and cut_name ='张三';
        复制

          -- or表示满足其中任意一个条件
          select * from customer_info where cut_id = 1 or cut_name ='李四';
          复制

            -- in表示包含在集合中的所有数据
            select * from customer_info where cut_id in (1,2);
            复制

              -- not in表示不做集合中的数据。这里查询不包含“1”的数据
              select * from customer_info where cut_id not in (1);
              复制

                -- like表示模糊配置数据,"%"百分号表示任意值。这里表示“张”前面和后面可以是任意值。
                select * from customer_info where cut_name like '%张%';
                复制

                  -- innr join 关联查询,c 和 o 表示给表取个简短的别名, on 后面是相互匹配的字段。
                  -- inner join简单点可以理解为:表1 inner join2 on1.字段 = 表2.字段。
                  -- 如果字段值可以相互匹配上就可以查询出来。
                  select
                  c.*,
                  o.*
                  from
                  customer_info c
                  inner join
                  order_info o on c.cut_id = o.cut_id
                  复制

                  说明:left join、right join 表示其中一个表为主,主表数据全部展示,另外一个表如果能匹配上,就展示否则为Null。cross join,大家可以自己尝试下,看看有什么效果。体验后,你会比较凌乱。生产过程中cross join(笛卡尔积关联) 用的比较少。特别是大数据量下,要特别谨慎!


                  2、insert语法:将数据按照字段顺序插入表中。


                  一、insert table values
                    -- insert table values: 向客户表添加一个用户(前提是表是存在的)
                    insert into customer_info(cut_id,cut_name) values(3,'王五');
                    复制

                    二、insert table select
                      -- insert table select: 查询结果添加到客户表(前提字段个数能匹配上)
                      insert into customer_info(cut_id,cut_name)
                      select
                      4 as cut_id,
                      '赵六' as cut_name;-- 可以单独执行下select,就知道添加的内容了
                      复制


                      3、update语法:将数据内容进行修改操作。(灵活运用where和join进行批量或精准修改)

                      一、where 条件查询修改(根据获取的结果集来决定修改的数据条数)
                        -- update 表 set 字段='修改的值'。查询出id=4的修改名称为'测试'
                        update customer_info set cut_name='测试' where cut_id = 4;
                        复制


                        4、delete 语法:删除数据(数据量庞大的情况下,不要使用。delete是先查询之后删除,大数据量下很吃内存。关系型数据库应考虑分段删除,即一点点的删除。一般是1W,1W的进行delete操作。保障资源足够快的释放。不影响数据库的使用)

                        一、delete from 表 where
                          -- 语法:delete fromwhere。如果不写where,将删除所有数据(很危险)
                          delete from customer_info where cut_id = 4;
                          复制

                          说明:删除是一种很危险的操作。所以在写delete 前一定要先select验证下,结果集是否为需要删除的数据。delete 数据可以恢复,比较麻烦。truncate table 表(这是一种DDL语句,删除后无法恢复数据。但是整表清理的速度和效果比delete要好,因为delete并非真实物理删除,truncate是从物理结构上删除的前方高能,小心驾驶!)



                          03


                          小结


                          DML是我们在工作中非常非常,常用的语法。数据开发者70%-80%时间在写select查询(不是在查数,就是在查数的路上)。所以学习大数据之前,将数据库的DML语法练习精通了。会很轻松的胜任工作。数据开发岗,大多时间就是梳理表关系,之后根据需求,编写Sql查询出相应的结果。工作中查询的场景会相对复杂。当然学会优化Sql也是一个需要学习的方向。优质的Sql代码,可以更加高效的获取相应的结果。Sql我个人认为是目前最简单的一门语言了。因为它简单,目前很多工具都在向它看齐,如:Flink on Sql、AI on Sql。就是希望大家可以轻松的搞点一件事情。(“嘿,小王。我想知道咱们今年交易额有多少了”。“好嘞,马上给您查出来”)各位小伙伴们Get到了吗?思维一定要灵活哦,我得闪了!老板要打人了!


                          图片截自www.runoob.com


                          广告(大数据学习)


                          打个小广告,如果真心想学大数据,后台留言免费开些直播课程教教小伙伴们(真实工作体验)。如果感觉还行,再讨论付费课程,远比市面上便宜,学得真实(毕竟本人还在厂里上班)。我们有在平安、众安、同程、美团工作的小伙伴。虽然大部分做的架构的事,但是我们都是小屌丝。都是为了生活而努力,各位一起加油!




                          如果大家喜欢可关注公众号,感谢!



                          文章转载自数据在此,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                          评论