日期:2014-05-16  浏览次数:20579 次

ORACLE 操纵数据&&锁&&事务
INSERT语句语法
使用INSERT语句添加新行到表中
INSERT INTO table [(column [, column...])]
VALUES (value [, value...]);
用该语法一次只能插入一行

注:该语句用VALUES子句添加行到表中,一次仅一行。


插入新行
:插入一个包含每一个列值的新行
:值以表中列的默认顺序列表
:在INSERT子句中字段可以随意列表
INSERT INTO departments(department_id, department_name, manager_id, location_id)VALUES (70, 'Public Relations', 100, 1700);1 row created.

:字符和日期要用单引号括起来,数字值不需要。
数字值不应放在单引号中,因为对于指定为NUMBER数据类型的字段,如果使用了单引号,可能会发生数字值的隐式转换。



插入带空值的行
::隐式方法: 省略字段列表中的列
INSERT INTO departments (department_id, department_name)VALUES(30, 'Purchasing');
1 row created

::显式方法: 在VALUES子句中指定NULL关键字

INSERT INTO departments
VALUES (100, 'Finance', NULL, NULL);
1 row created.


插入空值的方法:
隐式:从字段列表中省略列。
显式:在values列表中指定NULL关键字,对于字符串和日期,在在values列表中指定空符串('')


在插入新行时,任何没有被明确列出的字段都将获得一个空值。


在用户输入时经常出现的错误:
:: 对于NOT NULL列缺少强制的值
:: 重复值违反了唯一性约束
:: 违反外键约束
:: 违反CHECK约束
:: 数据类型不匹配
:: 值的宽度超过了列的限制


在插入行到表中时,你也可以用USER函数,USER函数记录当前用户名。
也可以用SYSDATE 用在VALUES列表中.



插入特殊日期值.

SQL> desc employees;
名称                                      是否为空? 类型
----------------------------------------- -------- --------------
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                     &n