• 〖Python 数据库开发实战 - MySQL篇㉔〗- 数据插入操作 - NSERT语句


    万叶集
    🎉 隐约雷鸣,阴霾天空。 🎉
    🎉 但盼风雨来,能留你在此。 🎉


    前言
    ✌ 作者简介:渴望力量的哈士奇 ✌,大家可以叫我 🐶哈士奇🐶 ,一位致力于 TFS - 全栈 赋能的博主 ✌
    🏆 CSDN博客专家认证、新星计划第三季全栈赛道 MVP 、华为云享专家、阿里云专家博主 🏆
    📫 如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步👀
    💬 人生格言:优于别人,并不高贵,真正的高贵应该是优于过去的自己。💬
    🔥 如果感觉博主的文章还不错的话,还请👍关注、点赞、收藏三连支持👍一下博主哦


    专栏系列(点击解锁)学习路线(点击解锁)知识定位
    🔥Python全栈白皮书🔥 零基础入门篇 以浅显易懂的方式轻松入门,让你彻底爱上Python的魅力。
    语法进阶篇 主要围绕多线程编程、正则表达式学习、含贴近实战的项目练习 。
    自动化办公篇 实现日常办公软件的自动化操作,节省时间、提高办公效率。
    自动化测试实战篇 从实战的角度出发,先人一步,快速转型测试开发工程师。
    数据库开发实战篇 掌握关系型与非关系数据库知识,提升数据库实战开发能力。
    爬虫入门与实战 更新中
    数据分析篇 更新中
    前端入门+flask 全栈篇 更新中
    django+vue全栈篇 更新中
    拓展-人工智能入门 更新中
    网络安全之路 踩坑篇 记录学习及演练过程中遇到的坑,便于后来居上者
    网安知识扫盲篇 三天打鱼,不深入了解原理,只会让你成为脚本小子。
    vulhub靶场漏洞复现 让漏洞复现变得简单,让安全研究者更加专注于漏洞原理本身。
    shell编程篇 不涉及linux基础,最终案例会偏向于安全加固方向。 [待完结]
    WEB漏洞攻防篇 2021年9月3日停止更新,转战先知社区等安全社区及小密圈
    渗透工具使用集锦 2021年9月3日停止更新,转战先知社区等安全社区及小密圈
    点点点工程师 测试神器 - Charles 软件测试数据包抓包分析神器
    测试神器 - Fiddler 一文学会 fiddle ,学不会倒立吃翔,稀得!
    测试神器 - Jmeter 不仅是性能测试神器,更可用于搭建轻量级接口自动化测试框架。
    RobotFrameWork Python实现的自动化测试利器,该篇章仅介绍UI自动化部分。
    Java实现UI自动化 文档写于2016年,Java实现的UI自动化,仍有借鉴意义。
    MonkeyRunner 该工具目前的应用场景已不多,文档已删,为了排版好看才留着。

    在这里插入图片描述


    前面我们用了很多章节去学习了 “查询语句” ,这是因为以后在实际工作中,“增”、“删”、“改”、“查” 这四种类型的 SQL 语句操作使用最多的就是 “查询语句”。而且在大多数软件当中,都是 “读多写少” 的,查询的条件也是各种各样,所以在 “查询” 相关的操作就刻意的将各个部分的知识点分门别类的加强了一下。在实际工作后就可以体会得到,我们所接触的查询语句,已经能够应对大部分的业务要求了。

    在该章节,我们就爱那个学习心得 “DML” 语句,那就是向数据表中写入数据记录 —> “INSERT 语句”。



    🐳 INSERT 语句


    • “INSERT” 语句可以向数据表中写入记录,可以是一条记录,也可以是多条记录。

    • 在 "INSERT" 语句上,MySQL 比 Oracle 还是有优势的,那就是 MySQL 可以写入一条记录,也可以写入多条记录

    • 需要注意的是:不管是哪种数据库,一条 SQL 只能向一张数据表中写入数据,不能同时向多张数据表插入数据。


    “INSERT” 语法格式:(插入单条数据)

    INSERT INTO 表名 (字段1, 字段2, 字段3, ......)
    VALUES (1,2,3, ......);
    
    • 1
    • 2

    这里有个需要注意的地方,在 "INSERT" 语句执行添加数据信息时,不使用字段的声明也是可以执行的。但是执行的速度是受一定影响的,因为 MySQL 在执行 SQL 语句的时候,会进行 "词法分析" 。当发现表名后面没有字段声明时,就会去查找表结构将字段声明自动的补上。

    尤其是在插入大量数据的时候,我们都希望能够快速的写入,但是不写字段的声明 MySQL 真的做不到快速写入。


    “INSERT” 语法格式:(插入多条数据)

    INSERT INTO 
    	表名 (字段1, 字段2, 字段3, ......)
    VALUES 
    	(1,2,3, ......),
    	(1,2,3, ......),
    	(......);
    	
    -- 与插入单条数据记录的区别就在于,VALUES 子句由一条数据,变成了多条数据。
    -- 依此类推,多少条数据都可以把数据写到数据库里面。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9


    🐬 INSERT 语句演示案例①


    • 使用 "INSERT INTO " 关键字,向部门表中写入数据。(之所以选择 "部门表" 的原因是因为该表的表结构简单,在执行插入数据时字段的描述要简洁一些。

    “INSERT” SQL 语句演示案例:

    INSERT INTO 
    	t_dept(deptno, dname, loc)
    VALUES
    	(50, "技术部", "北京");
    	
    -- 向 "部门表" 中添加数据 : 部门编号 "50" , 部门名称 "技术部" , 办公地点 "北京"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    “INSERT” SQL 语句插入多条数据演示案例:

    INSERT INTO 
    	t_dept(deptno, dname, loc)
    VALUES
    	(60, "行政部", "北京"),(70, "人事部", "北京"),(80, "法务部", "北京");
    	
    -- 向 "部门表" 中添加数据 : 
    -- 部门编号分别为 "60"、"70"、"80"
    -- 部门名称分别为 "技术部"、"人事部"、"法务部" 
    -- 办公地点都在 "北京"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9


    🐬 INSERT 语句演示案例②


    • 向技术部添加一条员工记录(利用子查询到部门表中查询 "dname" 为 "技术部" 的部门编号,将部门编号写入到 "VALUES" 子句插入到员工表里面)

    “INSERT” SQL 语句插入员工表数据演示案例:

    INSERT INTO t_emp
    	(empno, ename, job, mgr, hiredate, sal, comm, deptno)
    VALUES
    	(7936, "李四", "SALESMAN", 8000, "1988-02-02", 2000, NULL, 
    	(SELECT deptno FROM t_dept WHERE dname="技术部"));
    
    • 1
    • 2
    • 3
    • 4
    • 5

    这里我们会发现,其实在 "INSERT" 语句中,还是可以插入子查询的。(子查询就是将查询子句的结果插入到 VALUES 子句中的)

    需要注意的是,这个子查询必须得是单行子查询,多行子查询就比较麻烦了,因为多行记录无法充当 VALUES 子句的值;还有就是 "子查询" 返回的字段,必须是一个。



    🐳 INSERT 语句方言


    • 什么是方言? 其实就是只能在某一个数据库中执行的语法,不具备通用性。 “MySQL” 的方言,就只能在 “MySQL” 中执行。

    • “MySQL” 中的 “INSERT” 语句的方言语法:

      INSERT INTO 表名  SET 字段名1=1, 字段名2=2, 字段名3=3, 字段名4=4....;
      
      -- 这种语法更符合逻辑性, 利用 SET 关键字分别对字段进行赋值。
      -- 需要注意的是,这种语法格式仅适用于 "MySQL" , 无法在其他数据库中使用。
      
      • 1
      • 2
      • 3
      • 4

    “INSERT” 语句方言演示案例:

    INSERT INTO t_emp
    SET empno=7937, ename="王五", job="SALESMAN", mgr=7936, hiredate="1989-12-07", sal=2200, comm=200, deptno=50;
    
    -- 利用 SET 关键字,插入员工姓名为 "王五" 的员工信息
    
    • 1
    • 2
    • 3
    • 4

    这个方言语法,很简洁。甚至可以省略掉 "INTO" 也能执行插入数据成功,大家动手试一试吧。(记得不要插入重复的记录)



    🐳 IGNORE 关键字


    • “IGNORE” 是一个特殊的关键字,它代表的是忽略的意思。它会让 “INSERT” 语句忽略掉冲突的记录,只写入不冲突的记录。

    • 主要用于这样的场景:比如说我们使用 "INSERT" 语句 写入很多条记录的时候,有一条数据因为逐渐冲突写入失败。这样就会一条也写不进去,但是如果我们使用了 "IGNORE" 关键字的话,就会忽略掉 "主键冲突" 的记录,从而将其他记录写入数据库。


    “IGNORE” 关键字的语法

    INSERT IGNORE INTO 表名......;
    
    INSERT IGNORE 表名 SET......;
    
    -- "IGNORE" 关键字不管是通用语法,还是方言语法,"IGNORE" 关键字都会起到忽略的作用。
    
    • 1
    • 2
    • 3
    • 4
    • 5

    “IGNORE” 关键字 SQL 语句演示案例①:

    INSERT IGNORE INTO t_dept
    SET deptno=40, dname="技术部", loc="北京";
    
    -- 插入 "部门编号" 为 40 的部门
    -- 但是在 "部门表" 中已经存在了 "40" 部门,但是因为我们时用力 "IGNORE" 关键字 ,所以就会忽略这条记录的插入
    
    • 1
    • 2
    • 3
    • 4
    • 5

    “IGNORE” 关键字 SQL 语句演示案例②:

    INSERT IGNORE INTO t_dept(deptno, dname, loc)
    VALUES(50, "技术部", "北京"),(90, "稽查部", "北京");
    
    • 1
    • 2

    这里也可以看到,"INSERT" 语句在执行插入的时候,忽略了已经存在的 "50" 部门,直接插入了 "90" 部门。



  • 相关阅读:
    上海移动HG6145D光猫之超级用户登录方法
    谷歌浏览器报错:VM108:5 crbug/1173575, non-JS module files deprecated.
    蓝桥等考Python组别十四级008
    ​软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】​
    【从零开始学习 SystemVerilog】2.4、SystemVerilog 数据类型—— Enumeration(枚举)
    量子笔记:单比特量子门、泡利矩阵
    力扣刷题记录11.1-----面试题 02.07. 链表相交
    Google重磅发布Go语言编码规范
    大家一起来学习如何使用spring.factories
    UiPath实战(09) - 不同Windows用户下的文件夹获取问题
  • 原文地址:https://blog.csdn.net/weixin_42250835/article/details/126203391