《Oracle SQL疑难解析》——1.4 在表中添加记录行

简介:

本节书摘来自异步社区出版社《Oracle SQL疑难解析》一书中的第1章,第1.4节,作者: 【美】Grant Allen , Bob Bryla , Darl Kuhn,更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.4 在表中添加记录行

Oracle SQL疑难解析

1.4.1 要解决的问题

要在表中添加几行数据,例如,当一个新员工加入公司时,我们需要把员工信息添加到HR.EMPLOYEES表中。

1.4.2 解决方法

使用INSERT语句向表中添加数据。添加时,需要提供每列(强制列和可选列)的值,下面是添加新员工信息的一条语句:

insert into hr.employees
(employee_id, first_name, last_name, email, phone_number, hire_date, job_id, 
 salary, commission_pct, manager_id, department_id)
values
(207, 'John ', 'Doe ', 'JDOE ', '650.555.8877 ', '25-MAR-2009 ', 'SA_REP ', 
 3500, 0.25, 145, 80);

1.4.3 数据库如何工作

INSERT语句后面跟着各个字段名和各字段对应的值,它把对应的字段名和值对应后,形成行记录,然后插入目标表中。

Oracle会检查NULL值约束、主键、外键及其他约束来确保插入数据的完整性。第10章会介绍在表上定义约束的技巧,以及表上的约束如何影响新数据的插入。

我们可以通过表的描述来查看哪些字段是MANDATORY,定义为非空。方法是在SQL Developer 中或用SQL*Plus的DESCRIBE命令,这个命令也可缩写为DESC。例如:

desc hr.employees;
Name              Null   Type
------------------------------ -------- ------------
EMPLOYEE_ID          NOT NULL NUMBER(6)
FIRST_NAME              VARCHAR2(20)
LAST_NAME          NOT NULL VARCHAR2(25)
EMAIL            NOT NULL VARCHAR2(25)
PHONE_NUMBER              VARCHAR2(20)
HIRE_DATE          NOT NULL DATE
JOB_ID            NOT NULL VARCHAR2(10)
SALARY                NUMBER(8,2)
COMMISSION_PCT            NUMBER(2,2)
MANAGER_ID              NUMBER(6)
DEPARTMENT_ID              NUMBER(4)

11 rows selected

在使用INSERT语句时,如果把每列的值都按它们在当前表定义中的排列顺序(用DESC查看表得到的顺序)提供,那么也可以省略在语句中列出字段名,示例如下:
image

在INSERT语句中省略字段名的做法,非常少见,也有很大的风险,除非有什么的特殊的理由,不然就别这么做,别把你的SQL语句搞得太脆弱,因为无法预知在何时表的结构会发生变化。举例来说,如果将来有人重建表,而且表中的字段排列顺序发生改变,碰巧你的INSERT语句通过字段类型和其他约束性检查,你就在没有错误提示的情况下,把数据写入了表中错误的字段,那将是场灾难。所以,强烈建议在写INSERT语句时,一定要指定字段名。

相关文章
|
18天前
|
SQL 关系型数据库 MySQL
数据库开发之SQL简介以及DDL的详细解析
数据库开发之SQL简介以及DDL的详细解析
27 0
|
22天前
|
SQL 存储 Oracle
Oracle的PL/SQL定义变量和常量:数据的稳定与灵动
【4月更文挑战第19天】在Oracle PL/SQL中,变量和常量扮演着数据存储的关键角色。变量是可变的“魔术盒”,用于存储程序运行时的动态数据,通过`DECLARE`定义,可在循环和条件判断中体现其灵活性。常量则是不可变的“固定牌”,一旦设定值便保持不变,用`CONSTANT`声明,提供程序稳定性和易维护性。通过 `%TYPE`、`NOT NULL`等特性,可以更高效地管理和控制变量与常量,提升代码质量。善用两者,能优化PL/SQL程序的结构和性能。
|
4天前
|
SQL API 数据库
在Python中获取筛选后的SQL数据行数
在Python中获取筛选后的SQL数据行数
12 1
|
18天前
|
SQL 分布式计算 资源调度
一文解析 ODPS SQL 任务优化方法原理
本文重点尝试从ODPS SQL的逻辑执行计划和Logview中的执行计划出发,分析日常数据研发过程中各种优化方法背后的原理,覆盖了部分调优方法的分析,从知道怎么优化,到为什么这样优化,以及还能怎样优化。
103482 1
|
21天前
|
SQL Oracle 关系型数据库
Oracle的PL/SQL游标属性:数据的“导航仪”与“仪表盘”
【4月更文挑战第19天】Oracle PL/SQL游标属性如同车辆的导航仪和仪表盘,提供丰富信息和控制。 `%FOUND`和`%NOTFOUND`指示数据读取状态,`%ROWCOUNT`记录处理行数,`%ISOPEN`显示游标状态。还有`%BULK_ROWCOUNT`和`%BULK_EXCEPTIONS`增强处理灵活性。通过实例展示了如何在数据处理中利用这些属性监控和控制流程,提高效率和准确性。掌握游标属性是提升数据处理能力的关键。
|
22天前
|
SQL Oracle 安全
Oracle的PL/SQL循环语句:数据的“旋转木马”与“无限之旅”
【4月更文挑战第19天】Oracle PL/SQL中的循环语句(LOOP、EXIT WHEN、FOR、WHILE)是处理数据的关键工具,用于批量操作、报表生成和复杂业务逻辑。LOOP提供无限循环,可通过EXIT WHEN设定退出条件;FOR循环适用于固定次数迭代,WHILE循环基于条件判断执行。有效使用循环能提高效率,但需注意避免无限循环和优化大数据处理性能。掌握循环语句,将使数据处理更加高效和便捷。
|
22天前
|
SQL Oracle 关系型数据库
Oracle的PL/SQL条件控制:数据的“红绿灯”与“分岔路”
【4月更文挑战第19天】在Oracle PL/SQL中,IF语句与CASE语句扮演着数据流程控制的关键角色。IF语句如红绿灯,依据条件决定程序执行路径;ELSE和ELSIF提供多分支逻辑。CASE语句则是分岔路,按表达式值选择执行路径。这些条件控制语句在数据验证、错误处理和业务逻辑中不可或缺,通过巧妙运用能实现高效程序逻辑,保障数据正确流转,支持企业业务发展。理解并熟练掌握这些语句的使用是成为合格数据管理员的重要一环。
|
22天前
|
SQL Oracle 关系型数据库
Oracle的PL/SQL表达式:数据的魔法公式
【4月更文挑战第19天】探索Oracle PL/SQL表达式,体验数据的魔法公式。表达式结合常量、变量、运算符和函数,用于数据运算与转换。算术运算符处理数值计算,比较运算符执行数据比较,内置函数如TO_CHAR、ROUND和SUBSTR提供多样化操作。条件表达式如CASE和NULLIF实现灵活逻辑判断。广泛应用于SQL查询和PL/SQL程序,助你驾驭数据,揭示其背后的规律与秘密,成为数据魔法师。
|
22天前
|
SQL 人工智能 编解码
NL2SQL实践系列(1):深入解析Prompt工程在text2sql中的应用技巧
NL2SQL实践系列(1):深入解析Prompt工程在text2sql中的应用技巧
NL2SQL实践系列(1):深入解析Prompt工程在text2sql中的应用技巧

推荐镜像

更多