003-mysql 数据类型

mysql 数据类型

位:bit,比特位,一个二进制数字0或1就是一个位。
字节:Byte(简记B),1byte=8bit,1byte就是1B。
 
》ASCII码:ASCII码字符,共128个字符,任何一个字符占 1个字节。
》Unicode:ASCII字符集的扩展集,共65536个字符,任何一个字符都占 2个字节。
》GBK:数字、英文字母占 1个字节,汉字占 2个字节
》UTF-8:数字、英文字符占 1个字节,一个中文字符(含繁体、中文标点)等于 3个字节。

1、Numeric Types(数值类型)

数值类型:默认为有符号(Signed)数值。

1.1 Integer Types - 整型

整型:tinyint,smallint,mediumint,int,bigint

Type Storage (Bytes) Minimum Value Signed Minimum Value Unsigned Maximum Value Signed Maximum Value Unsigned
tinyint 1 -128 0 127 255
smallint 2 -32768 0 32767 65535
mediumint 3 -8388608 0 8388607 16777215
int 4 -2147483648 0 2147483647 4294967295
bigint 8 -263 0 263-1 264-1
> 【注意】 > 1)定义字段 int(n) 时,如果将该字段定义为 zerofill,则无需定义 n,否则定义了也等于没有定义,字段取值范围仍然是 int 类型允许的取值范围。其他整型字段亦同。 > 2)存储数据时,如果存储值大于了字段允许的最大值,则存储时将会存储最大值在数据库里(宽松模式下--sql_model)。

1.2 Floating-Point Types(浮点型)

浮点型:float,double,decimal
float/double/decimal(m,n):一般来说,m 表示总长度(不包括小数点),n 是小数位数。
【注意】
decimal:存储精确的小数。即不会进行舍五入。
精确数值类型:整型(Integer)、decimal。

2、String Types(字符串类型)

字符串类型:char、varchar、enum、set、blob、text、binary、varbinary

2.1 char 类型

char(n):n 是允许字符的长度,默认为 1,最大 255。n 为 0 ~255 之间的整数。待续…

2.2 varchar 类型

varchar(n):n 是允许字符的长度,必须显示指定,最大 21844。n 为 0~65535 之间的整数。待续…
 
char 与 varchar 比较:

        <th scope="col">Type</th>
        <th scope="col">写法</th>
        <th scope="col">M 的意思</th>
        <th scope="col">特点</th>
        <th scope="col">空间耗费</th>
        <th scope="col">效率</th>
      </tr></thead><tbody><tr>
        <td scope="row"><code class="literal">char</code></td>
        <td>char(M)</td>
        <td><code class="literal">最大字符数,可以省略,默认为 1</code></td>
        <td><code class="literal">固定长度的字符</code></td>
        <td><code class="literal">比较耗费</code></td>
        <td><code class="literal">高</code></td>
      </tr><tr>
        <td scope="row"><code class="literal">varchar</code></td>
        <td>varchar(M)</td>
        <td><code class="literal">最大字符数,不可以省略</code></td>
        <td><code class="literal">可变长度的字符</code></td>
        <td><code class="literal">比较节省</code></td>
        <td><code class="literal">低</code></td>

2.3 Enum 类型

Enum 类型又称枚举类型,要求插入的值必须属于列表中指定值之一。
插入时不区分大小写。
 
根据成员个数不同,存储所占的字节也不同:

<th scope="col">成员数</th>
<th scope="col">字节数</th>
1~255 1 255~65535 2 > 最多需要 65535 个成员。 ``` create table tab( c1 ENUM('a','b','c') );

insert into tab values(‘a’);
insert into tab values(‘b’);
insert into tab values(‘c’);
insert into tab values(‘A’);

以上均可以插入,插入后 A 变成了 a。

### 2.4 Set 类型
> Set 类型和 Enum 类型类似,里面可以保存 0~64个成员。
> Set 类型一次可以选取多个成员,而 Enum 只能选取一个成员。
> &nbsp;
> 根据成员个数不同,存储所占的字节也不同:
> <table><colgroup><col width="50%"><col width="50%"></colgroup><thead><tr>
	<th scope="col">成员数</th>
	<th scope="col">字节数</th>
  </tr></thead><tbody><tr>
	<td scope="row"><code class="literal">1~8</code></td>
	<td>1</td>
  </tr><tr>
	<td scope="row"><code class="literal">9~16</code></td>
	<td>2</td>
  </tr><tr>	
	<td scope="row"><code class="literal">17~24</code></td>
	<td>3</td>		
  </tr><tr>	
	<td scope="row"><code class="literal">25~32</code></td>
	<td>4</td>		
  </tr><tr>	
	<td scope="row"><code class="literal">33~64</code></td>
	<td>8</td>			
</tr></tbody></table>

create table tab(
c1 SET(‘a’,‘b’,‘c’)
);

insert into tab values(‘a’);
insert into tab values(‘b’);
insert into tab values(‘A,B’);
insert into tab values(‘a,B,c’);

以上均可以插入,插入后大写都会变成小写。

## 3、日期类型
> timestamp 和实际时区有关,更能反映实际的日期,而 datetime 则只能反映出插入数据时的当地时区。
> timestamp 的属性受 Mysql 版本和 SQLMode 的影响很大。
> <table><colgroup><col width="25%"><col width="25%"><col width="25%"><col width="25%"></colgroup><thead><tr>
	<th scope="col">类型</th>
	<th scope="col">字节</th>
	<th scope="col">最小值</th>
	<th scope="col">最大值</th>
  </tr></thead><tbody><tr>
	<td scope="row"><code class="literal">date</code></td>
	<td>4</td>
	<td><code class="literal">1000-01-01</code></td>
	<td><code class="literal">9999-12-31</code></td>
  </tr><tr>
	<td scope="row"><code class="literal">datetime</code></td>
	<td>8</td>
	<td><code class="literal">1000-01-01 00:00:00</code></td>
	<td><code class="literal">9999-12-31 23:59:59</code></td>
  </tr><tr>
	<td scope="row"><code class="literal">timestamp</code></td>
	<td>4</td>
	<td><code class="literal">19700101080001</code></td>
	<td><code class="literal">2038年的某个时刻</code></td>
  </tr><tr>
	<td scope="row"><code class="literal">time</code></td>
	<td>3</td>
	<td><code class="literal">-838:59:59</code></td>
	<td><code class="literal">838:59:59</code></td>
   </tr><tr>
	<td scope="row"><code class="literal">year</code></td>
	<td>1</td>
	<td><code class="literal">1901</code></td>
	<td><code class="literal">2155</code></td>
</tr></tbody></table>

## 4、其他
略......






猜你喜欢

转载自blog.csdn.net/weixin_42725107/article/details/81437575
今日推荐