zoukankan      html  css  js  c++  java
  • mysql分类和事务回滚

    主要内容

    ***数据定义语言DDL重点

    ***数据操纵语言DML重点

          数据查询语言DQL重点

    ---事务控制语言TCL

    ---数据库控制语言DCL

    ---主键(primary key)

    ---数据冗余(另外建表,把某个外建与另一个表的主键建立关系联系起来)

    ---事务

    ***数据定义语言DDL重点

    定义:DDL(Data Definition Language):负责数据结构定义与创建数据库对象的语言。

    负责数据结构定义与创建数据库对象的语言。

    常用的有create alter drop   truncate(删除数据并自动重建表)

    注意:DDL不支持事务,DDL语句操作以后无法会滚(rollback)。//面试常见考点

    ***数据操纵语言DML重点

    DML(Data Maniplution Language)

    作用:负责对数据库中更改数据的操作的指令。如:增删改查insert delete update select

    注意:DML支持事务,在非自动提交时候,可以利用rollback会滚操作,也是面试重点。

      数据查询语言DQL重点

    DQL(Data Query Language)

    定义:用于查询表格内的数据的指令,包括select命令。

    作为DML一部分  与事务无关。

    DQL是工作中最常用的语句,面试必考。

    ###TCL

    事务控制语言:事务控制语言。包含:commit  ,rollback ,  savepoint  ,rollback  to等。

    分配用户数据权限的。

    ###DCL

    Data Control Language:数据控制语言

    主键约束

    主键:...

    约束:创建表时给表中字段添加约束。

    注意:主键约束,保存的数值必须唯一且非空

    格式:create table t(id int primary key,name varchar(10));

    insert into t values(101,'zhangFei');

    insert into t values(101,'liuBei');

    insert into t3 values(null,'guanYu');

    ###主键+自增约束

    ---create table t3(id int primary key auto_increment,name varchar(10));

    insert into t3 values(null,'guanYu');

     select * from t3;
    +----+--------+
    | id | name   |
    +----+--------+
    |  1 | guanYu |
    +----+--------+

     

    如何让自增数值清零?使用truncate关键字  表示删除又创建一个新表

    truncate table t2;

    ###注释 comment

    ---创建表的时候可以通过对字段进行描述 

    ---格式:create table t4(id int primary key auto_increment ,comment '这个字段是主键',ename varchar(10),sal int comment '这是工资');

    show create table t4;

    ###'和'的区别

    create table 't4'(id int,'age' int);

    '的作用是用来修饰字符串的

    ###数据冗余

    ---由于表设计的不合理,出现了大量重复的数据,成为数据冗余。把可能重复的数据保存到一张新的 表中。把可能重复的数据存到

    一张新表,通过id建立关系,这中关系的字段称之为外键。

    练习二:请设计表保存以下数据:保存教学部下java教研部的老师信息:苍老师  工资 200 年龄

    然后再保存到集团总部下销售部门,销售A部的员工李白工资50 ,年龄28岁。

    1.创建部门表:create table dept(id int  primary key auto_increment,name varchar(10),parent_id int);

      insert into dept values(null,'集团总部门',null);

      insert into dept values(null,'教学部',1);

      insert into dept values(null,'java教研部',2);

      insert into dept values(null,'销售部',1);

      insert into dept values(null,'销售A部',4);

    2.创建员工表: create table emp(id int primary key auto_increment ,name varchar(10),sal int,age int,dept_id int);

    insert into emp values(null,'苍老师',200,18,3),(null,'李白',50,28,5);

    ###事务(自动提交--->数据库,改为手动提交--->内存-->数据库,增强数据存储安全性)

    什么是事物?数据库执行的最小工作单元,把多条sql语句放到事物中可以保证多条sql要么全部成功,要么全部失败。

    1.创建person表:create table  person(id int primary key auto_increment,name varchar(10),money int);

    2.插入数据:insert into person values(null,'超人',200),(null,'钢铁侠',1000);

    事务好像有几个特性:...(查查)

    ---查看数据库的自动提交状态

    show  variables like '%autocommit%';

    ---关闭自动提交 0 ,打开自动提交1;

    set atuocommit=0;

    ###转账验证过程:

    1.把自动提交关掉:set  autocommit=0;

    2.让超人+300:update person set money=500 where id=1;

    3.此时打开另外一个终端use db2;查询数据select * from person;(数据库中的数据此时并没有修改)

    4.回到第一个中终端窗口,让钢铁侠-300  update person set money=700 where id=2;(当前窗口查询

       数据时,因为查询的是内存中的数据并没有发生改变)

    5.在第一个窗口中手动提交commit;此时会把内存中的多次SQL在内存中的执行结果 同时提交到数据库中

    (此时两个终端发生改变)

    ###事务回滚
    -rollback :commit操作之前的结果。
    -savepoint:设置回滚点。
                    ---格式:savepoint 标识;

    -rollback to s1;指定会滚到某个会滚点。

    测试步骤:1.先把超人money=100;   2.把超人money=200;   3.此时savepoint s1;  4.把超人money=300;

                        5.此时rollback to  s1;(此时数据会会滚到money=200)

    ###事务的应用场景(类似于java中多线程并发执行

                 当执行某一个事情需要多行sql语句,并且要求多行sql要么全部成功,要么全部失败,此时必须使用事务,不然就会出现sql部分成功部分失败的情况。(多条sql语句做一件事)

    ###事务总结

    1.查看自动提交状态

       show variables like '%autocommit%';

    2.修改提交状态

    set autocommit=0/1;

    3.手动提交

    commit;

    4.会滚

    rollback;

    5.设置会滚点

    savepoint s1;

    6.会滚到某个会滚点

    rollback to s1;

    成年人的世界没有那么多的童话,也没有那么多的逆袭。
  • 相关阅读:
    【原创】(九)Linux内存管理
    【原创】(八)Linux内存管理
    【原创】(六)Linux内存管理
    【原创】(四)Linux内存模型之Sparse Memory Model
    2019年总结
    被低估的.NET(下)-2019 中国.NET 开发者峰会
    《.NET内存管理宝典》阅读指南
    《 .NET并发编程实战》扩展阅读
    《 .NET并发编程实战》阅读指南
    《 .NET并发编程实战》阅读指南
  • 原文地址:https://www.cnblogs.com/shijinglu2018/p/9320762.html
Copyright © 2011-2022 走看看