zoukankan      html  css  js  c++  java
  • Oracle基础(十) DML数据操作

    一、DML数据操作语言

      主要用于检索、插入和修改数据库信息。它是最常用的SQL命令,如INSERT(插入)、UPDATE(更新)、SELECT(选择)、DELETE(删除)。

      1、INSERT插入语句:

      语法:

      INSERT INTO tablename[column1[,column2...]]

      VALUES (value1[,value2...]);

      说明:

      INSERT INTO:为插入的关键字。

      tablename:表示要插入的表。

      column1:可选参数,表示要插入的列,多个列使用,分隔。

      values(value1..):插入的值,这里的value1,必须和前面的列相对应,如果不写列,则必须和表的结构一致。

      例:  

    --创建学员信息表,并添加约束
    CREATE TABLE stuinfo
    (
      stuName VARCHAR2(20) NOT NULL CONSTRAINT pk_name PRIMARY KEY,
      stuPass VARCHAR2(20) NOT NULL CONSTRAINT ck_pass CHECK (LENGTH(stupass) > 3),
      stuAge NUMBER(3,0) NOT NULL CONSTRAINT ck_age CHECK (stuage>18),
      birthday DATE DEFAULT SYSDATE
    )

      向学员信息表中插入数据   

    --向学生表中插入一条记录
    INSERT INTO stuinfo(stuname,stupass,stuage,birthday)
    VALUES ('张三','123123',20,DEFAULT)
    
    --添加自定义日期类型的数据
    INSERT INTO stuinfo
    VALUES ('李四','123456',25,to_date('1999-9-20','yyyy-Mm-dd'))

      这里需要注意:

      1)插入的列必须和插入的值一一对应,包括数据类型,个数,顺序必须要全一致。

      2)如果数据表中包含了默认值,则可以使用default关键字插入默认值。

      3)插入的数据必须满足数据约束。否则插入失败。

      4)插入的列可以省略,但是必须按照表中列的顺序插入数据。

      5)通过to_date完成对日期函数数据的添加。

      6)插入字符串类型必须使用'包含起来。

      插入多行记录:

      1、insert..into...select...生成自定义数据

    --一次插入多行数据,通过union关键字拼接查询
    INSERT INTO stuinfo(stuname,stupass,stuage,birthday)
    SELECT '王五','888888',20,to_date('1999-8-8','yyyy-Mm-dd') FROM dual UNION
    SELECT '赵六','666666',25,to_date('195-8-20','yyyy-Mm-dd') FROM dual

      将多个查询结果拼接起来一次插入数据库,这里查询的类型数据必须和插入的数据类型和顺序完全一致。

      2、insert..into...select...将已经存在表的记录插入到新表中  

    INSERT INTO stuinfo (stuname,stupass,stuage,birthday)
    SELECT NAME,pass,age,SYSDATE FROM backuser

      将查询结果插入到一个已经存在的表中,如果表不存在则报错。

      3、select...into...  

    --将查询到的数据生成一张新的表
    CREATE TABLE backuser AS
    SELECT stuname,stupass,stuage,birthday
    FROM stuinfo

      将查询到的结果插入到一张新表中,表必须不存在,如果存在则报错。

      

      2、update语句

      语法:

      update tablename set column_name=value[,column=value,...]

      [where=condition];

      说明:

      update:关键字

      tablename:表明

      column=value:设置列的值,多个列使用,隔开,不需要set。

      where condition:条件,必须为boolean表达式。如果不带条件则更所表中所有数据,操作要谨慎。

      例:  

    --将赵六的密码修改为8个6,然后将出生日期改为1989-5-20
    UPDATE stuinfo 
    SET stupass='666666',
    birthday=to_date('1989-5-20','yyyy-MM-dd')   --插入日期需要进行格式转换
    WHERE stuname = '赵六'                       --指定修改数据的条件,条件不满足不执行任何操作
    commit;                                      --执行完毕后自动进行提交

      注意:  

      1)修改的数据同样必须满足数据库中的约束。

      2)修改后的数据如果在PLSQL中需要使用comit提交事务,数据才算修改成功。

      3)修改后的条件需要跟上,否则是修改表中所有记录。

      

      3、删除语句

      1)DELETE语法:

      DELETE [FROM] tablename

      [WHERE condition];

      说明:

      DELETE [FROM]:为删除的关键字。FROM可以省略不写。

      tablename:要删除数据的表。

      where condition:要删除数据的条件,不写则删除表中所有记录

      例:  

    DELETE stuinfo WHERE stuname = '赵六'  --删除用户名为'赵六的用户信息';
    DELETE stuinfo                        --删除表中所有的记录

      

      2)TRUNCATE table 清空表

      语法:

      truncate tablename;

      说明:

      truncate:清空关键字。

        tablename:要清空的表明。

      例:  

    TRUNCATE TABLE backuser;  --清空backuser表

      delete和truncate的区别:

      a)truncate快速删除记录并释放空间,不适用事务处理,因此无法回滚,而delete命令可在执行删除之后,通过rollback撤销删除。

      b)truncate将删除表中的所有记录,而DELETE不仅可以删除表中的记录,还可以通过where条件删除表中的部分数据。

  • 相关阅读:
    pathon学习总结(二)pathon的基础语法
    python学习总结(一),第一个python程序的编写
    数组中查找最大值和最小值 (两种方法)
    websocket----聊天室,推送等服务
    django-celery 应用方法
    vue-resource
    Vue-router
    vue 属性绑定
    Vue的生命周期以及钩子函数
    安装 vue 及 组件
  • 原文地址:https://www.cnblogs.com/zhengcheng/p/4180570.html
Copyright © 2011-2022 走看看