MySQL基本语句模板

DDL数据定义语言

建表语句
DROP TABLE fileinform;
CREATE TABLE `fileinform`(
  `fid` int(8) NOT NULL AUTO_INCREMENT COMMENT '文件id',
  `fname` varchar(300) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '文件名称',
  `ftype` varchar(300) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '文件类型',
  `fpath` varchar(300) CHARACTER SET utf8 COLLATE utf8_general_ci NOt NULL DEFAULT '' COMMENT '文件路径',
  `fMD5` varchar(300) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NUll DEFAULT '' COMMENT '文件MD5(hash)',
  `fsize` int(8) NOT NULL DEFAULT 0 COMMENT '文件大小(字节)',
  `upsize` int(8) NOT NULL DEFAULT 0 COMMENT '已经上传大小(字节)',
  `state` tinyint(1) NOT NULL DEFAULT 0 COMMENT '状态标记位(0代表未上传完成,1代表上传成功)',
  `uploadTime` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '上传时间',
  `notice` longtext COMMENT '注意事项',
  PRIMARY KEY (`fid`) USING BTREE,
  UNIQUE KEY `id_find_file` (`ftype`,`fsize`,`fname`) USING BTREE,
  KEY `fMD5` (`fMD5`) USING BTREE,
)ENGINE = InnoDB AUTO_INCREMENT = 10 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '文件信息表' ROW_FORMAT = Dynamic;

其中COLLATE代表排序规则,详情参照这里

ALTER
-- 修改表名
ALTER  TABLE  旧表名  RENAME  AS  新表名
-- 增加表的字段
ALTER  TABLE 表名  ADD  字段名  列属性
-- 增加外键
ALTER  TABLE 表名  ADD  [CONSTRAINT  `约束名(多以FK_开头)` ] FOREIGN  KEY  (`字段名`)  REFERENCES `引用表`(`字段名`)

-- 修改表的字段
-- 修改约束
ALTER  TABLE  表名  MODIFY 字段名  列属性 [ ]
-- 字段重命名
ALTER  TABLE  表名  CHANGE  旧名字  新名字  列属性 [ ]

-- 删除表的字段
ALTER  TABLE  表名  DROP  字段名
DROP
 删除表
DROP  TABLE  [ IF EXISTS ]  表名

DML数据管理语言

Insert
-- 插入语句
insert  into  表名(字段名1,字段名2,……)values(‘值1’,‘值2’,……)[( )( ),……]
Update
-- 修改语句
update  `表名`  set  `修改的字段名`  =  修改的值  where  条件
-- 当没有条件时,默认修改该字段所有的值
Delete
-- 删除数据(全部)
delete  from `表名`
-- 删除数据(指定数据)
delete  from `表名`  where  条件
-- 清空表
truncate  `表名`
-- truncate 和 delete的区别
delete                不会影响自增
truncate              自增会归零

Delete删除的问题,重启数据库后现象【引擎分析】
InnoDB 自增列会重1开始 (存在内存当中的,断电即失)
MylSAM 继续从上一个自增量开始 (存在文件中的,不会丢失)

DQL数据查询语言

查询模板
select  `字段名`
from  表名
[ left | right | inner ] join2  on 联合键
where  条件
group  by ……     -- 分组【在使用分组查询时,select后面的列必须是 :统计函数处理的列 或 分组条件列】
having  ……       --  分组后的次要条件
order  by  ……
limit  ……
单表查询
-- 查询全部
select  *  from  表名
-- 查询指定字段
select  `字段名`  from  表名
-- 查询指定字段别名显示
select  `字段名`  as  别名  from  表名
-- 函数    例:Concat(a,b)
select  Concat(`其他或字段名``字段名`)  as  别名  from  表名
-- 查询结果【去重】
select  distinct  `字段名`  from  表名
-- 查询结果【条件】
select  `字段名`  from  表名  where  条件
条件
-- 子查询
select  `字段名`  from  表名  where  `字段名` = (查询语句)
其他条件
-- 排序
select  `字段名`  from  表名  where  条件  order  by  `字段名`  [ASC (升序) /DESC (降序) ]
-- 分页
select  `字段名`  from  表名  where  条件  order  by  `字段名`  [ASC (升序) /DESC (降序) ]   limit  起始值,显示数量

分页公式
第N页 limit (n-1) * pageSize,pageSize
【pageSize:显示数量】
【(n-1) * pageSize:起始值】
【n:当前页】
【数据总数 / 显示数量 = 总页数】

连接查询
内连接
-- INNER JOIN
select  `字段名`  from1  inner  join2  on1.字段  =2.字段
外连接
-- RIGHT JOIN
select  `字段名`  from1  right  join2  on1.字段  =2.字段
-- LEFT  JOIN
select  `字段名`  from1  left  join2  on1.字段  =2.字段
联合查询

作用:将多个select语句的查询结果,显示在一个结果集中。

-- 代码实现
select  `字段名`  from1
union [all]
select  `字段名`  from2

【注意点】

  1. 参与联合查询的列的数量必须相同.
  2. 最好对应列的类型、长度一致

UNION ALL 与 UNION的区别

  1. union all会显示所有数据,包括重复的
  2. union对重复的数据只显示一次

其他语句

按年月日时分秒统计

方案一

MySQL中提供了date_format函数进行格式化该字段显示成期望形式。
DATE_FORMAT(date,format) 函数用于以不同的格式显示日期/时间数据。

我们常用的

  • 按年统计就可以 group by date_format(date字段名, “%Y”)
  • 按月统计就可以 group by date_format(date字段名, “%Y-%m”)
  • 按天统计就可以 group by date_format(date字段名, “%Y-%m-%d”)
  • 按季度统计可以 group by concat(date_format(date字段名, ‘%Y-’),quarter(date字段名) )

使用 quarter() 函数,直接计算当天时间为哪个季度季度 (1,2,3,4)
concat拼接 这样每个日期会被处理 成 2021-1 这种形式(1是第几季度)

DATE_FORMAT可使用格式参照这里

方案二

可以使用MySQL的函数【YEAR、MONTH、WEEK】进行筛选

SELECT `需要排序的单位函数` FROM `表名` 
WHERE YEAR(`用于筛选的日期字段`) = 2021
GROUP BY MONTH(`用于筛选的日期字段`)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值