Oracle基本语法之DML(二)

增加数据

语法

    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                                            DATE

SQL> 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月 -17

SQL>

其中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月 -17

SQL>

向用户表中的添加默认值

创建一个新表

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月 -17

SQL>
修改表的默认值

修改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月 -17

SQL>

复制表数据

创建时复制

语法

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月 -17

SQL> desc user_new
 名称                                      是否为空? 类型
 ----------------------------------------- -------- ----------------------------
 ID                                                 NUMBER(6)
 NAME                                               VARCHAR2(20)
 PASSWORD                                           VARCHAR2(30)
 REGDATE                                            DATE

SQL>

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

添加数据时复制

语法

    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月 -17

SQL>
  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月 -17

SQL>

可见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                                            DATE

SQL>

可见无条件删除把表中数据全部删除,但是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月 -17

SQL>

可见,记录已经被删除。


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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值