创建表的完整语法+整型数据类型

创建表的完整语法


#语法:
create table 表名(
字段名1 类型[(宽度) 约束条件],
字段名2 类型[(宽度) 约束条件],
字段名3 类型[(宽度) 约束条件]
);

#注意:
1. 在同一张表中,字段名不能相同
2. 宽度和约束条件可选,字段名和类型是必须要有的
3. 最后一个字段后不能加逗号!

# 补充:
# 1.宽度指的是对存储数据的限制
create table userinfo(name char);
insert into userinfo values('jason');
"""
这里的char 字符类型,在后面不加参数的时候,默认值是1 也就是只能存1位,当存入一个比较大的数据时,位数明显超过1 ,可能会出现下面这两种情况中的一种:
1.没有安全模式的数据库版本,能够存放数据但是只会存进去一个j,也就是只能存进去第一位
2.最新数据库版本直接报错提示无法存储:Data too long for column 'name' at row 1
"""

# 2.约束条件初识>>> null 与 nut null
create table t1(id int,name char not null);
insert into t1 values(1,'j');  # 正常存储
insert into t1 values(2,null);  # 报错

# 总结 类型与约束条件区别
# 类型:限制字段必须以什么样的数据类型存储
# 约束条件:约束条件是在类型之外添加一种额外的限制

# 字段类型限制的是存储数据的类型
# 约束条件是基于字段类型之上的附加的额外限制

基本数据类型

整型

整型默认带符号的,如果存贮 的值超出了这个范围,在严格模式下,会显示报错,说存储的数据超过范围,如果是非严格模式,大于最大值的数据会被最大值替代存储,小于最小值的数据会被最小值替代存储

**给整型设置宽度:

这是一个特例,唯独整型字段在设置宽度的时候,限制的不是存储宽度而是显示宽度

create table t6(id int(8));##如果存入的数字够8位,正常显示,如果不够8位,默认用空格填充

结论:

在创建整型字段的时候,不需要制定字段宽度(整型的显示宽度)

int 后面别加括号

  • 分类:TINYINT SMALLINT MEDIUMINT INT BIGINT

  • 作用:存储年龄,等级,id,各种号码等信息

类型存储范围:参考图片http://www.cnblogs.com/linhaifeng/articles/7233411.html

验证整型字段有无符号及范围

TINYINT :1个字节,默认有正负号-128--127

SMALLINT:2个字节

MEDIUMINT:4个字节

INT:4字节

BIGINT:8字节


create table t1(x tinyint);
insert into t1 values(128),(-129);

create table t2(x tinyint unsigned);
insert into t2 values(-1),(256);  

create table t3(x int unsigned);
insert into t3 values(4294967296);

疑问:类型后面的宽度能否改变字段存储的大小限制


create table t4(x int(8));
insert into t4 values(4294967296123);

# 显示时,不够8位用0填充,如果超出8位则正常显示
create table t5(x int(8) unsigned zerofill);
insert into t5 values(4294967296123);

# create table t6(id int(10) unsigned);
# create table t7(id int(11));

强调:对于整型来说,数据类型后的宽度并不是存储限制,而是显示限制,所以在创建表时,如果字段采用的是整型类型,完全无需指定显示宽度, 默认的显示宽度,足够显示完整当初存放的数据

原文地址:https://www.cnblogs.com/1832921tongjieducn/p/11067084.html