Oracle中SQL语句学习四(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


补充:

将整张表的输入插入到多个表中 

  (1)、使用all操作符执行插入操作 
    使用insert语句可以将某张表的数据同时插入到多张表中,语法如下: 
insertall insert_into_clause[value_clause] 子查询; 
如上所示:insert_into_clauseinsert子句,value_clause指定值子句insertall into cip_test into cip_temp select * from cip_tmp where id<10; 
插入的数据中cip_test表中的数据为1—10cip_temp表中的数据为1—10cip_temps表中的数据为1—10 

Oracle代码  

1. insert  all   

2.                when id between 1  and 10 then into cip_test   

3.                when id between 11 and 20 then into cip_temp   

4.           when id between 21 and 30 then into cip_temps   

5.          select * from cip_tmp where id<30;  


插入的数据中cip_test表中的数据为1—10cip_temp表中的数据为11—20cip_temps表中的数据为21—30 
注意:SQL语法1是将查询的信息全部插入的指定的表中。SQL2语句2是将查询的结果按照条件插入到指定的表中。 
    (2)、使用first操作符执行插入操作 
     当使用first操作符插入多表数据时,当先前条件已经满足,并且已经插入到表中,则该数据在后续插入中将不会在被用到。代码例如: 
 

Oracle代码  

1. insert  first  

2.                when id <=10 then into cip_test   

3.                when id <=20 then into cip_temp   

4.           when id <=30 then into cip_temps   

5.          select * from cip_tmp where id<30;  


插入的数据中 cip_test 表中的数据为 1—10 cip_temp 表中的数据为 11—20 cip_temps 表中的数据为 21—30

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值