目录
5、Mysql检查字段中某个字符出现的次数?(检查字段包含几个某字符)
1、更改数据库表接口常用SQL
由于在开发过程之中经常可能涉及到针对表结构进行增加字段(需要指定在某个字段后增加)、或者修改及重名某个字段信息
--创建测试表
create table tableTest(
id int;
);
--add支持多列,change/drop需要在每列前添加关键字,逗号隔开,'column'可有可无
--添加多列
alter table tableTest add (c1 char(1),c2 char(1)); --正确,add支持多列
alter table tableTest add column (c1 char(1),c2 char(1)); --正确
alter table tableTest add c1 char(1),add c2 char(1); --正确
/** 课程 一级分类 */
alter table course add course_first_category bigint(11) DEFAULT 0 COMMENT '课程一级分类id' after course_name;
--修改多列
alter table tableTest change c1 c3 char(1),change c2 c4 char(1); --正确
alter table tableTest change column c1 c3 char(1),change column c2 c4 char(1); --正确
/** 课程 调整原来的二级分类 */
alter table course change column course_category course_second_category bigint(11) DEFAULT 0 COMMENT '课程二级分类id';
alter table tableTest change (c1 c3 char(1),c2 c4 char(1)); --错误
--删除多列
alter table tableTest drop c1,drop c2; --正确
alter table tableTest drop column c1,drop column c2; --正确
2、常用查询SQL查询函数
#日期格式化
DATE_FORMAT(ce.create_time,'%Y-%m-%d %H:%i:%s') as createTime
date_format(task.task_start_time, '%Y.%c.%d' ) as task_start_time,
#转换文件大小
CASE
WHEN CONVERT(ce.enclosure_size / (1024 * 1024), decimal(10, 2)) > 1024
THEN CONCAT(CONVERT(ce.enclosure_size /(1024 * 1024*1024), decimal(10, 2)), 'G')
WHEN CONVERT(ce.enclosure_size / (1024 * 1024), decimal(10, 2)) > 1
THEN CONCAT(CONVERT(ce.enclosure_size / (1024 * 1024), decimal(10, 2)), 'M')
ELSE CONCAT(CONVERT(ce.enclosure_size / (1024), decimal(10, 2)), 'KB')
END AS enclosureSize,
#计算百分比
case tresult.task_users
when 0 then CONCAT("0.00",'%')
else CONCAT(ROUND(tresult.complete_task_users/tresult.task_users * 100, 2),'','%')
end complete_percentage
其中 format函数对数字类型转化的坑 如果仅仅只是显示字符串可以使用,如果需要使用作为数字进行计算;此方式不合适
convert(param, decimal(10,2))(建议)
cast(param as decimal(10,2))(建议)
3、转换函数
MySQL 的CAST()和CONVERT()函数可用来获取一个类型的值,并产生另一个类型的值。两者具体的语法如下:
CAST(value as type);
CONVERT(value, type);
就是CAST(xxx AS 类型), CONVERT(xxx,类型)。
可以转换的类型是有限制的。这个类型可以是以下值其中的一个:
二进制,同带binary前缀的效果 : BINARY
字符型,可带参数 : CHAR()
日期 : DATE
时间: TIME
日期时间型 : DATETIME
浮点数 : DECIMAL
整数 : SIGNED
无符号整数 : UNSIGNED
mysql> SELECT CAST('3.35' AS signed);
+------------------------+
| CAST('3.35' AS signed) |
+------------------------+
| 3 |
+------------------------+
1 row in set
4、mysql设置主键从1开始自增
alter table user AUTO_INCREMENT=1; ##user是表名称
5、Mysql检查字段中某个字符出现的次数?(检查字段包含几个某字符)
-- 核心代码
where (LENGTH(name) - LENGTH( REPLACE (name, '.', ''))) >= 2
-- 实战示例
SELECT
(
LENGTH( t.course_category_level_path ) - LENGTH(
REPLACE ( t.course_category_level_path, '.', '' ))) pointTotal,
t.course_category_level_path
FROM
course_category t
WHERE
(
LENGTH( t.course_category_level_path ) - LENGTH(
REPLACE ( t.course_category_level_path, '.', '' )))>=2