版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、SQL功能与特性SQL功能与特性其实,在前面的文章中,已经提及SQL命令的一些基本功能,然而,通过SQL命令,程序设计师或 数据库管理员(DBA)可以:(一)建立数据廓的表格。(包括设置表格所可以使用之空间)(二)改变数据库系统环境设置。(三)针对某个数据库或表格,授予用户存取权限。(四)对数据库表格建立索引值.(五)修改数据扉表格结构.(新建、删除或是修改表格字段)(六)对数据库进行数据的新建.(七)对数据库进行数据的删除。(A)对数据库进行数据的修改。(九)对数据库进行数据的查询.这几项便是通过SQL命令可以完成的事情,看起来是不是比起“查询”两个字所代表的功能要多的 多了呢?SQL语法的
2、分类其实SQL命令并不是非常多,可是要把SQL用到出神入化,却也只需要短短几个命令便够,因为 SQL命令是针对关系型数据库所建立出来的语法叙述,所以SQL在这类数据库中所发挥的功能非常的强, 以下将针对在VB中常用的SQL语法基本命令加以分类介绍。在说明SQL的命令以及使用语法之前,以 下将SQL做了的分类,在致上SQL语法所使用到的类型,可以说都已包含在这些类别当中.第一类、属性词(Predicates)在SQL命令中用来指明所要选择的记录的方式。如ALL、TOP与DISTINCT等等。第二类、声明(Declaration)针对SQL Parameter或Parameter Query的名称
3、与数据类型做声明,如PARAMETERS的声明等 等.第三类、条件子句(Clause)在SQL的查询中,利用一些表达式定义出查询的条件,以缩小寻找的范围,如WHERE。第四类、运算符(Operator)与操作数(Operation)在SQL的查询中,与Operation共同组成表达式(Expression),如BETWEEN.AND运算符与 INNER JOIN 操作数。第五类、函数(Function)一些SQL常见的函数,像是AVG()是求算数平均数的函数。第六类、SQL语句(Statement)SQL的语句,可以说是SQL语法的主体,用来对某一个特定的数据库发出指示,并返回相关的数据, 而
4、SQL的语法结构,基本上可以利用下面的式子来表示:命令十条件子句例如:SELECTTROM TAB WHERE TAB.NAME=A其中的“FROM.WHERE”便是一个条件子句,其实SQL的语法并不难,您只需记住这样的一个规 则,相信可以很快的了解SQL用法.SQL语法与命令SELECT语句SELECTpredicate*|table.*|table.field ,table.field2,. AS aliasl ,alias2,.FROM tableexpression ,.IN externaldatabaseWHERE.GROUP BY.HAVING.ORDER BY.WITH OWN
5、ERACCESS OPTIONSELECT语句包括下面几个部分predicate如前面所述,包括了 ALL, DISTINCTQISTINCTROW,与TOP我们可以利用这样的语句去限制查询后所 得的结果。*从指定表格中指定所有的字段。table针对被选择出的记录的字段,所指定表格的名称。fieldrfield2想要读取数据的字段名称,如果包含了一个以上的字段,会依照列出的顺序来读取数据。alias1,alias2用来替代在表格实际字段名称的化名,tableexpression表格名称或包含我们所想要的数据的表格。externaldatabase若使用到不是目前的数据库则将其名字定义在exte
6、rnaldatabase当中。ALL,DISTINCT,DISTINCTROW,TOP 属性词用法SELECT ALL|DISTINCT|DISTINCTROW|TOP nPERCENT FROM tableALL若是您不指定任何的字段数据,贝ij Microsoft Jet数据库引擎(database engine)将会选择所有的 字段,并依据所定的条件查询出需求数据集。例如下面这两个例子将会具有相同的效果,都会从职员表格中返回所有字段的数据。例如:若是我们要查询出职员表格中的所有记录,可以通过下面的语句来完成。SELECT ALL* FROM 职员表格;DISTINCT对某个表格所选择的字
7、段数据,略过重复的情况,也就是说,针对某个字段查询出来的记录结果是唯 一的。例如有许多存放在职员表格的职员数据,也许会具有相同的姓名,所以若是我们用SQL语句中的SELECT DISTINCT,则查询出来的 结果将会针对不一样的姓名加以筛选。若是您把DISTINCT加以省略,则这样的查询会显示所有的记录。DISTINCTROW将整条记录重复的记录忽略掉,而不是只有针对某一个字段的数据。table指定查询记录所需要的表格。例如:SELECT DISTINCTROW 公司名称FROM顾客表格INNER JOIN订单表格ON顾客表格.顾客旧=订单表格.顾客IDORDER BY公司名称;如果您忽略DI
8、STINCTROW则会对每个公司产生一行以下的订单数据.此外,若是DISTINCTROW 只有用在一个表格当中,则会被省略掉.TOP从第一条或最后一条开始(利用ORDER BY条件子句),返回特定条数的数据。例如:当您想要知道在2000年,班上前25名的学生姓名数据时,您可以输入这样的语句:SELECT TOP 25学生姓名form学生表格WHERE毕业年份=1994ORDER BY毕业成绩平均分数DESC;如果您没有加上ORDER BY这行条件的话,您所得到的数据,将会随机的数据.此外,在TOP语 句之后,除了可以加上数字以外,还可以利用保留字PERCENT来查询.例如:SELECT TOP
9、 10 PERCENT 学生姓名FROM学生表格WHERE毕业年份=1994ORDER BY毕业成绩平均DESC;PARAMETERS (参数)声明的用法对于参数型的查询语法中,对参数的名称以及数据类型作声明的操作.PARAMETERS name datatype,name datatype(,.namePARAMETERS的名称.您可以把参数名称当作字符串来使用,若是名称中包含了空字符串,可以利 用中括号来处理,例如:“VBedeM datatype输入参数的数据类型。例如:若是您在看询时,需要机动的输入姓名,可以利用下列的方式完成:PARAMETERS 输入姓名 Text;SELECT*F
10、ROM职员表格WHERE姓名=输入姓名:”;ORDER BY条件语句此条件子句,通常与SELECT语句合并使用目的是将查询的结果,依照指定字段加以排序。SELECT fieldlistFROM tableWHERE selectcriteriaORDER BY fieldASC|DESC,field2ASC|DESC,.fieldlist欲查询的字段名称.其中可以与ALL, DISTINCT, DISINCTROW,或TOP一起来使用.table欲查询的表格名称。selectcriteria查询的标准设置.fieldl指定要依照那个字段作为排序的依据,若是你没有加上order by查询出的数据
11、集将不会作排序的 操作。ASC递增顺序类别。(默认值)DESC递减顺序类别.例如:或是我们要将输出数据依据出生的先后次序排列,可以利用下面的命令。SELECT姓名,生日FROM职员表格ORDER BY 生日SELECT LastName,FirstNameFROM EmployeesORDER BY LastName ASC;IN条件子句指定要速胜哪一个外部数据库的表格。(必须是Microsoft Jet数据库引擎所可以连接的数据库,如 dBase,Paradox 等等)SELECT|INSERTINTO destination INpath|Mpathf, MtypeM|,mtype;DAT
12、ABASE=pathFROM tableexpression INpath|HpathH Mtype,|,type;DATABASE=pathdestination欲插入数据的外部表格名称.tableexpression表格名称或是被读取数据的表格名称.这个参数可以是一个单一的表格名称,或是一段已经被存储的 SQL查询等。path包含该表格的完整路径名称.type数据库的类型名称,通常是当数据库部属于Jet database时才会使用。(例如:dBASE lll,dBASEIV,Paradox 3.x,Paradox 4.x,或 Btrieve)例如:下面这两段的意义相同PartA .FROM
13、 TableIN MHdBASE IV;DATABASE=C:DBASEDATASALES;PartB .FROM TableIN MC:DBASEDATASALESH ndBASE IV;M例如:Microsoft Jet databaseSELECT顾客编号FROM顾客表格IN CUSTOMER.MDBWHERE顾客编号Like “A*其中CUSTOMER.MDB。为Jet database的数据库名称,其中包含了顾客表格。例如:dBASE III or IVSELECT顾客编号FROM顾客表格IN HC:DBASEDATASALESH HdBASE IV;HWHERE顾客编号Like ”
14、A.”;所以当我们使用不同于ACCESS的数据库时,必须指明该数据库的类型名称.HAVING条件子句指定一特定的分组记录,并满足HAVING所指定的条件或状态,但条件是针对分组的条件设置。SELECT fieldlistFROM tableWHERE selectcriteriaGROUP BY groupfieldlistHAVING groupcriteria fieldlist显示被查询的字段名称。(可与ALL, DISTINCT, DISTINCTROW,或TOP相结合) table欲查询数据的表格名称。selectcriteria选取标准.groupfieldlist分组记录的字段名
15、称,到多10个字段。而这些字段的顺序决定最高到最低的分组阶层.groupcriteria决定什么样的分组记录要被显示.HAVING跟WHERE的用法相当类似,不同之处在于HAVING必须用于GROUP之后的分组数据上. 例如:SELECT分类编,Sum(库存数量)FROM产品表格GROUP BY分类编号HAVING Sum(库存数量)100 AND产品名称LIKE”纸、GROUP BY条件子句依据指定的字段,将具有相同数值的记录合并成一条.SELECT fieldlistFROM tableWHERE criteriaGROUP BY groupfieldlistfieldlist欲读取的字段
16、名称.(可与ALL, DISTINCT, DISTINCTROW,或TOP合并使用) table被查询的表格名称.groupfieldlist分组记录的字段名称,到多10个字段,而这些字段的顺序决定最高到最低的分组层次. 例如:SELECT姓名,Count(姓名)AS职员姓名FROM职员表格WHERE部门名称=业务部GROUP BY 姓名FROM条件子句指定表格名称或是查询,其中包含列在SELECT语句的字段数据.SELECT fieldlistFROM tableexpressionIN externaldatabase fieldlist表格中的字段名称.(可与ALL,DISTINCT,D
17、ISTINCTROW,或TOP相结合) tableexpression表格名称,或多个表格的算式.externaldatabase若该表格参考到外部的数据库时,将其完整的路径名称记下.例如:从职员表格下,查询出所有姓名字段的数据(只有姓名字段被查询,其他则不显示)。SELECT姓名FROM职员表格;WHERE条件子句指定查询的条件与限制.SELECT fieldlistFROM tableexpressionWHERE criteriafieldlist字段名称。(可与 ALL,DISTINCT,DISTINCTROW,或 TOP 相结合) tableexpression表格名称,或多个表格的
18、算式。criteria查询的结果,必须依照这一限制标准。例如:要查询出职员表格中,所有姓氏是李的数据,可以用下面的语句.SELECT姓名FROM职员表格WHERE姓氏李;BETWEEN.AND 运算符决定某一人数值是否介于特定的范围之内,此运算符只可以用在SQL的语句中.exprNotBETWEEN valuel AND value2expr指定要加以计算的字段与表达式的组合。valuel ,value2所指明的数值范围.例如:若是要从职员表格查询出所有年龄介于25-30岁的员工,可以利用下面的程序来做.SELECT 姓名,年龄 BETWEEN 25 AND 30FROM职员表格;LIKE操作
19、数用来将一字符串与另一特定字符串样式(pattern)比较,并将符合该字符串样式的记录过滤出来.expression LIKE pattern”expression使用在WHERE条件子句,SQL表达式。pattern用以比较的字符串样式。例如:若是你要查询出所有以“李”为首的姓氏,可以利用下面的式子.Like ”李*”LIKE操作数的多种范例:1、多个字符:(1)a-a可筛选:“aaTaBaJaBBBa,不能笳选aBC”(2)M*ab*M可筛选:、bc”AABB”JXab”,不能箫选:aZbTbac”2、特殊字符:可筛选不能滋选:“aaa”3、单一字符:Ma?aH可筛选:、aa7a3a”aB
20、a”,不能筛选 JaBBBa”4、单一数字:“#a可筛选:a0aTa1aTa2a, 不能筛选:aaa7a10a”5、字符范围:Mua-zHM可筛选:不能筛选:6、指定字符以外部范围:7、指定非数字:可砒:”A7宣&”,”小,不能筛选:“O”,T,W 8、组合式结构:可筛选:“An9TazOTa99,不能筛选:“abc,“aj(TSQL数字函数1、AVG:算数平均数AVG(expr) expr 字段名称或表达式.例如:若要计算职员身高超过165厘米的职员平均身高,可以利用下面的SQL语句来完成 SELECT Avg(身匍 AS平均身高FROM职员表格WHERE身高165;2、COUNT:计算记录
21、条数COUNT(expr) expr字段名称或表达式.例如:若是要统计出业务部门的职员人数,并查询出职员的姓名,可以利用下面的程序SELECT Count(姓名)AS职员姓名FROM职员表格WHERE部门名称业务部;3、曰RST与LAST:返回某字段的第一条数据与最后一条数据。FIRST(expr)LAST(expr) expr 字段名称或表达式。 例如: 若是要找出货品数量字段的第一条数据与货品价格字段的最后一条数据时,可以利用下面的查询方 式.SELECT F旧ST(货品数量),LAST(货品价格)FROM订单表格4、MAX,与MIN:返回某字段的最大值与最小值。 用法同FIRST与LAS
22、T.5、SUM:返回某特定字段或是运算的总和数值。SUM(expr) expr 字段名称或表达式。例如:要计算出货品总价,可使用下面的程序.SELECTSum(单位价格货品数量)AS货品总价FROM订服表格多层SQL查询顾名思义,多层的SQL查询的便在于:“在一个SQL语句中可以包含另一个SQL查询语句,形成 内部嵌套的查询类型。”comparisonANY|ALL|SOME(sqlstatement)expressionNOTIN (sqlstatement)NOTEXISTS(sqlstatement)comparison将表达式与内层查询的结果比较的操作。expression对内层查询的
23、结果作搜索的表达式。 sqlstatement为SELECT谙句构成的SQL查询,必须用0将该语句括起来。例如:我们先从订单表格当中,查询出所有的单位,再将产品表格中的单位与的一一对比,查询出所有高于 订单表格的单位价格的记录.SELECT FROM产品表格WHERE单位价格ANY (SELECT单位价格FROM订单表格WHERE折扣=.25);SQL与数据库的维护表格的建立将SQL中的基本语法作了一番介绍以后,但大多是偏向于数据库数据的查询与过漉,但实际上,我 们通过SQL命令所可以做的事还有很多,接下来要介绍的便是如何利用SQL的语法命令来建立一个数据 库中的表格.CREATE TABLE
24、 语句我们可以利用这个命令,来建立一个全新的表格,但前提则是:数据库必须已经存在。CREATE TABLE table(field1 type(size)index1,field2 type(size)index2,.,nultifieldindex,.) table欲建立的新的表格名称。field1,field2在新表格中的新的字段名称,到少要一个字段以上.type字段的数据类型.size字段的大小.indexl ,index2利用CONSTRAINT条件子句定义一个单一字段的索引名称。multifieldindex利用CONSTRAINT条件子句定义一个多重字段的索引名称。例如:建立一个拥
25、有职员姓名与部门字段的表格。CREATE TABLE职员表格(姓名TEST,部门TEST,职员编号INTEGER CONSTRAINT职员字段索 弓PRIMARY KEY)在这一个范例中,我们建立了一个表格名称为“职员表格”的表格,并且定义了该表格的主键值,以限制 数据不能重复输入.表格索引的建立CREATE INDEX 语句这个命令主要是对一个已存在的表格建立索引,其用法如下:CREATEUNIQUEINDEX index ON table(fieldASC|DESC,fieldASC|DESC,.)WITH PRIMARYIDISALLOWNULLIIGNORENULL index欲被建立
26、的索引名称。table欲建立索引的表格名称.field欲被建立的索引的字段名称.并可通过DESC保留字,来决定索引的顺序.例如:在职员表格中建立一个索引.CREATE INDEX新索弓|名称ON职员表格(姓名部门);表格的字段更新CONSTRAINT条件子句CONSTRAINT的功能是类似索引(INDEX)的,M CONSTRAINT也可以建立表格之间的关联性。单一字段索引:CONSTRAINT namePRIMARY KEY|UNIQUE|REFERENCESforeigntable(foreignfield1,foreignfield2)多字段索引:CONSTRAINT namePRIMA
27、RY KEY(primary1 ,primary2,.)|UNIQUE(unique1,unique2,.)IFOR日GN KEY (ref)IREFERENCES foreigntable(foreignfield1,foreignfield2,.) name要被建立的CONSTRAINT名称。pnmary1,primary2被用来设计成主键值的字段名称(可一个以上).uniquel 9unique2被用来设计成唯一键值的字段名称(可一个以上)。foreign key字段名称,或是参考到别的表格中字段的字段名称。foreigntable如前所述,被参考到的表格.foreignfieldl ,
28、foreignfield2在参考到的表格当中,被ref1,ref2字段所指定的字段.如果被参考的字段是参考表格中的主键值,你也可 以省略这个条件子句。例如:当我们要建立一个新的职员数据表格,表格包含姓名、部门名称与生日三个字段,且由这三个字段建立一 个唯一的索引时,可以使用下面这段SQL的语句。CREATE TABLE职员数据表格(姓名TEST,部门名称TEST,生日DATETIME, CONSTRAINT职员数据表格限制UNIQUE(姓名, 部门名称,生日);以上是SQL中,与数据库表格建立相关的命令,你可以利用这些命令,通过SQL的语句,将数据库表格 完整的建立出来,接下来的章节,将针对数
29、据库建立之后的维护与增删所要使用的SQL谙句作一介绍。表的删除DELETE语句我们可以利用DELETE语句,将表格中的记录删除.(注意:记录被删除后,无法再复原,所以条件 设置要正确)DELETEtable.*FROM tableexpressionWHERE criteria table欲删除记录的表格名称,也可以用,来取代。tableexpression一个或一个以上表格的名称。此一参数可以为单一的表格名称或是从INNER JOIN, LEFT JOIN,或 RIGHTJOIN等运算所得到的结果.criteria决定表格中记录要被删除的标准.例如:若是我们要将职员表格中姓名姓名叫做李名的记
30、录删除,我们可以利用下面的SQL语句来完成.DELETE . FROM职员表格WHERE姓名=李名;数据库表格相关的操作命令SQL除了可以作为查询与数据库表格的建立的工具外,对于数据库与表格的新建、删修、与维护,与 具有相当不错的功能,若是读者使用SQL命令得宜,对于整个效率的提高有着很大的帮助,所以对于SQL 语句所带来的优势,常常会遇到一个情况,就是:“当我们对多个表格作曳杂与多步骤的处理时,或许SQL 只要一个语句就可以完成所有的需求与目标”,乍看一下,或许觉得有些玄妙,但是接下来的章节,会让 你了解其中的妙处。SELECT.INTO 语句我们可以通过这个命令,利用既存表格查询,来建立一
31、个新表格的查询语句。SELECT field1,field2,.INT0 newtableIN externaldatabaseFROM sourcefield1,field2欲拷贝到新表格的字段名称.newtable欲建立之新表格的名称,不可是已经存在的表格.externaldatabase若是该表格在另外的外部数据库时,该数据库的名称.source记录数据拷贝的来源表格名称,可以是单一的表格或是一段SQL查询之语句。 例如:你可以通过下面的SQL语句,来建立一个新的“训练名册”表格。SELECT职员表格.姓名,职员表格.部门INTO训练名册FROM职员表格WHERE职称=新进人员;INNE
32、R JOIN操作数当某一个共同的字段数据相等时,将两个表格的记录加以组合SELECT fieldsFROM tablel INNER JOIN table2ON tablel .fieldl compopr table2.field2tablel ,table2欲进行记录组合的表格名称.fieldl ,field2欲组合的字段名称.(必须具有相同的数据类型)compopr比较关系运算符如下:,y ,等。例如:若是你要把分类表格与产品表格作组合,可参考下面的SQL语句。SELECT分类名称,产品名称FROM分类表格INNER JOIN产品表格ON分类表格.分类编号=产品表格.分类编号;UNION
33、操作数我们可以通过UNION操作数来建立连接的查询条件,UNION操作数可以将两个以上的表格或是查询 的结果组合起来.TABLEquery1 UNION ALLTABLEquery2 UNION ALLTABLEqueryn .queryl ,query2,queryn为一个SELECT的语句,或是一个已存在的查询名称,或是一个已存在的表格名称.例如:你可以利用下面的SQL语句,将订单数量超过1000的顾客表格记录,与新客户表格作UNION的操 作。TABLE新客户表格UNION ALLSELECT *FROM顾客表格WHERE订单数量1000;ALTER语句在一个表格被建立之后,利用ALTE
34、R语句,我们可以去修改表格的字段设计。ALTER TABLE tableADD COLUMN field type(size)CONSTRAINT indexICONSTRAINT multifieldindexIDROP COLUMN field|CONSTRAINT indexname table欲被ALTER的表格名称。field要被增加或删除的字段名称.type字段数据类型.size字段大小。index对此字段的索引。例如:在职员表格中新建一个“薪水”的字段。ALTER TABLE职员表格ADD COLUMN 薪水 CURRENCY;例如:在职员表格中删除一个“薪水”的字段.ALTER TABLE 职员表格 DROP COLUMN 薪水;DROP语句针对所指定的表格或字段加以删除,或是把索引删除。DROP TABLE table|INDEX index ON table table欲删除之表格或索引
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年施工质量评价合同
- 2026年亲子园玩具租赁合同
- 2025年信息化办公系统升级项目可行性研究报告
- 2025年生物降解塑料产业发展项目可行性研究报告
- 2025年文创产品开发与营销项目可行性研究报告
- 2025年园区一体化管理平台可行性研究报告
- 2025年人工智能交通管理系统可行性研究报告
- 终止生产合同范本
- 熟人卖房合同范本
- 电商行业平台运营面试技巧及答案
- 国家开放大学电大本科【国际私法】2025年期末试题及答案
- 税收实务中关税课件
- 核医学科甲状腺功能亢进症核素治疗护理规范
- 道路清扫保洁服务投标方案
- 婴幼儿托育管理职业生涯规划
- 事业单位财务培训
- 基础眼屈光学屈光不正教案(2025-2026学年)
- 光伏运维合同
- 视频监控系统工程监理细则(完整资料)
- 1.手术室患者人文关怀管理规范中国生命关怀协会团体标准TCALC003-2023
- 2025年国家开放大学(电大)《经济法》期末考试备考试题及答案解析
评论
0/150
提交评论