前期准备
一.数据类型分类
二.数值类型
2.1创建字段(以tinyint为例):
2.2插入数据
1.tinyint类型
插入的数值超过范围的话,直接会报错(有符号-128 <-> 127)
超出数据范围,mysql直接拦截你
2.bit类型
多出来的就插不进去了
hex(online):把他的数变成十六进制的
该成10个bit位(原来插不进来的,现在可以插入进来了)
位图结构的位数最多是64位
3.float类型
float(4,2):表示显示长度为4位,小数位为2
要求精度部分必须是两位(整数部分: 可以不足,但不能超过 小数部分: 不足补0,超过就四舍五入)
在合法范围之内,是可以进行四舍五入的
4.float unsigned类型
负数就插不进来了(取值范围 -> [0,99.99])
将float(4,2) -> 改成float
可以看到数据的存储还是有一定的精度的损失的(目前来看小数点前6位是能存储下来的)
5.decimal类型
前面插入一些小数是一样的
插入一样的数据,但是float有精度损失,decimal是存啥就是啥
6.char字符串类型
和c/c++中不同,mysql的字符,一个字符代表的就仅仅是一个字符
7.varchar变长字符串类型
varchar最多是65535个字节,字符最多21844个(一个表的其他的值也会影响varcahr的最大开辟的空间)
char是你无论存储多少个字符,我都给你开这么多个字符
varchar是你存储多少个我就给你多少个字符
其他文本类型:
8.char和varchar对比
9.日期和时间类型
timestamp时间戳:会自动变化
-- 将 t3 字段的默认值修改为当前时间
ALTER TABLE t9
MODIFY COLUMN t3 TIMESTAMP DEFAULT CURRENT_TIMESTAMP;
将以上的这段输入
这样就自动将我什么时候插入的时间存储下来了
如果只有一个值,直接使用update t11 set t1 = "1999-01-01";这样时间戳t3也会发生改变
如果是默认生成就是不会改变的
这个是随着改变不断更新的
更新和删除语句:
Test:
datetime:是用来记录一些有意义的,固定的时间的(不会再做更新的)
10.enum和set类型
enum:多选一,set:支持多选多
enum类型可以用1,2,3(从1开始,到n)来进行代替,分别对应你初始化的类型
NULL和空白("")是不一样的
NULL是没有爱好 ""表示列表中没有喜欢的
set的数字要转成二进制的1/0
(enum中,一个一个的是下标,set中,一个一个的是位图)
enum和set的查找
这样只能筛选爱好只有代码的(不方便)
select是可以指向表达式/函数等的
find_in_set("dst","src");(一次只能查找一个)
判断dst是否在drc中,不在就是0,在就是下标
可以用and将两个函数的结果连接起来