明确界定某个对象什么的sql 语句对象无效叫做定义

[转]XSLT 是什么类型的语言?
编辑:www.fx114.net
本篇文章主要介绍了"[转]XSLT 是什么类型的语言? ",主要涉及到[转]XSLT 是什么类型的语言? 方面的内容,对于[转]XSLT 是什么类型的语言? 感兴趣的同学可以参考一下。
XSLT 语言由万维网联盟 (W3C) 定义,并且该语言的 1.0 版本在 1999 年
11 月 16 日作为&推荐书&发布。我已经在拙作
XSLT Programmers'
Reference
中提供了全面的规范和用户指南,因此我不打算在本文中涵盖相同内容。确切地讲,本文的目的只是使读者理解
XSLT 适合大规模事物的哪些位置。
XSLT 的最初目的是将信息内容与 Web 显示分离。如其最初定义那样,HTML
通过按抽象概念(如段落、重点和编号列表)定义显示来实现设备独立性。随着
Web
变得越来越商业化,出版人希望其输出质量能达到与印刷品相同的质量。这逐渐导致越来越多地使用具体显示控件,如页面上材料的明确字体和绝对位置。然而不幸的是完全可以预料其副作用,即将相同的内容传递到替代设备,如数字电视机和
WAP 电话(印刷业的行话
再现效果)将会变得日益困难。
由于吸收了印刷业使用 SGML 的经验,在 1998 年初定义了一种标记语言
XML,它用于表示独立于显示的结构化内容。与 HTML
使用一组固定概念(如段落、列表和表)不同,XML
标记中使用的标记完全是用户定义的,其用意是这些标记应该与所关注的对象(如人、地点、价格和日期)相关。尽管
HTML 中的元素本质上都是印刷样式(虽然处于抽象级别),而 XML
的目标是元素应该描述实际对象。例如,清单 1
显示了表示足球锦标赛结果的 XML 文档。
&results group="A"&&match& &date&10-Jun-1998&/date& &team score="2"&Brazil&/team& &team score="1"&Scotland&/team&&/match&&match& &date&10-Jun-1998&/date& &team score="2"&Morocco&/team& &team score="2"&Norway&/team&&/match&&match& &date&16-Jun-1998&/date& &team score="1"&Scotland&/team& &team score="1"&Norway&/team&&/match&&match& &date&16-Jun-1998&/date& &team score="3"&Brazil&/team& &team score="0"&Morocco&/team&&/match&&match& &date&23-Jun-1998&/date& &team score="1"&Brazil&/team& &team score="2"&Norway&/team&&/match&&match& &date&23-Jun-1998&/date& &team score="0"&Scotland&/team& &team score="3"&Morocco&/team&&/match&&/results&
如果要通过 Web
浏览器显示这些足球赛的结果,不要指望系统会产生合理的布局。需要其它一些机制来告诉系统如何在浏览器屏幕、电视机、WAP
电话或真正在纸张上显示数据。这就是使用样式表的目的。样式表是一组说明性的规则,它定义了应如何表示源文档中标记标识的信息元素。
W3C 已经定义了两个系列的样式表标准。第一个是在 HTML 中广泛使用的
CSS(级联样式表),当然它也可以在 XML 中使用。例如,可以使用 CSS
来表示何时显示发票,应支付的总额应该用 16 点 Helvetica
粗体字显示。但是,CSS
不能执行计算、重新整理或排序数据、组合多个源码中的数据或根据用户或会话的特征个性化显示的内容。在这个足球赛结果的例子中,CSS
语言(即使是最新版本
CSS2,尚未在产品中完全实现)的功能还不够强大,不能处理这项任务。由于这些原因,W3C
已着手开发更强大的样式表语言 XSL(可扩展样式表语言),并采纳了 SGML
社区中开发的 DSSSL(文档样式、语义和规范语言)中许多好的构思。
在 XSL 的开发过程中(这在 DSSSL 中已有所预示),发现在准备 XML
文档以备显示的过程中执行的任务可以分成两个阶段:转换和格式化。转换是将一个
XML 文档(或其内存中的表示法)转换成另一个 XML
文档的过程。格式是将已转换的树状结构转换成两维图形表示法或可能是一维音频流的过程。XSLT
是为控制第一阶段&转换&而开发的语言。第二阶段&格式化&的开发工作还是进行中。但实际上,大多数人现在使用
XSL 将 XML 文档转换成 HTML,并使用 HTML
浏览器作为格式化引擎。这是可行的,因为 HTML 实际上只是 XML
词汇表的一个示例,而 XSLT 可以使用任何 XML 词汇表作为其目标。
将转换成一种语言和格式化成另一种语言这两个操作分离经证实的确是一种好的决策,因为转换语言的许多应用程序经证明无法向用户显示文档。随着
XML
日益广泛地用作电子商务中的数据互换语法,对于应用程序将数据从一个
XML 词汇表转换成另一个 XML
词汇表的需求也在不断增加。例如,某个应用程序可能从电视收视指南中抽取电视节目的细节,并将它们插入按次付费客户的月帐单中。同样,还有许多实用的数据
转换,在这些转换中源词汇表和目标词汇表是相同的。它们包括数据过滤,以及商务操作,如施行涨价。因此,随着在系统中开始越来越多地以
XML 语法的形式使用数据,XSLT
就逐渐成为由于处理这些数据的随处可见的高级语言。
在拙作中,我做了这样一个比喻:XSLT 与 XML 的关系,就好象 SQL
与表格化数据的关系一样。关系模型的强大功能并非来自用表存储数据的思想,而是源于
SQL 中可行的基于关系运算的高级数据操作。同样,XML
的层次化数据模型对应用程序开发者的帮助实际上也非常小。正是因为 XSLT
作为 XML 数据的高级操作语言提供了如此强大的功能。
就某些方面而言,XSLT
作为一种语言来说是非常古怪的。我不打算在本文中讨论已做出的设计决策的基本原理,尽管可以通过它们在逻辑上追溯到语言设计者确定的对
XSLT 的要求。如需更完整的说明,请参阅拙作的第 1 章。
以下概述了 XSLT 语言的部分主要特性。
XSLT 样式表是一个 XML 文档 。通过使用 XML
的尖括号标记语法来表示文档的结构。这种语法在某种程度上是比较笨拙的,而此决策可以使该语言变得更罗嗦。但是,它确实有好处。它表示可以自动使用
XML 的所有词汇设备(例如,Unicode
字符编码和转义,使用外部实体等等)。它表示很容易使 XSLT
样式表变成转换的输入或输出,使该语言可以作用于自身。它还使将期望的
XML
输出块嵌入样式表变得很容易。实际上,许多简单的样式表基本上可以写作期望输出文档的模板,并且可以将一些特殊指令嵌入文本中,以便插入输入中的变量数据或计算某个值。这就使
XSLT 在这个简单的级别上非常类似于许多现有的专用 HTML 模板语言。
基本处理范例是模式匹配。 在这方面,XSLT
继承了文本处理语言(如 Perl)的传统,这种传统可以一直追溯到 1960
年代的语言,如 SNOBOL。XSLT
样式表包括一组模板规则,每条规则都使用以下方式:&如果在输入中遇到此条件,则生成下列输出。&规则的顺序是无关紧要的,当有几条规则匹配同一个输入时,将应用冲突解决算法。然而,XSLT
与串行文本处理语言的不同之处是 XSLT
对输入并非逐行进行处理。实际上,XSLT 将输入 XML
文档视为树状结构,每条模板规则都适用于树中的一个节点。模板规则本身可以决定下一步处理哪些节点,因此不必按输入文档的原始顺序来扫描输入。
XSLT 处理器使用树状结构作为其输入,并生成另一个树状结构作为输出。图
1 中显示了这一点。
常常通过对 XML
文档进行语法分析来生成输入树状结构,而输出树状结构通常被串行化到另一个
XML 文档中。但 XSLT 处理器本身操作的是树状结构,而不是 XML
字符流。这个概念最初给许多用户的感觉是不切实际的,结果却对理解如何执行更复杂的转换起了关键作用。首先,它表示
XSLT
处理器可以理解源文档中与树状结构无关的特殊之处。例如,无论属性是包括在单引号中还是在双引号中,都不可能应用不同的处理,因为会将这两种形式视为同一
个基本文档的不同表示方法。更深入地看,它表示处理输入元素或生成输出元素是一个原子操作。不可能将处理元素的开始标记和结束标记分成单独的操作,因为一
个元素会自动表示成树模型的单节点。
XSLT 使用叫作 XPath 的子语言来引用输入树中的节点。XPath 本质上是与具有层次结构的 XML
数据模型相匹配的查询语言。它可以通过按任何方向浏览树来选择节点,并根据节点的值和位置应用谓词。它还包括用于基本字符串处理、数字计算和布尔代数的工
具。例如,XPath 表达式
../@title 选择当前节点的父代元素的标题属性。XPath
表达式用于选择要进行处理的输入节点、在条件处理期间测试条件,以及计算值以便插入结果树中。模板规则中还使用了 XPath
表达式的简化形式&模式&来定义特定模板规则适用于哪些节点。XPath 在单独的 W3C
推荐书中定义,它允许使用在其它上下文中再使用的查询语言,特别是用于定义扩展超链接的 XPointer。
XSLT 以传统语言(如 Lisp、Haskell 和
Scheme)中的功能性编程的概念为基础。样式表由模板组成,这些模板基本上是单一功能
--
每个模板将输出树的一部分定义成一部分输入树的功能,并且不产生副作用。使用无副作用的规则受到严格控制(除了转义成用类似
Java 的语言编写的外部代码)。XSLT
语言允许定义变量,但不允许现有变量更改它的值 --
即没有赋值语句。这个策略使许多新用户感到困惑,其目的是为了允许逐步应用样式表。其原理是如果语言没有副作用,那么对输入文档做很小的改动时,不必从头执行整个转换就应该可以计算出对输出文档的最后更改。目前必须说这只是理论上的可能,任何现有
XSLT 处理器还不能实现。(注:虽然 XSLT
以功能性编程概念为基础,但它还不是一个完整的功能性编程语言,因为它缺少将函数当作一级数据类型进行处理的能力。)
在这个阶段,使用示例会使语言变得更清楚。清单 2
显示了列出足球赛结果的简单样式表。
&xsl:transform
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"&
&xsl:template match="results"&
&head&&title&
Results of Group &xsl:value-of select="@group"&
&/title&&/head&
&body&&h1&
Results of Group &xsl:value-of select="@group"&
&xsl:apply-templates&
&/body&&/html&
&/xsl:template&
&xsl:template match="match"&
&xsl:value-of select="team[1]"& versus &xsl:value-of select="team[2]"&
&p&Played on &xsl:value-of select="date"&&/p&
&p&Result:
&xsl:value-of select="team[1] "&
&xsl:value-of select="team[1]/@score"&,
&xsl:value-of select="team[2] "&
&xsl:value-of select="team[2]/@score"&
&/p&
&/xsl:template&
&/xsl:transform&
这个样式表包括两个模板规则,一个匹配
&results& 元素,另一个匹配
&match& 元素。
元素的模板规则输出页面的标题,然后调用
&xsl:apply-templates& ,这是一个 XSLT
指令,它将处理当前元素的所有子代,对于每个子代都使用其适当的模板规则。在本例中,
&results& 元素的所有子代都是
元素,所以会用第二个模板规则来处理它们。规则输出了一个标识比赛的次级
HTML 标题(以 "Brazil versus Scotland" 的形式),然后生成 HTML
段落,给出了比赛的日期和两队的比分。
该转换的结果就是一个 HTML 文档,该文档在浏览器中的表示如图 2
所示。
这是一种非常简单的表示信息的方法。然而,XSLT
的功能比这要强大得多。清单 3
包含了另一个可以操作相同源数据的样式表。这次,样式表计算一个比赛名次表,用来显示锦标赛结束时各队的名次。
&xsl:transformxmlns:xsl="http://www.w3.org/1999/XSL/Transform"version="1.0"&&xsl:variable name="teams" select="//team[not(.=preceding::team)]"&&xsl:variable name="matches" select="//match"&&xsl:template match="results"&&html&&body& &h1&Results of Group &xsl:value-of select="@group"&&/h1& &table cellpadding="5"& &tr& &td&Team&/td& &td&Played&/td& &td&Won&/td& &td&Drawn&/td& &td&Lost&/td& &td&For&/td& &td&Against&/td& &/tr& &xsl:for-each select="$teams"& &xsl:variable name="this" select="."& &xsl:variable name="played" select="count($matches[team=$this])"& &xsl:variable name="won" select="count($matches[team[.=$this]/@score & team[.!=$this]/@score])"& &xsl:variable name="lost" select="count($matches[team[.=$this]/@score & team[.!=$this]/@score])"& &xsl:variable name="drawn" select="count($matches[team[.=$this]/@score = team[.!=$this]/@score])"& &xsl:variable name="for" select="sum($matches/team[.=current()]/@score)"& &xsl:variable name="against" select="sum($matches[team=current()]/team/@score) - $for"& &tr& &td&&xsl:value-of select="."&&/td& &td&&xsl:value-of select="$played"&&/td& &td&&xsl:value-of select="$won"&&/td& &td&&xsl:value-of select="$drawn"&&/td& &td&&xsl:value-of select="$lost"&&/td& &td&&xsl:value-of select="$for"&&/td& &td&&xsl:value-of select="$against"&&/td& &/tr& &/xsl:for-each& &/table&&/body&&/html&&/xsl:template&&/xsl:transform&
这里没有足够的篇幅来完整地说明这个样式表,简而言之,它为球队声明了一个变量,变量值是一个节点集合,其中每个参赛球队都有一个实例。然后它计算每支球队的胜、平或负的比赛场次总数,以及球队进球或失球的总数。图
3 显示了它在浏览器中的最终输出结果。
这个示例的目的是说明 XSLT
不单单能够对源文档中出现的文本指定字体和布局。它是一个完整的编程语言,能够以任何方式转换源数据以供显示,或者输入另一个应用程序。
原文出自:/developerworks/cn/xml/x-xslt/
如果您觉得这篇文章对您有帮助,欢迎使用支付宝对我们捐助。
本文标题:
本页链接:还可以输入150字
标题已超出10个字
您发布过于频繁,请2分钟后重新发布
登录后才可以发表评论哦!可以选择
赶紧当第一个评论者吧!
您可能感兴趣的新闻:
24小时42区 TOP 10
夜路走多了总会遇到鬼
遗传型违章
两个人都不是啥好鸟,我有个哥们是蒙古的,青年摔角冠军,家里开了个小饭馆。有次晚上饭馆来了四个小混混惹事,不给钱就走了,他爹追出去理论。他刚好回家,听他妈讲完立马追了出,黑灯瞎火与一群人撕打起来。回到家里跟他妈说全撂倒了,他妈问撂倒几个?他说:5个.其中一个挨了揍嘴还硬 非占便宜说是他爹
觉的把咕咕g的口水往抽屉转发的人更讨厌
这具体原因都写那么大字了还不详啊
这b玩儿意怎么繁殖,难道在我脸上约炮吗
这是我唯一能买得起的土豪同款了
空穴来风的感觉吧……
想起小时候听到一个故事,有个熊孩子在树上对着老头尿尿。老头哈哈大笑说:给你一个糖。你看吧,对着人尿尿就有糖。我这糖少,你去对着那些叔叔尿。SQL语句是什么意思?_百度知道
SQL语句是什么意思?
我有更好的答案
按默认排序
SQL将每一行的LAST_NAME列与“Jones”进行比较,该行将被包括到结果表中;Paul&#39。  有时。这是因为SQL提供对事务的支持,这就是我们想要对其进行排序的列:  SELECT DISTINCT BRANCH_OFFICE  FROM EMPLOYEES  ORDER BY BRANCH_OFFICE ASC。  我们说过系统会“试着”将值填入。NULL是SQL中的一种特殊情况;  INSERT INTO EMPLOYEES VALUES   (&#39,表6中的结果将是不正确的, column [ASC] | [DESC } ] ]  WHERE predicate [ { logical-connector predicate } ];并不影响原来的表,工资为$40,但是UPDATE语句可以对多行进行操作:  SELECT columns FROM tables [WHERE predicates]。  UPDATE EMPLOYEES  SET GRADE = 16,称之为“非确定”(unknown)值?这是因为我们还能够按照表中其他列进行排序;  相反;)。未列出的列中将自动填入缺省值。只有两个断言都满足时整个表达式才会满足,用户可以输入如下语句,我们可能希望对某一些而不是全部的列进行赋值; OR LAST_NAME = 'Smith&#39。  现在已经消除了重复的行。  UPDATE语句的语法流图如下面所示,45000)。由于SQL中没有UNDO语句或是“你确认删除吗:  SELECT BRANCH_OFFICE。  例如。因为NULL都是相等的。让我们看一下如何对SELECT语句进行限制使得它只返回希望得到的行,&#39,',这一卑鄙的工作可以由以下这条语句来实现。因为查询和检索数据是数据库管理中最重要的功能:  等于 =  不等于 &lt。在执行该语句时;Jones&#39,我们刚刚发现Indiana Jones的等级为16;,200000),我们必须使用SQL标准日期格式(yyyy-mm-dd),而不是标准的比较形式;,HIRE_DATE  FROM EMPLOYEES  ORDER BY SALARY DESC;Jones&#39。如果你希望以字母表顺序将结果列出又该怎么做呢;Boston'  AND FIRST_NAME = &#39,系统将拒绝这一次操作并返回一个错误信息,'Indiana'Bessie&#39,Update和DJones'Los Angles&#39,它将结果显示在终端的显示屏上.00的职员(参见表7):  SELECT [DISTINCT]   (column [{,在对下面的内容进行说明之前; 50000,SELECT语句还可以完成聚合计算并对数据进行排序,2000年临近。但由于NULL需要进行特殊处理;Indiana&#39,在断言中进行NULL判断时需要特殊的语法;Boston&#39。以下是你将要用到的语句,回过头来看我们图1中的EM-PLOYEES表。例如;Boston&#39。  SELECT语句功能强大,只有满足条件的行才被包括到结果表中;  关键字NOT后面跟着用圆括号括起来的比较表达式,但是并没有关系?”之类的警告;Smith',像我们刚才所讨论的情况。如果你希望以降序排列:  SELECT * FROM EMPLOYEES  WHERE NOT(BRANCH_OFFICE = &#39。如果决定取消Los Angeles办事处并解雇办事处的所有职员,12;  WHERE子句对条件进行了设置:SQL编程技巧   掌握SQL四条最基本的数据操作语句;  以上SELECT语句的执行将产生如图2中表2所示的结果。这些工作由另一类SQL语句—数据操作语言(DML)语句进行处理:  SELECT * FROM EMPLOYEES  WHERE LAST_NAME = &#39,我们用方括号来表示可选项,',&#39。  由于我们在SELECT语句中只指定了一个列; NULL或是逻辑操作符NOT(NULL);,你想让Boston办事处中的所有职员搬到New York。如果你想要查看除了Boston办事处的职员以外的其他所有职员的信息时,OR和NOT,可以看到Indiana Jones的工薪等级或年薪值都是未知的。  对于日期类型;Jones&#39,大括号表示可以重复任意次数的项(不能在实际的SQL语句中使用这些特殊字符);,这些行将被按照第二列进行排序:  DELETE FROM EMPLOYEES  WHERE BRANCH_OFFICE = '  LAST_NAME = &#39,我们还希望看到按照聘用时间从最近聘用的雇员开始列出的列表;Smith&#39。双引号用来封装限界标识符。从而需要使用特殊的操作符IS NULL和IS NOT NULL;,&#39。由于结果表中只包括断言值为“真”的行。然而,但是在系统中可以进行定义,你可以使用以下语句;  请注意我们在列名之后使用了关键字IS NULL或IS NOT NULL;;Boston&#39,要将雇员John Smith的记录插入到本例的表中,否则该行被忽略,如果在第二列中又出现了重复的行时;,所以该行将不被选中,或称之为连接)的工作,我们通过逻辑连接符AND将两个断言连接起来,其结果仍是非确定的,SALARY。如果用户需要定义一个SELECT语句来使得当其中任何一项成立就满足条件时,   HIRE_DATE;  这里我们进行了多列的选择和排序,&#39。为什么即使是结果表中只有一个列时我们也必须指出列名呢,NULL)。其结果是对结果取否定; AND FIRST_NAME = &#39,100000),所以SELECT语句在SQL中是工作量最大的部分;Smith&#39:  SELECT * FROM EMPLOYEES  WHERE SALARY &Bessie&#39,只要在SELECT语句中加上DISTINCT子句;,我们在后面的例子中将要用到它,我们可以通过下面的SQL语句对数据库进行更新(并清除那些烦人的NULL),或者将结果送到打印机或文件中;Indiana&#39:  SELECT * FROM EMPLOYEES  WHERE SALARY IS NULL。在SQL语句中断言通常通过比较来表示,&#39。例如;= SALARY,整个断言就被认为是非确定的,我们再一次对SELECT语句的语法进行更新;  这一查询的结果如表4所示。当然;Davy&#39,而字符串和日期类型的值都要用单引号来区别。请注意在ORDER BY之后是如何放置列名BRANCH _OFFICE的?  正如我们早先提到过的。为了增加可读性而在数字间插入逗号将会引起错误:  INSERT INTO table   [(column { ,可以使用OR连接符。在本文中,NULL。  断言可以与其他的断言嵌套使用,'  NULL和三值逻辑  在SQL中NULL是一个复杂的话题。在执行过程中系统根据用户的标准从数据库中选出匹配的行和列;;, BRANCH_OFFICE)  VALUE(   &#39:  SELECT * FROM EMPLOYEES  WHERE LAST_NAME = ':INSERT,&#39,如果没有设置缺省值则填入NULL。  在我们开始之前;  如同UPDATE语句中一样;, SALARY = 40000  WHERE FIRST_NAME = &#39,表中所有行中的部门值都将被更新为'&#39,   &#39。这些条件由断言(predicate)进行指定(断言指出了关于某件事情的一种可能的事实),仅仅是访问数据库来分析数据并生成报表的人可以对其他SQL语句一窍不通, table} ]  [ORDER BY column [ASC] | [DESC  [{ ,即断言成立。其中的每一行对应一个特定的雇员记录。  INSERT语句  用户可以用INSERT语句将一行记录插入到指定的一个表中;=  下面给出了不是基于等值比较的一个例子,你可以使用如下语句,事情会变得很混乱,而值的顺序要对应新的列的顺序;Jones')  OR (LAST_NAME = &#39。如果在第一个列中出现了重复的行时,让我们转到EMPLOYEES表中的其他部分, columns}])| *  FROM table [ {。  例如,我们有必要在此对它们进行一一说明。如果事务的某一部分失败。  同样要注意输入文字值时要使用单引号。记住,请注意所有的整形十进制数都不需要用单引号引起来;'。  让我们看一下使用图1中EMPLOYEES表的一些例子(这个表是我们以后所有SELECT语句实例都要使用的:COLUMN = NULL,8,如求平均值;Jones',如表1所示,SQL操作将失败,我们对结果表中的列作出了选择但返回的是表中所有的行,20;。  这种形式相当简单。所以SQL允许除了在true 和false之外还有第三种类型的真值,所以我们的结果表中也只有一个列;  有时定义一个断言的最好方法是通过相反的描述来说明:  SELECT * FROM EMPLOYEES,除了执行规则之外它还要进行类型检查,&#39,column})]  VALUES   (columnvalue [{;Los Angles'New York&#39。要消除结果中的重复行,我们将引导你掌握四条最基本的数据操作语句—SQL的核心功能—来依次介绍比较操作符:  SELECT DISTINCT BRANCH_OFFICE  FROM EMPLOYEES,显然你已经开始算是精通SQL了,则可以使用以下SELECT语句;,7);  小于 &;;  此时;  SQL沿用数学上标准的表达式求值的约定—圆括号内的表达式将最先进行求值;John'Pocahontas'Indiana&#39,   &#39,我们以后将进行详细的讨论,&#39,此外SQL还能完成从多个表中进行查询(多表查询;  这一查询将返回年薪高于$50;  在最后一项中。DDL语句对数据库对象如表,所以可以想象它们是能够通过GRADE小于等于SALARY的检查的、COLUMN &lt、选择断言以及三值逻辑。  同样我们应该指出ORDER BY子句只将临时表中的结果进行排序。如果该语句中省略了FIRST_NAME和LAST_NAME项(这两项规定不能为空);?只要使用ORDER BY子句就可以按照升序或降序来排列结果,000:  UPDATE EMPLOYEES  SET BRANCH_OFFICE = &#39。其中最常用的为,&#39。):  UPDATE table  SET column = value [{;Boston'Jones&#39,我们先在表名之后列出一系列列名;  INSERT INTO EMPLOYEES VALUES   (&#39。排序的优先级由语句中的列名顺序所决定;,并将结果放到临时的表中,100000),但是NOT操作符将该值取反。当你完成这些学习后:  INSERT INTO EMPLOYEES VALUES   ('Chicago&#39,FIRST_NAME。满足WHERE条件的所有行都将被更新。这次查询的结果如表5所示。   下面我们对开始时给出的SELECT语句的语法进行一下更新(竖直线表示一个可选项。请熟悉这张表。如果类型不符(如将一个字符串填入到类型为数字的列中)。  UPDATE语句  UPDATE语句允许用户在已知的表中对现有的行进行修改。  SELECT语句最简单的语法如下;New York&#39,columnvalue}]),这是因为DDL语句并不处理数据库中实际的数据;  如果忽略WHERE子句,&#39,省略WHERE子句将使得操作施加到表中所有的行, LAST_NAME。列名BRANCH_ OFFICE之后的关键字ASC表示按照升序排列,所以SQL允许在选择表中所有的列时使用*号,该职员的信息将被包括到结果表中(见表6),Indiana Jones应该出现在结果表中,还可以采用另外一种INSERT语句;Jones&#39:  SELECT * FROM EMPLOYEES  WHERE GRADE &lt,   '。  SELECT语句  SELECT语句可以从一个或多个表中选取特定的行和列,关于NULL的详细描述更适合于在SQL的高级教程而不是现在的入门教程中进行介绍。那下面就是你所需要编写的SQL查询;;:  INSERT INTO EMPLOYEES(   FIRST_NAME。  如果SQL拒绝了你所填入的一列值。这些列按照我们创建表时定义的顺序排列:  SELECT BRANCH_OFFICE FROM EMPLOYEES。实际上,16,其他表达式将从左到右进行求值,这些行又将被按照第三列进行排序……如此类推。为了只得到职员Davy Jones的记录。请注意我们改变了列的顺序。  如果比较的两边都是NULL,所以我们输入NULL(不要引号),先使用CREATE TABLE语句来创建一个表(如图1所示)。一次事务将数据库从一种一致性转移到另一种一致性, column = value}]  [ WHERE predicate [ { logical-connector predicate}]]。如果某一职员的姓为“Jones”:  SELECT columns FROM tables,如果你仅仅想查看Davy Jones的信息的话;  这次查询返回整个EMPLOYEES表,我们不知道Jones先生的工薪级别和年薪;,可以用括号将它们括起来,而只要这个值为未知、列和视进行定义,这是因为有多个雇员在同一部门工作(记住SQL从所选的所有行中将值返回):  SELECT [DISTINCT]   (column [{。SQL将先对列出的第一个列进行排序,所以我们还是简略地进行一下说明。  假设我们希望得到按部门排序并从工资最高的雇员到工资最低的雇员排列的列表,请你最好还是使用四位来表示年份。由于这是大多数SQL用户经常用到的;  这次查询的结果如表3所示。将一个非确定断言取反或使用AND或OR与其他断言进行合并之后。  将一个很长的表中的所有列名写出来是一件相当麻烦的事.00,5;第二个值“John”将填到第二列FIRST_NAME中……以此类推,只要两个列都是数字类型的。可以想象运行如下的查询,即使它们并不显示出来。现在我们只需认为NULL表示一种未知的值,如果用户需要显示所有年薪未知的职员的全部信息;'&#39,&#39。  DELETE语句的语法流图如下面所示;部分就是断言。但当你不明确地测试NULL(而它们确实存在)时,在SQL中逗号是元素的分隔符,12, table}]  [ORDER BY column [ASC] | DESC   [ {。  以上对逻辑连接符进行了说明。也可以结合其他SQL语句来将结果放到一个已知名称的表中;  INSERT INTO EMPLOYEES VALUES   (&#39,Indiana Jones并没有出现在查询的结果中,就不能将其与其他值比较(即使其他值也是NULL)。它们并不对表中的行进行处理,UPDATE和DELETE;=  大于或等于 &gt:  SELECT * FROM EMPLOYEES  WHERE LAST_NAME = &#39。  逻辑连接符  有时我们需要定义一条不止一种断言的SELECT语句,000。  让我们来看一看上述INSERT语句的语法图,如果用户需要所有已知年薪数据的职员的信息,用户可以使用逻辑连接符AND、求和以及其他对表中数据的计算;  大于 &gt。举例来说。  SQL中有四种基本的DML操作,用户可以使用如下SELECT语句,Select。SQL允许进行这样的比较,如下,所以NULL不可能满足该检查。而我们在图2和图3中给出了查询的实际结果;  定义选择标准  在我们目前所介绍的SELECT语句中。在直接SQL(direct SQL)中。虽然表面上看来它只用来完成本文第一部分中提到的关系代数运算“选择”(或称“限制”)。在图1中我们给出了一个名为EMPLOYEES的表,但是SQL断言还可以包含其他几种类型的比较。这两个列都包含NULL,语句中其他各列的值也不会填入;'  DELETE语句  DELETE语句用来删除已知表中的行:  SELECT * FROM EMPLOYEES  WHERE SALARY IS NOT NULL,NULL表示未知的值(而不是象某些人所想象的那样表示一个为NULL的值),在执行这条语句时千万要小心,SELECT;Adams&#39,你可以进行如下的查询;&gt。  SELECT语句的结果通常是生成另外一个表。注意结果表中具有重复的行,   &#39。如果某一职员所在部门的办事处在Boston,   &#39。这其实是一个毫无疑义的查询;  当我们以这种形式执行一条SELECT语句时;:  SELECT * FROM EMPLOYEES  WHERE (LAST_NAME = &#39:  INSERT INTO EMPLOYEES VALUES   (&#39。对于SQL来说意味着这个值是未知的;  WHERE BRANCH_OFFICE = '  通过这样的INSERT语句, column [ASC] | DESC }]];)。SQL还提供了许多的功能;'。在本例中,括号内的表达式返回  AND FIRST_NAME = '  INSERT INTO EMPLOYEES VALUES   (&#39,假如你需要查询所有姓为Jones的职员;  小于或等于 &lt。我们将在其他的例子中使用这些结果);  在本例中。  既然你已经理解了INSERT语句是怎样工作的了,   &#39,系统将试着将这些值填入到相应的列中。如同UPDATE语句中一样。  使用最多的六种比较  我们上例中的断言包括一种基于“等值”的比较(LAST_NAME = 'John'  INSERT INTO EMPLOYEES VALUES   ('Davy&#39,为什么;'Jones'。   练掌握SQL是数据库用户的宝贵财 富,并且你也很可能会遇到它:Insert:  DELETE FROM table  [WHERE predicate [ { logical-connector predicate} ] ],则整个事务都会失败,允许在其中选择一项。  假设你想查看雇员工作部门的列表,   HIRE_DATE DESC;  上面的例子说明了一个单行更新。VALUE子句和可选的列名列表中必须使用圆括号,   &#39,系统将会被恢复(或称之为回退)到此事务之前的状态;  和前一篇文章中一样;)。  首先。   回到原来的INSERT的例子。例如,   &#39。我们并没有对SQL能完成的所有功能进行说明,以接受其他的格式,系统返回由所选择的列以及用户选择的表中所有指定的行组成的一个结果表,但结果并不是按照顺序排列的;Indianapolis'  这样;Boston'&Bunyan&#39。如果该断言对于某个给定的行成立。为了保证它们以正确的顺序进行求值;。这就是实现关系投影运算的一个形式;Los Angeles'Smith'&#39。这种语言还允许你使用GRANT和REVOKE命令控制使用者的数据访问权限;,',那么可以用关键字DESC;,可以使用如下语句;,   LAST_NAME。除了对要省略的列输入NULL外;;   AND LAST_NAME = &#39。除了工资括号中的内容;),但实际上它也可以完成其他两种关系运算—“投影”和“连接”;Jones&#39,所有满足WHERE子句中条件的行都将被删除。为了进一步定义一个WHERE子句;。如果;  现在我们完成了数据操作语言(DML)的主要语句的介绍以下摘自百度 SQL基本语句 来自,第一个值“Smith”将填到第一个列LAST_NAME中, column } ] )| *  FROM table [ { ;
定义:sql 语句就是对数据库进行操作的一种语言。 几个简单的基本的sql语句:  选择:select * from table1 where 范围   插入:insert into table1(field1,field2) values(value1,value2)   删除:delete from table1 where 范围   更新:update table1 set field1=value1 where 范围   查找:select * from table1 where field1 like ’%value1%’ (所有包含‘value1’这个模式的字符串)---like的语法很精妙,查资料!   排序:select * from table1 order by field1,field2 [desc]   总数:select count(*) as totalcount from table1   求和:select sum(field1) as sumvalue from table1   平均:select avg(field1) as avgvalue from table1   最大:select max(field1) as maxvalue from table1   最小:select min(field1) as minvalue from table1[separator]
SQL即Structured Query Language ,结构化查询语言,适用于数据编程的一种描述性语言。详细介绍参见百度百科。
sql 语句是对数据库进行操作的一种语言 ,最基本是的 Insert ,Update ,Delete ,Select sql语句 。
楼主你好,SQL语句是一种数据任务指令,可以对数据进行修改查询删除等任务
其他类似问题
1人觉得有用
sql语句的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁}

我要回帖

更多关于 sql语句 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信