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

oracle简单学习总结(五)——数据操作(增删改)

一、插入数据

1.1 建表

CREATE TABLE AZJuserInfor(
id int NOT NULL primary key,
name varchar(50) NULL,
birthday date NOT NULL,
age int NOT NULL,
sex int NOT NULL
);
1.2 插入数据

INSERT INTO 表名[(字段列表)] VALUES ( 表达式列表);

insert into AZJuserInfor values (1,'张三',to_date('2012-02-13','yyyy:MM:dd'),0,1);
insert into AZJuserInfor values (2,'李四',to_date('2001-05-13','yyyy:MM:dd'),11,0);
insert into AZJuserInfor values (3,'王五',to_date('2001-08-03','yyyy:MM:dd'),11,0);

说明:

1、插入字段的值的类型要和字段的类型一一对应。

2、字符串类型的字段值必须用单引号括起来,例如:'张三'。字符串类型的字段值超过定义的长度会出错

3、如果要插入表的全部字段,则表名后的字段列表可以省略。

4、其他没有插入的字段,系统会填写为表的默认值。如果在表的创建时没有说明默认值,则将插入NULL值。

5、日期类型的字段值也要用单引号括起来,如'10-1月-03'。日期型的数据默认格式为DD-MON-YY,默认的世纪为当前的世纪,默认的时间为午夜12点。如果指定的世纪不是本世纪或时间不是午夜12点,则必须使用TO_DATE系统函数对字符串进行转换。

1.3 复制数据

CREATE TABLE AZJuserInfor2 AS SELECT id,name,birthday FROM AZJuserInfor WHERE id>1;

说明:CREATE命令用来根据已经存在的表创建新表

1.4 序列

使用INSERT语句时,可以通过序列来填写某些数值型或字符型的列。序列是一个要预先定义的有序的数值序列, 应该先建立一个序列,然后在插入语句中使用

CREATE SEQUENCE abc INCREMENT BY 1 START WITH
4
MAXVALUE 99999 CYCLE NOCACHE;
说明:CREATE SEQUENCE 序列名称 INCREMENT BY 间隔值 START WITH 初始值 MAXVALUE 最大值 CYCLE NOCACHE;

1.4.1 使用序列


说明:插入时使用序列来填充id,使用abc.nextval可获得序列中的下一个值。后边两个记录来自序列,并且是递增的。

二、修改数据

2.1 修改数据

修改数据的语句UPDATE对表中指定字段的数据进行修改,一般需要通过添加WHERE条件来限定要进行修改的行,如果不添加WHERE条件,将对所有的行进行修改。

UPDATE  表名 SET 字段名1=表达式1, 字段名2=表达式2, ... WHERE 条件;


说明:

1、如果修改的值没有赋值或定义,将把原来字段的内容清为NULL。

2、若修改值的长度超过定义的长度,则会出错。

3、省略WHERE条件,否则将会修改表的所有行。

2.2 根据其他表修改数据

UPDATE  表名 SET (字段名1, 字段名2, ...) = SELECT (字段名1, 字段名2, ...)  FROM  另外的表名  WHERE  条件;

例:azjuserinfor2表根据azjuserinfor表修改


三、删除数据

DELETE FROM 表名 WHERE 条件;