zoukankan      html  css  js  c++  java
  • MySQL列类型、SQL模式、数据字典

    MySQL列类型的作用:

    列类型可以简单理解为用来对用户往列种存储数据时做某种范围"限定",它可以定义数据的有效值(字符、数字等)、所能占据的最大存储空间、字符长度(定长或变长)、是否能够被索引、如何被索引及如何排序等。在关系型数据库系统中,为了实现数据的易于管理,必须为表字段(列)指定对应的列类型。MySQL的列类型可以分为4类:字符型、数值型、日期及时间型、自有类型。

    字符型:

     字符型限定值只能为字符,MySQL的字符类型如下:

    类型            最大字符长度         名称及特性
    char            255                定长字符串,区分大小写
    varchar         65535              变长字符串,区分大小写
    binary          255                二进制定长字符串,区分大小写
    varbinary       65535              二进制变长字符串,区分大小写
    
    tinytext        255                text类型是文本大对象存储,就是说它存储的并不是数据本身,而是一个指针,指向数据的存储所在位置;text不区分大小写
    text            65535
    mediumtext      16777215
    longtext        4294967295
    
    tinyblob        255                blob类型是二进制大对象存储,它是text的二进制形式,区分大小写
    blob            65535
    mediumblob      16777215
    longblob        4294967295

    数值型:

    数值型限定只能存储数值类数据,MySQL的数值类型如下:

    类型            名称              取值范围(有符号,无符号)
    TINYINT         最小整数      -1281270255
    SMALLINT        小整数            -3276832767065535
    MEDIUMINT       中整数            -83886078388607016777215
    INT             整数        -2147483647214748364704294967295
    BIGINT          大整数            -92233720368547758079223372036854775807018446744073709551615
    decimal         十进制            
    FLOAT           单精度浮点
    DOUBAL          双精度浮点

    日期及时间型:

    日期时间型用来记录日期或时间,MySQL的日期时间类型如下:

    类型                名称                取值范围
    DATE 日期 '1000-01-01'到'9999-12-31' TIME 时间 '-838:59:59'到'838:59:59' DATETIME 日期时间 '1000-01-01 00:00:00'到'9999-12-31 23:59:59' TIMESTAMP 时间戳         '1970-01-01 00:00:00'到’2037年某时' YEAR 年 4位格式:19012155,2位格式:1970-2069(70-69),或:0000

    自有类型:

    自有类型是MySQL内置的类型,有两种:

    SET:字符串集合,事先给出多个元素(最多64个)供用户选择,用户可以选多个元素填入
    ENUM:枚举,事先给出多个元素(最多65536个)供用户选择,用户只能选一个元素填入

    MySQL的SQL模式:

    MySQL服务器可以以不同的SQL模式来操作,并且可以为不同客户端应用不同模式。这样每个应用程序可以根据自己的需求来定制服务器的操作模式。这类模式定义了MySQL应支持的SQL语法,以及应该在数据上执行何种确认检查。这样,就能在众多不同的环境下、与其他数据库服务器一起更容易地使用MySQL。MySQL常用的有三种SQL模式,传统模式、严格模式和ANSI模式。MySQL的SQL模式默认为空,该模式为非严格模式。

    可以通过如下命令查看MySQL当前的SQL模式:

    mysql> SHOW GLOBAL VARIABLES LIKE 'sql_mode';
    mysql> SELECT @@sql_mode;

    设置MySQL的SQL模式:

    mysql> SET [GLOBAL|SESSION] sql_mode='modes';

    或启动MySQL时指定SQL模式:

    shell> mysqld --sql-mode="modes"

    TRADITIONAL,传统模式:

    该模式的简单描述是当在列中插入不正确的值时“给出错误而不是警告”。注释:一旦发现错误立即放弃INSERT/UPDATE。如果你使用非事务存储引擎,那么出现错误前进行的数据更改不会“回滚”,会导致结果更新“只进行了一部分”。

    mysql> SET [GLOBAL|SESSION] sql_mode='TRADITIONAL';

    STRICT,严格模式:

    如果不能将给定的值插入到表中,则放弃该语句。严格模式具有两种:STRICT_TRANS_TABLES和STRICT_ALL_TABLES。STRICT_TRANS_TABLES对支持事务的表实行严格模式,STRICT_ALL_TALBES在所有表执行严格模式。

    mysql> SET [GLOBAL|SESSION] sql_mode='STRICT_TRANS_TABLES';
    mysql> SET [GLOBAL|SESSION] sql_mode='STRICT_ALL_TABLES';

    ANSI模式:

    更改操作的语法和行为,使其更适合标准的SQL。

    数据字典:

    数据字典就类似于系统编目或花名册(和目录不太相同),它保存数据库服务器上的元数据信息(数据库的整体属性信息)。元数据信息包括:关系(表)的名字、每个关系的各字段的名字、各字段的数据类型和长度约束、每个关系上的视图的名字及视图的定义、授权用户的名字、用户的授权和账户信息、统计类的数据:、每个关系字段的个数、每个关系中的行数、每个关系的存储方法;

    在mysql上保存元数据的数据库有:mysql库、infomation_schema库、和performance_schema库,performance_schema库是一个虚拟的库,类似于Linux的/proc等伪文件系统。

  • 相关阅读:
    黑鲨2无限重启 把竞技按钮调到最上
    绿联 电池
    阿里云
    Centos 8 搭建时钟服务器
    CentOS8系统时间同步解决方法
    解决问题的人干活快的人
    【海通国际】Joe Lowry(Mr. Lithium)谈全球电池原材料供应危机
    Linux 实验楼
    用 set follow-fork-mode child即可。这是一个 gdb 命令,其目的是告诉 gdb 在目标应用调用fork之后接着调试子进程而不是父进程,因为在 Linux 中fork系统调用成功会返回两次,一次在父进程,一次在子进程
    【随笔】阿里云修改DNS
  • 原文地址:https://www.cnblogs.com/hanxiaomeng/p/5425741.html
Copyright © 2011-2022 走看看