Oracle数据库学习<三>
2015-12-10 09:45
344 查看
三、数据的增删改
3.1. 数据的插入
数据表是数据的容器,没有任何数据的数据表是没有意义的,数据表创建完成以后比如向其中插入有用的数据才能使得系统运转起来。
3.1.1. 简单的 INSERT 语句
NSERT INTO 语句用来向数据表中插入数据,比如执行下面的语句就可以向 T_Person表中插入一条数据:
INSERT INTO T_Person(FName,FAge,FRemark) VALUES('Tom',18,'USA')
我们来检验一下数据是否真的插入数据表中了,执行下面的 SQL 语句:
SELECT * FROM T_Person
FName | FAge | FRemark |
Tom | 18 | USA |
INSERT 语句中列的顺序可以是任意的,比如我们也可以用下面的 SQL 来插入数据:
INSERT INTO T_Person(FAge,FName,FRemark) VALUES(21,'Kimisushi','Korea')
FName | FAge | FRemark |
Tom | 18 | USA |
Kimisushi | 21 | Korea |
可见 INSERT 语句中列的顺序不会影响数据插入的结果。
3.1.2 简化的 INSERT 语句
INSERT 语句中也并不需要我们指定表中的所有列,比如在插入数据的时候某些字段没有值,我们可以忽略这些字段。下面我们插入一条没有备注信息的数据:
INSERT INTO T_Person(FAge,FName) VALUES(22,'LXF')
INSERT 语句还有另一种用法,可以不用指定要插入的表列,这种情况下将按照定义表中字段顺序来进行插入,我们执行下面的 SQL:
INSERT INTO T_Person VALUES('luren1',23,'China') (不推荐)
3.1.3 非空约束对数据插入的影响
正如“非空约束”表达的意思,如果对一个字段添加了非空约束,那么我们是不能向这个字段中插入 NULL 值的。T_Debt 表的 FAmount 字段是有非空约束的,如果我们执行下面
SQL:
INSERT INTO T_Debt (FNumber, FPerson) VALUES ('1', 'Jim')
这句 SQL 中没有为字段 FAmount 赋值,也就是说 FAmount 为空值。我们执行这句 SQL
以后数据库系统会报出类似如下的错误信息:
不能将值 NULL 插入列 'FAmount',表 'demo.dbo.T_Debt';列不允许有空值。INSERT
失败。
如果我们为 FAmount 设置非空值的话,则会插入成功,执行下面的 SQL:
INSERT INTO T_Debt (FNumber,FAmount, FPerson) VALUES ('1',200, 'Jim')
3.1.4 主键对数据插入的影响
主键是在同一张表中必须是唯一的, 如果在进行数据插入的时候指定的主键与表中已有的数据重复的话则会导致违反主键约束的异常。
3.1.5 外键对数据插入的影响
外键是指向另一个表中已有数据的约束,因此外键值必须是在目标表中存在的。如果插入的数据在目标表中不存在的话则会导致违反外键约束异常。
T_Debt 表中 FPerson 字段是指向表 T_Person 的 FName 字段的外键,如果我们执行下面 SQL:
INSERT INTO T_Debt (FNumber,FAmount, FPerson) VALUES ('3',100, 'Jerry')
由于在 T_Person 表中不存在 FName 字段等于“Jerry”的数据行,所以会数据库系统会
报出类似如下的错误信息:
INSERT 语句与 FOREIGN KEY 约束"FK__T_Debt__FPerson__1A14E395"冲突。该冲突发
生于数据库"demo",表"dbo.T_Person", column 'FName'。
相关文章推荐
- Android之获取手机上的图片和视频缩略图thumbnails
- 基于 Red Hat 的发行版 Oracle Linux 正式发布Oracle Linux 7.1
- 数据库链接字符串查询网站
- Oracle Containers for J2EE远程安全漏洞(CVE-2014-0413)
- Oracle 10g R2不能使用EM的问题
- 表空间操作
- PreparedStatement中in子句的处理
- VMware下RedHat4.8_64位安装Oracle 10g RAC--简略脚本
- oracle sql日期比较
- 基于 Red Hat 的发行版 Oracle Linux 正式发布Oracle Linux 7.1
- DB2实例管理
- DB2实例管理
- OS block size和Oracle block size,查找OS Blocksize的方法
- 保障MySQL数据安全的14个最佳方法
- mysql问答汇集
- oracle中创建数据库和表空间的几点总结
- 数据库自动备份脚本
- 创建一个空的IBM DB2 ECO数据库的方法