美文网首页
数据库整理2

数据库整理2

作者: w_water | 来源:发表于2018-11-11 18:25 被阅读0次

    数据操作语言#DML(data manipulation language)

    插入数据
    insert into dept[列column1....] values (值value1,.....)
    注意事项:
    1、这种语法每次只能向里面插入一条记录;
    2、列名可以省略,省略后每列数据都要插入。列的顺序为使用desc 表名 命令查到的顺序。
    3、非空列的数据必须插入,否则会报错。
    4、字符型和日期型数据必须用单引号括起来。

    插入日期

    1、sysdate() 函数记录当前日期和时间。
    2、插入日期值,以文本形式输入'1988-10-17'

    批量插入数据

    insert into 表名[(字段列表)] values
    (值列表1),
    (值列表2),
    .....
    (值列表n);

    通过子查询插入多行数据

    insert into 表名(列名1)[,列名2,........列名n] 子查询;
    例:
    创建表
    create table manager as selectfrom emp where 1=0;
    向表中插入职位为manager的记录
    insert into manager select
    from emp where job='manager';

    修改数据(update)
    update table set column = value [,column2 = value2...] [where condition];
    -where 子句用来限定修改哪些行。
    -set子句用来限定修改哪些列。
    -where 子句中的更新条件是一个逻辑表达式,通常需要使用到关系运算符和逻辑运算符,返回TRUE或者false。


    无标题.png

    使用where子句修改指定的记录

    例:把员工编号为7782的部门编号修改为20.
    update emp set deptno = 20 where empto = 7782;
    注意:如果不加where语句限制,那么所有员工部门编号都会被设置为20.

    一次修改多列

    例如:
    把部门编号为10的员工,部门编号调整为20,工资增加100.
    update emp set deptno = 20,sal = sal+100 where deptno = 10;

    删除数据

    使用delete语句删除表中满足条件的行记录
    delete from table [where condition];
    例如:
    delete from emp where job = 'clerk';
    如果不加where子句则删除全部员工记录。

    注意事项

    如果删除数据行主键作为外键被其他表引用则该行数据不能被删除。

    截断表

    TRUNCATE TABLE table;
    例如;
    TRUNCATE TABLE EMP;

    TRUNCATE 和delete的区别

    -truncate是DDL,只能删除表中所有记录,释放存储空间,使用rollback不可以回滚。
    -delete是DML,可以删除指定记录,不释放存储空间,使用rollback可以回滚。

    事务(transcation)

    事务:也成工作单元,是由一个或者多个sql语句所组成的操作序列,这些SQL语句作为一个完整的工作单元,要么全部执行成功,要么全部执行失败。在数据库中,通过事务来保证数据的一致性。
    事务处理语言:transaction process language 简称TPL,主要用来对组成事务的DML语句操作结果进行确认或者取消。
    确认使用commit
    取消使用rollback

    事务特性(ACID)

    -原子性(atomicity)即不可分割,要么一起成功,要么一起失败
    -一致性(consistency)一旦事务完成,不管成功失败整个系统处于数据一致的状态。
    -隔离性(lsolation)一个事务不会被另一个事务干扰。
    -持久性(durability)也成为永久性,一旦事务提交,对数据的改变是永久的,不可以再被回滚。

    事务组成

    -在数据库中,事务由一组相关的DML或select语句,加上一个tpl语句(commit、rollback)或一个ddl语句(create、alter、drop、truncate等)或一个DCL(grant、revoke)语句。
    例:
    -insert...
    -update...
    -delete...
    -select...
    -insert...
    -commit; 前6条语句组成一个事务
    -update...
    -delete...
    -create...后三条语句组成第二个事务

    MySQL的事务处理两种方法

    -1、用begin,rollback,commit来实现
    begin开始一个事务
    rollback事务回滚
    commit事务提交
    -2直接用set来改变MySQL的自动提交模式
    MySQL是默认自动提交的,也就是你提交一个sql,就直接执行!可以通过以下两个来实现事务的处理;
    set autocommit = 0;禁止自动提交
    set autocommit = 1;开启自动提交

    注意事项

    方法二使用set autocommit = 0的时候,所有的sql都将作为事务处理,直到用commit确认或者rollback结束,结束的同时也开启了新的事务。
    方法一只将当前的作为一个事物。

    隐式结束

    -隐式提交:当发生下列任一情况时,会发生隐式提交
    1、执行一个ddl(create、alter、drop、truncate、rename)语句;
    2、执行一个dcl(grant、revoke)语句。
    -隐式回滚:当下列任一情况发生时,会发生隐式回滚。
    1、客户端强行退出
    2、客户端连接到服务器端异常中断
    3、系统崩溃

    设置保存点

    如果在一个事务内,想要回滚到指定位置,不是回滚到事务的起点,可以通过保存点(savepoint)实现。
    -SAVEPOINT savepointname;定义一个保存点语句;
    -ROLLBACK TO savepointname;回滚到指定保存点;

    相关文章

      网友评论

          本文标题:数据库整理2

          本文链接:https://www.haomeiwen.com/subject/ktnxfqtx.html