• MySQL的DDL操作表


    一、DDL操作表

    1.1 创建表

    1.1.1 语法

    create table 表名(
    	列名  类型 [约束],
    	列名  类型 [约束]
    	...
    );
    
    • 1
    • 2
    • 3
    • 4
    • 5

    1.1.2 类型

    1.1.2.1 数值类型
    • 整型系列:xxxInt

    int(M),必须和unsigned zerofill一起使用才有意义。

    整数类型字节取值范围 (有符号、无符号)
    TINYINT1-128~1270~255
    SMALLINT2-32768~327670~65535
    MEDIUMINT3-8388608~83886070~1677215
    INT、INTEGER4-2147483648~21474836470~4294967295
    BIGINT8-9223372036854775808~92233720368547758070~18446744073709551615
    • 浮点型系列:float,double

    double(M,D):表示最长为M位,其中小数点后D位。

    • 定点型系列:decimal(底层使用字符串进行存储)

    decimal(M,D):表示最长为M位,其中小数点后D位

    • 位类型:bit
      字节范围是:1~8,值范围是:bit(1)~bit(64),默认bit(1)。

    用来存储二进制数。对于位字段,直接使用select命令将不会看到结果。可以使用bit()或hex()函数进行读取。插入bit类型字段时,使用bit()函数转为二进制值再插入,因为二进制码是"01"。

    1.1.2.2 日期时间类型

    日期时间类型:year,date,datetime,timestamp

    • 日期时间的表示范围如下表:
    类型说明标准格式范围
    date日期YYYY-MM-DD1000-01-01到9999-12-31
    time时间HH:MM:SS-838:59:59和838:59:59
    datetime日期时间YYYY-MM-DD HH:MM:SS1000-01-01 00:00:00到9999-12-31 23:59:59
    year年份类型YYYY 和 YY(不推荐)1901到2155
    timestamp时间戳YYYY-MM-DD HH:MM:SS1970-01-01 00:00:01到2038-01-19 03:14:07

    timestamp和datetime区别:

    • timestamp范围比较小
    • timestamp和时区有关
    • timestamp受MySQL版本和服务器的SQLMode影响很大
    • 表中的第一个非空的timestamp字段如果插入和更新为NULL则会自动设置为系统时间。
    1.1.2.3 字符串类型

    MySQL中提供了多种对字符数据的存储类型,不同的版本可能有所差异。常见的有:
    char,varchar,xxtext,binary,varbinary,xxblob,enum,set等等

    字符串类型描述
    char(M)M为0~255,允许0~255个字符,char默认char(1)
    varchar(M)M为0~65535,允许0~65535个字符,varchar必须指定(M),实际长度=值得长度+1个字节
    binary(M)M为0~255,允许0~255个定长字节字符串
    varbinary(M)M为0~65535,允许0~65535个变长字节字符串,实际长度=值得长度+1个字节
    tinyblob允许0~255字节,实际长度=值得长度+1个字节
    blob允许0~65535个字节,实际长度=值的长度+2个字节
    mediumblob允许0~167772150个字节,实际长度=值的长度+3个字节
    longblob允许0~4294967295个字节,实际长度=值的长度+4个字节
    tinytext允许0~255个字节,实际长度=指的长度+2个字节
    text允许0~65535个字节,实际长度=值的长度+2个字节
    mediumtext允许0~167772150个字节,实际长度=值的长度+3个字节
    longtext允许0~4294967295个字节,实际长度=值的长度+4个字节
    • 字符串类型char,varchar(M)
      char如果没有指定宽度,默认为1个字符。
      varchar(M),必须指定宽度。

    • binary和varbinary类似于char和varchar,不同的是它们包含二进制字符串,不支持模糊查询之类的。

    • 一般在保存少量字符串的时候,我们会选择char和varchar;而在保存较大文本时,通常会选择使用text或blob系列。blob和text值会引起一些性能问题,特别是执行了大量的删除操作时,会在数据表中留下很大的“空洞”,为了提高性能,建议定期用optimize table功能对这类表进行碎片整理。可以使用Synthetic索引来提高大文本字段的查询性能,如果需要对大文本字段进行模糊查询,MySQL提供了前缀索引。

    • enum枚举类型,它的取值范围需要在创建表时通过枚举方式显式指定,对于1~255个成员的枚举需要1个字节存储;对于255~65535个成员需要2个字节存储。

    • set集合类型,可以包含0~64个成员。一次可以从集合中选择多个成员。

    1.1.3 约束

    • 就是规则,规矩,限制;
    • 作用是保证用户插入的数据保存到数据库中是符合规范的。
    约束约束关键字说明
    主键primary key非空且唯一,并且一张表只能有一个主键
    唯一unique唯一,当前列不能出现相同的数据
    非空not null非空,当前列不能为null
    默认default如果当前列没有数据,则指定默认数据
    约束种类:
    • not null:非空。
    • unique:唯一约束,后面的数据不能和前面重复。
    • primary key:主键约束(非空+唯一);一般用在表的id列上面。一张表基本上都有id列,id列作为唯一标识。

    注意:

    1. 先设置了primary key,再能设置auto_increment
    2. 只有当设置了auto_increment才可以插入null,否则插入null会报错。

    1.1.4 练习

    -- 1.创建表
    -- 创建一张学生表(含有id字段,姓名字段不能重复,性别字段不能为空。id为主键自动增长)
    CREATE TABLE student(
    	id INT PRIMARY KEY AUTO_INCREMENT, -- 主键自增长
    	NAME VARCHAR(30) UNIQUE, -- 唯一约束
    	gender CHAR(1) NOT NULL
    );
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    1.2 查看表

    1.2.1 查看所有的表

    -- 2.查看某个数据库中的所有表
    SHOW TABLES;
    
    • 1
    • 2

    1.2.2 查看表的定义结构

    • 语法
      desc 表名;
    -- 3.查看某张表的结构
    DESC student;
    
    • 1
    • 2

    1.3 修改表

    -- 4.修改表结构的SQL语句
    -- 4.1 添加一个字段
    -- 给学生表增加一个grade字段,类型为varchar(20),不能为空
    ALTER TABLE student  ADD grade VARCHAR(20)  NOT NULL;
    
    -- 4.2 修改某个字段的类型和约束
    -- 给学生表的gender字段改成int类型
    ALTER TABLE student MODIFY gender INT NOT NULL DEFAULT 1;
    
    -- 4.3 修改某个字段的名字
    -- 给学生的grade字段修改成class字段
    ALTER TABLE student CHANGE grade class VARCHAR(20)  NOT NULL;
    
    -- 4.4 删除某个字段
    -- 把class字段删除
    ALTER TABLE student DROP class;
    
    -- 4.5 修改表的名字
    -- 把学生表修改成老师表
    RENAME TABLE student TO teacher;
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    1.4 删除表

    -- 5. 删除表
    DROP TABLE teacher;
    
    • 1
    • 2

    学海无涯苦作舟

    这里写图片描述

  • 相关阅读:
    网关、网桥、路由器和交换机之【李逵与李鬼】
    【Python】读取文件的名字和文件后缀名
    nested exception is javax.mail.MessagingException: Exception reading response
    Java中使用redis的bitMap实现签到功能
    10月TIOBE榜Java跌出前三!要不我转回C#吧
    C++:浅拷贝和深拷贝简析
    模型保存和加载
    联盟 | SHOPYY 与 HelpLook 达成战略合作,携手助力独立站卖家快速增长!
    金融时报:波场亮相哈佛大学并举办TRON Builder Tour活动
    JDBC执行Oracle的Sql脚本注意细节
  • 原文地址:https://blog.csdn.net/HunterArley/article/details/127629960