SQL基础语句总结.docVIP

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一. 四种基本的SQL语句 1. 查询 select * from table 2. 更新 update table set field=value 3. 插入 insert [into] table (field) values(value) 4. 删除 delete [from] table 二.语句的执行顺序 1.语法分析 分析语句中语法是否符合规范,衡量语句中各表达式的意义。 2.语义分析 检查语句中涉及的所有数据库对象是否存在,且用户有相应的权限。 3.选择优化器 不同的数据库有不同的算法(这个涉及到数据结构),数据库会根据自己的理解(数据库本身)为 SQL语句选择不同的优化器,不同的优化器会选择不同的“执行计划” 4.运行“执行计划” 根据“执行计划”执行SQL语句。 以上所述是数据执行时的大体路线。 5.select 语句的执行顺序 借用ItZik Ben-Gan、Lubor Kollar、Dejan Sarka所著的《Sql Server 2005 技术内幕:T-SQL查询》的一段话足以说明: (8) select (9) distinct (11) top_specification select_list (1)fromlef t_table (3) join_type join right_table (2) on join _condition (4) where where_condition (5)group by group_by_list (6) with {cube|rollup} (7)having(having_condition) (10) order by order_by_condition 从这个顺序可以看出,所有的查询语句都是从from开始执行的。在执行过程中,每个步骤都会为下一个步骤生成一个虚拟表,这个虚拟表将作为下一个执行步骤的基础。 第一步:from 首先对from子句中的前两个表执行一个笛卡尔乘积,此时生成虚拟表vt1 . 第二步:on 接下来便是应用on筛选器,on 中的逻辑表达式将应用到 vt1 中的各个行,筛选出满足on逻辑表达式的行,生成虚拟表 vt2 . 第三步:join 如果是outer join 那么这一步就将添加外部行,left outer jion 就把左表在第二步中过滤的添加进来,如果是right outer join 那么就将右表在第二步中过滤掉的行添加进来,这样生成虚拟表 vt3. 第四步:多表 如果 from 子句中的表数目多余两个表,那么就将vt3和第三个表连接从而计算笛卡尔乘积,生成虚拟表,该过程就是一个重复1-3的步骤,最终得到一个新的虚拟表 vt3. 第五步:where 应用where筛选器,对上一步生产的虚拟表引用where筛选器,生成虚拟表vt4,在这有个比较重要的细节不得不说一下,对于包含outer join子句的查询,就有一个让人感到困惑的问题,到底在on筛选器还是用where筛选器指定逻辑表达式呢?on和where的最大区别在于,如果在on应用逻辑表达式那么在第三步outer join中还可以把移除的行再次添加回来,而where的移除的最终的。 第六步:group by 分组,生成虚拟表 vt4 第七步:having ???????? 对vt4应用having筛选器,生成虚拟表 vt5 第八步:select 处理select 列表,生成虚拟表vt6 第九步:distinct 将vt6 中重复的行去掉,生成虚拟表vt7 第十步:order?? by 将vt7中的行按order by 子句中的列列表排序,生成一个游标vc8 第十一步: top 从vc8的开始处选择指定数量或比例的行,生成虚拟表vt9,并返回给调用者 三. SQL语句扩展 1.select 1.1 选择性插入语句 1.1.1 Insert into? table1 (field1 )? Select field2 from table2 要求table1必须存在。 1.1.2 select field1 into table1 from table2 ?? 要求table1不存在,在运行时会自动创建表名为table1,字段名为field1的一个表。 1.2打开其它数据源 /* OracleSvr为链接服务器名 ,本示例假定已经创建了一个名为 ORCLDB 的 Oracle 数据库别名。*/ EXEC sp_addlinkedserver OracleSvr,? --链接服务器名OracleSvr,sysname类型 ?? MSDAORA, --provider_name数据源提供程序,此处为oracle ?? ORCLDB --数据源名称 GO Select *

文档评论(0)

精华文档888 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档