标准SQLWord文档格式.docx
- 文档编号:4050119
- 上传时间:2023-05-02
- 格式:DOCX
- 页数:18
- 大小:26.61KB
标准SQLWord文档格式.docx
《标准SQLWord文档格式.docx》由会员分享,可在线阅读,更多相关《标准SQLWord文档格式.docx(18页珍藏版)》请在冰点文库上搜索。
tableexpression 表格名称或包含我们所想要的数据的表格。
externaldatabase 若使用到不是目前的数据库则将其名字定义在externaldatabase当中。
ALL,DISTINCT,DISTINCTROW,TOP属性词用法
SELECT[ALL|DISTINCT|DISTINCTROW|[TOPn[PERCENT]]]FROMtable
ALL 若是您不指定任何的字段数据,则MicrosoftJet数据库引擎(databaseengine)将会选择所有的字段,并依据所定的条件查询出需求数据集。
例如下面这两个例子将会具有相同的效果,都会从职员表格中返回所有字段的数据。
若是我们要查询出职员表格中的所有记录,可以通过下面的语句来完成。
SELECTALL*FROM职员表格;
DISTINCT对某个表格所选择的字段数据,略过重复的情况,也就是说,针对某个字段查询出来的记录结果是唯一的。
例如有许多存放在职员表格的职员数据,也许会具有相同的姓名,所以若是我们用SQL语句中的SELECTDISTINCT,则查询出来的结果将会针对不一样的姓名加以筛选。
若是您把DISTINCT加以省略,则这样的查询会显示所有的记录。
DISTINCTROW 将整条记录重复的记录忽略掉,而不是只有针对某一个字段的数据。
table 指定查询记录所需要的表格。
SELECTDISTINCTROW公司名称 FROM顾客表格INNERJOIN订单表格 ON顾客表格.顾客ID=订单表格.顾客ID ORDERBY公司名称;
如果您忽略DISTINCTROW则会对每个公司产生一行以下的订单数据。
此外,若是DISTINCTROW只有用在一个表格当中,则会被省略掉。
TOP 从第一条或最后一条开始(利用ORDERBY条件子句),返回特定条数的数据。
例如:
当您想要知道在2000年,班上前25名的学生姓名数据时,您可以输入这样的语句:
SELECTTOP25学生姓名 FORM学生表格 WHERE毕业年份=1994 ORDERBY毕业成绩平均分数DESC;
如果您没有加上ORDERBY这行条件的话,您所得到的数据,将会随机的数据。
此外,在TOP语句之后,除了可以加上数字以外,还可以利用保留字PERCENT来查询。
SELECTTOP10PERCENT学生姓名 FROM学生表格 WHERE毕业年份=1994 ORDERBY毕业成绩平均DESC;
PARAMETERS(参数)声明的用法
对于参数型的查询语法中,对参数的名称以及数据类型作声明的操作。
PARAMETERSnamedatatype[,namedatatype[,...]] name
PARAMETERS的名称。
您可以把参数名称当作字符串来使用,若是名称中包含了空字符串,可以利用中括号来处理,例如:
“VBeden”。
datatype 输入参数的数据类型。
若是您在查询时,需要机动的输入姓名,可以利用下列的方式完成:
PARAMETERS“输入姓名”Text;
SELECT*FROM职员表格 WHERE姓名=“输入姓名:
”;
ORDERBY条件语句 此条件子句,通常与SELECT语句合并使用目的是将查询的结果,依照指定字段加以排序。
SELECTfieldlistFROMtableWHEREselectcriteriaORDERBYfield[ASC|DESC][,field2[ASC|DESC][,...]]
fieldlist 欲查询的字段名称。
其中可以与ALL,DISTINCT,DISINCTROW,或TOP一起来使用。
table 欲查询的表格名称。
selectcriteria 查询的标准设置。
field1 指定要依照那个字段作为排序的依据,若是你没有加上ORDERBY查询出的数据集将不会作排序的操作。
ASC 递增顺序类别。
(默认值)
DESC 递减顺序类别。
我们要将输出数据依据出生的先后次序排列,可以利用下面的命令。
SELECT姓名,生日 FROM职员表格 ORDERBY生日
SELECTLastName,FirstName FROMEmployees ORDERBYLastNameASC;
HAVING条件子句 指定一特定的分组记录,并满足HAVING所指定的条件或状态,但条件是针对分组的条件设置。
SELECTfieldlist
FROMtable
WHEREselectcriteria
GROUPBYgroupfieldlist
HAVINGgroupcriteria
fieldlist
显示被查询的字段名称。
(可与ALL,DISTINCT,DISTINCTROW,或TOP相结合)
table
欲查询数据的表格名称。
selectcriteria
选取标准。
groupfieldlist
分组记录的字段名称,到多10个字段。
而这些字段的顺序决定最高到最低的分组阶层。
groupcriteria
决定什么样的分组记录要被显示。
HAVING跟WHERE的用法相当类似,不同之处在于HAVING必须用于GROUP之后的分组数据上。
SELECT分类编,Sum(库存数量)
FROM产品表格
GROUPBY分类编号
HAVINGSum(库存数量)>
100AND产品名称LIKE"
*纸"
;
GROUPBY条件子句 依据指定的字段,将具有相同数值的记录合并成一条。
WHEREcriteria
GROUPBYgroupfieldlist
欲读取的字段名称。
(可与ALL,DISTINCT,DISTINCTROW,或TOP合并使用)
被查询的表格名称。
分组记录的字段名称,到多10个字段,而这些字段的顺序决定最高到最低的分组层次。
SELECT姓名,Count(姓名)AS职员姓名
FROM职员表格
WHERE部门名称='
业务部'
GROUPBY姓名
FROM条件子句 指定表格名称或是查询,其中包含列在SELECT语句的字段数据。
FROMtableexpression[INexternaldatabase]
表格中的字段名称。
(可与ALL,DISTINCT,DISTINCTROW,或TOP相结合)
tableexpression
表格名称,或多个表格的算式。
externaldatabase
若该表格参考到外部的数据库时,将其完整的路径名称记下。
从职员表格下,查询出所有姓名字段的数据(只有姓名字段被查询,其他则不显示)。
SELECT姓名FROM职员表格;
WHERE条件子句 指定查询的条件与限制。
FROMtableexpression
WHEREcriteria
字段名称。
criteria
查询的结果,必须依照这一限制标准。
要查询出职员表格中,所有姓氏是李的数据,可以用下面的语句。
SELECT姓名
WHERE姓氏='
李'
BETWEEN...AND运算符 决定某一人数值是否介于特定的范围之内,此运算符只可以用在SQL的语句中。
expr[Not]BETWEENvalue1ANDvalue2
expr
指定要加以计算的字段与表达式的组合。
value1,value2
所指明的数值范围。
若是要从职员表格查询出所有年龄介于25-30岁的员工,可以利用下面的程序来做。
SELECT姓名,年龄BETWEEN25AND30
FROM职员表格;
LIKE操作数 用来将一字符串与另一特定字符串样式(pattern)比较,并将符合该字符串样式的记录过滤出来。
expressionLIKE"
pattern"
expression
使用在WHERE条件子句,SQL表达式。
pattern
用以比较的字符串样式。
若是你要查询出所有以“李”为首的姓氏,可以利用下面的式子。
Like"
李*"
LIKE操作数的多种范例:
1、多个字符:
(1)"
a*a"
可筛选:
"
aa"
"
aBa"
aBBBa"
,不能筛选:
aBC"
(2)"
*ab*"
abc"
AABB"
Xab"
aZb"
bac"
2、特殊字符:
a“*”a"
aaa"
3、单一字符:
a?
a"
a3a"
4、单一数字:
a#a"
a0a"
a1a"
a2a"
a10a"
5、字符范围:
“a-z”"
f"
p"
j"
2"
&
6、指定字符以外部范围:
“!
a-z”"
7、指定非数字:
0-9”"
A"
~"
0"
1"
9"
8、组合式结构:
a“!
b-m”#"
An9"
az0"
a99"
aj0"
SQL数字函数
1、AVG:
算数平均数 AVG(expr) expr 字段名称或表达式。
若要计算职员身高超过165厘米的职员平均身高,可以利用下面的SQL语句来完成。
SELECTAvg(身高) AS平均身高 FROM职员表格WHERE身高>
165;
2、COUNT:
计算记录条数 COUNT(expr) expr 字段名称或表达式。
若是要统计出业务部门的职员人数,并查询出职员的姓名,可以利用下面的程序。
SELECTCount(姓名)AS职员姓名 FROM职员表格 WHERE部门名称='
3、FIRST与LAST:
返回某字段的第一条数据与最后一条数据。
FIRST(expr)expr 字段名称或表达式。
若是要找出货品数量字段的第一条数据与货品价格字段的最后一条数据时,可以利用下面的查询方式。
SELECTFIRST(货品数量),LAST(货品价格) FROM订单表格
4、MAX,与MIN:
返回某字段的最大值与最小值。
用法同FIRST与LAST。
5、SUM:
返回某特定字段或是运算的总和数值。
SUM(expr) expr 字段名称或表达式。
要计算出货品总价,可使用下面的程序。
SELECT Sum(单位价格*货品数量) AS货品总价FROM订单表格
多层SQL查询 顾名思义,多层的SQL查询的便在于:
“在一个SQL语句中可以包含另一个SQL查询语句,形成内部嵌套的查询类型。
”
comparison[ANY|ALL|SOME](sqlstatement)
expression[NOT]IN(sqlstatement)
[NOT]EXISTS(sqlstatement)
comparison
将表达式与内层查询的结果比较的操作。
对内层查询的结果作搜索的表达式。
sqlstatement
为SELECT语句构成的SQL查询,必须用()将该语句括起来。
我们先从订单表格当中,查询出所有的单位,再将产品表格中的单位与的一一对比,查询出所有高于订单表格的单位价格的记录。
SELECT*FROM产品表格 WHERE单位价格>
ANY(SELECT单位价格FROM订单表格WHERE折扣>
=.25);
SQL与数据库的维护
表格的建立
将SQL中的基本语法作了一番介绍以后,但大多是偏向于数据库数据的查询与过滤,但实际上,我们通过SQL命令所可以做的事还有很多,接下来要介绍的便是如何利用SQL的语法命令来建立一个数据库中的表格。
CREATETABLE语句
我们可以利用这个命令,来建立一个全新的表格,但前提则是:
数据库必须已经存在。
CREATETABLEtable(field1type[(size)][index1][,field2type[(size)][index2][,...]][,nultifieldindex[,...]])
欲建立的新的表格名称。
field1,field2
在新表格中的新的字段名称,到少要一个字段以上。
type
字段的数据类型。
size
字段的大小。
index1,index2
利用CONSTRAINT条件子句定义一个单一字段的索引名称。
multifieldindex
利用CONSTRAINT条件子句定义一个多重字段的索引名称。
建立一个拥有职员姓名与部门字段的表格。
CREATETABLE职员表格(姓名TEST,部门TEST,职员编号INTEGERCONSTRAINT职员字段索引PRIMARYKEY)
在这一个范例中,我们建立了一个表格名称为“职员表格”的表格,并且定义了该表格的主键值,以限制数据不能重复输入。
表格索引的建立 CREATEINDEX语句
这个命令主要是对一个已存在的表格建立索引,其用法如下:
CREATE[UNIQUE]INDEXindexONtable(field[ASC|DESC][,field[ASC|DESC],...])
[WITH{PRIMARY|DISALLOWNULL|IGNORENULL}]
index
欲被建立的索引名称。
table 欲建立索引的表格名称。
field 欲被建立的索引的字段名称。
并可通过DESC保留字,来决定索引的顺序。
在职员表格中建立一个索引。
CREATEINDEX新索引名称
ON职员表格(姓名部门);
表格的字段更新
CONSTRAINT条件子句
CONSTRAINT的功能是类似索引(INDEX)的,虽然CONSTRAINT也可以建立表格之间的关联性。
单一字段索引:
CONSTRAINTname{PRIMARYKEY|UNIQUE|REFERENCESforeigntable[(foreignfield1,foreignfield2)]}
多字段索引:
CONSTRAINTname
{PRIMARYKEY(primary1[,primary2[,...]])
|UNIQUE(unique1[,unique2[,...]])
|FOREIGNKEY(ref1[,ref2[,...]])
|REFERENCESforeigntable[(foreignfield1[,foreignfield2[,...]])]}
name
要被建立的CONSTRAINT名称。
primary1,primary2
被用来设计成主键值的字段名称(可一个以上)。
unique1,unique2
被用来设计成唯一键值的字段名称(可一个以上)。
foreignkey
字段名称,或是参考到别的表格中字段的字段名称。
foreigntable
如前所述,被参考到的表格。
foreignfield1,foreignfield2
在参考到的表格当中,被ref1,ref2字段所指定的字段。
如果被参考的字段是参考表格中的主键值,你也可以省略这个条件子句。
当我们要建立一个新的职员数据表格,表格包含姓名、部门名称与生日三个字段,且由这三个字段建立一个唯一的索引时,可以使用下面这段SQL的语句。
CREATETABLE职员数据表格
(姓名TEST,部门名称TEST,生日DATETIME,CONSTRAINT职员数据表格限制UNIQUE(姓名,部门名称,生日));
以上是SQL中,与数据库表格建立相关的命令,你可以利用这些命令,通过SQL的语句,将数据库表格完整的建立出来,接下来的章节,将针对数据库建立之后的维护与增删所要使用的SQL语句作一介绍。
记录的删除
DELETE语句 我们可以利用DELETE语句,将表格中的记录删除。
(注意:
记录被删除后,无法再复原,所以条件设置要正确)
DELETE[table.*]
欲删除记录的表格名称,也可以用*来取代。
一个或一个以上表格的名称。
此一参数可以为单一的表格名称或是从INNERJOIN,LEFTJOIN,或RIGHTJOIN等运算所得到的结果。
决定表格中记录要被删除的标准。
若是我们要将职员表格中姓名姓名叫做'
李名'
的记录删除,我们可以利用下面的SQL语句来完成。
DELETE*FROM职员表格 WHERE姓名='
;
SELECT...INTO语句
我们可以通过这个命令,利用既存表格查询,来建立一个新表格的查询语句。
SELECTfield1[,field2[,...]]INTOnewtable[INexternaldatabase]
FROMsource
欲拷贝到新表格的字段名称。
newtable
欲建立之新表格的名称,不可是已经存在的表格。
若是该表格在另外的外部数据库时,该数据库的名称。
source
记录数据拷贝的来源表格名称,可以是单一的表格或是一段SQL查询之语句。
你可以通过下面的SQL语句,来建立一个新的“训练名册”表格。
SELECT职员表格.姓名,职员表格.部门
INTO训练名册FROM职员表格
WHERE职称='
新进人员'
INNERJOIN操作数 当某一个共同的字段数据相等时,将两个表格的记录加以组合。
SELECTfields
FROMtable1INNERJOINtable2
ONtable1.field1compoprtable2.field2
table1,table2
欲进行记录组合的表格名称。
欲组合的字段名称。
(必须具有相同的数据类型)
compopr
比较关系运算符如下:
“=”,“<
”,“>
”,“<
=”,“<
>
”等。
若是你要把分类表格与产品表格作组合,可参考下面的SQL语句。
SELECT分类名称,产品名称
FROM分类表格INNERJOIN产品表格
ON分类表格.分类编号=产品表格.分类编号;
UNION操作数 我们可以通过UNION操作数来建立连接的查询条件,UNION操作数可以将两个以上的表格或是查询的结果组合起来。
[TABLE]query1UNION[ALL][TABLE]query2[UNION[ALL]
[TABLE]queryn[...]]
query1,query2,queryn
为一个SELECT的语句,或是一个已存在的查询名称,或是一个已存在的表格名称。
你可以利用下面的SQL语句,将订单数量超过1000的顾客表格记录,与新客户表格作UNION的操作。
TABLE新客户表格UNIONALL
SELECT*
FROM顾客表格
WHERE订单数量>
1000;
DROP语句 针对所指定的表格或字段加以删除,或是把索引删除。
DROP{TABLEtable|INDEXindexONtable}
欲删除之表格或索引依附之表格名
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 标准 SQL