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

DML---数据操作语言
数据库操作语言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('yaya','123','丫丫','石家庄',052160);//zip不能以0开始  违反检查约束条件
SQL> insert into users(username,password,name,address,zip) values('yaya','123','丫丫','石家庄',152160);
1 row inserted
备注:如果是字符串加’’ 如果是数字可与加’’也可以不加---?一般不加
SQL> commit; //必须手动提交
注意:oracle数据库在DOS命令中执行插入,修改等操作时,必须手动完成提交。否则不会(正真)插入成功。
在插入完整的记录是users()中的表对应的字段可以省略不写.但一定要与数据库中表的结构对应才行。

//向users表中插入一条非完整的记录
SQL> insert into users(username,password) values('dxl','111');
//注意:在插入部分子段的时候,必须满足的表的约束条件,否则会出现如下异常信息。
insert into users(username,password) values('dxl','111')
RA-01400: 无法将 NULL 插入 ("RED"."USERS"."NAME")
SQL> insert into users(username,password,name) values('xiaoli','111','董晓丽 ');
1 row inserted
SQL> commit; //必须手动提交
Commit complete
以上简单总结如下:
? 为每一列添加一个新值。
? 按列的默认顺序列出各个列的值。
? 在 INSERT 子句中随意列出列名和他们的值。
? 字符和日期型数据应包含在单引号中。

补充知识点:
隐式方式: 在列名表中省略该列的值
//向表中插入一条记录
SQL> insert into users(username,password,name) values('dxl','111','董晓丽');
显示方式: 在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;
注意:
? 不必书写 VALUES 子句。
? 子查询中的值列表应于 INSERT 子句中的列名对应


2、更新数据
采用update语法进行更新数据:
语法如下:
  UPDATE table
  SET column = value [, column = value, ...]
  [WHERE condition];
备注:一次可以更新多条记录
//更新数据:更新users表 重新设置了passwrod 条件是唯一(主键是唯一)的条件。
SQL> update users set password='12l' where username='丫丫';
SQL> commit;
注意:当更新多个字段时,可以采用逗号进行区分.举例如下:
SQL> update users set password='123' , name='董晓丽'  where username='xiaoli';
SQL> commit;
备注:如果省略WHERE子句,则表中的所有数据都将被更新
SQL> update users set password='123' , name='董晓丽';
6 rows updated
SQL> commit;
Commit complete
SQL> select * from users;

USERNAME             PASSWORD             NAME                 ADDRESS                  ZIP
-------------------- -------------------- -------------------- -------------------- -------
huxz                 123                  董晓丽               北苑家园              100012
liucy                123                  董晓丽               清华园                100084
yaya               &nbs