前言
本篇博客学习数据库的详细建表语句,数据库数据类型以及约束条件。
详细建表语句
在介绍建表语句之前需要了解一下存储引擎。
存储引擎
MySQL 支持的存储引擎有以下几种:

以后我们使用的就只有 InnoDB 引擎,可以看到默认情况下存储引擎就是 InnoDB,建立一个表的时候,可以看看在文件夹里发生了什么。
mysql> create table t1(id int, name char);建表成功后在文件夹里多了两个文件:
- t1.frm
- t1.ibd
frm是 frame 的缩写是表示该表的数据结构,而 ibd 表示 InnoDB data 表示存储的是 InnoDB 引擎的数据。
存储引擎就相当于一个用来存取数据的软件。
指定以某种存储引擎建表
create table t2(id int name char)engine=memory; 建表语句
创建表的完整语法,中括号里面的表示可选参数。
create table 表名( 字段1 数据类型[(宽度) 约束条件], 字段2 数据类型[(宽度) 约束条件], 字段3 数据类型[(宽度) 约束条件]);最后一个字段后面不能加逗号,否则会报错。
类型:使用限制字段必须以什么样的数据类型传值
约束条件:约束条件是在类型之外添加一种额外的限制。
注意
- 在同一张表中,字段名不能相同;
- 宽度和约束条件可选,字段名和类型是必须的;
- 最后一个字段后不加逗号。
数据类型
整型:int、tinyint、bigint等

整型默认是有符号的,可以通过约束条件改变(unsigned);
mysql> create table t3(x tinyint unsigned);可选参数里面的宽度只有整型表示的是显示宽度,其他的都表示存储限制。
mysql> create table t4(x int(8) unsigned zerofill);显示时不够八位的使用0填充,如果超过八位正常显示。
如果不指定限制宽度会有默认值:
mysql> create table t5(id int unsigned);
如果是有符号的整型,则会比无符号的多一位,因为要显示正负号。
mysql> create table t6(id int);
强调:对于整型来说,数据类型后的宽度并不是存储限制,而是显示限制。所以在创建表示,如果字段采用的是整型类型,完全无需指定显示宽度,默认的显示宽度,足够显示完整当初存放的数据。
浮点型:float、double、decimal等
float 4字节
double 8字节
decimal 不固定
mysql> create table t7(num float(m,d));m 表示总长度 d 表示小数部分长度
长度表示的是字符长度而不是数据存储范围。
各个类型的最大长度
float (255,30)
double (255,30)
decimal (65,30)
区别
float 与 double 的精度不同,都是不准确的小数,decimal 准确的小数不会丢失精度
具体使用哪种类型得需要使用场景判断
float 满足大部分使用场景,decimal 适合银行系统,科学研究。
括号中 m 和 d 的值,可以限制数据存储范围,与整型不同
重点:记住 m 和 d 的含义。
字符型
常用两种
char 定长字符串
varchar 可变长度字符串
注意:字符串中,长度指定的是数据的字符长度,与字节没有关系,在创建时 varchar 必须指定,char 有默认值。
<