Mysql一些数据类型及字段及一些用法详解
易忘的数据类型
文本类
Text
最多存储65535个字节
时间类
Date(日期):
显示格式 YYYY-MM-DD 显示范围 1601-01-01 到 9999-01-01 应用场景
只需要精确到天时,如生日等
Time(时间)
显示格式 HH:mm:ss 显示范围 00:00:00 到 23:59:59 应用场景 只需要每天的时间
TIMESTAMP
4个字节储,TIMESTAMP格式也是’YYYY-MM-DD HH:MM:SS’这样的,与DATETIME不同的地方是,它的年份取值范围是1970-2037
DATETIME
8个字节储存;实际格式储存;与时区无关;datetime 以’YYYY- MM-DD
HH:MM:SS’格式检索和显示DATETIME值。支持的范围为’1000-01-01 00:00:00’到’9999-12-31 23:59:59’
INT
在只显示年月日的情况下,如果数据库中存入的是int类型的时间,那么我们可以直接使用Java来转换了,非常的方便
数值型
Numeric
Numeric(10,2) 指字段是数字型,长度为10 小数为两位的
INT
能存储四个字节的整型
常用语法
注释
comment
在MySQL数据库中, 字段或列的注释是用属性comment来添加。
举个例子:
`state` int(11) DEFAULT NULL COMMENT '0表示草稿箱,1表示已发表,2表示已删除'
索引及约束
key
看这位哥的 添加链接描述
UNIQUE KEY
看这位 添加链接描述
IN的用法
在指定范围内查找需要的元素
select *from user where id in(value1,value2,.....);
limit的用法
SELECT * FROM table LIMIT 5,10; // 检索记录行 6-15
//为了检索从某一个偏移量到记录集的结束所有的记录行,可以指定第二个参数为 -1:
SELECT * FROM table LIMIT 95,-1; // 检索记录行 96-last.
//如果只给定一个参数,它表示返回最大的记录行数目:
SELECT * FROM table LIMIT 5; //检索前 5 个记录行
exist用法
看这位哥的 exist用法
union /union all用法
合并两次查询的结果,例如
A表:
±-----±-----+
| id | num |
±-----±-----+
| a | 5 |
| b | 10 |
| c | 15 |
| d | 10 |
±-----±-----+
B表:
±-----±-----+
| id | num |
±-----±-----+
| b | 5 |
| c | 15 |
| d | 20 |
| e | 99 |
±-----±-----+
mysql> # 合并 ,注意all的作用
mysql> select * from ta
-> union all
-> select * from tb;
±-----±-----+
| id | num |
±-----±-----+
| a | 5 |
| b | 10 |
| c | 15 |
| d | 10 |
| b | 5 |
| c | 15 |
| d | 20 |
| e | 99 |
±-----±-----+
可以看出union all会合并出所有结果,使用union会自动过滤掉重复的结果
group by用法
根据某个特征进行分组,相当于将一块大数据分成n个小块,要配合聚合函数(sum,max,min等)使用,计算出每小块区域的值,再搭配having筛选掉不需要的块的数据
select cat_id,sum(goods_number*shop_price) as k from ecs_goods group by cat_id
having k>20000
like模糊查询用法
可以使用%代替任意未知数量字符,举例子
SELECT title FROM article WHERE title LIKE '%人生%';
查询结果
title |
---|
人生感悟 |
人生感悟2222666666666 |
配合mybatis进行关键词的查找
可用于搜索功能,配合concat()连接字符串函数使用,举例
<select id="getArticleCountByState" resultType="int">
SELECT count(*) FROM article
<where>
<if test="state!=-1">
AND state=#{state}
</if>
<if test="uid!=null">
AND uid=#{uid}
</if>
<if test="keywords!=null">
AND title LIKE concat('%',#{keywords},'%')
</if>
</where>
</select>