1 #常见的数据类型 2 /* 3 数值型: 4 整型 5 小数: 6 定点数 7 浮点数 8 字符型: 9 较短的文本:char、varchar 10 较长的文本:text、blob(较长的二进制数据) 11 日期型: 12 13 14 */ 15 16 #一、整型 17 /* 18 tinyint、smallint、mediumint、int/integer、bigint 19 1 2 3 4 6 20 特点: 21 (1)如果不设置无符号还是有符号,默认是有符号,如果想设置无符号,需要添加unsigned关键字 22 (2)如果插入的数值超出了整型的范围,会报out of range异常,并且插入临界值 23 (3)如果不设置长度,会有默认的长度 24 长度代表了显示的最大宽度,如果不够会用0在左边填充,但必须搭配zerofill使用 25 */ 26 27 #1.如何设置无符号和有符号 28 DROP TABLE IF EXISTS tab_int; 29 CREATE TABLE tab_int( 30 t1 INT(7) ZEROFILL, 31 t2 INT(7) ZEROFILL 32 ); 33 34 DESC tab_int; 35 36 INSERT INTO tab_int VALUES(-123456,-123456); 37 INSERT INTO tab_int VALUES(2147183648,4294967296); 38 INSERT INTO tab_int VALUES(123,123); 39 SELECT * FROM tab_int; 40 41 #二、小数 42 /* 43 1.浮点型 44 float(M,D) 45 double(M,D) 46 2.定点型 47 dec(M,D) 48 decimal(M,D) 49 50 特点: 51 (1)M和D 52 M:整数部位+小数部位 53 D:小数部位 54 如果超过范围,则插入临界值 55 (2) 56 M和D都可以省略 57 如果是decimal,则M默认为10,D默认为0 58 如果是float和double,则会根据插入的数值的精度来决定精度 59 60 (3)定点型的精确度较高,如果要求插入数值的精度较高如货币运算等则考虑使用 61 */ 62 63 DROP TABLE tab_float; 64 CREATE TABLE tab_float( 65 f1 FLOAT, 66 f2 DOUBLE, 67 f3 DECIMAL 68 ); 69 SELECT * FROM tab_float; 70 INSERT INTO tab_float VALUES(123.4523,123.4523,123.4523); 71 INSERT INTO tab_float VALUES(123.456,123.456,123.456); 72 INSERT INTO tab_float VALUES(123.4,123.4,123.4); 73 INSERT INTO tab_float VALUES(1523.4,1523.4,1523.4); 74 75 #原则: 76 /* 77 所选择的类型越简单越好,能保存数值的类型越小越好 78 */ 79 80 #三、字符型 81 /* 82 较短的文本: 83 char 84 varchar 85 86 其他: 87 binary和varbinary用于保存较短的二进制 88 enum用于保存枚举 89 set用于保存集合 90 91 较长的文本: 92 text 93 blob(较大的二进制) 94 95 特点: 96 97 98 写法 M的意思 特点 空间的耗费 效率 99 char char(M) 最大的字符数,可以省略,默认为1 固定长度的字符 比较耗费 高 100 varchar varchar(M) 最大的字符数,不可以省略 可变长度的字符 比较节省 低 101 102 */ 103 104 CREATE TABLE tab_char( 105 c1 ENUM('a','b','c') 106 ); 107 108 INSERT INTO tab_char VALUES('a'); 109 INSERT INTO tab_char VALUES('b'); 110 INSERT INTO tab_char VALUES('c'); 111 INSERT INTO tab_char VALUES('m'); 112 INSERT INTO tab_char VALUES('A'); 113 114 SELECT * FROM tab_char; 115 116 CREATE TABLE tab_set( 117 s1 SET('a','b','c','d') 118 ); 119 INSERT INTO tab_set VALUES('a'); 120 INSERT INTO tab_set VALUES('A,B'); 121 INSERT INTO tab_set VALUES('a,c,d'); 122 123 SELECT * FROM tab_set; 124 125 #四、日期型 126 /* 127 分类: 128 date只保存日期 129 time只保存时间 130 year只保存年 131 132 datetime保存日期+时间 133 timestamp保存日期+时间 134 135 特点: 136 字节 范围 时区等的影响 137 datetime 8 1000-9999 不受 138 timestamp 4 1970-2038 受 139 140 */ 141 CREATE TABLE tab_date( 142 t1 DATETIME, 143 t2 TIMESTAMP 144 ); 145 146 INSERT INTO tab_date VALUES(NOW(),NOW()); 147 SELECT * FROM tab_date; 148 149 SHOW VARIABLES LIKE 'time_zone'; 150 151 SET time_zone='+9:00';