MySQL常用操作之数据库变更脚本

前言

  • 场景分析

    每次进行版本变更的时候,可能都会需要进行数据库变更,尤其项目迭代时,经常需要扩增表结构中的字段或者预埋一些固定数据,下面整理一些经常用到的SQL,方便查阅。

    另外,有时会出现测试环境测试的接口没有问题,但是上了生产偶尔会出现调用失败的问题,可能也是由于数据库中字段长度不够导致,而线下没有做到充分测试。

数据库常用语句分类

  • 概念图

    数据库常用语句分类.png

  • DCL

    Data Control Language:是数据库控制功能。是用来设置或更改数据库用户或角色权限的语句,包括(grant,deny,revoke等)语句。在默认状态下,只有sysadmin,dbcreator,db_owner或db_securityadmin等人员才有权力执行DCL。

  • DDL

    Data Definition Language:DDL比DML要多,主要的命令有CREATE、ALTER、DROP等,DDL主要是用在定义或改变表(TABLE)的结构,数据类型,表之间的链接和约束等初始化工作上,他们大多在建立表时使用

  • DML

    Data Manipulation Language:它们是SELECT、UPDATE、INSERT、DELETE,就象它的名字一样,这4条命令是用来对数据库里的数据进行操作的语言

表结构变更(DDL)

  • MySQL中常用SQL

    
        -- 添加表字段
    
        ALTER TABLE 表名 ADD [COLUMN] 字段名 字段类型 是否可为空 COMMENT '注释' AFTER 指定某字段;
    
        -- 1.添加字段
        alter table white_user add position varchar(50) not null comment '岗位';
    
        -- 2.在指定字段后面添加字段
        alter table white_user add position varchar(50) not null comment '岗位' after userName;
    
        
        
    
        -- 修改表字段
    
        -- 1.修改表字段类型
        ALTER  TABLE 表名 MODIFY [COLUMN] 字段名 新数据类型 新类型长度  新默认值  新注释;
    
        alter table white_user modify column position varchar(1024) default null comment '岗位';
    
        -- 2. 修改表字段名称(包括字段类型)
        ALTER  TABLE 表名 CHANGE [column] 旧字段名 新字段名 新数据类型;	 
        
        alter  table table1 change column1 column2 decimal(10,1) DEFAULT NULL COMMENT '注释';
    
        -- 3. 删除表字段
        ALTER TABLE 表名 DROP [COLUMN] 字段名;
    
        alter table white_user drop column position;
    
    
    

表数据变更(DML)

  • MySQL中常用SQL

    
        -- 新增数据
        
        -- 1. 由于ID列为主键,MySQL支持主键自增,所以插入的值为null时,实际插入的id就是原来最大的id值+1
        INSERT INTO beauty (id,name,sex,borndate,phone,boyfriend_id) VALUES (NULL,'任盈盈','女','1999-07-06',13865427898,8);  
    
        -- 2. 字段可以省略,默认的字段顺序和MySQL表中存储的顺序一致
        INSERT INTO beauty VALUES (17,'小毛毛','女','1992-10-10',13863327238,null);
    
    
        -- 修改数据
    
        -- 1. 修改单表数据
        UPDATE beauty SET borndate='1999-12-12',phone=13876029843 WHERE id=1;
    
        -- 2. 修改多表数据(可以用于关联其他表,修改单表数据,挺好用)
        UPDATE beauty b,boys bo
        SET b.borndate='2020-02-02',b.phone=123456790,bo.boyName='令狐冲'
        WHERE b.boyfriend_id = bo.id
        AND b.id=1;
    
    
        -- 删除数据
    
        -- 1. 删除单表数据
        DELETE FROM beauty WHERE NAME = '任盈盈';
    
        -- 2. 删除多表数据
        DELETE b,bo
        FROM beauty b,boys bo
        WHERE b.boyfriend_id = bo.id
        AND b.boyfriend_id = 4;
    
        -- 3. 使用Truncate关键字
    
            1. DELETE可以添加WHERE条件,TRUNCATE不能添加WHERE条件
    
            2. TRUNCATE效率稍高(因为TRUNCATE后面没有条件筛选,做删除操作的时候不需要去判断条件,所有效率稍高一点)
    
            3. TRUNCATE删除了自增长的列之后,插入数据数据是从1开始的,DELETE删除了数据之后是从上一个断点开始
    
          (例如删除的自增长列是id,开始表中有15条数据,那么最大的id是15,DELETE 删除之后,重新插入一条新纪录,新纪录的id是16,而使用TRUNCATE删除,重新插入数据,id是从1开始)
    
            4. DELETE删除可以回滚,TRUNCATE删除不能回滚
    
    

参考链接

  • Mysql修改字段名、修改字段类型

    https://blog.csdn.net/u010002184/article/details/79354136

  • MySQL DML语句

    https://www.cnblogs.com/xiaomaomao/p/13235899.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值