SQL语句的类型描述与DML语句

SQL语句的类型:

DQL:数据查询语言select(官方未定义)

DML:数据操作语言,insert、  delete、   update

DDL:数据定义语言,create、  drop、  truncate、  alter table

DCL:数据控制语言,grant、  revoke  

 

DML:

一、增加数据insert

  1、语句:insert into 表名 (字段名1,字段名2,......) values(字段值1,字段值2,......)

  2、举例:从student表中添加一行数据:insert into student(stuno,stuname,stuaddress,stuid) values(4,'赵六','北京市海淀区',2);

                    insert into student values(5,'老七','上海市浦东新区',1);      --若插入的字段值符合全部字段,可以不写字段名 

  3、注意:字段名和字段值一一对应

 

批量插入数据:

1、创建新表(批量插入到之前不存在的表)

   例如:student表复制到mystudent表中:create table mystudent as select * from student;

     也可以复制一部分数据到新表:create table mystudent2 as select stuname,stuaddress from student;

     只要表结构,不要数据:create table mystudent3

 

2、在旧表中插入(已存在的表)

   例如:insert into mystudent3(stuno,stuname,stuaddress,stuid) select stuno,stuname,stuaddress,stuid from student;

 

3、begin ... end

   begin
        insert into emp
  values(1221,'LISI','MANAGER',7788,'19-9月 -88',9998,1000,10);
     insert into emp
  values(1223,'LISI','MANAGER',7788,'19-9月 -88',9998,1000,10);
end ;

 

二、删除数据

  1.语句:delete from 表名 where 条件判断;

  2.注意:要加上where,否则是删除整表的数据

 

扩展:

全表删除:

delete from emp;  可以回退

truncate table emp;  不能回退

1.原因:Oracle中的DML语句默认未提交事务,可以通过rollback回退操作

2.执行时间对比:

   通过set timing on打开执行时间监听器,得出结论

   对于少量数据,delete执行效率高,一行一行删除

   对于海量数据,truncate执行效率高,首先丢弃整张表,然后重新创建表

3.delete支持闪回,truncate不支持闪回

4.delete不会释放空间(换个地方存储数据,相当于回收站),truncate会释放空间(相当于彻底删除)

5.delete会产生碎片,truncate不会产生碎片

   如何处理碎片? a. alter table 表名 move;

        b.  导入导出

 

三、修改数据

  1.语句:update 表名 set 字段名1=字段名2, ... where ...;

  2.例如:将学生id为5的学生的名字改为“小明”,课程序号改为5:update student set stuname = '小明', stuno = 3 where stuid = 5;

  3.注意:要加上where,否则修改整列的数据!

 

 

 

     

posted @ 2021-08-19 17:09  Brack_Pearl  阅读(237)  评论(0编辑  收藏  举报