网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 交易代码 > SQL语法 > 正文

结构化查询语言SQL

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务
结构化查询语言(SQL)详解之一
    一、SQL语句的分类
    ANSISQL语句分成以下六类(按使用频率排列):
    数据查询语言(DQL):其语句,也称为“数据检索语句”,用以从表中获得数据,确定数据怎样在应用程序给出。保留字SELECT是DQL(也是所有SQL)用得最多的动词,其他DQL常用的保留字有WHERE,ORDERBY,GROUPBY和HAVING。这些DQL保留字常与其他类型的SQL语句一起使用。
    数据操作语言(DML):其语句包括动词INSERT,UPDATE和DELETE。它们分别用于添加,修改和删除表中的行。也称为动作查询语言。
    事务处理语言(TPL):它的语句能确保被DML语句影响的表的所有行及时得以更新。TPL语句包括BEGINTRANSACTION,COMMIT和ROLLBACK。
    数据控制语言(DCL):它的语句通过GRANT或REVOKE获得许可,确定单个用户和用户组对数据库对象的访问。某些RDBMS可用GRANT或REVOKE控制对表单个列的访问。
    数据定义语言(DDL):其语句可在数据库中创建新表(CREATTABLE);为表加入索引等。DDL包括许多与人数据库目录中获得数据有关的保留字。它也是动作查询的一部分。
    指针控制语言(CCL):它的语句,像DECLARECURSOR,FETCHINTO和UPDATEWHERECURRENT用于对一个或多个表单独行的操作。
    目前还没有一个商用的RDBMS支持全部的ANSISQL-92中的所有保留字。例如Jet3.5数据库引擎不支持任何DCL保留字,而是用DataAccesssObject的计划性安全对象和VisualBasic的保留字及关键字取代。同时Jet3.5引擎不需支持CCL语句,因为Jet不处理SQL语句中的指针。
    二、DQL语法详解
    SQL操作符和表达式
    SQL提供基本的算术操作符:<,>,=,<=,>=,<>。SQL增加了一组操作符,用于与文本数据类型的字段值连接(LINK和IN)及处理字段中的NULL值(ISNULL和ISNOTNULL)。SQL语句中的大多数操作符都是双值的。双值函数需要两个操作数,像LIKE,IN,ISNULL等则是单值的。
    对于文本字段数据类型字段的WHERE标准,最有用的操作符是LIKE。在JetSQL中称为LIKE操作符。下表显示了LIKE操作符的ANSISQL语法和用于SQL语句WHERE子句中的JetSQLLike操作符。
    用途ANSISQLJetSQL返回
    取包含字符的任何文本LIKE'%am%'Like"*am*"ram,ramsdamsel,amnesty
    取以字符打头的任何文本LIKE'John%'Like"John*"Johnson,Johnsson
    取以字符结尾的任何文本LIKE'%son'Like"*son"Johnson,Anderson
    取文本和任意单个后缀字符LIKE'Glen_'Like"Glen?"Glenn,Glens
    取文本和任意单个前缀字符LIKE'_am'Like"?am"dam,Pam,ram
    取文本和一个前缀及任意个后缀字符LIKE'_am%'Like"?am*"dams,Pam,Ramses
    注意:为与ANSISQL-92保持一致,本地OLEDB数据提供者(Microsoft.JET.OLEDB.3.51)使用%和_通配符而非Jet的?和*。这种不一致要求修改已存在的DAO代码以适应ADO使用SQL通配符。
    连接表
    1。常规的内部连接或相等连接
    最常见的连接类型是相等连接(或称为INNERJOIN)。例如:
    SELECTPublishers.Name,Titles.ISBN,Titles.TitleFROMPublishersINNERJOINTitlesONPublishers.PubID=Titles.PubID
    也可以写成:
    SELECTPublishers.Name,Titles.ISBN,Titles.TitleFROMPublishers,TitlesWHEREPublishers.PubID=Titles.PubID
    2。多重相等连接
    例如:
    SELECTTitles.Title,Publishers.Name,Titles.ISBN,Authors.AuthorFROMPublishers,Titles,Authors,[TitleAuthor]WHERETitles.ISBN=[TitleAuthor].ISBNANDAuthors.Au_ID=[TitleAuthor].Au_IDANDPublishers.PubID=Tiltes.PubID
    3。外部连接
    INNERJOIN只返回与字段值相匹配的行,OUTERJOIN返回一个表的所有行和另一个表中有匹配值的行。有两种类型的OUTERJOIN。
    LEFTOUTERJOIN返回LEFTOUTERJOIN语句左边表或结果集的所有行和语句右边表具有匹配值的行。WHERE子句中,*=操作符特指LEFTOUTERJOIN
    RIGHTOUTERJOIN返回RIGHTOUTERJOIN语句右边表或结果集的所有行和语句左边表具有匹配值的行。WHERE子句中,=*操作符表求RIGHTOUTERJOIN。
    通常地,按一到多的形式创建。也就是说,代表关系中“一”方的主要表出现在JOIN表达式左边或WHERE子句中操作符左边,而关系中“多”方的相关表出现在表达式或操作符的右边。LEFTOUTERJOIN可以显示主表所有记录,而不管相关表中的匹配记录;RIGHTOUTERJOIN对寻找孤儿记录很有用。所谓“孤儿记录”就是那些在主表中没有相关记录的相关表中的记录,孤儿记录是违反引用一致性规则的结果。
    注意:JetSQL不支持WHERE子句中的*=和=*操作符。用Jet数据库引擎时要用LEFTJOIN或RIGHTJOIN保留字来创建外部连接。
    4。DISTINCTROW
    限定词DISTINCT告诉查询只返回在SELECT语句指定字段中具有不同值的行,JetSQL的限定词DISTINCTROW使得返回集包括在两个表任意字段中有异值的行(而不只是SELECT语句指定显示的字段)
    5。自连接和复合列
    自连接是建立在同一表中具有相似字段数据类型两个字段之间的一个连接。第一个字段常为主键字段,而第二个字段常为与主键字段相关的外部键字段,尽管这种结构并不是自连接必需的(为使自连接结果有意义,前一个要求也许是需要的)。
    建立自连接时,RDBMS建立原表的一个副本,然后把副本连接到原表上。以VB自带的Nwind.mdb为例。其中的Employees表包含ReportsTo字段来表示雇员主管的EmployeeID.在Employees表上建立自连接以显示雇员主管名字的JetSQL语句如下
    SELECTEmployees.EmployeeIDASEmpID,Employees.LastName&;","&;Employees.FirstNameASEmployee,Employees.ReportsToASSupId,EmpCopy.LastName&;","&;EmpCopy.FirstNameASSupervisorFROMEmployees,EmployeesASEmpCopy,EmployeesINNERJOINEmpCopyONEmployees.ReportsTo=EmpCopy.EmployeeID
    SQL汇总函数和GROUPBY及HAVING子句
    1。汇总函数
    COUNT(field_name)返回field_name中包含NOTNULL值的行数,COUNT(*)返回表或查询的行数,不考虑字段的NULL值。
    MAX(field_name)返回集合中field_name的最大值
    MIN(field_name)返回集合中field_name的最小值
    SUM(field_name)返回集合中field_name值的和
    AVG(field_name)返回集合中field_name值的算术平均值
    下面是使用汇总函数的一个例子:
    SELECTCOUNT(*)ASCount,SUM(PubID)ASTotal,AVG(PubID)ASAverage,MIN(PubID)ASMinimum,MAX(PubID)ASMaximumFROMpublishers
    2。GROUPBY和HAVING
    有重要内容的数据库常常有包含代表分类的字段的表,例如Nwind.mdb中的Products表把一种外来食品的品种归为8个类别。当要为一个对象的每个类获得SQL汇总函数值时,可以使用GROUPBY子句,GROUPBY子句创建一个虚表称为分组表。如果想用特殊标准来限制组(类)成员关系,WHERE子句可以建立标准,然而,WHERE作用于整个表。HAVING子句和WHERE子句一样,但它作用于组,而且把SQL汇总函数的适用性限制在一个组的特定集合上。所以可以加上带有IN操作符的HAVING子句。例如:
    SELECTCategoryIDASCategroy,COUNT(ProductID)ASItem,SUM(UnitsInStock)ASSum_StockFROMProductsGROUPBYCategoryIDHAVINGCategoryIDIN(1,2)
    
  • 下一篇资讯: 结构化查询语言SQL(2)
  • 设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
    版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师