热点推荐:ASP.Net | ADO.Net | VB.Net | Web服务器 | Access | MSSQL | MySQL | Oracle | .Net控件 | Win 9x | Win 2000 | Win 2003 | DOS | Unix | 注册表 | 应用其它 | 安装调试 | 基本操作 | 使用技巧 | 系统优化 |故障处理 | 个性风格 | 病毒安全 | 专杀工具
您现在的位置: 中华IT技术网 >> 数据库 >> MSSQL >> 正文
全文
Select 应用和技巧
作者:1024k    文章来源:本站原创    更新时间:2007-9-12

【前言 】
 
 SQL的全写是 Structured Query Language ,含义是结构化的查询语言,目的在于令大家有一种快捷方便的语言查询数据库内的纪录。它的作用是使用一种指令式对数据库进行各种数据操作。并可依使用者的要求简单、妥善地规划数据库网要(Database Schema),以配合运作的需求。
 
【SQL的历史 】
 
 在1970年,E.F.Codd提出了一种结构性查询数据库的构想,但当时并没有建立这语法。1974年IBM的两名人员Chamberlin及Boyce研究了SEQUEL(Structured English Query Language),建立了SQL的初形,在1976年,IBM再度更新SEQUEL,变成了SEQUEL/2,并把它改名为SQL。SQL的名字是在这段时间出来的。1977年,IBM研发了一项产品System R,尝试把SQL运用在系统内,取得很大的成效。由当时开始,SQL成了处理商业数据库的一种标准语言。1986年,美国国家标准局ANSI(American National Standards Institute)采用SQL作为国际标准,1989年再度更新。1992年的版本是现在最流行的版本。

【数据库系统的种类 】
 
 在众多数据库系统,比较普遍的是Microsoft Access(适合小型需求)、Microsoft SQL Server(这不是一个操作系统,而是一种强大的数据库格式,有自己的SQL语法)和Oracle(非常强大的数据库,使用上弹性较大,亦有自行发展SQL语法)。所有数据库内的数据皆会被编译(OLE对象除外),倚靠SQL指令查询回来。

【数据库结构 】
 
 首先我们得了解数据库的结构。数据库的结构的最上层为数据表,一个数据库内可有多个,在数据表中有许多不同的字段,而每笔数据因应字段的不同填上不同的数据。数据表、字段的名字都是自己定的,但每笔资料却没有自己的名字,为了让每笔数据有一个独一无二的「名字」,我们会在字段中定下一个主索引,而字段类型同常是自动编号,它是每建立一笔数据自动编派的。
  字段类型分很多种,包括自动编号(用以定义主索引)、备忘(储存最多65536个文字)、文字(储存最多255个文字)、数字、货币、日期/时间、是/否(只能处理真或假的数据)、OLE对象(Object Linking Embedded,把图档、声音等不经编译插入数据库)及超级链接。

【数据库范例 】
 
 范例:建立一个数据表范例。
 资料表:student_record
 字段:  ID(自动编号)  Name(文字)  Class(文字)  StudentNo(数字)       1        小白     1A      20       2        小明     2A      15       3        大文     3B      18
 由上述范例可见,所有字段隶属于student_record数据表。由于自动编号无法由使用者指定,所以只好一直递增。Name是文字,可储存任何英文字、中文字、符号而不多于255字,Class亦然。而StudentNo只能是数字,不能输入其它文字。

【SQL指令类别及基本指令 】
 
 SQL语言共分四个类别的指令:
 
 ●数据定义语言
 Data Definition Language(DDL)用作开新数据表、设定字段、删除数据表、删除字段,管理所有有关数据库结构的东西
 
 ●数据查询语言
 Data Query Language(DQL)只能取回查询结果
 
 ●数据操作语言
 Data Manipulation Language(DML)用作新增一笔数据,删除、更新等工作
 
 ●数据控制语言
 Data Control Language(DCL)用作处理数据库权限及安全设定
以下是一些常用、主要的SQL指令:●Select (选取数据,属DQL)●Update (更新数据,属DML)●Delete (删除数据,属DML)●Insert (新增资料,属DML)●Create (新增有关数据库结构的东西,属DDL)●Drop   (删除有关数据库结构的东西,属DDL)●Alter  (更改结构,属DDL)●Grant  (给予权限,属DCL)●Revoke (取走权限,属DCL)
【用程序下达SQL指令 (ASP) 】

 在ASP中,我们会使用DSN或DSN-less两种方式连接数据库。使用DSN是在控制台的ODBC32位内设定数据库路径及驱动程序,使用DSN-less则在ASP网页中列出它使用数据库路径及驱动程序。关于更多DSN-less的信息,大家可参阅本站的技术文章「用ASP连结数据库的语法」。首先得建立连接组件(它不是ASP的内建对象),再用DSN开启。而连接组件的Execute方式可以执行SQL指令,以下是范例执行SQL指令的结果:
<%Set objDBconn=Server.Createobject("ADODB.connection")objDBconn.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("abc.mdb")objDBconn.execute("Delete * from student_record")%>
 第一行建立连接组件。第二行以Access数据库的驱动程序开启它,并以Server.MapPath指定绝对路径。第三行要求它执行删除数据表内所有字段。

【后序 】

 这里是SQL的简介,但SQL并不是来得这么简单,背后学的可多呢。而在它的语法里面,骇客想出了数据隐码的攻击方式。它并非漏洞,而是拿SQL中的单引号( '' )玩填空的游戏进行攻击,非常可怕。SQL语法中当中以Select最为使用广泛,学的东西和花样也最多,如Join(串联两个数据表)、Where(界定数据需符合的条件)等,由于偏离文章主题,这里暂且不说。希望这篇文章能给大家一个初步的SQL概念,并且开始建立自己的数据库网站。
 
【前言 】

 Select指令是SQL中唯一的一个Data Query Language,在SQL中占有很高的地位,作用是查询数据库的数据,而不会更变数据库的架构。它提供了非常强大的查询功能。这篇,笔者将会教大家基本的Select用法,以及关键词Where。这次的教学对于初学者比较难一些,大家留心看啊。如果大家有看过我的文章「SQL简介」,你该会对数据库有一个明确的观念:数据库可以拥有一个或多个数据表,而数据表中又有一个或很多个栏。把这些字段填上数据便是一笔数据。
 【范例数据表 】
 
 现在先假设有一个数据表,呵,这是国际某大银行使用的数据库(来源不便透露),如下所示:
 资料表──「Bank」 ID(自动编号) Name(字符串)  Money(数字)  AccountCreated(日期时间)    1     小白      200     16-4-2003 23:12:25    2     大文      195     17-4-2003 18:13:20    3     小芳      200     15-2-2002 16:59:45    4     小娟      350     18-8-1999 11:30:32

【范例语法 】
 
 我们要对这个数据作出查询。
 
 1. 选取所有纪录的所有字段。
 标准语法:Select * from 数据表名称
 实例语法:Select * from Bank
语法解说:「Select」表示要使用SQL的Select指令。「*」表示要所有字段,注意并不是所有纪录而且所有字段。「from 数据表名称」表示要从哪个资料表选取。由于没有条件(下篇会说明)的限制,因此选回来的数据会是所有数据。
资料传回:整个数据表的所有纪录。

2. 只选取所有纪录的Name和Money字段。
标准语法:Select 字段1,字段2,…… from 数据表名称
实例语法:Select Name,Money from Bank
语法解说:「字段1,字段2,……」表示选取什么字段。若是一个字段则无须加上逗号,多个字段则要用逗号分隔。
资料传回:传回所有纪录,但只有Name及Money的数据。

3. 选取所有纪录的所有字段,并依ID由大至小排序。
标准语法:Select * from 数据表名称 order by 字段 DESC
实例语法:Select * from Bank order by id DESC
语法解说:「order by」表示依后面的两个附加条件排序,是关系运算子之一。「字段」表示要排序的字段。「DESC」表示以降序(大至小)排序。当然也可以由升幂(小至大)排序,虽然根据某字段排序,但传回来的东西仍是所有数据。这就好比要同学们依高度排队,排队后他们不会死掉的。
资料传回:整个数据表所有纪录,并依ID作出了降序排序。

4. 选取所有纪录的Money字段,并依AccountCreated由小至大(先至后)排序。
标准语法:Select 字段 from 数据表名称 order by 字段 ASC
实例语法:Select Money from Bank order by AccountCreated ASC
语法解说:「ASC」表以升幂(小至大),由于是日期字段,因此依先至后排列。
资料传回:传回所有Money字段数据,并依AccountCreated由先至后排列。

5. 选取所有纪录的所有字段,先根据Money升幂排序,然后再根据AccountCreated降序排序。
标准语法:Select * from 数据表名称 order by 字段 排序方式, 字段 排序方式实例语法:Select * from Bank order by Money ASC, AccountCreated DESC语法解说:主排序 + 次排序 方式区分先后。用逗号分隔多种排序方式。资料传回:传回Money先是较少的数据,若两者相同以AccountCreated为后者先排。
 【数据增值站 (本栏内容不一定要明白) 】
 
 ‧如何注明字符串、日期及数字
 在SQL语法中,字符串、日期及数字会有不同的标示方式。上面已提到字符串要使用单引号包住,那么日期及时间该用什么方式标注?在不同的数据库系统,这里将会有一个分别。MySQL及Oracle,依旧用单引

[1] [2] [3] [4] [5] 下一页

  • 上一篇文章:
  • 下一篇文章:
  • 相关文章
    最新更新
    编辑推荐
    热门图片
    频道大全
    文章阅读排行
    周排行
    月排行