2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 〖Python 数据库开发实战 - MySQL篇㉔〗- 数据插入操作 - INSERT语句

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

时间:2021-08-24 13:19:54

相关推荐

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

前言

✌ 作者简介:渴望力量的哈士奇 ✌,大家可以叫我 🐶哈士奇🐶 ,一位致力于 TFS - 全栈 赋能的博主 ✌

🏆 CSDN博客专家认证、新星计划第三季全栈赛道 MVP 、华为云享专家、阿里云专家博主 🏆

📫 如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步👀

💬 人生格言:优于别人,并不高贵,真正的高贵应该是优于过去的自己。💬

🔥 如果感觉博主的文章还不错的话,还请👍关注、点赞、收藏三连支持👍一下博主哦

文章目录

🐳 INSERT 语句🐬 INSERT 语句演示案例①🐬 INSERT 语句演示案例②🐳 INSERT 语句方言🐳 IGNORE 关键字

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

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

🐳 INSERT 语句

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

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

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

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

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

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

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

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

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

🐬 INSERT 语句演示案例①

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

“INSERT” SQL 语句演示案例:

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

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

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

🐬 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="技术部"));

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

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

🐳 INSERT 语句方言

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

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

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

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

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

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

🐳 IGNORE 关键字

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

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

“IGNORE” 关键字的语法

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

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

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

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

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

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。