MySQL基础知识备忘录

作者: 乘风御上者 分类: MySQL 发布时间: 2019-11-03 20:00
字符串类型:
char 最长255个字符
varchar 最长需根据字符集编码来计算(utf8: (65535-3)/3 - 3)
而且表中所有字段的总长度也不能超过 65535
text 则不在上述计算之中
日期类型:
date 只保存年月日
datetime 保存年月日时分秒
timestamp 与 datetime 类似。
需要注意: timestamp 会在插入或更新字段时未指定此字段的值则自动更新
枚举类型:
set('多选一', '多选二', '多选三') 此字段值只能在这几个选项中一个或多个 '多选一,多选二'。 可以使用数字代替多选值:对应 1\2\4\8…
enum('单选一', '单选二', '单选三') 此字段值只能是其中一个。 赋值时可以使用数字代替单选值,比如 1 代表单选一
修改表:
rename table 表名 to 新表名
alter table 表名 character set utf8: 修改表字符集
alter table 表名 add/modify(change)/drop/rename 字段名: 添加、修改、删除字段的通用格式
add 添加字段后可指定 first或 after 字段:表示哪个字段之后添加
add 添加索引
modify 修改字段的属性
change 修改字段的名字
查看表结构:
show create table 表名
聚合函数: select 聚合 from 表 条件…
聚合函数的参数可以是表达式
count() 与 count(字段) 区别: 使用会统计所有行,包括null。 使用字段名则若是统计的字段中有null就不会统计中。这个特性可以配合if使用更高级
count(distinct 字段): 去重统计
sum(字段): 列的总和。
sum(字段1)+sum(字段2) 与 sum(字段1 + 字段2): 后者字段中有null时则会不正确
round(参一, 参二): 参二指定参一的小数位数
ifnull(参一, 参二): 参一为null时 返回参二,否则返回参一
avg(字段): 平均数
max()/min(): 最大值/最小值
group by: select 聚合操作 from 表 group by 字段[字段2...] having
    分组操作是第一步,然后对每一组进行聚合操作,having 相当与 where 条件语句
日期函数: select current_date() from dual: dual是个亚元表
current_date(): 当前年月日
current_time(): 当前时分秒
current_timestamp(): 当前年月日 时分秒
now(): 同上timestamp
date(参一): 返回参数的年月日部分,参数可以是字段名
date_add(参一, interval 数 单位): 在参一年月日基础上加上数。 例: date_add('2011-11-11', interval 5 day) 返回 2011-11-16。 日期单位很多
date_sub(): 同上 做减法
datediff(参一, 参二): 两个参数的差(天数)
year(参一)/month(参一)/day(参一): 返回年号/月号/日号
from_unixtime(时间戳, 日期格式): 转换格式。 日期格式:'%Y-%m-%d %H:%i:%s'
unix_timestamp(): 时间戳
字符串函数:
concat(): 连接字符串
left()/right(): 从左边取出给定长度字符
ucase()/lcase(): 转换大小写
length(): 统计长度,按照字符长度
replace()
substring()
find_in_set('要找字符', '字段名'): 在指定的字段名中精准的查账字符串,字段可多选逗号隔开
数学函数:
abs()
bin()
ceiling()
floor()
hex()
rand()
mod()
format()
流程控制函数: select 流程控制 from …
if(参一,参二,参三): 若参一为真则返回参二,否则返回参三
(case
when 条件1 then 代码1
when 条件2 then 代码2
when 条件3 then 代码3
else 否则代码
end)
其他函数:
user(): 显示当前用户
md5()/password()
database(): 正在操作的数据库
条件查询:where
between 1 and 2: 在1到2之间
字段 like 'S%': S开头的字段
'__s%': 下划线表示占位,第三个字母是s的字段

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!

发表回复