MySQL数据库13——插入数据(INSERT)
下面的语句用于向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 SELECT与SELECT INTO的区别
前面曾经介绍过使用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)相关推荐
- php怎么插入数据,利用PHP怎么向MySQL数据库中插入数据
利用PHP怎么向MySQL数据库中插入数据 发布时间:2020-12-11 16:41:47 来源:亿速云 阅读:89 作者:Leah 这篇文章给大家介绍利用PHP怎么向MySQL数据库中插入数据,内 ...
- 03-JDBC连接MySQL数据库【插入数据】
JDBC连接mysql–学习目录: 地址:http://blog.csdn.net/baidu_37107022/article/details/72600018 1.实现插入步骤 前三个步骤:注册. ...
- 用java向mysql数据库中插入数据为空
利用java面向对像编程,向数据库中插入数据时.遇到插入的数据为空的情况.在此做一小结: 1.数据库连接正正常 2.sql语句没有问题 3.程序没有报异常 4.代码: import java.util ...
- mysql数据库插入数据为空_用java向mysql数据库中插入数据为空
利用java面向对像编程,向数据库中插入数据时.遇到插入的数据为空的情况.在此做一小结: 1.数据库连接正正常 2.sql语句没有问题 3.程序没有报异常 4.代码: import java.util ...
- mysql数据库表插入数据
如何向mysql数据表中插入数据? 答:你可以通过 mysql> 命令提示窗口中向数据表中插入数据,或者通过PHP脚本来插入数据. 以下为向MySQL数据表插入数据通用的 INSERT INTO ...
- mysql数据库中插入数据并进行自动迭代更新
问题 我们知道在数据库中保证数据的唯一性是十分必要的,这也就是有主键的一个原因,但是数据肯定是需要更新的,当然我们可以按照日期或者其他维度进行数据的永不冲突的更新.但是还有一种情况下需要我们迭代的去更 ...
- 向MySQL数据库中插入数据,sql语句没问题,但插入失败也不报错?
这几天在做一个Javaweb的图书商城项目,在操作数据库的过程中,遇到一个问题? 向数据库中的order数据表中插入数据时,一直插入数据失败.没有报SQL语句语法错误,Eclipse ...
- php mysql取出来,php从mysql数据库中取数据
php从数据库中取数据 面向过程 $server_name="localhost:3306"; //数据库服务器名称 $username="root"; // ...
- Jmeter向数据库批量插入数据
Jmeter向数据库批量插入数据 下面介绍一下Jmeter向mysql数据库中插入数据的入门操作 1.新建一个线程组,这是必经步骤: 在测试计划上右键–>添加–>Theaders(User ...
最新文章
- 王海峰发布百度智能云最新架构,推出AI中台和知识中台
- python笔记3(numpy数组)
- python 文件和目录操作
- windows自带反编译chm文件
- Andorid App内部跟随熊语言改变
- dijkstra算法matlab程序_Dijkstra算法例子
- mysql定时任务 分钟_mysql定时任务
- 解决Python开发过程中依赖库打包问题的方法
- 步道乐跑怎么刷公里_车子一年跑不到5000公里,怎么保养比较好?这些方法最省钱...
- 输入一个日期,计算这个日期与 2018-03-12差多少天;
- 解决css冲突的问题
- 扩展linux swap分区大小,扩展Linux系统swap分区的大小
- 关于Python 向pdf添加印章效果的思考及实现
- 前端常用布局大全——细致讲解
- category-内部原理、运用场景、特点
- linux下smbd服务,Linux下资源共享服务之samba 的讲解!
- 奇怪的汉诺塔 Four Column Hanoi Tower
- Vue3 到底哪里好?和React Hook对比有啥有优势?本文详解
- 《幼儿体适能》课程教学大纲
- 对 iOS 中 GPU 编程的高度优化的框架 Metal