数据库入门2
文章目录
数据类型
具体规则参考如下博客链接
https://www.cnblogs.com/pangguoming/p/7126512.html
字符
- char长度固定,不足使用空格填充,最多容纳2000个字符,查询速度快但浪费空间
- varchar变长字符串,最多容纳4000个字符,查询稍慢,但节省空间
- 大文本text
utf8编码计算,一个汉字占3个字节
数字
- tinyint, int 整数类型
- float, double小数类型
- numberic(5,2), decimal(5,2) 表示小数,表示总共5位,其中可以有两位小数
- decimal,numeric表示精确的整数数字
日期
- date 包含年月日
- time 时分秒
- datetime 包含年月日时分秒
- timestamp 时间戳,不是日期,从1970/1/1道指定日期的毫秒数
图片
- blob
字段约束
主键约束
如果为一个列添加了主键约束,那么这个列就是主键,主键的特点是唯一且不能为空
通常情况下,每张表都会有主键
ex:将id设置为主键
主键自增策略
初始值为1
primary key auto_increment
主键约束自动递增,id不能重复,不能是null,自动递增
非空约束
字段的值不能为空
not null
唯一约束
字段的值不能重复
unique
外键约束
foreign key
子表的id来源于主表的id
想要删除主表的记录,必须先删除关联的子表
默认约束
default
检查约束
check
常用函数
lower
数据转小写
upper
数据转大写
length
数据的长度
一个字母或者数字占一个字节,一个汉字占3个字节
substr
截取字串
substr(user_name,1,3) 取user_name字段所有值的第一到第三位,含头含尾
concat
数据拼接
replace
数据替换
ifnull
如果空
null不参与运算,需要特殊处理
round&cell&floor
对小数的相关处理
round 四舍五入
ceil向上取整
floor向下取整
uuid
now
对日期的操作
year& month& day& hour& minute&second
转义符号
反斜杠 \
条件查询
distinct
where
查询顺序
from where select
like
模糊查询 %占位符
“a%” 以a开头 ——最高效
“%a%”含a
"%a"以a结尾
null
between and
limit
顺序 from where select limit
order by
默认升序
order by 字段名 asc
order by 字段名 desc
聚合函数
根据一列统计结果
count
SELECT COUNT(*) FROM emp;#低效
SELECT COUNT(1) FROM emp;#高效
SELECT COUNT(字段名) FROM emp;#低效
如果按照字段名统计个数,如果字段值是null将不做统计,算出啦总数不准确
max / min
sum
avg
分组
使用不同的聚合函数时,可能会产生行数不同的情况,此时要分组
GROUP BY
按照指定的字段分组
用于对查询的结果进行分组统计
having子句类似于where过滤返回的结果
如果查询时出现了聚合列和非聚合列,通常按照非聚合列分组
having
分组后需要过滤,使用having
分组前可以使用where,有的情况下相对高效,
但是where里不可以出现聚合函数