下面的语句用于向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选项。

MySQL数据库13——插入数据(INSERT)相关推荐

  1. php怎么插入数据,利用PHP怎么向MySQL数据库中插入数据

    利用PHP怎么向MySQL数据库中插入数据 发布时间:2020-12-11 16:41:47 来源:亿速云 阅读:89 作者:Leah 这篇文章给大家介绍利用PHP怎么向MySQL数据库中插入数据,内 ...

  2. 03-JDBC连接MySQL数据库【插入数据】

    JDBC连接mysql–学习目录: 地址:http://blog.csdn.net/baidu_37107022/article/details/72600018 1.实现插入步骤 前三个步骤:注册. ...

  3. 用java向mysql数据库中插入数据为空

    利用java面向对像编程,向数据库中插入数据时.遇到插入的数据为空的情况.在此做一小结: 1.数据库连接正正常 2.sql语句没有问题 3.程序没有报异常 4.代码: import java.util ...

  4. mysql数据库插入数据为空_用java向mysql数据库中插入数据为空

    利用java面向对像编程,向数据库中插入数据时.遇到插入的数据为空的情况.在此做一小结: 1.数据库连接正正常 2.sql语句没有问题 3.程序没有报异常 4.代码: import java.util ...

  5. mysql数据库表插入数据

    如何向mysql数据表中插入数据? 答:你可以通过 mysql> 命令提示窗口中向数据表中插入数据,或者通过PHP脚本来插入数据. 以下为向MySQL数据表插入数据通用的 INSERT INTO ...

  6. mysql数据库中插入数据并进行自动迭代更新

    问题 我们知道在数据库中保证数据的唯一性是十分必要的,这也就是有主键的一个原因,但是数据肯定是需要更新的,当然我们可以按照日期或者其他维度进行数据的永不冲突的更新.但是还有一种情况下需要我们迭代的去更 ...

  7. 向MySQL数据库中插入数据,sql语句没问题,但插入失败也不报错?

             这几天在做一个Javaweb的图书商城项目,在操作数据库的过程中,遇到一个问题? 向数据库中的order数据表中插入数据时,一直插入数据失败.没有报SQL语句语法错误,Eclipse ...

  8. php mysql取出来,php从mysql数据库中取数据

    php从数据库中取数据  面向过程 $server_name="localhost:3306"; //数据库服务器名称 $username="root"; // ...

  9. Jmeter向数据库批量插入数据

    Jmeter向数据库批量插入数据 下面介绍一下Jmeter向mysql数据库中插入数据的入门操作 1.新建一个线程组,这是必经步骤: 在测试计划上右键–>添加–>Theaders(User ...

最新文章

  1. 王海峰发布百度智能云最新架构,推出AI中台和知识中台
  2. python笔记3(numpy数组)
  3. python 文件和目录操作
  4. windows自带反编译chm文件
  5. Andorid App内部跟随熊语言改变
  6. dijkstra算法matlab程序_Dijkstra算法例子
  7. mysql定时任务 分钟_mysql定时任务
  8. 解决Python开发过程中依赖库打包问题的方法
  9. 步道乐跑怎么刷公里_车子一年跑不到5000公里,怎么保养比较好?这些方法最省钱...
  10. 输入一个日期,计算这个日期与 2018-03-12差多少天;
  11. 解决css冲突的问题
  12. 扩展linux swap分区大小,扩展Linux系统swap分区的大小
  13. 关于Python 向pdf添加印章效果的思考及实现
  14. 前端常用布局大全——细致讲解
  15. category-内部原理、运用场景、特点
  16. linux下smbd服务,Linux下资源共享服务之samba 的讲解!
  17. 奇怪的汉诺塔 Four Column Hanoi Tower
  18. Vue3 到底哪里好?和React Hook对比有啥有优势?本文详解
  19. 《幼儿体适能》课程教学大纲
  20. 对 iOS 中 GPU 编程的高度优化的框架 Metal

热门文章

  1. 第十二章 牛市股票还会亏钱-外观模式(读书笔记)
  2. 关于 PM2 Daemon 进程,内存爆涨的问题分析及解决
  3. bat文件注册成服务
  4. 读书有益——》从你的全世界路过
  5. 谷歌浏览器共存,一个用户可拥有多个版本谷歌浏览器
  6. win7计算机桌面快捷键显示,Win7的显示桌面在哪 Win7显示桌面快捷键是什么
  7. 从32万字的歌词里找一首最伤感的歌,竟然是周杰伦的...
  8. Scapy用法官方文档
  9. 搭建dhcp服务,实现ip地址申请分发
  10. 【调剂】中国地震局工程力学研究所2022年硕士研究生调剂信息