zoukankan      html  css  js  c++  java
  • mysql建表以及列属性

    一、整型( int, tinyint, smallint 等 )

    ------------------------------------------------------------------------------------------------------------------------------------------------------

    #创建表
    CREATE TABLE t1 (
    num TINYINT
    )CHARSET utf8 ENGINE MYISAM;
    #添加一列num2,类型为tinyint, 属性为unsigned
    ALTER TABLE t1 ADD num2 TINYINT UNSIGNED;
    #添加一列num3,类型为tinyint, 属性为zerofill填充, 宽度为4,这个4,并不是限制范围的
    ALTER TABLE t1 ADD num3 TINYINT( 4 ) ZEROFILL;

    #增加一列num4,类型为int,宽度为4

    ALTER TABLE t1 ADD num4 TINYINT( 4 );

    #把num4的列类型,改成int
    ALTER TABLE t1 MODIFY num4 INT( 4 );

    #字段最大值( 溢出 )测试
    INSERT INTO t1 VALUES( 200 );
    INSERT INTO t1 VALUES( -128 );
    INSERT INTO t1 VALUES( -129 );
    INSERT INTO t1 VALUES( -1, 200 );
    INSERT INTO t1 VALUES( -1, 256 );
    INSERT INTO t1 VALUES( -128, -1, 2 );

    二、浮点型( float, double, decimal )

    ------------------------------------------------------------------------------------------------------------------------------------------------------

    CREATE TABLE t2(

    num FLOAT( 6, 2 )
    )CHARSET utf8 ENGINE MYISAM;
    #num FLOAT( 6, 2 ), 6表示最大的位数,2表示小数点位数,所以他能表示的最大值为9999.99
    INSERT INTO t2 VALUES( 1234.56 );
    #下面12340溢出,这个位置最大只能存9999
    INSERT INTO t2 VALUES( 12340 );

    注意:float与double有精度损失, decimal是定点型,不会损失精度

    三、字符型( char, varchar, text, enum 等 )

    ------------------------------------------------------------------------------------------------------------------------------------------------------

    char型如果不够M个字符,后面用空格补齐,取出时,把右边的空格去掉

    注意:这表明,如果数据本身右侧有空格,将会丢失

    #char型与varchar型测试

    CREATE TABLE t3 (
    n1 CHAR( 10 ),
    n2 VARCHAR( 10 )
    )CHARSET utf8 ENGINE MYISAM;

    INSERT INTO t3 VALUES( ' ghostwu ', ' ghostwu ' );

    select concat( '(', n1, ')' ), concat( '(', n2, ')' ) from t3;

    从下图可知:n1列存储的值,由于是定长,取出来的时候,右边的空格丢失了 

     CREATE TABLE t4(

    gender ENUM( '男', '女' )
    )CHARSET utf8 ENGINE MYISAM;

    INSERT INTO t4 VALUES( '男' );
    INSERT INTO t4 VALUES( '女' );
    #man不在枚举范围内,插入不了
    INSERT INTO t4 VALUES( 'man' );

    四、时间类型测试( year, time, date, datetime, timestamp, unsigned int )

    ------------------------------------------------------------------------------------------------------------------------------------------------------
    CREATE TABLE t5(
    t1 YEAR,
    t2 TIME,
    t3 DATE,
    t4 DATETIME,
    t5 TIMESTAMP
    ) CHARSET utf8 ENGINE MYISAM;

    INSERT INTO t5( t1 ) VALUES( '32' );
    INSERT INTO t5( t1 ) VALUES( '1932' );
    INSERT INTO t5( t1 ) VALUES( '2032' );
    INSERT INTO t5( t1, t2, t3, t4 ) VALUES( '2100', '20:02:34', '2018-03-12', '2018-03-12 20:02:34' );

    注:一般时间都用int型存储,便于计算,timestamp类型会自动插入当前的时间

  • 相关阅读:
    dotnet 控制台读写 Sqlite 提示 no such table 找不到文件
    dotnet 控制台读写 Sqlite 提示 no such table 找不到文件
    dotnet 控制台 Hangfire 后台定时任务
    dotnet 控制台 Hangfire 后台定时任务
    dotnet 获取指定进程的输入命令行
    dotnet 获取指定进程的输入命令行
    PHP sqrt() 函数
    PHP sinh() 函数
    PHP sin() 函数
    PHP round() 函数
  • 原文地址:https://www.cnblogs.com/ghostwu/p/8545248.html
Copyright © 2011-2022 走看看