当前位置: 首页 > news >正文

网站建设运用软件广州安尔捷做的网站好吗

网站建设运用软件,广州安尔捷做的网站好吗,购物网站 设计,网站运营和管理标准结构化查询语言(Structured Query Language)简称SQL#xff0c;sql是我们日常工作中使用最多一项技能#xff0c;写sql可以说是一个可以干到退休的技能。看似简单#xff0c;但要精通却很难。 sql包括增、删、改、查#xff0c;创建表、删除表、修改表等等内容#xf…标准结构化查询语言(Structured Query Language)简称SQLsql是我们日常工作中使用最多一项技能写sql可以说是一个可以干到退休的技能。看似简单但要精通却很难。 sql包括增、删、改、查创建表、删除表、修改表等等内容我们今天所讲的sql是一种狭义上select语句这个使用最频繁也是最复杂的。写一篇关于技术类的文章既要深刻又要通俗易懂的确要耗费我不少精力如果大家觉得此文对你或者有需要的人有所帮助整理不易记得关注小编 欢迎您转发一、sql会不会淘汰 大家满怀热情点进来学习一下sql首先要搞清楚一个问题sql会淘汰吗要回答这个问题首先有必要了解sql发展背景它是关系型数据库诞生的产物有时候不得不佩服这些先辈当关系型数据库起步发展的时候就制定了一个统一的操作标准就是SQL标准所有关系型数据库(mysql/mssql/oracle)都会实现这个标准这也是为什么sql会长盛不衰的原因所以sql会不会淘汰要看关系型数据库会不会淘汰到目前为止没有看到任何关系型数据库淘汰的迹象传统关系型数据库过渡到分布式关系型数据库这是未来极有可能发生的事。 你可能会问市面不是有一个nosql的东西首先nosql翻译成中文不是”没有sql“的意思而是”不仅仅有sql还有其它“nosql是not only sql的简称。nosql说的一种补充什么意思sql主要处理结构化的数据nosql主要处理非结构化的数据。目前来说nosql没有一个统一的标准都是按照用途来发展比如键值(Key-Value)存储数据库 Redis列存储数据库Cassandra文档型数据库 MongoDb图形(Graph)数据库Neo4J。二、什么是IT高手 扎实理论基础知识这是决定一个人水平飞得有多高。灵活运用这个基础知识(非常难)才决定一个人水平有多牛。为什么我会说经常出现”卡壳“现象有些看上去很难的问题其实运用一些基础知识就可以解决但是要做这一点非常困难。 我们通常对高手定义都是可以处理日常工作中一些难题注意我说的是一些难题不要期望解决所有的难题什么是日常工作的难题特点一问题偶然出现无法重现问题特点二没有明显的逻辑错误没有解决问题思路特点三问题本身就很难(比如数据结构与算法)。比如我们HIS里面医技系统就有这样一个难题一直无法解决护士录入A代码记录后台偶然间会保存B代码记录半年时间偶然出现12次但是我们在HIS程序里面各种极端操作测试始终无法重现问题实在令人不解 在这里我分享一下曾经处理过难题你会惊讶的发现解决问题的方法很简单都是用的最基本的基础知识解决的但是你想到这种解决方法非常不易第一个问题使用netbeans开发环境在书写js函数queryStr的时候按ctrlshiftF格式化代码的时候偶然会出现结构混乱有时候发现导航器js未出现这个函数如下图所示问题原因 原来js代码与html在同一个文件来写的原来在queryStr函数是包含动态生成html代码的片断虽然这个代码放变量赋值里面在格式化的时候netbeans依然会检测这个html是否合法导致缩进混乱和导航器分析不出这个函数。我个人猜测格式化的底层实现将整个文档解析解析html标签即便html标签写在js字符串变量里面如果没有完整配对依然会出问题。解决方法保证queryStr涉及的html字符完整并且里面提及的函数必须声明出来。第二个问题下面来分享mysql bug。通过mysqldump导出来sql脚本测试还原过程中出现[Err] 1064错误跟踪到是以下语句出错百思不得其解当时写进数据库没有任何问题为什么导出来再导进去的时候就报错。[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 质控科刘成章要求统计2018.04.01---2018-06-30门诊医生的收 at line 9可能存在的原因 UPDATE info.fh_comm_detail set cl_proc ‘.....’ WHERE (mxid 100005)cl_proc后面的值当中包含/*,*/注释符号,mysql去解析的时候触发bug原本包含在‘’中字符串含义发生变化导致语句报错。(但是我在mysql查询分析器怎么样都模拟不出来这种错误就是偶然发生)。解决方法将/*注释符号替换为其他字符即可比如”--”让其不触发解析注释串。问题三联网医保金额与本地程序计算有少数患者偶尔会存在金额不一致问题。翻看程序代码左看右看都没有问题如下所示。lc_jine_sum round(tab_1.tabpage_1.dw_1.getitemnumber(1,jine_total),2)问题原因我突然想起一个基础知识计算机浮点数本身是不准确的每次运算都有可能得出不同的结果既然不准确为什么我们还会大规模使用计算机来解决问题解决方法就是提高计算机处理精度让它无限逼近准确。什么意思我们大部分现实当中大部分都是计算到2位小数最多也是4位小数但是计算机就无所谓10-20位都可以处理10-20位小数精度再截取2-4位小数当然就可以做到准确无误。大家是否遇到过这种问题明明只有一位小数把这些数字加起来的时候你会看到一长串小数这就是计算机内部使用高精度计算的问题如下图所示。 计算机内部使用高精度的小数(一般是10几位以上)来解决小数不准确的问题。所以我当时就把代码改了一下果然改完以后问题从此没有出现过。这就是利用基础知识去解决实际当中的难题你看得我写的很简单其实想到这个方法是非常困难的。lc_jine_sum round(tab_1.tabpage_1.dw_1.getitemnumber(1,jine_total),4) //先取出 4 位小数lc_jine_sum round(lc_jine_sum,2) //再进行 2 位小数四舍五入三、解决一个sql问题基本思路 日常工作sql语句主要用途临时统计数据、后台查数找问题原因、制作报表。拿到一个sql语句的问题首先我们先从业务角度分析后台是否存在数据它们是否存在相应关联没有数据没有关联后继工作毫无意义。 举例说明患者用药追踪统计患者用了哪个厂家哪个批次的药品。统计的意义如果发药哪个批次有问题可以精准找到相关患者。第一个问题后台有数据吗有的。his里面基本上都有药品出入库、患者用药数据但是药品管理的厂家、批次与患者用药之间没有关联。这也是his系统里面的一个难题目前我还没有看到靠谱的解决方案。由上述可以得知患者用药追踪这个问题无法用sql解决。 其次通常你拿到一个稍微复杂sql问题一般不能一步到位写出来。别操之过急学会化解问题。举例说明统计历史连续某段时间内每日在院人数假设his系统中没有生成数据(每天将在院人数数据拷贝生成一个中间表数据)。 第一步分解假设你现在统计历史某日(2020-03-01)的在院人数在院人数 (入院日期 在院人数 出院日期) 一直未出院的在院人数。 第二步分解模拟生成连续某段时间比如2020-03月份再关联生成每日在院人数 最后需要验证统计出来的数据是否正确经过验证统计出来的历史在院数据是完全正确的发现有个别出现12个人的误差是因为人为修改了”入院日期“”出院日期“所致如果你想检验sql水平怎么样我给你一个判断标准是否使用了中间表。严格来说只要数据库存在数据存在关联就可以用sql语句查出来如果你精通sql是不会用到中间表的。四、SQL基础理论知识 掌握基础理论知识是成为SQL高手第一步我不会照搬教科书式的讲课我只会讲解我认为你最应该的掌握的3个知识点。 1、集合(Set)。我给大家一个简单的概念sql里面一切皆集合。SQL 以关系代数为基础发展出来的一门语言关系代数主要是“集合”。sql语句形式select .... from ....集合在sql当中的表现形式每一个select语句都是一个集合写在from后面的每个表、子查询、视图可以算作一个集合。第一种情况第二种情况第三种情况2、笛卡尔积 select * from table1,table2table1存在a列m行table12存在b列n行最后形成的集合是(ab)列(m*n)行记录。我们学计算机你会发现一个现象越往前追溯都会一个简单模型如果你把所有sql问题往前推最后都会看到 “笛卡尔积”的身影。 我举一个简单的例子SQL理论中会把选取字段这个操作叫作“投影(project) ”。我不知道大家有无想过这个问题为什么叫“投影这个概念而不是叫其他名称因为任何sql语句其实到最后都是回归一个“笛卡尔积”你在选取字段操作好似对“笛卡尔积”做了一次“投影。3、集合之间的关系 集合之间的关系 一对一、一对多(最频繁)、多对多(几乎不用)在数据库表中通常用FOREIGN KEY表示一对多的关系 。为什么要关注它们之间的关系主要写sql的语句发现记录重复现象你一定要检查是不是一对多多对多之间的关系。但是当sql语句复杂以后了即便你分析清楚集合之间的关系很可能出现记录重复的现象当与你的预期不符我们可以distinct去重。五、SQL中实战技巧 这次我不再分析如何去书写一个sql语句我相信大家多多少少会写sql。我只是跟大家分享一下我掌握的技巧。 1、能少写就不要多写(write less,do more)。为什么要这样第一个提高效率第二个减少出错几率。举例说明假设我们写内连接语句。其实是有2种写法我推荐大家使用第一种写法。特别注意在oracle数据库当中左连接、右连接有一种简写的方式。 2、为什么有时候别名需要增加双引号。当你的别名包含特殊符号的时候就要增加双引号比如、-、*、/、(、)。3、使用null注意事项。null指的是理论意义上的绝对的空不指任何含义。所以空字串、空数组、空对象表示含义的空不是null。所以null一般使用身份运算符 is以示区分is null或者is not null。像python是用is判断但是java,js中用来判断有些编程语言对这个问题并没有严格区分。4、union 和union all之间的区别。union将两个集合去掉重复记录合并在一起union all只是简单合并在一起。5、group by使用问题。有时候会发现聚合函数感觉数值明显错误先去掉group by 查看原始记录看where条件是否写错。6、充分利用数据库提供函数简化sql书写难度。举例说明同时统计采购物品A、B、C、D分类的小计同时统计某个科室的出库给中心药房的基数、节约的小计。 当然我不可能穷举所有的技巧我只是把我使用最多一些技巧分享给大家精通sql需要大家长期实践。六、案例分析 我曾经收到来自基层医疗机构的多位小伙伴的求助他们在写sql的时候出现“卡壳”问题。其实不管使用oracle、mssql、mysql解决问题的原理思路都是一样只不过表现形式不同。以下分享协助小伙伴处理问题2个案例。 案例一某小伙伴遇到数据上报问题某个药品入库与出库数据需要在同一行展示因为“入库与出库”来源于不同的表小伙伴用了一种最原始的方法来处理。小伙伴的解决方案把“入库数据”统计出来放入一个中间表把“出库数据”统计出来放入一个中间表再将两个中间表关联查询。入库出库 小伙伴感觉这样处理比较麻烦期望能用一条sql语句解决问题。我帮小伙伴分析是否可以用一条sql搞定的可能性第一对于来自于不同来源数据“入库”和“出库”相当于不同的集合可以使用union连起来第二union合并有个特点要求两个集合是相同字段类型相同的字段的个数缺少的字段可以使用虚拟列来解决第三将union结果当作子查询(相当于得到一个新的集合)再进行group by处理可以完成整个操作。 最终sql语句部分截图如下所示入库补充虚拟列出库补充虚拟列union当作子查询再进行group by案例二某小伙伴制作检验视图给第三方调用当某个检验结果超过了正常范围显示↑↓否则为空如下图所示。需求使用case when 小伙伴在百度搜寻很多资料或许也是看了我的文章想到了可以用case when来解决这个问题,但是执行过程中报“sql server 从数据类型varchar 转换为 float时出错”。出错信息 因为我对mssql不熟悉这个问题对于我来说还是有一定的难度。我的思考过程如下既然是数据类型出错ISNUMERIC(b.lac13) 0这个条件嫌疑就很大isnumeric没有真正把“数字值”过滤干净我百度一下isnumeric返回值只有两个返回值10。我当时敏锐感觉到问题就在这里ISNUMERIC(b.lac13) 0这种写法本身就是一个“坑”假设判断ISNUMERIC(‘阴性’) 返回0,00就成立convert去转换的时候就会报“sql server 从数据类型varchar 转换为 float时出错”。 我叫小伙伴改成ISNUMERIC(b.lac13) and CONVERT(float, b.LAC10) CONVERT(float, b.lac13)再测试果然问题就解决了。1代表true0代表false这个习惯是从C语言那里继承过来的。不过小伙伴有点担心如果ISNUMERIC(‘阴性’) and CONVERT(float, ‘阴性’) 这样判断不是一样有问题吗我了解小伙伴这个担心如果他掌握一个基础知识这种担心是完全是多余的。什么意思一般编程语言都会有一个if条件熔断机制。举例说明条件1 and 条件2 and 条件3假设条件1是false就可以决定整个表达式的值意味着条件2 , 条件3不会再去做判断处理就好像发生了“熔断”。再比如条件1 or 条件2 or 条件3假设条件1是true就可以决定整个表达式的值意味着条件2 , 条件3不会再去做判断处理。 如果小伙伴还是不放心可以将条件改成ISNUMERIC(b.lac13) 1就不会存在理解不了这个问题了。处理效果七、总结 俗说“光说不练假把式”。多写sql才能掌握真技术同时也要不停的跳出自己的“舒适区”。为什么有人干了10年水平还是很菜因为他只不过把有些事情重复干了10年而己并没有真的成长。每次写sql的时候能不能不用中间表、能不能再简单一点每次挑战一下自己完成同样的效果。所谓的高手大部分都在挑战自己能力边界。最后祝大家都从文中有所收获成为sql高手
http://www.sadfv.cn/news/154161/

相关文章:

  • 深圳 网站建设培训学校企业模板图片
  • 企业网站和信息化建设金蝶做网站基本语言
  • 鞋网站模版网站建设 主机选择
  • 网站建设论文读书笔记全球ic采购网
  • 学校门户网站建设的优势有哪些网站可以做全景效果图
  • 淄博网站制作网页公司网络司网站
  • 建筑人才网官方网站评职称重庆免费网站建站模板
  • seo网站设计费用网站恶意点击软件
  • 中山营销网站建设联系方式免费网站打包
  • 湖南做门户网站的公司如果做自己的网站
  • 网至普的营销型网站建设北京网站制作net2006
  • 网站制作前期所需要准备网站开发技术与应用课程设计
  • 网站建设如何更加稳定网站建设怎么设置留言界面
  • 如何做网站新手个人怎样建立网站
  • 北京网站制作收费明细中国建设银行网站会员注册信息补充
  • 企业网站营销解决方案来宾建设网站
  • 饿了吗网站wordpress现代建设中国公司网站
  • 武邑县网站建设网络营销seo是什么意思
  • 论坛网站推广方案手机禁止网站跳转页面
  • 2016年网站设计风格免费视频app软件哪个好
  • 酒店行业网站建设方案工程168信息平台
  • 东莞市机电工程学校网站建设与管理在线网页制作系统免费
  • 北京海岸设计公司网站四川建设行业数据共享平台
  • 南皮网站建设公司o2o网站建站
  • 模板公司深圳网站关键词优化排名
  • 池州网站建设公司怎样开网店
  • 网站开发售后服务咸阳网站建设专业公司哪家好
  • 做电商有那个网站wordpress做小程序
  • 零食网站建设策划书模板网站推广服务算中介吗
  • 网络建站公司源码清远市清城区网站建设公司