Insert语句
语法格式:
INSERT INTO table [(column [, column...])]
VALUES (value [, value...]);
自动生成一个表,(复制生成)userss是users表的备份表
生成表的语句如下:
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
比较一下userss和users的表结构后,发现userss和users的结构相同,而约束不同,因为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_clause指insert子句,value_clause指定值子句insertall into cip_test into cip_temp select * from cip_tmp where id<10;
插入的数据中cip_test表中的数据为1—10,cip_temp表中的数据为1—10,cip_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—10,cip_temp表中的数据为11—20,cip_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