数据类型
整型
1、int 大整型(4个字节)
取值范围 :0 ~ (2**32 - 1) 42亿多
2、tinyint 微小整型(1个字节)
(1)、有符号(signed默认) : -128~127
(2)、无符号(unsigned) : 0~255
age tinyint unsigned,
3、smallint 小整型(2个字节)
4、bigint 极大整型(8个字节)
浮点型
1、float(4个字节,最多显示7个有效位)
字段名 float(m,n) m->总位数 n->小数位位数
float(5,2) 取值范围:-999.99 ~ 999.99
## m的值最大为7
2、double
字段名 double(m,n)
3、decimal(m,n)
1、存储空间(整数部分、小数部分分开存储)
规则:将9的倍数包装成4个字节
余数 字节
0 0
1-2 1
3-4 2
5-6 3
7-8 4
例:decimal(19,9)
整数部分:10/9=1余1 4字节+1字节=5
小数部分:9/9=1余0 4字节+0字节=4
总共 :9个字节
3、练习
1、新建库studb2,并在库中创建表stuinfo,要求:
id : 大整型
name : 字符类型,宽度为15
age : 微小整型,不能为负数
height : 浮点型,小数位为2位(float)
money : 浮点型,小数位为4位(decimal)
create database studb2;
use studb2;
create table stuinfo(
id int,
name char(15),
age tinyint unsigned,
height float(5,2),
money decimal(20,4));
2、查看表结构
desc stuinfo;
3、查看表字符集和存储引擎
show create table stuinfo;
4、在表中插入1条完整记录
insert into stuinfo values
(1,"小昭",26,165,8888.88);
5、查询所有表记录
select * from stuinfo;
6、在表中id、name和money三个字段插入2条记录
insert into stuinfo(id,name,money) values
(2,"赵敏",200000),(3,"周芷若",18000.23);
7、查询所有学生的 编号、姓名和money
select id,name,money from stuinfo;
字符类型
1、char :定长
char(宽度) 宽度取值范围:1 - 255
2、varchar :变长
varchar(宽度) 宽度取值范围 :1 - 65535
3、text / longtext(4G) /blob / longblob
4、char 和 varchar的特点
(1)、char :浪费存储空间,性能高
(2)、varchar :节省存储空间,性能低
5、字符类型的宽度和数值类型宽度的区别
(1)、数值类型宽度为显示宽度,只用于select查询时显示,和占用存储无关,可用zerofill查看效果
(2)、字符类型的宽度超过后无法存储
枚举类型
1、单选enum
sex enum(值1,值2,...)
2、多选set
likes set(值1,值2,...)
## 插入记录时 "study,python,mysql"
日期时间类型
1、date :"YYYY-MM-DD"
2、datetime :"YYYY-MM-DD HH:MM:SS"
3、timestamp :"YYYY-MM-DD HH:MM:SS"
4、time :"HH:MM:SS"
5、注意
datetime :不给值默认返回 NULL
timestamp :不给值默认返回系统当前时间
6、示例
1、创建一张表,用户充值表
create table t2(
id int,
username varchar(20),
password varchar(20),
money int,
birthday date,
cztime timestamp
)character set utf8;
2、插入记录
insert into t2 values
(1,"用户1","123456",500,"1995-05-20","2018-08-30 09:40:30");
insert into t2 values
(2,"用户2","123456",600,"1992-02-20",now());
日期时间函数
1、now() 返回服务器当前时间
2、curdate() 当前日期
3、date("1999-09-09 09:09:09") 提取 年月日
4、time("...") 提取 时分秒
5、year("...") 提取 年
6、练习
1、查找2018年8月30日用户充值的详细信息
select * from t2 where date(cztime)="2018-08-30";
2、查找2018年8月份所有用户充值的信息
select * from t2 where
date(cztime)>="2018-07-01" and date(cztime)<="2018-07-31";
3、查找2018年08月30日 08:00-10:00之间用户充值信息
select * from t2 where
cztime>="2018-08-30 08:00:00" and cztime<="2018-08-30 10:00:00";
日期时间运算
1、语法格式
select * from 表名
where 字段名 运算符(now()-interval 时间间隔单位);
时间间隔单位:
2 day | 3 hour | 1 minute | 2 year | 3 month
2、示例
1、查询1天以内的充值记录
select * from t2 where
cztime>=(now()-interval 1 day);
2、查询1年以前的充值记录
select * from t2 where
cztime<(now()-interval 1 year);
3、查询1天以前、3天以内的充值记录
select * from t2 where
cztime>=(now()-interval 3 day) and
cztime<=(now()-interval 1 day);
想要看更多的课程请微信关注SkrEric的编程课堂