《SQL必知必会——第1、2课:sql基础概念及检索数据》

       现在还会有这种想法,出于对技术的敬畏,在开始真正使用某项技术之前,都会翻翻相关书籍,潜心学习一下,然后在开始,所谓出生牛犊不怕虎,在软件开发这个行业还是不提倡,一旦乱用技术,后面的坑实在难填。代码的改动就意味着调试、测试,以及对生产环境的影响,是很花团队时间和精力的。最好就是一开始把技术用正确,后面即使有改动,也是小改动,可以很快修复。还是说说这本书《SQL必知必会》(Ben Forta 著,钟鸣  刘晓霞 译),总觉得自己的sql学的不够系统,然后去年上半年买了这本书,拖拖拉拉到下半年才翻完,其实这本书是一本入门书,总共才200多页,主要还是自己被各种琐事耽搁,然后看书节奏拖沓很多,看完后一直想写点什么,最后想想sql语法相关文章太多了,即使写也写不出太深层次的东西,还是做做笔记吧,摘录一下本书的知识点,后面工作用到大家可以随时查阅,自己也可以随时查阅。本书一共分22课,我试着摘录整理成几篇博客,成一个系列。

       第1课  了解sql

       本课都是基础概念,这些概念经常被大家在工作中提及,相信这些概念早在大学时代上数据库原理课时就已经建立,但真要说一下数据库的定义,大家肯定会支支吾吾。数据库是一个以某种有组织的方式存储的数据集合。最简单的办法是将数据库想象为一个文件柜,这个文件柜是一个存放数据的物理位置,不管数据是什么,也不管数据是如何组织的,或者把数据库想象成是一个保存有组织的数据的容器。这里面有一个很容易混淆的地方,那就是人们通常用数据库这个术语来代表他们使用的数据库管理系统(DBMS)。实际数据库是通过DBMS创建和操纵的容器,而具体它究竟是什么,形式如何,各种数据库都不一样。举个例子,我们经常说mysql数据库,其实mysql是数据库管理系统,非数据库,当然也不必特别较真,mysql数据库这句话也可以理解为:使用mysql数据库管理系统创建和操纵的数据库。

  • 表:某种特定类型数据的结构化清单;
  • 列:表中的一个字段,所有表都是由一个或多个列组成;
  • 行:表中的一个记录,也就是把数据库表想象为网格,网格中垂直的列为表列,水平行为表行;
  • 主键:一列(或几列),其值能够唯一标识表中每一行,主键不允许修改和更新,不能重用(如果某行从表中删除,它的主键不能赋给以后的新行)。
  • SQL:结构化查询语言,专门用来与数据库沟通的语言。sql不是某个特定数据库供应商专有的语言,而是一种业界标准,由ANSI标准委员会管理,也叫ANSI SQL,几乎所有重要的DBMS都支持sql。这一点保证了学习sql,就几乎能与所有数据库打交道。甚至现在的spark sql,hive sql等等都长的差不多,sql已经够简洁了,实在设计不出什么新花样了。

       第2课  检索数据

       所谓检索数据,就是查询数据,也就是select,你可能写的第一条sql语句就是select。关于select查询本课开篇几节并没有讲太多,可能太简单了,不过讲了一个注意点:一般而言,除非确实需要表中的每一列,否则最好别使用*通配符,因为检索不需要的列会降低检索和应用程序的性能。这一点还真得注意,有时会图省事,直接来个select *,在测试环境这样查查就算了,但是生产环境,还是要谨慎。

       检索不同的值:也就是查询出的列每个值都不一样,可以使用distinct关键字,比如:select distinct vend_id from products,有一个注意点是该关键字作用于所有列,不仅仅是跟在其后的那一列,所以这里不要误用,如果distinct后面跟着多列的话,那distinct基本也就废了,后面几列的组合值,可能多半都是不一样的,也就起不到去重的作用了。当然,具体场景具体分析,也可能就是需要多个列值组合起来去重呢。

       限制结果:如果只想返回第一行或一定数量的行,可以使用top(SQL Server / Access)关键字或者limit(MySql / MariaDB / PostgreSQL / SQLite)关键字。不同的DBMS还不太一样,不过这个理解起来也非常简单。不过下面这个例子可以看一下:select prod_name from products limit 5 offset 5; 这里的limit 5 offset 5表示返回从第5行起的5行数据。

       使用注释:sql语句也是代码,也要有注释。我看过有把业务逻辑写进sql的,比如一些业务上的判断,也用sql实现,寄希望于强大的sql直接出最终结果,可想而知,这样的sql有多复杂,非常晦涩难懂,这样的sql不加注释,后期是非常难维护的。当然,个人觉得最好不要这么干,还是把业务梳理清楚,划分若干个环节,每个环节使用sql查询数据,然后通过程序把各个环节数据串联起来,这样sql也方便维护,业务代码也容易看懂,无论后面谁接手维护,都能很快上手。言归正传,sql注释形式比较多,可以使用--或者#进行行内注释,也可以使用/**/,像c/java代码那样进行多行注释。有复杂代码的地方,就应该写注释,当然注释要准确,不准确的注释和没有注释一样坑,甚至更坑。

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
未来社区的建设背景和需求分析指出,随着智能经济、大数据、人工智能、物联网、区块链、云计算等技术的发展,社区服务正朝着数字化、智能化转型。社区服务渠道由分散向统一融合转变,服务内容由通用庞杂向个性化、服务导向转变。未来社区将构建数字化生态,实现数据在线、组织在线、服务在线、产品智能和决策智能,赋能企业创新,同时注重人才培养和科研平台建设。 规划设计方面,未来社区将基于居民需求,打造以服务为中心的社区管理模式。通过统一的服务平台和应用,实现服务内容的整合和优化,提供灵活多样的服务方式,如推送式、订阅式、热点式等。社区将构建数据与应用的良性循环,提高服务效率,同时注重生态优美、绿色低碳、社会和谐,以实现幸福民生和产业发展。 建设运营上,未来社区强调科学规划、以人为本,创新引领、重点突破,统筹推进、整体提升。通过实施院落+社团自治工程,转变政府职能,深化社区自治法制化、信息化,解决社区治理中的重点问题。目标是培养有活力的社会组织,提高社区居民参与度和满意度,实现社区治理服务的制度机制创新。 未来社区的数字化解决方案包括信息发布系统、服务系统和管理系统。信息发布系统涵盖公共服务类和社会化服务类信息,提供政策宣传、家政服务、健康医疗咨询等功能。服务系统功能需求包括办事指南、公共服务、社区工作参与互动等,旨在提高社区服务能力。管理系统功能需求则涉及院落管理、社团管理、社工队伍管理等,以实现社区治理的现代化。 最后,未来社区建设注重整合政府、社会组织、企业等多方资源,以提高社区服务的效率和质量。通过建立社区管理服务综合信息平台,提供社区公共服务、社区社会组织管理服务和社区便民服务,实现管理精简、高效、透明,服务快速、便捷。同时,通过培育和发展社区协会、社团等组织,激发社会化组织活力,为居民提供综合性的咨询和服务,促进社区的和谐发展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值