总结关于数据库表的内容。
字段类型
①.整数类型
tinyInt:很小的整数,带符号的范围是-128到127。无符号的范围是0到255。
smallint:小的整数,带符号的范围是-32768到32767。无符号的范围是0到65535。
mediumint:中等大小的整数,带符号的范围是-8388608到8388607。无符号的范围是0到16777215。
int(integer):普通大小的整数,带符号的范围是-2147483648到2147483647。无符号的范围是0到4294967295。
②.小数类型
float(m,d):单精度浮点数,m表示数字长度,d表示小数位数,例如float(5,2)最大值999.99
double(m,d):双精度浮点数
decimal(m,d):压缩严格的定点数,用于在数据库中存储精确的数值。
③.日期类型
•year:YYYY 1901~2155
•time:HH:MM:SS -838:59:59~838:59:59
•date:YYYY-MM-DD 1000-01-01~9999-12-3
•datetime:YYYY-MM-DD HH:MM:SS 1000-01-01 00:00:00~ 9999-12-31 23:59:59 用于不是很准确的时间记录
•timestamp:YYYY-MM-DD HH:MM:SS 1970~01~01 00:00:01 UTC~2038-01-19 03:14:07UTC 用于准确的时间记录,如:登录时间记录,数据修改时间记录等。
④.文本、二进制类型
•CHAR(M):M为0~255之间的整数,长度不可变,身份证号,手机号等。
注:当你想要储存一个长度不足255的字符时,MySQL会用空格来填充剩下的字符。因此在读取数据时,char类型的数据要进行处理,把后面的空格去除。
•VARCHAR(M):M为0~65535之间的整数,长度可变,个人住址,其他信息等。
注:varchar类型在5.0.3以下的版本中的最大长度限制为255,而在5.0.3及以上的版本中,varchar数据类型的长度支持到了65535,也就是说可以存放65532个字节。
•TINYBLOB:允许长度0~255字节
•BLOB:允许长度0~65535字节,是数据库中用来存储二进制文件的字段类型。
•MEDIUMBLOB:允许长度0~167772150字节
•LONGBLOB:允许长度0~4294967295字节
•TINYTEXT:允许长度0~255字节
•TEXT:允许长度0~65535字节
注:与char和varchar不同的是,text不可以有默认值,其最大长度是2的16次方-1
•MEDIUMTEXT:允许长度0~167772150字节
•LONGTEXT:允许长度0~4294967295字节
•VARBINARY(M):允许长度0~M个字节的变长字节字符串
•BINARY(M):允许长度0~M个字节的定长字节字符串
操作表
•语法结构:
CREATE TABLE table_name(
column_name data_type [default default_value ] [column_constaint ] [comment 'comment_content'],
……
[table_constaint]
)[engine=engine_type] [default charset=charset_type];
table_name:表名;
column_name:字段名,字段名一般由字母和下划线构成,多个单词时,单词与单词之间使用下划线间隔;同一个表中字段名不允许重复;
data_type:顾名思义为字段类型;
default default_value:设置默认值;
column_constaint:设置字段级约束;
comment 'comment_content':设置注释;
table_constaint:设置表级约束;
engine:设置存储引擎
charset:设置编码,一般为uft8;
创建表的例子:
create table teacher(
id char(36) primary key comment '主键',
user_name varchar(12) comment '用户名’ ,
password char(32) comment '密码',
sex int(1) default 0 comment '性别’
)
约束:
•MySQL数据库通过约束(constraints)防止无效的数据进入到表中,以保护数据的实体完整性。
•约束分为字段级别约束和表级别约束:
1.字段级约束:只为单个字段添加约束;
2.表级约束:为一个或多个字段添加约束;
•常见约束:
1.primary key:指定主键。该约束强制字段或字段组合必须具有唯一性且每个字段不能为空。可以为字段级别约束,也可以为表级别约束
CREATE TABLE teacher(
id char(36) comment '主键’,
PRIMARY KEY(id)#表级约束
);
2.auto_incremenrt:设置表字段自增长,默认从1开始
CREATE TABLE teacher(
id int(11) PRIMARY KEY auto_increment comment '主键',
user_name varchar(12) comment '用户名',
password char(32) not null comment '密码'
);
测试代码(创建表之后再使用测试代码):
insert into teacher (user_name,password) values ('1','1');
insert into teacher (user_name,password) values ('2','2');
insert into teacher (user_name,password) values ('3','3');
insert into teacher (user_name,password) values ('4','4');
数据库结果:
这表明了 auto_increment的字段即使不输入也会跟随数据的插入而依次增长。但是不能在char与varchar中使用
3.not null:指定字段不能为空,只能定义为字段级约束;
CREATE TABLE teacher(
id char(36) PRIMARY KEY comment '主键’,
user_name varchar(12) comment '用户名',
password char(32) not null comment '密码’
);
4.unique:指定字段的值(或字段组合的值)对于表中所有的行必须是唯一的。对于无非空约束的字段,唯一键约束允许输入空值,且包含空值的行可以有多个。可以为字段级别约束,也可以为表级别约束,表级约束时可以定义复合唯一键。
CREATE TABLE teacher(
id char(36) PRIMARY KEY comment '主键’,
user_name varchar(12) unique comment '用户名',
password char(32) not null comment '密码’
);
或
CREATE TABLE teacher(
id char(36) PRIMARY KEY comment '主键’,
user_name varchar(12) comment '用户名',
password char(32) not null comment '密码’,
unique key(user_name)
);
unique字段的含义即为在改表中这行数据的这个字段必须是独一无二的,若插入一条新的数据其中标识unique的字段重复则该条数据无法插入,但是有多条数据中的该字段为空是允许的。
5.foreign key:指定一个字段或字段组合作为一个外键(即外来的主键或唯一键),该外键和另一个表的主键或唯一键(MySQL不支持,Oracle支持)建立起一个关系,只能定义为表级约束,例子:
操作表
1.添加字段
alter table table_name
add column_name data_type [default default_value] [column_constaint] [after 字段名] [comment 'comment_content’];
•例子:
alter table user_info
add sex int(1) default 0 after password;#向user_info表添加新字段sex,该字段在password之后。
2.修改字段:
alter table table_name
modify column_name data_type [default default_value] ;
•例子:
ALTER TABLE user_info
MODIFY user_name varchar(15);
•注意:字段的修改包括修改数据类型(只有对应列为空指才可以修改)、大小和默认值(默认值的修改只会影响后来插入表的数据,对之前的数据不会产生影响);而不能修改字段约束、字段先后顺序和注释。
3.删除字段:
alter table table_name
drop column_name
•例子:
alter table user_info
drop sex;
•注意:
1.一次只能删除一个字段;
2.一个表至少要保留一个字段;
3.如果所删列(如user_info表中id列)是另一个表的外键(address表user_info_id)则该列(user_info表中id列)无法删除。
4.重命名
语法结构:
rename table 旧名字 to 新名字
5.截断表和删除表
截断表可以终止未提交的数据的提交并且删除表中的数据
①截断表
语法:
truncate table 表名
•注意:
1.截断表后,表中数据也一并被删除;
drop不仅用于删除表,表中保存的数据也一并被删除;
②删除表
•语法结构:
drop table 表名