show tables
create table 表名 (
列名 类型 约束条件
...
)
tinyint(1B)
,smallint(2B)
,mediumint(3B)
, int(4B)
,bigint(8B)
表示的范围,若是有符号整数,则是-pow(2,字节数/2)
— pow(2,字节数/2) - 1
,若为无符号整数,则其表示范围为 0
—pow(2,字节数)-1
。mysql默认为有符号类型。
float(M,D) (4B)
,double(M,D) (8B)
,DCM(M,D) ((M+2)B)
M为总位数,D为小数点该保留几位,插入数据时,超出之后则会四舍五入,小于D的位数的话则会补0. 若省略(M,d), float,double会根据插入的数据自动调整,而dcm则默认M为10 D为0、
char(M)
varchar(M)
M,表示最多字符数,char,varchar的区别是不可变和可变的字符长度。所以varchar较节省空间,但是char性能会更好,更好的原因在于固定长度的空间,地址查找会更快。
datetime
,timestamp
,datetime 8个字节 精度达到年月日时分秒,timestamp 4个字节,会随时区不同而不同。除此之外还有只有日期的年月日的date
,只有时间时分秒的time
,只有年份的year
。
not null , nullable
非空,可为空约束,default
默认值约束distinct
唯一约束primary key
主键约束foreign key
外键约束check
检查约束,mysql 不支持
foreign key
只支持表级约束, 除了 default
和 not null
都可作为表级约束。列级约束添加时与上边创建语法一直,表级约束添加语法如下: [constraint 约束名] 约束名(列名)
。
语法1:
alter table 表名 change column 列名 新列名 新类型 新约束
语法2:
alter table 表名 modify 列名 新类型 新约束
alter table 表名 add column 列名 类型 约束条件
alter table 表名 drom column 列名
重命名:
alter table 表名 rename to 新表名
drop table 表名