zoukankan      html  css  js  c++  java
  • DML操作

    SQL语句的类型:
    DQL:数据查询语言select
    DML:数据操作语言,insert delete update --》可以回退(可以进行事务操作)
    DDL :数据定义语言 create/drop /truncate /alter table
    DCL:数据控制语言 grant, revoke


    DML:
    增加数据insert
    insert into 表名(字段名1,字段名2,...,) values(字段值1,字段值2,...)

    字段名和字段值一一对象:数据类型、个数、顺序


    insert into emp(EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO)
    values(2222,'zhangsan','MANAGER',7788,'19-9月 -88',9998,1000,10);

    可以省略字段名:
    1.values插入的数据 必须是 完整的字段,并且顺序和默认顺序一致
    2.目前使用的SQL99标准,可以省略字段名(如果是SQL92则不能省略,MyCat)
    insert into emp
    values(3322,'LISI','MANAGER',7788,'19-9月 -88',9998,1000,10);


    如果插入的数据不完整,可以协商 部分字段名
    insert into emp(EMPNO,ENAME,JOB)
    values(444,'zhan','MANAGER');

    动态输入插入的值(&) Scanner input = new Scanner(System.in); input.next();


    insert into emp(EMPNO,ENAME,JOB)
    values(&empno,&xxx,&job);
    如果是字符、日期: 仍然需要加' '

    insert into emp(EMPNO,ENAME,&otherName)
    values('5555','kkk',&otherValue);


    --
    批量插入数据
    1.创建新表(批量插入之前不存在)
    emp ->复制 mytab

    create table mytab
    as
    select *from emp;

    create table mytab2
    as
    select empno,ename ,job from emp;

    create table mytab3
    as
    select empno,ename ,job from emp
    where sal < 6000;

    还可以用于快速创建表结构:
    mytab4 -> emp

    create table mytab4
    as
    select *from emp where 1=0 ;

    2.在旧表中插入(已存在的表)
    insert into mytab4(empno,ename,sal)
    select empno,ename ,sal from emp;

    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 ;


    海量数据: 数据泵 SQL Loader 外部表

    ---
    删除delete
    delete from 表名 ;
    delete from emp where empno >7900;
    1.加where
    2. delete from 表名 ;

    全表删除:
    1. delete from emp ; 可以回退
    truncate table emp ;不能回退
    原因: DML:insert update delete ->可以回退

    2.测试二者执行时间
    打开执行时间:
    set timing on/off
    对于少量数据: delete 效率高 ,一行一行删除
    对于海量数据:truncate效率高 , a.drop table 丢弃整张表 ,b.重新创建表

    3.delete支持闪回, truncate不支持闪回
    4.delete不会释放空间 (换个地方存储数据[undo空间]),trucante会
    5.delete会产生碎片,trunate不会
    如果碎片太多,需要整理碎片:a. alter table 表名 move ; b.导出导入


    ---

    update/delete :where
    修改update


    update 表名 set 字段名1=字段名1 , 字段名2=字段名2,字段名3=字段名3... where ...

    update emp set ename = 'x' ,job ='y' where empno>7900;

  • 相关阅读:
    iOS APM性能统计
    iOS promise
    静态代码检测工具Infer的部署
    ES读写数据的工作原理
    关于 Elasticsearch 内存占用及分配
    Elasticsearch中数据是如何存储的
    ES中的选举机制
    .net core 3.1 webapi解决跨域问题 GET DELETE POST PUT等
    .net framework WEBAPI跨域问题
    Angular前端项目发布到IIS
  • 原文地址:https://www.cnblogs.com/mayouyou/p/13189824.html
Copyright © 2011-2022 走看看