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

 

版权声明:本文为deyo原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/deyo/p/13297144.html