Oracle基础(五)之DML语句(增删改)、改变表

一、DML语句(数据操作语句)

1.添加数据到表中

  insert into 表名(字段名) values(值)

  注:1)使用values关键字只能插入一条数据

    2)注意完整性约束

    3)插入的值必须与字段的顺序一样

    4)可以给表中的所有字段插入值,也可以给表中插入子表中的数据

    5)先插入父表的数据再插入子表的数据

    6)可以跟子查询,同时插入多条数据

//向s_stu插入一条数据
insert into s_stu
values(1,'tom',null,null,null,null);
insert into s_stu
values(2,'tom',null,null,'f',null);
insert into s_stu
values(3,'lucky',18,'18625034564','m',41);
insert into s_stu(id,name,age)
values(4,'jack',18);

insert into s_stu(id,name)
select id,last_name
from s_emp
where id>5;
2.跟新表中的数据 update
  update 表名
  set 字段名1=值1,字段名2=值2.........
  [where 条件]
  1)不加where会更新学生表中的所有当前字段的信息

  更新学生表中的age=20
  update s_stu
  set age=20;
 
 2)加where 更新表中的某些数据 
 
  更新满足where条件的数据
  更新学生表中的id大于20的age为99
  
update s_stu
  set age=99
  where id>20;
 
 3)注意完整性约束

  更新学生表中的id=10的age为50,phone为1111
  update s_stu
  set age=50,phone='1111'
  where id=10; 
3.删除数据
 delete [from] 表名
 [where 条件]
   1)加where 删除表中的某些数据
     删除满足where条件的数据

      //删除id=10的学生信息
      delete from s_stu
      where id=10;

   2)不加where,删除表中的所有数据,表结构还在
   3)先删除子表的数据,再删除父表的数据
4.事务
 在同一个操作单元中的一系列操作,这些操作要么同时成功 要么同时失败
并且这些操作是原子单位,是不可再分的

 回滚事务:rollback
 提交事务:commit

 (1)事务什么时候开始:
    1)一个事物结束代表另外一个事物开始
    2)打开终端,一个新的事务就开始了
 (2)事务什么时候结束:
    1)正常情况结束
       a.执行commit
       b.执行rollback
       c.执行DDL,DCL命令会自动提交
       d.执行DML语句不会自动提交(需要手动提交或回滚)
       e:exit 会自动提交
    2)非正常结束
       a.点击退出按钮
       b.系统错误
(3)事务四大特性:ACID
    原子性:事务是一个原子,事务不可再分
    一致性:事务操作前和事务操作后的数据要保持一致性
    隔离性:一个事务是看不见另外另一个事务的数据
    持久性:将事务的数据持久化的报讯保存到磁盘上
  
       insert into.....
       savepoint a
       update....
       savepoint b
       insert into....
       delete
   
       rollback to a/b
       //设置a,b保存点 回滚到想要留下的操作
二、改变表(alter table,rename...)
1.添加新的字段
   alter table 表名
   add (字段名 数据类型 默认值 约束
     ,字段名。。。。。。。。。)
  
    向s_stu添加comments
    alter table s_stu
    add comments varchar2(100);
2.删除表中的字段
   alter table 表名
   drop column 字段名;
   删除comments
   alter table s_stu
   drop column comments;
3.修改表中的字段
   alter table 表名
   modify(字段名 数据类型 默认值 约束 );
    修改s_stu的dept_id约束改为not null
    alter table s_stu
    modify dept_id number(7) not null;
 注意:值要注意一些情况(约束 数据类型 )
 修改:数据类型(值都为null),约束(是否符合约束),数据类型的长度(长度是否能放下表中的数  据)
4.增加约束(表级约束,所以不能增加非空约束)
   alter table 表名
   add 取约束名字 约束类型(字段);
  
5.删除约束
   alter table 表名
   drop constraint 约束名字
 
6.使约束失效 ---->约束还在 只是不起作用
   alter table 表名
   disable constraint 约束名;
 
7.使约束生效 ---->判断存在的值是否符合约束
   alter table 表名
   enable constraint 约束名;
8.删除表
   drop table 表名;  
      a.删除表中的数据 以及表结构;
      b.是DDL 不能回滚
      c.drop可以删除任意对象
   delete from 表名; 
      a.删除表中的数据 不会删除表结构;
      b.是DML 可以回滚
      c.删除数据效率低
   truncate table 表名;
      a.删除表中的数据 不会删除表结构;
      b.是DDL 不能回滚
      c.truncate只能删除表
      d.删除效率高
9.重命名rename
   rename 旧名字 to 新名字 ;
10.重命名(字段的名字)
   alter table 表名
   rename column 旧字段名 to 新字段名
 
11.给表增加注释
  comment on table 表名
  is '注释的内容';
    comment on table s_stu
    is 'This is a Student info';
    //查看表的注释
    select comments
    from all_tab_comments
    where table_name='TEST';
  
    //表中的列加注释
    comment on column  test.id
    is '序列号';
    //查看列的注释
    select comments
    from user_col_comments
    where table_name='TEST';
 用户表:用户通过create table 创建的表
        需要用户自己维护 自己增删改操作
 数据字典表:数据库创建的表,数据库自己维护,数据库自己增删改操作。
       eg:user_constraint
 
     //查询s_stu表的注释
     select comment
     from all_tab_comments
     where table_name='S_STU';//表名大写
posted @ 2020-09-08 19:17  zitos  阅读(136)  评论(0编辑  收藏