• MySQL学习笔记_2_MySQL创建数据表(上)


    MySQL创建数据表(上)

    一、创建数据表的SQL语句模型【弱类型】

    CREATETABLE [IF NOT EXISTS] 表名称(

    字段名1列的类型[属性][索引],

    字段名2 列的类型[属性][索引],

    字段名n列的类型[属性][索引],

    [表属性][表字符集]

    【表名称,字段名需要自己来命名】

    SQL语句并不区分大小写,但是一个文件名:在Windows下不区分大小写,但是在 Linux/UNIX下是区分大小写的】

    【命名规则: 1、有意义(英文,英文组合或英文缩写)

    2、自己定的名称最好小写。

    3SQL语句最好大写。】


    1 CREATETABLE users(

    idINT,

    nameCHAR(32)

    );

    2 SHOWTABLES;

    3 DESCusers;

    4 SELECT* FROM users;


    二、数据值与列类型

    都以空间大小来细分,能够存下即可!


    1、数值型

    整型(整数):

    非常小整数型 1字节 -128127 0255(无符号) TINYINIT

    较小整数型 2字节 -3276832767 SMALLINIT

    中等大小整数型 3字节 016777215 MEDIUMIINT

    标准整数型 4字节 -21474836482147483647 INT

    大整数型 8字节 BIGINT

    【可以添加属性:UNSIGNED

    浮点型(小数):

    FLOATMN 4字节 【长度M,保留小数点后N位】

    DOUBLEMN 8字节 【五舍六入】

    DECIMALMN M+2字节 【定点数,以字符串形式存储数据, 更精确的保存数据,但是效率会有所折扣。】【四舍五入】

    【浮点数会存在误差,因此在对数字敏感的时候,需要用定点数来存储!】

    3、字符型

    MySQL支持以单引号与双引号表示字符串类型。

    如“MySQL”'MySQL'相同

    char(M) 最大255 固定长度字符串

    varchar(M) 最大255 可变长度字符串

    char(4) varchar(4)// 永远比字符多一个字节

    '' 4 '' 1字节

    'a' 4 'a' 2字节

    'abcd' 4 'abcd' 5字节

    'abcdefg' 4 'abcdefgh' 5字节


    char类型会截取尾部的空格;

    示例: CREATETABLE IF NOT EXISTS tab(v varchar(4),c char(4));

    INSERTINTO tab(v,c) VALUES(“ab ”,”ab ”);

    SELECTCONCAT(v,”#”),CONCAT(c,”#”) FROM tab;


    最佳实践:

    固定长度,推荐使用char类型(可能会浪费一定空间)。

    可变长度,推荐使用varchar类型(可能会付出一些性能损耗)


    text 文本数据:文章,日志 长度:2^16-1

    MEDIUMTEXT

    LONGTEXT


    blob 二进制数据:照片,电影 长度:2^16-1

    MEDIUMBLOB

    LONGBLOB

    【虽然没法通过SQL语句将照片,电影,压缩包等二进制文件插入到数据库中, 但是我们可以通过C++/Java等编程语言将二进制文件读成二进制数据流,然 后保存到数据库中】

    ENUM 枚举 12字节

    ENUM(“one”,”two”,”three”,”four”)~65535

    一次只能有一个值


    SET集合 12348字节

    SET(“one”,”two”,”three”,”four”)~64

    一次可以有多个值,用“,”隔开。

    4、日期型

    DATE YYYY-MM-DD //如果位数充足,可以不用加‘-’

    TIME hh:mm:ss //位数充足,可以忽略‘:’,位数不足,从后面截取

    DATETIME YYYY-MM-DDhh:mm:ss

    TIMESTAMP YYYYMMDDhhmmss //位数不足时,不可忽略前导0

    YEAR YYYY


    【创建数据表时,最好不要使用这些时间值,最好使用C++/Java等编程语言中的整数来保存 时间,这样更方便计算,如C++中的intPHP中时间戳1970-1-10:0:0


  • 相关阅读:
    并查集
    博弈——Bash、Nim、Wythoff
    博弈——SG函数模板
    数据结构——二叉树
    数据结构——链式队列
    sonar-maven-plugin问题
    确立核心模型
    调度思路+EurekaServer获得当前机器的instanceid
    简易的RestClient代码
    Spring Cloud App(Service) Pom示例
  • 原文地址:https://www.cnblogs.com/itrena/p/5927073.html
Copyright © 2020-2023  润新知