计算机应用技术数据库09查询_第1页
计算机应用技术数据库09查询_第2页
计算机应用技术数据库09查询_第3页
计算机应用技术数据库09查询_第4页
计算机应用技术数据库09查询_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

SQLSERVER2000表的查询SQL语言的种类

SQL(StructuredQueryLanguage)是一种在关系数据库中定义和操作数据的标准语言.SQL语言通常分为4类:

查询语言(select)操纵语言(insert,update,delete)定义语言(create,alter,drop)控制语言(commit,rollback)SQL语言提供的SELECT语句的一般格式如下:SELECT[ALL|DISTINCT]<目标列表达式>[,<目标列表达式>][,…]FROM<表名或视图名>[,<表名或视图名>][,…][WHERE<条件表达式>][GROUPBY<列名1>[HAVING<条件表达式>]][ORDERBY]<列名2>[ASC|DESC]];说明:

SELECT语句的含义是,根据WHERE子句指定的条件,从FROM子句后面的基本表或视图中找出满足条件的记录,再按照SELECT子句指定的目标列表达式,选出这些记录相应的列形成结果集返回。其中,SELECT子句和FROM子句是必选的,而WHERE子句、GROUPBY子句、HAVING子句以及ORDERBY子句都是可选的。select语句的基本格式是由select子句,from子句和where子句组成的查询块.整个select语句的含义是:根据where子句的筛选条件表达式,从from子句指定的表中找出满足条件的记录,再按select子句中指定的字段次序,选出记录中的字段值构造一个显示结果表.如果有group子句,则将结果按<分组表达式>的值进行分组,该值相等的记录为一个组.如果group子句带having短语,则只有满足指定条件的组才会输出.如果有order子句,则显示结果表还要按<字段>值的升序(asc)或降序(desc)进行排序.一、选择行和列--选择和投影运算的实现下面以人事工资管理系统的员工表employee和部门表dept为例介绍SELECT语句的使用方法。Employee(emp_id,ename,job,mgr_id,workdate,sal,comm,dept_id)

员工号姓名职位主管参加工作时间月薪岗位津贴部门号

Dept(dept_id,dname,tel)

部门号,部门名称,电话用下面语句创建表结构:

CREATETABLEemployee(emp_idCHAR(4)PRIMARYKEY,enameVARCHAR(20),jobVARCHAR(9),mgr_idCHAR(4),workdatedatetime,salSMALLINT,commSMALLINT,dept_idCHAR(2)NOTNULL)CREATETABLEdept(dept_idCHAR(2)PRIMARYKEY,dnameVARCHAR(12),telVARCHAR(20))1、选择运算的实现查询一个表的所有行

在SELECT语句中只要没有WHERE子句,查询结果就包含了所有行。【例1】查询表employee的所有员工的员工号和姓名。查询满足条件的某些行查询满足条件的某些行,可以通过WHERE子句来实现。【例2】查询月薪超过1800的员工姓名和月薪。【例3】查询员工号为1001的员工姓名及部门号。

1.SELECTemp_id,enameFROMemployee2.SELECTename,salFROMemployeeWHEREsal>1800;3.SELECTename,dept_idFROMemployeeWHEREemp_id=’1001’2、投影运算的实现查询表的全部列【例4】查询部门表中部门号为11的全部内容。在SQL语言中,可以用星号“*”代表所有列名,列的显示顺序与基本表中列的顺序一致。查询表的部分列

【例5】查询全体员工的员工号,姓名和参加工作时间。查询经过计算的值SELECT子句的<目标列表达式>不仅可以是基本表的属性,也可以是表达式,包括算术表达式、字符串常量和函数等【例6】查询全体员工的姓名及年薪。查询可以通过指定别名来改变查询结果的列标题,这样也可以使结果更清晰。

SELECTenameAS姓名,sal*12AS年薪

FROMemployee注意:当自定义的列标题中有空格时必须用单引号。

SELECT'姓名'=ename,'年薪'=sal*12

FROMemployee

4.SELECTdept_id,dname,telFROMdeptWHEREdept_id=’11’5.SELECTemp_id,ename,workdateFROMemployee6.

SELECTename,sal*12FROMemployee二、SQL的运算符SQL语言使用的运算符包括算术运算符、比较运算符、逻辑运算符等。

算术运算符算术运算符有4种:+、-、*、/

比较运算符基本比较运算符共9种:=、>、<、<=、>=、!=或<>、!>(不大于)、!<(不小于)特殊比较运算符有4类:BETWEEN…AND…、IN、LIKE和ISNULL运算符BETWEEN…AND…运算符BETWEEN…AND…是用于确定记录的范围,即某属性值在指定的范围之内(包括边界值)的记录,其中BETWEEN后面是下限,AND后面是上限。【例21】查询月薪在1000到1500之间的员工姓名及月薪。查询结果包括那些月薪等于1000和月薪等于1500的记录。运算符IN

运算符IN是用于查找某属性值包含在指定集合内的记录,IN后面跟的是指定集合。

【例22】查找部门号是1或2的员工姓名及部门号。运算符LIKE(模糊查询)

运算符LIKE可用来进行字符串的匹配,LIKE后面跟的是匹配模式。匹配模式可以是一个包含通配符“%”(百分号)和“_”(下划线)的字符串。“%”代表任意长度(长度可以为0)的字符串。

“_”代表任意单个字符。“[]”表示指定范围。

【例23】查询所有姓张员工的姓名。

【例24】查找所有2011年参加工作的员工姓名及参加工作时间。

【例25】查找姓名第2个字为“小”的员工姓名。【例26】查找姓为王或周并且单名的员工情况。

运算符IS[not]NULL

运算符ISNULL用来测试某个属性值是否为空。【例27】可能有这样的情况:新进员工暂时没有岗位津贴,等试用期满后再领岗位津贴。查询没有岗位津贴的员工姓名。【例21】

SELECTename,salFROMemployeeWHEREsalBETWEEN1000and1500【例22】

SELECTename,dept_idFROMemployeeWHEREdept_idIN('11','21')

【例23】

SELECTenameFROMemployeeWHEREenameLIKE‘张%’【例24】SELECTename,workdateFROMemployeeWHEREworkdateLIKE‘%1990%’【例25】SELECTenameFROMemployeeWHEREenameLIKE'_小%'【例26】SELECT*FROMemployeeWHEREenameLIKE'[王周]%'【例27】SELECTenameFROMemployeeWHEREcommISNULL逻辑运算符SQL语言的逻辑运算符有3种:NOT、AND、OR。【例28】查询月薪超过1500的部门主管的姓名及月薪。【例29】查询月薪超过1500的员工和所有部门主管的姓名及月薪。【例30】查找部门号不属于1和2的员工姓名及部门号。

【例28】

SELECTename,salFROMemployeeWHEREsal>1500ANDjob=‘部门主管’【例29】

SELECTename,salFROMemployeeWHEREsal>1500ORjob=‘部门主管’【例30】

SELECTename,dept_idFROMemployeeWHEREdept_idNOTIN(‘1’,’2’)三、对查询结果排序SQL语言中用ORDERBY子句实现对查询结果的排序,可以根据包含的一列或者多列的表达式进行ASC(升序)或DESC(降序)的排列,默认值是ASC。ORDERBY子句指定的排序列可以不只一个。【例31】查询所有员工的姓名及月薪,结果按月薪的降序排列。【例32】查询所有员工的姓名、部门号及月薪,结果按部门号升序排列,同一部门按月薪降序排列。说明:上例中dept_id称为主排序关键字,sal成为次排序关键字。注意:

(1)ORDERBY子句不改变基本表中行或列的顺序,只改变查询显示的顺序。

(2)ORDERBY子句指定排序的列必须出现在SELECT子句的列表达式中。

(3)排序是查询语句的最后一步工作,所以ORDERBY子句一般放在查询语句的最后。基本表中不相同的行,经过对某些指定列进行投影运算后,可能会变成完全相同的行,显示结果不直观,这时需要用DISTINCT选项消除重复的行。【例33】查询表employee中的所有职位。

注意:在一个SELECT语句中DISTINCT只能出现一次,并且DISTINCT必须在所有列名之前,否则会发生语法错误。与DISTINCT选项含义相反的是A

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论