Oracle基本语法之DML(二)

来源:互联网 发布:linux vim 强制保存 编辑:程序博客网 时间:2024/05/16 15:48

增加数据

语法

    INSERT INTO table_name(column1,column2,....)    VALUES(value1,value2,....) 

实例

向用户表中的所有字段都添加值

insert into uinfo (id,name,password,regdate) values(1,’shaoduo’,’123’,sysdate) ;
或者
insert into uinfo values(1,’shaoduo’,’123’,sysdate) ;

SQL> desc uinfo 名称                                      是否为空? 类型 ----------------------------------------- -------- ---------------------------- ID                                                 NUMBER(6) NAME                                               VARCHAR2(20) PASSWORD                                           VARCHAR2(30) REGDATE                                            DATESQL> insert into uinfo (id,name,password,regdate) values(1,'shaoduo','123',sysdate) ;已创建 1 行。SQL>SQL> select * from  uinfo ;        ID NAME                 PASSWORD                       REGDATE---------- -------------------- ------------------------------ --------------         1 shaoduo              123                            02-4月 -17SQL>

其中sysdate 是当前时间,字符串需要用单引号引起。

向用户表中的指定字段添加记录

insert into uinfo (id,name,regdate) values(1,’shaoduo’,sysdate) ;
只添加除密码以外的字段。

SQL> insert into uinfo (id,name,regdate) values(2,'shao',sysdate) ;已创建 1 行。SQL> select * from uinfo ;        ID NAME                 PASSWORD                       REGDATE---------- -------------------- ------------------------------ --------------         1 shaoduo              123                            02-4月 -17         2 shao                                                02-4月 -17SQL>

向用户表中的添加默认值

创建一个新表

creae table userinfo1(
id number(5,0) ,
regdate date default sysdate) ;
)

为 regdate 指定默认值 sysdate当前时间,插入时可以不写自动添加默认值。
insert into userinfo1 values(3) ;

SQL> create table userinfo1( id number(6,0),  2  regdate date default sysdate) ;表已创建。SQL>SQL> insert into userinfo1 (id) values(1) ;已创建 1 行。SQL> select * from userinfo1 ;        ID REGDATE---------- --------------         1 02-4月 -17SQL>

修改表的默认值

修改uinfo表中 注册时间 的默认时间是 sysdate当前时间。
alter table uinfo modify regdate default sysdate ;

SQL> alter table uinfo modify regdate default sysdate  ;表已更改。SQL> insert into uinfo (id,name,password) values(3,'duo','222') ;已创建 1 行。SQL> select * from uinfo ;        ID NAME                 PASSWORD                       REGDATE---------- -------------------- ------------------------------ --------------         1 shaoduo              123                            02-4月 -17         2 shao                                                02-4月 -17         3 duo                  222                            02-4月 -17SQL>

复制表数据

创建时复制

语法

CREATE TABLE table_new AS SELECT column1,...|*FROM table_old 

实例

创建一个 user_new 的表 复制 uinfo表

SQL> create table user_new as select * from uinfo ;表已创建。SQL> select * from user_new ;        ID NAME                 PASSWORD                       REGDATE---------- -------------------- ------------------------------ --------------         1 shaoduo              123                            02-4月 -17         2 shao                                                02-4月 -17         3 duo                  222                            02-4月 -17SQL> desc user_new 名称                                      是否为空? 类型 ----------------------------------------- -------- ---------------------------- ID                                                 NUMBER(6) NAME                                               VARCHAR2(20) PASSWORD                                           VARCHAR2(30) REGDATE                                            DATESQL>

**由此可见 复制完后 ,新建的数据库 与被复制的数据库 表结构和数据都是一样的。
同样也可是选择 其中一些 字段来复制,这样选择的结构和数据与被复制的表是一样的。**

添加数据时复制

语法

    INSERT INTO table_new [(column1,...)] SELECT column1,...|*FROM table_old 

实例

SQL> insert into user_new select * from uinfo ;已创建3行。SQL> select * from user_new ;        ID NAME                 PASSWORD                       REGDATE---------- -------------------- ------------------------------ --------------         1 shaoduo              123                            02-4月 -17         2 shao                                                02-4月 -17         3 duo                  222                            02-4月 -17         1 shaoduo              123                            02-4月 -17         2 shao                                                02-4月 -17         3 duo                  222                            02-4月 -17已选择6行。

后边的三行是新复制上去的。
同样 可以自己选择某些字段来复制。select into user_new(id,name) select id,name from uinfo ;
SQL>

SQL> insert  into user_new(id,name)  select id,name from uinfo ;已创建3行。SQL> select * from user_new;        ID NAME                 PASSWORD                       REGDATE---------- -------------------- ------------------------------ --------------         1 shaoduo              123                            02-4月 -17         2 shao                                                02-4月 -17         3 duo                  222                            02-4月 -17         1 shaoduo              123                            02-4月 -17         2 shao                                                02-4月 -17         3 duo                  222                            02-4月 -17         1 shaoduo         2 shao         3 duo 已选择9行。

可见id 和name 复制到了表中

SQL>

修改数据

语法:

UPDATE table_name SET column1 =value1,... [where conditions] ;

实例:

  1. 有条件更新,将 name 是 shao 改 为gongshihang 并且 password 改为 111 。
SQL> UPDATE uinfo set name = 'gongshihang',password= '111' where name =shao' ;已更新 1 行。SQL> select * from uinfo ;        ID NAME                 PASSWORD                       REGDATE---------- -------------------- ------------------------------ --------------         1 shaoduo              123                            02-4月 -17         2 gongshihang          111                            02-4月 -17         3 duo                  222                            02-4月 -17SQL>
  1. 无条件更新, 一个字段的所有值都改变

update uinfo set password=’11111’ ;

SQL> update  uinfo set password='11111'  ;已更新3行。SQL> select * from uinfo ;        ID NAME                 PASSWORD                       REGDATE---------- -------------------- ------------------------------ --------------         1 shaoduo              11111                          02-4月 -17         2 gongshihang          11111                          02-4月 -17         3 duo                  11111                          02-4月 -17SQL>

可见password 字段被全部修改。

删除数据

语法

DELETE FROM table_name [WHERE conditions] 

实例

1.无条件删除
将user_new 表所有的数据无条件全部删除

SQL> delete from user_new ;已删除9行。SQL> select * from user_new ;未选定行SQL> desc user_new ; 名称                                      是否为空? 类型 ----------------------------------------- -------- ---------------------------- ID                                                 NUMBER(6) NAME                                               VARCHAR2(20) PASSWORD                                           VARCHAR2(30) REGDATE                                            DATESQL>

可见无条件删除把表中数据全部删除,但是desc查看表结构时,表结构还在。不删除表结构。

2.有条件删除
删除uinfo表中一个用户名为 ‘duo’ 的记录。

SQL> delete from uinfo where name ='duo' ;已删除 1 行。SQL> select * from uinfo  ;        ID NAME                 PASSWORD                       REGDATE---------- -------------------- ------------------------------ --------------         1 shaoduo              11111                          02-4月 -17         2 gongshihang          11111                          02-4月 -17SQL>

可见,记录已经被删除。


版权声明
author :shaoduo
原文来自:http://blog.csdn.net/shaoduo/article/details/68952201
其他出处均为转载,原创作品欢迎读者批评指正

1 0
原创粉丝点击