首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

oracle札记(十六)DML数据操作语言

2012-08-28 
oracle笔记(十六)DML数据操作语言DML(Data Manipulation Language – 数据操作语言) 可以在下列条件下执行:

oracle笔记(十六)DML数据操作语言

DML(Data Manipulation Language – 数据操作语言) 可以在下列条件下执行:

????????? 向表中插入数据

????????? 修改现存数据

????????? 删除现存数据

1、插入语句

使用 INSERT 语句向表中插入数据。

INSERT INTO?????? table [(column [, column...])]

VALUES???????????????? (value [, value...]);

使用这种语法一次只能向表中插入一条数据

//向users表中插入一条完整的记录

SQL> insert into users(username,password,name,address,zip) values('kou','1234','xiaolin','保定',100089);

备注:如果是字符串加’’ 如果是数字可以加’’也可以不加è一般不加

SQL> commit;

注意:oracle数据库在DOS命令中执行插入,修改等操作时,必须手动完成提交。否则不会(真正)插入成功。

在插入完整的记录是users()中的表对应的字段可以省略不写.但一定要与数据库中表的结构对应才行。

//向users表中插入一条非完整的记录

SQL> insert into users(username,password) values('xl','123');

//注意:在插入部分字段的时候,必须满足的表的约束条件,否则会出现如下异常信息。

insert into users(username,password) values('xl','123')

RA-01400: 无法将 NULL 插入 ("RED"."USERS"."NAME")

SQL> insert into users(username,password,name) values('xl','123','晓林');

1 row inserted

SQL> commit; //必须手动提交

Commit complete

以上简单总结如下:

l??????? 为每一列添加一个新值。

l??????? 按列的默认顺序列出各个列的值。

l??????? 在 INSERT 子句中随意列出列名和他们的值。

l??????? 字符和日期型数据应包含在单引号中

补充知识点:

隐式方式: 在列名表中省略该列的值

SQL> insert into users(username,password,name) values('xl','123','晓林');

显示方式: 在VALUES 子句中指定空值。

SQL> insert into users? values('test','123','test',null,null);

常见面试题:

//备份一张表

SQL> create table usess as select * from users;

//清空表中的记录

SQL> delete from usess;

//使用插入语句把users表中记录插入到usess中

SQL> insert into usess(username,password,name,address,zip) select username,password,name,address,zip from users;

SQL> commit

注意:

l??????? 不必书写 VALUES 子句。

l??????? 子查询中的值列表应于 INSERT 子句中的列名对应

2、更新数据

采用update语法进行更新数据:

语法如下:

? UPDATE??????????????????????????? table

? SET??????????????????? column = value [, column = value, ...]

? [WHERE ???????????????????????? condition];

备注:一次可以更新多条记录

//更新数据:更新users重新设置了passwrod 条件是唯一(主键是唯一)的条件。

SQL> update users set password='kouxiaolin' where username='kouxiaolin';

SQL> commit;

注意:当更新多个字段时,可以采用逗号进行区分.举例如下:

SQL> update users set password='kouxiaolin', name='陈红军' where username='kxl';

SQL> commit;

备注:如果省略WHERE子句,则表中的所有数据都将被更新

SQL> update users set password='kouxiaolin', name='寇晓林';

6 rows updated

SQL> commit;

Commit complete

SQL> select * from users;

USERNAME????? PASSWORD????? NAME???????????? ADDRESS???????????? ZIP

-------------------- -------------------- -------------------- -------------------- -------

huxz?????????????? kouxiaolin????????? 寇晓林??????????? 北苑家园????????? 100012

liucy?????????????? kouxiaolin????????? 寇晓林??????????? 清华园???????????? 100084

kouxiaolin????????? kouxiaolin???????? 寇晓林?????????? ?北京??????????????? 100089

kkxl?????????????? kouxiaolin????????? 寇晓林??????????? 北京??????????????? 100089

kxl????????????????? kouxiaolin????????? 寇晓林????????????????????????????????

test??????????????? kouxiaolin????????? 寇晓林????????????????????????????? ???

6 rows selected

补充:在update语句中使用子查询

//更新huxz的邮编与用户liucy的邮编一致

SQL> update users set zip=(select zip from users where username='liucy') where username='huxz';

//备注:在更新数据的时候 where条件中也可以使用子查询。

3、删除数据

??? 在表中如果某些数据不再需要就可以使用delete语句进行删除,并释放该数据所占用的存储空间删除语法如下:

DELETE [FROM] ? table

[WHERE??????????????? ? condition];

备注:delete语句只是从表中删除数据,不会删除表结构.删除表结构采用drop语句。

注意:删除表中的数据时,一定要考虑表的约束(否则会出现一些异常信息)

//清空表? delete from 表名 ||delete 表名?

//删除数据 where条件与更新一致,必须保证唯一性(主键是唯一)条件

SQL> delete from users where username='test';

SQL> commit;

Commit complete

?

?

?

?

热点排行