SQL2000数据库的查询

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
除返回TOP n[PERCENT]指定的行外,还返回与TOP n[PERCENT],返回的昀后一行记录中由ORDER BY子句指定列值相同的数据行
列名
指明返回结果中的列,如果是多列,用逗号隔开
*
通配符,返回所有列值
续表
参数
功能
{表名│视图名│表别名}.*
限定通配符“*”返回的作用范围
表达式
表达式,可以为列名、常量、函数或它们的组合
(所影响的行数为1行)
3.LIKE关键字【例4.12】查询“李”姓员工的基本信息,可以写为:SELECT * FROM employees WHERE姓名LIKE '李%'
程序执行结果如下:编号姓名性别部门电话地址
1003
李建国
1
采购部
01032147588
北京市民主路6号
1101
李圆圆
0
财务部
01032358697
第4章
数据库的查询
程序执行结果如下:
商品编号数量售出时间2 Nhomakorabea1
2004-10-15 00:00:00.000
2
1
2004-10-16 00:00:00.000
5
2
2004-10-26 00:00:00.000
(所影响的行数为3行)【例4.10】查询进货总金额小于10000元的商品名称,可以写为:SELECT商品名称FROM goods WHERE进货价*数量<10000
生产厂商
dell公司
TCL公司
惠普公司
佳能公司
联想公司
三星公司
索尼公司
(所影响的行数为7行)
3.使用TOP n指定返回查询结果的前n行记录【例4.4】查询进货表中商品名称、单价和数量的前4条记录,程序为:
SELECT TOP 4商品名称,进货价,数量FROM goods程序执行结果如下:
商品名称进货价数量
北京市仁爱路一巷41号
(所影响的行数为2行)
【注意】LIKE只适用数据类型为char、nchar、varchar、nvarchar、datetime、smalldatetime、binary和varbinary的数据,以及特定情况下数据类型为text、ntext和image数据。
匹配符的含义:%代表任意长度的字符串;_代表任意一个字符;[]指定某个字符的取值范围;[^]指定某个字符要排除的取值范围。
表4.1 SELECT子句参数
参数
功能
ALL
显示所有记录,包括重复行,ALL是系统默认的
DISTINCT
如果有相同的列值,只显示其中一个。此时,空值被认为相等
TOP n [PERCENT]
指明返回查询结果的前n行,如果后面紧跟PERCENT,则返回查询结果的前n%行,若n%为小数则取整
WITH TIES
其中,用[ ]表示可选项。SELECT语句是比较复杂的语句,上述结构还不能完全说明其用法,下面将把它拆分为若干部分详细讲述。
SELECT语句至少包含两个子句:SELECT和FROM,SELECT子句指定要查询的特定表中的列,FROM子句指定查询的表。WHERE子句指定查询的条件,GROUP BY子句用于对查询结果进行分组,HAVING子句指定分组的条件,ORDER BY子句用于对查询结果进行排序。
【例4.1】查询员工表中所有员工的姓名和联系电话,可以写为:SELECT姓名,电话FROM employees程序执行结果如下:
姓名
电话
李建国
01032147588
李圆圆
01032358697
刘金武
01032298726
万兴国
01032658325
孟全
01058546230
黎美丽
01058964357
程序执行结果如下:商品名称MP3播放器CRT显示器
(所影响的行数为2行)
2.逻辑表达式【例4.11】查询2005年1月1日以前进货且进货价大于1000元的商品,可以写为:SELECT商品名称FROM goods WHERE进货时间<'2005-1-1' AND进货价>1000
程序执行结果如下:商品名称打印机
4.1 SELECT语句结构
SELECT语句能够从数据库中检索出符合用户需求的数据,并将结果以表格的形式返回,是SQL Server中使用昀频繁的语句之一。它功能强大,所以也有较多的子句,包含主要子句的基本语法格式如下:
SELECT列名1 [ ,列名2 ]... [ INTO新表名] FROM表名1 [ ,表名2 ]... [ WHERE条件] [ GROUP BY列名列表] [ HAVING条件] [ ORDER BY列名列表[ASC | DESC] ]
(所影响的行数为9行)
4.2.2 FROM子句
只要SELECT子句有要查询的列,就必须使用FROM子句指定进行查询的单个或者多个表。此外,SELECT语句要查询的数据源除了表以外还可以是视图,视图相当于一个临时表,其语法格式如下:
FROM {表名|视图名} [ ,...n ]
当有多个数据源时,可以使用逗号“,”分隔,但是昀多只能有16个数据源。数据源也可以像列一样指定别名,该别名只在当前的SELECT语句中起作用。方法为:数据源名AS别名,或者数据源名别名。指定别名的好处在于以较短的名字代替原本见名知意的长名。
WHERE子句用于指定搜索条件,过滤不符合查询条件的数据记录,使用比较灵活且复杂。可以使用的条件包括比较运算、逻辑运算、范围、模糊匹配以及未知值等。表4.2中列出了过滤的类型和用于过滤数据的相应搜索条件。
表4.2过滤的类型与相应搜索条件
过滤类型
搜索条件
比较运算符
=、>、<、>=、<=、<>、!>、!<、!=
IDENTITYCOL
返回标识列
ROWGUIDCOL
返回行全局惟一标识列
列别名
在返回的查询结果中,用此别名替代列的原名。使用列别名有三种定义方法,分别为:列名AS列别名;列名列别名;列别名=列名
1.使用通配符“*”,返回所有列值【例4.2】查询员工表中的所有记录,程序为:
SELECT * FROM employees
SELECT编号AS number,name=姓名,电话telephone FROM employees程序执行结果如下:
number name telephone 1001赵飞燕01032198454 1002刘德发01032298726 1003李建国01032147588 1101李圆圆01032358697 1102刘金武01032298726 1103万兴国01032658325 1201孟全01058546230 1202黎美丽01058964357 1301冯晓丹01036571568 1302王峰01032987564 1303陈吉轩01058796545(所影响的行数为11行)
数据库的查询
数据库检索速度的提高是数据库技术发展的重要标志之一。在数据库的发展过程中,数据检索曾经是一个非常困难的事情,直到使用了SQL之后,数据库的检索才变得相对简单。对于使用SQL的数据库,检索数据都要使用SELECT语句。使用SELECT语句,既可以完成简单的单表查询、联合查询,也可以完成复杂的联接查询、嵌套查询。
刘金武
1
财务部
01032298726
北京市建国路101号
1103
万兴国
1
财务部
01032658325
北京市南大街南巷250号
1201
孟全
1
库存部
01058546230
北京市南大街南巷115号
1202
黎美丽
0
库存部
01058964357
北京市教育路32号
1301
冯晓丹
0
销售部
01036571568
北京市育才路78号
此时空值被认为相等toppercent指明返回查询结果的前行如果后面紧跟percent则返回查询结果的前ties除返回topnpercent指定的行外还返回与topnpercent返回的昀后一行记录中由order子句指定列值相同的数据行列名指明返回结果中的列如果是多列用逗号隔开通配符返回所有列值续表参数功能表名视图名表别限定通配符返回的作用范围表达式表达式可以为列名常量函数或它们的组合identitycol返回标识列rowguidcol返回行全局惟一标识列列别名在返回的查询结果中用此别名替代列的原名
【例4.7】在Employees表中查询姓名为王峰的员工的联系电话,程序为:SELECT姓名,电话FROM employees AS c WHERE c.姓名='王峰'
程序执行结果如下: 姓名电话 王峰01032987564
(所影响的行数为1行)
4.2.3 WHERE子句
WHERE子句指定查询的条件,限制返回的数据行。其语法格式如下:WHERE指定条件
5.使用列表达式在SELECT子句中可以使用算术运算符对数字型数据列进行加(+)、减(-)、乘(*)、除(/)和取模(%)运算,构造列表达式,获取经过计算的查询结果。【例4.6】查询各件商品的进货总金额,可以写为:SELECT商品名称,进货价*数量AS总金额FROM goods
程序执行结果如下:商品名称总金额打印机12050.0000液晶显示器26520.0000数码相机19040.0000扫描仪15968.0000笔记本电脑156000.0000 MP3播放器8244.0000摄像机35100.0000台式电脑68500.0000 CRT显示器4740.0000
4.BETWEEN关键字【例4.13】查询零售价格为2000元~3000元的所有商品,可以写为:
SELECT商品名称,零售价FROM goods WHERE零售价BETWEEN 2000 AND 3000程序执行结果如下:
商品名称零售价 液晶显示器2980.0000数码相机3000.0000 CRT显示器2200.0000
(所影响的行数为3行)
5.IN关键字
【例4.14】查询打印机、摄像机的进货价格,程序为:SELECT商品名称,进货价FROM goods WHERE商品名称IN ('打印机','摄像机')程序执行结果如下:商品名称进货价打印机1205.0000摄像机5850.0000
(所影响的行数为2行)
6.NULL关键字
【注意】数据类型为char、nchar、varchar、nvarchar、text、datetime和smalldatetime的数据,引用时要用单引号括起来。
【例4.9】查询在2005年1月1日以前销售的商品信息,可以写为:SELECT商品编号,数量,售出时间FROM sell WHERE售出时间<'2005-1-1'
打印机
1205.0000
10
液晶显示器
2210.0000
12
数码相机
2380.0000
8
扫描仪
998.0000
16
(所影响的行数为4行)
4.使用列别名改变查询结果中的列名【例4.5】使用列的别名,查询员工表中所有记录的员工编号(别名为number),姓名(别名为name)和电话(别名为telephone),程序为:
1302
王峰
1
销售部
01032987564
北京市沿江路123号
1303
陈吉轩
1
销售部
01058796545
北京市德外大街19号
(所影响的行数为11行)
2.使用DISRINCT关键字消除重复记录【例4.3】查询进货表中所有的生产厂商,去掉重复值,程序为:SELECT DISTINCT生产厂商FROM goods程序执行结果如下:
程序执行结果如下:编号姓名性别部门电话地址
1001
赵飞燕
0
采购部
01032198454
北京市南京东路55号
1002
刘德发
1
采购部
01032298726
北京市建国路101号
1003
李建国
1
采购部
01032147588
北京市民主路6号
1101
李圆圆
0
财务部
01032358697
北京市仁爱路一巷41号
1102
冯晓丹
01036571568
王峰
01032987564
陈吉轩
01058796545
(所影响的行数为11行)
4.2 基本子句查询
4.2.1 SELECT子句
SELECT子句用于指定要返回的列,其完整的语法如下:SELECT [ ALL│DISTINCT ] [ TOP n [PERCENT][WITH TIES]]
【例4.15】查询电话不为空的员工信息,可以写为:SELECT * FROM employees WHERE电话IS NOT NULL
列名<列名>::=
{ *│{表名│视图名│表的别名}.*│{列名│表达式│IDENTITYCOL│ROWGUIDCOL } [[AS]别名]│别名=表达式
} [ ,...n ]其中,用< >表示在实际编写语句时可以用相应的内容代替,用[,…n]表示重复前面的内容,用{ }表示是必选的,用A│B表示A和B只能选择一个。各参数说明如表4.1所示。
逻辑运算符
NOT、AND、OR
字符串比较
LIKE、NOT LIKE
值的范围
BETWEEN、NOT BETWEEN
列的范围
IN、NOT IN
未知值
IS NULL、IS NOT NULL
1.算术表达式使用比较运算符=(等于)、>(大于)、<(小于)、>=(大于等于)、<=(小于等于)、<>(不等于)、!=(不等于)、!<(不小于)、!>(不大于)可以让表中的值与指定值或表达式作比较。【例4.8】查询笔记本电脑的进货信息,程序为:SELECT * FROM goods WHERE商品名称='笔记本电脑'
相关文档
最新文档