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 条件;

说明: 要从表中删除满足条件的记录,WHERE条件一般不能省略,如果省略就会删除表的全部数据。

说明: 删除记录并不能释放Oracle中被占用的数据块表空间,它只是把那些被删除的数据块标成unused。如果确实要删除一个大表里的全部记录, 可以用TRUNCATE 命令,它可以释放占用的数据块表空间,语法为:

TRUNCATE TABLE 表名;
此命令和不带WHERE条件的DELETE语句功能类似,不同的是,DELETE命令进行的删除可以撤销,但此命令进行的删除不可撤销。

注意:TRUNCATE TABLE命令用来删除表的全部数据而不是删除表,表依旧存在。

猜你喜欢

转载自xuexin25.iteye.com/blog/1765276