MySql实用技巧,学会轻松应对开发中的问题
case when语句
原表
SELECT *,CASE WHEN age > 18 THEN "成年人" ELSE "未成年人" END AS "身份" FROM student
查询结果
需要注意的是,CASE WHEN 每个条件对应的数据类型必须是一致的,否则会报错。 其它,在实际开发中还可以把参数传入insert、update、delete语句
insert into student(name,age) values("小周",case when #{A}="小周" then 18 end);
update student set age = (case when #{A} = 1 then 18 when #{A} = 2 then 19 else 20 end)
delete student where age = (case when #{A} = "18" then "18" when #{A} = "19" then "19" end);行转列
原表
SELECT name,
max(CASE WHEN course="语文" THEN score ELSE 0 END ) AS "语文",
max(CASE WHEN course="数学" THEN score ELSE 0 END )AS "数学"
FROM score GROUP BY name
结果数据批量更新
mysql
UPDATE score a inner join score_new b ON a.id = b.id set a.score= b.score
sqlserver
UPDATE score a set a.score= b.score from score_new b where a.id = b.id
oracle用以下格式:
UPDATE A SET (A1, A2, A3) = ( SELECT B1, B2, B3 FROM B WHERE A.ID = B.ID) 插入或者更新
INSERT INTO `score` VALUES (1, "小明", "语文", 95) on DUPLICATE KEY UPDATE score=96
根据主键判断有记录存在时,只更新on后面的字段动态SQLdelimiter // create procedure insert(in name varchar(250),in course varchar(250),in score INT) BEGIN SET @sqlStmt = CONCAT("INSERT INTO score VALUES (1, ",name,", ",course,", ",score,");"); PREPARE stmt FROM @sqlStmt; EXECUTE stmt;#执行SQL DEALLOCATE PREPARE stmt; #释放连接 END; // delimiter ;索引优化
应该建立索引的情况
1.在经常用在连接的列上创建索引,可以加快连接的速度;
2.在经常使用在Where子句中的列上面创建索引,加快条件的判断速度;
3.为经常出现在关键字order by、group by、distinct后面的字段,建立索引。
4.索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引;
应该避免建立索引的情况
1.频繁进行数据操作的表,尤其插入操作比较多的表,不要建立太多的索引;
2.无用的索引要及时删除,避免对执行计划造成负面影响;
索引失效的情况
有牛人总结为七字口诀:" 模型数空运最快 ",我直接拿来分享了
模:使用like进行模糊查询的时候,以百分号%开头的,索引就会失效。
型:代表数据类型,数据类型错误了,索引也会失效。
数:函数,对索引的字段使用内部函数的,索引也会失效。这种情况,应该建立基于函数的索引。
空:null,索引不存储空值,如果没有声明nou null,数据库会认为有可能存在空值,也不会按照索引进行计算。
运:运算,对索引列进行加减乘除等运算的,会造成索引失效。
最:复合索引中索引列的顺序非常重要,如果不是按照索引列最左列开始查找,则无法使用索引。
快:全表扫描最快,如果数据库认为全表扫描更快的时候,它就不会使用索引。 mysqldump导出
1.导出整个数据库
mysqldump -u 用户名 -p 数据库名 > 导出的文件名
2.导出一个表
mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名
3.导入
mysql>source d:/dbname.sql
说明:大批量数据情况下推荐使用mysqldump,导入会很快刚踩了一个坑
有两个字段大小判断的SQL在命令窗口下执行没有问题,但是把SQL生成视图就有问题了。经过排查发现,原因是两个比较字段的字符集比一致(一个utf8mb4,另一个uft8) ,在生成视图时mysql会把字符集强行转为一致,这样就出现了问题。
上面的问题我在测试环境没有复现,但在生产环境下确实是修改完成字符集就解决问题了。我猜想与数据量有关系,因为生产环境那张表的数据量还是挺大的。有知道原因的小伙伴请留言,谢谢!
大家在用mysql创建表时,尽量选择utf8mb4字符集,在开发过程中还要确认每个字段的字符集情况。不然有可能出现不可描述的情况!
每天一个小知识,每天进步一点点!!![加油][加油][加油]
新网球王子,剧情已经崩溃,很多内容没有切合实际了吗?新网球王子完全崩溃了,没有真实网球的样子。新网球王子里的人设完全不堪入目,而还完全偏离了以前网球王子灌输给大家的完好信念,真的是服了。第一网球不是用来打人的,我还记得不二以前说这句
雪中悍刀行徐龙象现在什么实力,能打败赵楷符将红甲中的金甲吗?赵楷带着符将金甲上龙虎山找赵黄巢,结果碰见徐龙象在山楂树下等山楂成熟。如果赵楷此时下手,他剩下的符将金甲估计也会灰飞烟灭。符将红甲本为天外陨铁所铸,叶红亭只是金刚境,却凭它能化天地
像降央卓玛那一天李健贝加尔湖畔那样好听的歌有可推荐的吗?那一天,这首歌我很喜爱,王琪可可托海的牧羊人。降央卓玛妈妈谭维维乌兰巴托的夜韩红九儿回到拉萨朴树白桦林Nofearinmyheart张韶涵阿刁很高兴回答这个问题,我个人觉得还有以下
绝地求生刺激战场雨林地图有哪些非常富裕的物资?执笔,一位在游戏圈摸爬滚打十余年的在职老兵,天天聊游戏,关注不迷路哟!感谢邀请!相信各位进来的吃鸡大佬,在刺激战场都有一定的经验!大伙儿也知道,刺激战场里的资源也是按照地图坐标,划
小虫博格斯身高只有1。6米,他是如何在NBA立足14年的?虽然没有规则规定球员要有多高才能进入NBA联盟里打球,但是在身体对抗激烈喜欢利用错位优势得分的球场,一旦有一位球员因为身高太矮小成为防守漏洞的话,那这支球队将很难赢球,因此很少有身
杭州,31岁,月入4。5万能不能买得起房子,能不能留下结婚?你好!你是想在杭州定居,怕自己的能力不够是吧,按照你所说的每月的月收入是4。5万,应该在杭州属于高层管理者了,这个条件在杭州定居完全是没有问题的呀,没有什么好担心的,想买房就趁早点
李健是个什么样的人?01hr1974李健出生在哈尔滨,并在这里长大。李健的父亲名叫李九良,是黑龙江省京剧院小有名气的武生。李健很小的时候就跟着父亲学武生,翻跟头压腿。因为练过武术的原因,小时候的李健是
DNF哈林史诗跟升级的95有什么区别?谢谢悟空小秘书的邀请!一DNF哈林史诗,不能升级分为5套防具,(还有一套国服特色的划水套史诗)2套首饰,2套特殊装备(一套输出,一套辅助),全职业武器,都是不能升级的史诗,其强度介
说实话,赫莲娜黑绷带真的好用吗?好用,不解释。味道肤感效果都有赫莲娜黑绷带面霜作为赫莲娜明星产品,自然有它受欢迎的道理。黑绷带面霜的玻色因含量高达30,是玻色因含量高的护肤品。近年来很多女性朋友对玻色因成分都有所
助听器戴久了必须永久依赖吗?许多人担心助听器戴上以后摘不下来,害怕对助听器产生依赖。应该承认,的确有一部分使用者一旦拥有便再也离不开助听器。问题是,为什么会产生这种现象?如果不是强迫,正常听力的人不会戴用助听
你想明白了哪些亲戚之间相处的道理?我们单位女领导,被一个五十多岁的酒蒙子缠上了!我们领导气质高雅,身材性感,长相俊俏,不化妆,素颜都比小网红漂亮一百倍。走路一颠一颠的,女神气质拿捏得死死的。学历博士后,单身,会做饭