MySQL数据库13——插入数据(INSERT)

news2024/9/20 20:47:01

下面的语句用于向student表插入数据。

插入语句:

INSERT INTO student(ID,name,sex,birthday,origin,contact1,contact2,institute)
VALUES ('0013','塔赛努','男','1997/9/15','内蒙古自治区',NULL,NULL,'计算机学院');

INSERT INTO student
VALUES ('0014','呼和嘎拉','男','1995-02-16','青海省','0471-6599999','010-88888888','物理系',NULL);

INSERT INTO student(ID,name,sex,birthday,institute)
VALUES ('0015','孔乙己','男','1995-05-29','中文系');

由于要插入的学生信息并不完整,所以必须在表名后加上指定的字段列表。

如果完整,那么就不需要字段。

通过运行结果,可以发现没有插入数据的字段都为NULL值。实际上,在VALUES子句中可以直接指定哪个字段设置为NULL值,这样以来有了NULL值的占位,就可以省略表名后的字段列表了。

注意:

如果有的字段有非空限制,那么插入的时候省略会报错。

但是若有默认值设定,那么就不会报错:(省略性别)

例如

INSERT INTO student(ID,name,birthday,institute)
VALUES ('0016','鲁十八','1997-07-07','中文系');

默认男填充上去了。

可以在表格里面修改默认值:

 


 将查询结果插入表

 将student表中所有数据,通过INSERT SELECT插入到student_copy表。

分析:因为两个表的表结构相同,而且要将student中所有字段的内容都插入到student_copy表中,所以在INSERT子句中可以省略字段列表。

INSERT INTO  student_copy
SELECT  * FROM    student;

 


INSERT SELECTSELECT INTO的区别

前面曾经介绍过使用SELECT INTO将查询结果保存为新表,刚刚又介绍了使用INSERT SELECT将查询结果插入到新创建的数据表。看起来,这两个语句完成了同样的功能,没什么区别,实际上它们有区别,具体区别如下所示。

ØSELECT INTO在没有数据表存在的情况下,先创建表,然后再将查询结果放进表内。如果要创建的表名和现有表名重复,则会出现错误提示。
ØINSERT SELECT则必须在数据表存在的前提下,才能向其插入查询结果,它不能自动创建表。如果要插入数据的表不存在,则会出现错误提示。

通过视图插入数据

一般来说,对于一个大型数据库系统,只有数据库管理员(DBA)才能直接操作数据表,而其它用户都必须通过视图操作数据,这样才能使普通用户修改数据的同时,DBA还能操作表。这里所说的操作表指查询、插入、修改和删除数据。下面介绍通过视图插入数据的具体方法,首先建立一个用于实验的vw_computer视图。

CREATE VIEW vw_computer AS
SELECT * FROM   student
WHERE  institute='计算机学院';

通过视图插入数据,对用户来说,其实和直接向表插入数据基本相同,区别仅仅在于表名变成了视图名。下面通过例子说明这一点。

例 通过vw_computer视图向student表插入一条学生信息。

INSERT INTO vw_computer
VALUES ('0017','蒋十九','女','1999-05-29','山东省',NULL,NULL,'计算机学院',NULL);

查看,多了一条:

 


 使用带有WITH CHECK OPTION选项的视图

其实,上一节的例子又引出了一个安全问题,即计科系的管理员可以通过vw_bb视图,插入非计科系的学生信息。如何控制用户只向所属院系字段输入“计科系”成了目前最大的难题。答案是创建视图时加上WITH CHECK OPTION选项,因为加上该选项,可以防止用户通过视图对数据进行插入、删除和更新时,无意或故意操作不属于视图范围内的基本表数据。例如,视图被定义为如下形式:

CREATE VIEW vw_bb AS
SELECT  ID, name, sex, birthday, institute
FROM   student
WHERE  institute='计算机学院'
WITH CHECK OPTION

则用户只能向所属院系字段插入字符串“计算机学院”,插入其它字符串就会使WHERE子句中的条件(institute='计算机学院')为假,从而限制了用户插入非计科系学生信息的权限。如果要插入其它院系的学生信息,则会出现错误,

综上所述,如果想限制用户通过视图,插入不属于视图权限范围内的数据,则应当在建立视图时加上WITH CHECK OPTION选项。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/343724.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

字节青训营——秒杀系统设计学习笔记(一)

如何做系统设计 1. 场景分析(Scenario) 什么系统,需要哪些功能,多大的并发量 2. 存储设计(Storage) 数据如何组织,Sq|存储, NoSq|存储 3. 服务设计(Service) 业务功能实现和逻辑整合 4. 可扩展性(Scale) 解决设计缺陷&…

Go的web开发Gin框架1(八)——Gin

一、重点内容: 知识要点有哪些? 1、了解Gin框架 2、导入使用Gin框架 3、尝试配合GORM开发 4、整合html,css,js 二、详细知识点介绍: 1、Gin框架介绍 ​ Gin是一个golang的微框架,封装比较优雅&…

MyBatis无法通过getGenerateKeys获得自增主键的问题

我遇到这个问题的法伤原因比较蠢,查阅了网上相关经验都没有能够解决。看看这个经验能否帮助到你。问题描述:设置了属性的自增后想通过getGenerateKeys获得MySQL对应表单中自增主键id,检查了类、映射器、xml都没有发现问题,但是进行…

如何使用 Python 编程进行多线程

多线程:理论上能在同一个时间段执行多个程序片段,每个程序片段就看作是一个线程。为什么要说理论上,因为实际在操作系统中真正的在同一时间段基本是不存在的,但是在软件编程中我们可以理解为它是在同一时间段执行的。 同步&#…

c/c++开发,无可避免的模板编程实践(篇一)

一、c模板 c开发中,在声明变量、函数、类时,c都会要求使用指定的类型。在实际项目过程中,会发现很多代码除了类型不同之外,其他代码看起来都是相同的,为了实现这些相同功能,我们可能会进行如下设计&#xf…

SpringBoot自定义JsonSerializer和JsonDeserializer,兼容LocalDateTime和LocalDate

1.前言 JDK1.8中添加新的时间日期API,LocalDate、LocalDateTime、LocalTime,但是我们在开发中使用时间戳作为参数值来传递是比较常用的,然而在SpringBoot中并没有为我们提供合适的JsonSerializer和JsonDeserializer。 我们先看看使用默认的Js…

Linux根文件系统移植

目录 一、根文件系统 1.1根文件系统 1.2根文件系统内容 二、根文件系统移植 2.1BusyBox 2.2BusyBox的获取 2.3BusyBox的使用 2.4make menuconfig 2.5编译和安装 2.6修改根文件系统 一、根文件系统 1.1根文件系统 根文件系统是内核启动后挂载的第一个文件系统系统引…

Homekit智能家居创意DIY一智能灯

一、什么是智能灯 传统的灯泡是通过手动打开和关闭开关来工作。有时,它们可以通过声控、触控、红外等方式进行控制,或者带有调光开关,让用户调暗或调亮灯光。 智能灯泡内置有芯片和通信模块,可与手机、家庭智能助手、或其他智能…

链表题目总结 -- 递归

目录一. 递归反转整个链表1. 思路简述2. 代码3. 总结二. 反转链表前 N 个节点1. 思路简述2. 代码3. 总结三、反转链表的一部分1. 思路简述2. 代码3.总结四、反转链表后N个节点1. 思路简述2. 代码3.总结一. 递归反转整个链表 题目链接:https://leetcode.cn/problems…

部署智能合约到公链

🍁博主简介: 🏅云计算领域优质创作者 🏅2022年CSDN新星计划python赛道第一名 🏅2022年CSDN原力计划优质作者 🏅阿里云ACE认证高级工程师 🏅阿里云开发者社区专…

【面试】生命周期详情解释及案例

目录 1.什么是生命周期 2.生命周期函数 3.vue2中生命周期的函数 4.生命周期的阶段 5.生命周期图示 第一个阶段:组件创建阶段 第二个阶段:编译HTML模板并渲染到浏览器中 第三阶段:组件更新阶段 第四阶段:组件销毁阶段 1.什…

【数据结构】基础:图的基本概念与实现(附C++源代码)

【数据结构】基础:图的基本概念与实现(附C源代码) 摘要:将会在数据结构专题中开展关于图论的内容介绍,其中包括四部分,分别为图的概念与实现、图的遍历、图的最小生成树以及图的最短路径问题。本文将介绍图…

遗传算法(Genetic Algorithm,GA)实现数据排序,python

遗传算法(Genetic Algorithm,GA)实现数据排序,python 遗传算法是一种比较广泛、通用的算法体系,为了说明遗传算法的原理和实现,现在用GA解决一个计算机科学最基本、最古老的问题:排序问题。 需要特别说明的是,遗传算…

【GPLT 三阶题目集】L3-016 二叉搜索树的结构

二叉搜索树或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;它的左、右子树也分…

代码随想录LeetCode | 单调栈问题

前沿:撰写博客的目的是为了再刷时回顾和进一步完善,其次才是以教为学,所以如果有些博客写的较简陋,是为了保持进度不得已而为之,还请大家多多见谅。 预:看到题目后的思路和实现的代码。 见:参考…

两种特征提取方法与深度学习方法对比的小型金属物体分类分析研究

本文讨论了用于对包括螺丝、螺母、钥匙和硬币在内的小型金属物体进行分类的两种特征提取方法的效率:定向梯度直方图 (HOG) 和局部二进制模式 (LBP)。首先提取标记图像的所需特征并以特征矩阵的形式保存。使用三种不同的分类方法(非参数 K 最近邻算法、支…

云计算|OpenStack|社区版OpenStack(实务操作---cloud-init的使用)

前言: 接上一篇文章:https://zskjohn.blog.csdn.net/article/details/128931042 我们可以从官方获取到现成的镜像,例如,从Ubuntu 18.04 LTS (Bionic Beaver) Daily Build [20230210]官方下载的bionic-server-cloudimg-amd64.img…

春招Leetcode刷题日记-D2-贪心算法-区间问题

D2-贪心算法-区间问题力扣435. 无重叠区间思路代码力扣435. 无重叠区间 题目链接:435. 无重叠区间 思路 1、贪心策略: 1、题目中,给了若干个区间,现在,我想留下尽可能多的,不重叠的区间 2、考虑&#…

Git配置多仓库账户密码

前言说明: 由于我们在工作中可能会遇到公司是用的gitlab仓库,代码下载需要github仓库,自己的项目需要gitee仓库,如何在同一台电电脑配置多个仓库账户密码就尤为重要。 (一) 配置流程 这里是在windows电脑上配置多仓库以github为例…

使用Spring框架的好处是什么

使用Spring框架的好处是什么? 1、轻量:Spring 是轻量的,基本的版本大约2MB。 2、控制反转:Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依赖的对象们。 3、面向切面的编程(AOP…