Oracle中的DML语句
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
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