美文网首页mysql-DBA
DDL——数据定义语言

DDL——数据定义语言

作者: 静如止水yw | 来源:发表于2020-01-09 19:57 被阅读0次

    1. 库

    增
    mysql> create database oldguo charset utf8mb4 collate utf8mb4_bin;
    删
    mysql> drop database oldguo;
    改
    mysql> alter database oldguo charset utf8mb4 collate utf8mb4_bin;
    查(DQL)
    mysql> show databases;
    mysql> show create database oldguo;
    

    建库使用规范

    • 库名要和业务有关
    • 库名不能有大写字母,可以有小写字符,数字,特殊符号.
    • 库名不能数字开头
    • 不能是预留字符
    • 不能超过18个字符
    • 必须要设置字符集,尽量是utf8mb4
    • 收回所有用户的drop权限

    2. 表

    mysql> create table t1(id int)
    举例:建表规范
    CREATE TABLE `xuesheng` (
      `xid` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '学号',
      `xname` varchar(64) COLLATE utf8mb4_bin NOT NULL COMMENT '姓名',
      `xage` tinyint(3) unsigned NOT NULL DEFAULT '99' COMMENT '年龄',
      `xsex` char(1) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '性别',
      `xtel` char(14) COLLATE utf8mb4_bin NOT NULL COMMENT '手机号',
      `xcard` char(18) COLLATE utf8mb4_bin NOT NULL COMMENT '身份证号',
      `xaddr` enum('北京市','上海市','深圳市','山东省','甘肃省','河北省','山西省','河南省','辽宁省','吉林省','黑龙江省','内蒙古自治区','新疆维吾尔自治区','四川省','陕西省','江苏省','福建省','湖北省','广东省','广西省') COLLATE utf8mb4_bin NOT NULL DEFAULT '北京市' COMMENT '地区',
      `xdate` datetime DEFAULT NULL COMMENT '入学时间',
      PRIMARY KEY (`xid`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ; 
    说明:
     unsigned         -- 表示非负数
    comment          -- 表示备注,注释的信息
    auto_increment   -- 自动增加值,通常和主键搭配使用
    collate          -- 表示字符串
    commit           -- 表示提交
    not null         -- 不允许为空值
    datetime         -- 时间类型
    primary key      -- 主键 等价于 唯一 (UNIQUE) 且 非空 (NOT NULL)
    

    建表使用规范

    • 表名:不能大写字母,和业务有关,不能数字开头,长度控制在18字符以内,不能和关键字同名.
    • 要设置存储引擎类型: InnoDB,要设置字符集。
    • 合适的,完整的,简短的数据类型.(会影响到索引的性能)
    • 列名要有意义.
    • 每个表要有主键,如果不知道要怎么设置主键,也需要找一个无关的自增长列设置为主键
    • 尽量每个列都有not null(特别是将来要作为索引的列)
    • 每个列要有注释信息.

    mysql> drop table teacher_bak;
    mysql> truncate table teacher;
    ##drop table、truncate table、 delete table的区别?
    # drop table: 表结构+数据(物理性删除)
    # truncate table : 数据(清空数据页)
    # delete table : 清空数据行(逐行删除)
    

    alter table 
    (1)添加列
    mysql> desc xuesheng;
    mysql> alter table xuesheng add xqq bigint not null unique commit 'qq号';
    (2)删除列
    mysql> alter table xuesheng drop xqq;
    (3)修改
    #1. 修改表名
    alter table xuesheng rename to student;
    (4)修改某一列的属性信息
    mysql> desc student;
    alter table student modify xname varchar(128) not null comment '姓名';
    (5)修改列名和属性
    alter table student change xsex xgengder char(2) not null default 'm' comment '性别';
    
    #说明:
    bigint    -- 取值范围(-2^31 至 2^31-1)
    unique    -- 约束唯一标识数据库表中的每条记录
    rename    -- 给表重命名
    modify   -- 修改字符串或者数据的类型
    change    --  改变名字或者列的属性
    

    alter使用规范

    • 执行alter语句,都是需要进行锁表操作的,此时只能发生查询操作,不能做修改操作
    • 建议:alter语句,尽量在业务不繁忙期间发生。如果非得线上操作,建议使用pt-osc工具进行。

    mysql> show tables;
    mysql> show create database table;
    

    相关文章

      网友评论

        本文标题:DDL——数据定义语言

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