- 常用数据类型
数值类型、字符类型、枚举类型、日期时间类型 - 数值类型
1、整型(均默认signed,按需要手动unsigned)
1、int 大整型(4个字节)
取值范围:-2**31 ~ 2**31 - 1(42亿多)
2、tinyint 微小整型(1个字节)
1、有符号(signed 默认):-128 ~ 127
eg:money tinyint
2、无符号(unsigned): 0 ~ 255
eg:age tinyint unsigned
3、smallint 小整型(2个字节)
4、bigint 极大整型(8个字节)
2、浮点型
1、float(4个字节,最多显示7个有效位(整数加小数))
1、用法:
字段名 float(m,n) m->总位数 n->小数位位数
float(7,2)取值范围:-99999.99~99999.99
2、decimal(最多显示28个有效位)
1、用法:
字段名 decimal(m,n) m->总位数 n->小数位位数
2、存储空间(整数、小数分开存储)
规则:将9的倍数包装成4个字节
余数 字节
0 0
1-2 1
3-4 2
5-6 3
7-9 4
示例:decimal(19,9)
整数部分:10/9=商1余1 4+1 = 5个字节
小数部分:9/9 =商1余0 4+0 = 4个字节
占:9个字节
注意:
1、浮点型插入整数时会自动补全小数位位数
2、小数位多余指定的位数,会对下一位进行四舍五入
练习:
create database studb2;
use studb2
create table stuinfo(
id int,
name char(20),
age tinyint unsigned,
height float(5,2),
money decimal(12,2)
) character set utf8;
desc stuinfo;
show create table stuinfo;
insert into stuinfo values(0,"张飞",23,182.66,80000);
select * from stuinfo;
insert into stuinfo(id,name) values(1,"刘备"),(2,"关羽");
select id,name from stuinfo;
- 字符类型
1、char(定长)
1、宽度取值范围:1 ~ 255 (默认为1)
2、varchar(变长)
1、取值范围:1 ~ 65535
3、text / longtext(4G) / blob / longblob(4G)
4、char和varchar的特点
1、char:浪费存储空间,性能高
2、varchar:节省存储空间,性能低
注意:
char可以不指定宽度,默认为1,eg:sex char
varchar必须指定宽度,否则不通过。eg:sex varchar(5)
练习:
1、MySQL中数据类型有:数值类型 字符类型 枚举类型 日期时间类型
2、关系型数据库中的核心内容是 _关系_ 即 _二维表_
3、简述客户端把数据存储到数据库服务器上的过程
4、char和varchar的区别,各自的特点
5、操作
1、创建一个学校的库 school
2、在库中创建表students用来存储学生信息:
id 大整数,姓名,年龄(不能为负),性别,成绩(浮点)
3、查看students的表结构
4、在表中随意插入3条记录
5、在表中的姓名、成绩两个字段插入3条记录
6、查看所有学生的姓名和成绩
7、查看成绩及格(>60分)的学生的姓名和成绩
- 字符类型宽度和数值类型宽度的区别
1、数值类型宽度为显示宽度,只用于select查询显示,和占用存储
无关(均是4个字节),可用zerofill(0填充)查看效果
2、字符类型的宽度超过之后则无法存储
- 枚举类型
1、单选(enum):字段名 enum(值1,值2,.....)
2、多选(set) : 字段名 set(值1,值2,...)
##插入记录时: "F,Study,Python"
eg:
create table t1(
id int(3) zerofill,
name varchar(15),
sex enum("M","F","Secret"),
likes set("F","M","Study","Python")
);
insert into t1(likes) values("Python,F,M")
insert into t1(sex) values("F")
- 日期时间类型
1、date:"YYYY-MM-DD"
2、time:"HH:MM:SS"
3、datetime:"YYYY-MM-DD HH:MM:SS"
4、timestamp:"YYYY-MM-DD HH:MM:SS"
5、注意:
datetime:不给值默认返回NULL值
timestamp:不给值默认返回系统当前时间
eg:
create table t1(
id int,
name varchar(15),
birthday date,
money int,
time datetime
);
- 日期时间函数
1、now() 返回服务器当前时间
2、curdate() 返回当前日期
3、curtime() 返回当前时间
4、year(date) 返回指定时间的年份
5、date(date) 返回指定时间的日期
6、time(date) 返回指定日期的时间
eg:
select now();
select curdate();
select curtime(); 返回当前时分秒
select year("2018-9-20 00:00:00") select year(now());
select date(now());
#查找2018年7月2日用户充值了多少钱
select name,money,time from date(time) = "2018-07-02"
或select name,money,time from date(time) = 20180702
- 日期时间运算
1、语法形式
select * from 表名
where 字段名 运算符 (时间 - interval 时间间隔单位);
时间间隔单位:
1 day | 2 hour | 1 minute | 2 year | 3 month
2、练习
1、查询一天以内的记录
select * from t1
where time > (now() - interval 1 day);