现在的位置: 首页 > 综合 > 正文

Oracle中常用的DML语句

2013年08月30日 ⁄ 综合 ⁄ 共 4538字 ⁄ 字号 评论关闭

Oracle中的DML语句

Insert语句

语法格式:

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

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

自动生成一个表,(复制生成)userssusers表的备份表

生成表的语句如下:

SQL> create table userss as select * from users;

 

Table created

创建成功!!!

查询userss

SQL> select * from userss;

 

USERNAME             PASSWORD             NAME                 ADDRESS                  ZIP

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

huxz                 5678                 胡鑫喆               北苑家园              100012

liucy                1234                 刘春阳               清华园                100084

 查看userss的结构:

SQL> desc users;

Name     Type         Nullable Default Comments 

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

USERNAME VARCHAR2(20)                           

PASSWORD VARCHAR2(20)                           

NAME     VARCHAR2(20)                           

ADDRESS  VARCHAR2(20) Y                         

ZIP      NUMBER(6)    Y                         

 查看userss的结构:

SQL> desc userss;

Name     Type         Nullable Default Comments 

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

USERNAME VARCHAR2(20) Y                         

PASSWORD VARCHAR2(20)                           

NAME     VARCHAR2(20)                           

ADDRESS  VARCHAR2(20) Y                         

ZIP      NUMBER(6)    Y              

比较一下userssusers的表结构后,发现userssusers的结构相同,而约束不同,因为Oracle中备份数据的时候,他只备份表中的数据,不备份表中的约束      

先删除表中的数据,为了后面的测试

SQL> delete userss;

 

2 rows deleted

 

SQL> commit;

 

Commit complete

备份某个表的数据:

SQL> insert into userss select * from users;

 

或:

insert into userss(username,password,name,address,zip) select username,password,name,address,zip from users;

 

2 rows inserted

 

SQL> commit;

 

Commit complete

 向表中插入数据:

SQL> insert into userss(username,password) values('guo','123');

 

insert into userss(username,password) values('guo','123')

 

ORA-01400: 无法将 NULL 插入 ("A_USER"."USERSS"."NAME")

注意:出入的时候要注意表的约束

 SQL> insert into userss(username,password,name) values('guo','123','gqf');

 

1 row inserted

SQL 语句中使用 变量指定列值。变量放在VALUES子句中。会出现对话框来输入属性的值

SQL> insert into userss(username,password,name,address,zip) values('&username','&password','&name','&address',&zip);

USERNAME             PASSWORD             NAME                 ADDRESS                  ZIP

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

guo                  guo                  guoqianfang          biejing               100089

huxz                 5678                 胡鑫喆               北苑家园              100012

liucy                1234                 刘春阳               清华园                100084

Update语句

语法:

UPDATE table

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

[WHERE  condition];

 更新一条记录

SQL>  update userss set zip='071000' where username='guo';

 

1 row updated

 

SQL> commit;

 

Commit complete

 查看更新的结果:

SQL> select username,password,name,address,zip from userss;

 

USERNAME             PASSWORD             NAME                 ADDRESS                  ZIP

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

huxz                 5678                 胡鑫喆               北苑家园              100012

liucy                1234                 刘春阳               清华园                100084

guo                  123                  gqf                  清华园                 71000

 

在 UPDATE 中使用子查询,使更新基于另一个表中的数据。

SQL>  update userss set zip='071000',address=(select address from userss where username='liucy') where username='guo';

 

1 row updated

 

SQL> commit;

 

Commit complete

  查看更新的结果:

SQL>  select username,password,name,address,zip from userss;

 

USERNAME             PASSWORD             NAME                 ADDRESS                  ZIP

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

huxz                 5678                 胡鑫喆               北苑家园              100012

liucy                1234                 刘春阳               清华园                100084

guo                  123                  gqf                  清华园                 71000

Delete语句

 语法格式:

DELETE [FROM]   table

[WHERE   condition];

SQL> delete userss where username='guo';

 

1 row deleted

 

SQL> commit;

 

Commit complete

   查看更新的结果:

SQL>  select username,password,name,address,zip from userss;

 

USERNAME             PASSWORD             NAME                 ADDRESS                  ZIP

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

huxz                 5678                 胡鑫喆               北苑家园              100012

liucy                1234                 刘春阳               清华园                100084

 

抱歉!评论已关闭.