构建数据表
一、创建表:
create table 表名(
字段名 数据类型 字段约束,
字段名 数据类型 字段约束,
...
字段名 数据类型 字段约束
);
二、数据类型:
整型:
tinyint 1个字节 (-128,127)
smallint 2个字节 (-32768-32767) 3万多
mediumint 3个字节 (-8388608-8388607) 800多万
int 4个字节 (-2147483648-2147483647) 21个亿
bigint 8个字节 很大的整数
浮点型:
float 4个字节
注:
单精度IEEE754由
一位尾符
八位阶码
二十三为尾数
组成
要使表示的数最大,尾符一定为0表正数,阶码一定最大,但八位全1不符合规范,最大是11111110表示254,减去偏移量127,得127
尾数23位都取1,小数点之前也可以保存一个1,因此是20+2-1+…+-23=2-2-23
又阶码最大为127,故最大正数为2127 * (2-2-23),得2128-2104
double 8个字节
decimal 对应 decimal(m:d) 依赖于M和D的值 如:decimal(16,2) 表示的数最多只能16位,整数部分最多是 16-2=14位,小数两位,多余的小数四舍五入
字符串型:
char 0-255字节 定长字符串
varchar 0-65535字节 变长字符串
tinyblob 0-255字节 不超过255个字符的二进制字符串
tinytext 0-255字节 短文本字符串
blob 0-65535字节 二进制形式的长文本数据
text 0-65535字节 长文本数据
mediumblob 0-16777215字节 二进制形式的 中等长度文本数据
mediumtext 0-16777215字节 中等长度文本数据
longblob 0-4294967295字节 二进制形式的极大文本数据
longtext 0-4294967295字节 极大文本数据
枚举型:
enum:从给定的集合中选择一个值
定义格式 :enum('魏国','蜀国','吴国'...)
set :从给定的集合中选择一个或者多个值
定义格式:set('唱歌','跳舞','吟诗'....)
时间日期型:
date 3个字节 yyyy-mm-dd
time 3个字节 hh:mm:ss
year 1个字节 年
datetime: 8个字节 yyyy-mm-dd hh:mm:ss
timtstamp:4个字节 yyyy-mm-dd hh:mm:ss
时间日期函数:
now() 返回服务器当前日期,格式对应datetime类型。
curdate()返回当前日期,格式对应date类型。
curtime() 返回当前时间,格式对应time类型。
时间运算:
语法格式 select * from 表名 where 字段名 运算符(时间-interval 时间间隔单位);
时间间隔单位: 2 hour | 1 minute | 2 second | 2 year | 3 month | 1 day
e.g.:查找注册时间在一周以内的记录
select * from marathon where registeration_time > (now()-interval 7 day);
三、字段约束
如果你想设置数字为无符号则加上unsigned
如果你不想字段为null,可以设置字段属性为 not null,在操作数据库时如果输入该字段的数据为Null,就会报错。
default 表示设置一个字段的默认值
auto_increment定义列为自增列
primary key 关键字用于定义列为主键。主键的值不能重复,且不能为空。
如:创建班级表
create table cls(id int primary key auto_increment,
name varchar(32) not null,
age tinyint unsigned not null,
sex enum('w','m') ,
score float default 0.0
);
四、数据表操作
查看数据表:show tables;
查看已有表的字符集:show create table 表名;
查看表结构 :desc 表名;
删除表:drop table 表名;
五、修改表结构
添加一个字段
alter table 表名 add 字段名 数据类型; :默认位置放到最后面
alter table 表名 add 字段名 数据类型 first; : 放到最前面字段
alter table 表名 add 字段名 数据类型 after 字段名; :放到 某个字段的后面
删除一个字段
alter table 表名 drop 字段
修改子段类型
alter table 表名 modify 字段 新字段类型;
修改字段名称
alter table 表名 change 旧字段名 新字段名 新数据类型;
修改表名
alter table 表名 rename 新表名;
浙公网安备 33010602011771号