位置: 编程技术 - 正文

从两种SQL表连接写法来了解过去(sql连接两个表接查询sql语句)

编辑:rootadmin
例如:一个二表连接的SQL,有两种写法: (1)select A.c1,A.c2,B.c1,B.c2 from table1 A,table2 B where A.id=B.id (2)select A.c1,A.c2,B.c1,B.c2 from table1 A join table2 B on A.id=B.id 哪种写法好呢?现在提倡用哪一种? 你喜欢用哪一种? ---这两个哪个好? 其中楼的回答最为深入。其实这个问题还是有一定的历史原因的,不管你习惯什么样的写法只要知道来龙去脉就不会再被细枝末节来迷惑了。以下观点为个人认识,如有偏差欢迎指正。 简单的说,前者是ansi sql 标准后者是ansi sql 标准(*****) ,这个观点最容易被人接受。 什么是ansi?美国国家标准局,iso的重要成员之一,年就有了。 什么是ansi sql?就是ansi注意到了sql的生产力,于是规范化了一下。 什么是sql?他是ibm发明的,oracle发扬广大的一门语言。 为什么是两家公司?。 年代初因为ibm内部各方利益斗争激烈,导致某大牛的研究成果只能以论文方式发表。 年代末某小公司把此技术用在商业领域就成了oracle,直到n年后ibm db2才出来。 所以,sql不是ansi 发明的,ansi 标准也不能通吃所有数据库平台。 比如下面这个是什么数据库的语法?反正ansi 标准在他那里是报错的。 select * from (a inner join b on a.id=b.id) inner join c on a.id=c.id 那么在ansi之前的数据库有哪些?oracle和db2是肯定的了。另外还有一些当时的小角色:Informix,dbase系列等。 而sybase的数据库和SQLServer是年之后出来的,而前面那个奇怪的join语法的access是后的。 古老的sqlserver和oracle我都没有用过,反正在年用oracle8i时还不支持ansi 的inner join,他是年生的。一直到本世纪发布的oacle9i 才改了过来。用多了t-sql的人会问 left join咋办,where a.id=b.id(+) 就可以了,人家没那么笨的,t-sql以前还有*=这样的表示。 那么这么看貌似ansi的规范力度不够?其实不是,国际标准化也不可能一刀切,在ansi 当中定义了4个级别,n多条款。大意就是大家符合入门级就行了,其他高级别仅供参考,甚至iso根本不会验证其他级别..而诸如inner join和left join之类的都是过渡级的,?濉 所以我前面打了5个星星的那句话并不是完全正确的,正确的应该是 前者符合ansi 标准和ansi 入门级标准,后者符合ansi 过渡级标准。 不是oracle8i不符合ansi,而是没有符合ansi的高级别规范,而完全实现高级别标准的数据库系统是没有的。 早在oracle7就已经完全符合ansi了,当然是指入门级,而且他就是ansi 的模版范例。 --回到上面的话题,这两个哪个好? 性能当然完全一样,区别只是习惯和喜好,但也因为标准级别不同而具有不同的风险。 如果想要优雅而易于维护且不容易写错的代码,当然用高标准的第二种方法。 如果必要考虑风险这个因素,比如涉及到多种平台的迁移或者整合,你应该用第一种,起码在两个表的情况下他还是比较安全的。 ---- 顺带提一句,ansi标准一直在修订:具体有多少版本就不列举了,我们得到的好处自然是多多的,比如递归、对象、数组、xml等等在各主流数据库的新版本中都陆续实现了

推荐整理分享从两种SQL表连接写法来了解过去(sql连接两个表接查询sql语句),希望有所帮助,仅作参考,欢迎阅读内容。

从两种SQL表连接写法来了解过去(sql连接两个表接查询sql语句)

文章相关热门搜索词:sql两个数据库的表如何关联查询,sql将两个表连接,sql将两个表连接,sql将两个表连接,从两种sql表连接在一起,sql语句从两个表中查询,sql将两个表连接,从两种sql表连接在一起,内容如对您有帮助,希望把文章链接给更多的朋友!

SQLServer 循环批处理 下面方法可以用来快速生成一批数据if(object_id('t')isnotnull)droptabletgocreatetablet(idintidentity(1,1),namevarchar())goinsertintot(name)selectnewid()goselect*fromt/*C1C--

从每个分类选择条记录的sql语句 从每个分类选择条记录selecta.*fromContentawherea.log_IDin(selecttoplog_IDfromContentwherelog_CateID=a.log_CateIDorderbylog_IDdesc)orderbylog_IDdesc"注意Content是新闻记录表log_Cate

SQLServer XML查询快速入门(句话) sqlxml入门:--byjinjazz1、xml:能认识元素、属性和值2、xpath:寻址语言,类似windows目录的查找(没用过dir命令的话就去面壁)语法格式,这些语法可以组合为条

标签: sql连接两个表接查询sql语句

本文链接地址:https://www.jiuchutong.com/biancheng/349430.html 转载请保留说明!

上一篇:SQL Server 索引维护sql语句(sql server索引的使用)

下一篇:SQLServer 循环批处理(sql如何实现循环)

  • 老项目增值税简易计税
  • 税务安全组件初审流程
  • 个人所得税的税目分多少种
  • 计提个税会计分录怎么做小规模
  • 个人给单位做事怎么开发票
  • 收购发票加计扣除
  • 吸收合并一般需要多久
  • 业务招待费可以进成本吗
  • 个人所得税生产经营所得税率
  • 房产税从租计征12%是年税率吗
  • 公司接受投资会计科目
  • 工会专户收到职工福利经费会计处理怎么做?
  • 非居民企业股权转让协议
  • 研发支出费用化支出包括哪些
  • 专家评审费个人所得税由谁支付
  • 房产税怎么计算的
  • 个人所得税承租承包经营所得
  • 小规模纳税申报表
  • 委托出口货物怎么办理退免税?
  • 制造费用分摊的账务处理怎么做?
  • 专票可以当普票用不抵扣吗
  • 现金流量表怎么做
  • 计提个税会计科目怎么做
  • 固定资产转投资性房地产是会计政策变更吗
  • 建筑安装服务费可以抵扣进项税吗
  • 如何预防计算机病毒的方法
  • 多发的工资可以从下月扣除吗
  • wordpress主题0skr
  • phpemail正则
  • 域名怎么交费
  • 收到折扣负数发票如何入账
  • 如何使用linux服务器
  • 企业的税收优惠政策有哪些
  • 银行本票实际金额小于票面金额
  • 土地使用税滞纳金不得超过
  • 重装win7系统鼠标键盘没反应
  • 国有土地使用证到期了怎么办
  • 申报表30栏一直不填写会怎么样
  • 搭建本地yum
  • 股权划转有税费吗
  • ps填充内容识别在哪
  • 串口发送字节数据的数据格式是什么
  • 织梦面包屑导航最后的分隔符大于号去掉方法
  • wordpress账号密码忘记了
  • 缴纳印花税需要带公章吗
  • 出差发生的旅游事件
  • 高铁票进项抵扣计算错了 怎么办理
  • 一般纳税人需要报个税吗
  • 税务安全证书应用客户端不成功是什么意思
  • 收据和发票有什么用
  • 企业合并的流程
  • 甲企业持有乙企业40%的股权,能够对乙企业
  • 个人所得税多计提怎样冲销
  • 自建生产线的入账价值
  • 借款合同相关法条
  • 应收票据的分录怎么做
  • 公司客户招待费用标准
  • 机床上的配件计入什么费用
  • 项目毛利润怎么算
  • 解决Windows Server远程断开后自动
  • fedora iso
  • shell 写入文本
  • centos中如何查看ip地址
  • win7系统安装教程不用u盘
  • win7如何删除网络上的其它计算机
  • win8启动设置选哪个
  • 关闭linux命令
  • opengles 抗锯齿
  • Android游戏开发读后感
  • Unity3D中ScreenPointToRay函数的分析-个人见解
  • angular中ui calendar的一些使用心得(推荐)
  • 我决定放弃了你却对我笑了
  • jquery 报表
  • pjblog修改技巧汇总
  • 税务局航天信息的操作流程
  • 物流企业需要缴税吗
  • 销售皮棉税率为多少
  • 国际税务师证书
  • 地税局网上报税
  • 资源税的作用是什么?
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设