资源描述:
《数据库实验三.pptx》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、数据库实验(三)——查询语法SQL语言提供了SELECT语句进行数据库的查询,该语句具有灵活的使用方式和丰富的功能。SELECT[ALL
2、DISTINCT]<目标列表达式>[,<目标列表达式>]FROM<表名或视图名>[,<表名或视图名>][WHERE<条件表达式>][GROUPBY<列名1>[HAVING<条件表达式>][GROUPBY<列名2>[ASC
3、DESC]根据WHERE子句给出的条件表达式,从FROM子句指定的基本表或视图中找出满足条件的元组,再按SELECT子句中的目标列表达式,选出元组中的属性值形成结果表。如果有GROUPBY
4、子句,则将结果按<列名1>的值进行分组,该属性列值相等的元组为一个组。如果GROUPBY子句带HAVING短语,则只有满足指定条件的组才给予输出。如果有ORDERBY子句,则结果表还要按<列名2>的值的升序或降序排序。SELECT语句既可以完成简单的单表查询,也可以完成复杂的连接查询和嵌套查询。一、单表查询单表查询是指仅涉及一张表的查询。1、选择表中的若干列选择表中的全部列或部分列,这就是关系代数的投影运算。1)查询指定的列:在很多情况下,用户只对表中一部分属性列感兴趣,这时可以通过在SELECT子句的<目标列表达式>中指定要查询的属性列。【
5、例4.8】查询所有配电物资的物资编号、物资名称、规格SELECTmat_num,mat_name,speciFROMstock;2)查询全部列如果要查询表中的所有属性列,有两种方法:一是在目标列表达式中列出所有的列名;一是如果列的显示顺序与其在表中定义的顺序相同,则可以简单地在目标列表达式中写星号“*”。【例4.10】查询所有配电物资的记录SELECT*FROMstock等价于SELECTmat_num,mat_name,speci,warehouse,amount,unit,totalFROMstock3)查询经过计算的值SELECT子句中
6、的<目标列表达式>可以是表中存在的属性列,也可以是表达式、字符串常量或函数。【例4.11】查询所有抢修工程的抢修天数调用datediff()日期函数返回结束日期与开始日期的时间间隔,得到抢修天数。SELECTprj_name,start_date,end_date,datediff(day,start_date,end_date)FROMsalavaging【例4.12】查询所有抢修工程的抢修天数,并在实际抢修天数列前加入一个列,此列的每行数据均为‘抢修天数’常量值SELECTprj_name,‘抢修天数’,datediff(day,star
7、t_date,end_date)FROMsalvaging改变列标题的语法格式为:列名
8、表达式[AS]列标题或列标题=列名
9、表达式SELECTprj_name项目名称,start_date开始日期,end_date结束日期,datediff(day,start_date,end_date)抢修天数FROMsalvaging;2.选择表中的若干元组1)消除取值相同的行【例4.13】在配电物资库存记录表中查询出所有的仓库名称SELECTwarehouseFROMstock等价于SELECTALLwarehouseFROMstock结果可能出现重复
10、行,要消除重复行,需用DISTINCT短语SELECTDISTINCTwarehouseFROMstock2)查询满足条件的元组查询满足条件的元组是通过WHERE子句实现的(1)比较大小的查询【例4.14】查询供电局1#仓库存放的所有物资编号、物资名称、规格以及数量SELECTmat_num,mat_name,speci,amountFROMstockWHEREwarehouse=‘供电局1#仓库’【例4.15】查询所有单价小于80的物资名称、数量及其单价SELECTmat_name,amount,unitFROMstockWHEREunit
11、<80;或SELECTmat_name,amount,unitFROMstockWHERENOTunit>=80;(2)确定范围的查询BETWEEN…..AND和NOTBETWEEN….AND是一个逻辑运算符,可以用来查找属性值在或不在指定范围内的元组,其中BETWEEN后边指定范围的下限(即低值),AND后边指定范围的上限(即高值)【例4.16】查询单价在50—100之间的物资名称、数量及其单价SELECTmat_name,amount,unitFROMstockWHEREunitBETWEEN50AND100等价SELECTmat_nam
12、e,amount,unitFROMstockWHEREunit>=50ANDunit<=100【例4.17】查询单价不在50—100之间的物资名称、数量及其单价SE