SQL入门语句、函数和小技巧.docx

上传人:自*** 文档编号:126229977 上传时间:2020-03-23 格式:DOCX 页数:9 大小:42.50KB
返回 下载 相关 举报
SQL入门语句、函数和小技巧.docx_第1页
第1页 / 共9页
SQL入门语句、函数和小技巧.docx_第2页
第2页 / 共9页
SQL入门语句、函数和小技巧.docx_第3页
第3页 / 共9页
SQL入门语句、函数和小技巧.docx_第4页
第4页 / 共9页
SQL入门语句、函数和小技巧.docx_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《SQL入门语句、函数和小技巧.docx》由会员分享,可在线阅读,更多相关《SQL入门语句、函数和小技巧.docx(9页珍藏版)》请在金锄头文库上搜索。

1、SQL入门语句、函数和小技巧一、SELECT 语句 SELECT ALL | DISTINCT select_list/ ALL所有, DISTINCT合并重复项 select_list字段/INTO new_table_nameFROM table_name,table_name161. 例:查询数据库tsing_DB2中表device_manage中的所有信息 use tsing_DB2select *from device_manage 2. 查询表stud_score,要求列出学年度(year)、学号(stud_id)、计算机科目(computer#)及计算机科目的成绩(表中字段名为c

2、omp_score,在输出时改为computer_score)等信息select year, stud_id, computer#, computer_score=comp_scorefrom stud_score/ computer_score=comp_score comp_score as computer_score /3. 例:输出数学成绩math_score,且输出值在原有值得基础上提高了5% SELECT year, stud_id, new_score=math_score*1.05FROM stud_score4. 例:通过AVG()函数返回每年度学生的平均成绩select

3、year, average=avg(comp_score)from stud_scoregroup by(year)order by(year) 5. 例:查询stud_score 表中成绩字段comp_score中的总成绩、最高分、最低分、最高分和最低分的差额 SELECT sum=sum(comp_score),max=max(comp_score),min=min(comp_score),sub=max(comp_score)-min(comp_score)FROM stud_score二、 带条件的检索 1. WHERE 子句,常与NOT/AND/OR一起使用例:查询计算机课成绩(co

4、mp_score)不大于数学成绩(math_score)大于化学成绩(chem_score),或者化学成绩大于数学成绩的学生 USE tsing_DB1Select year, stud_id, comp_score, math_score, chem_scoreFROM stud_score where(comp_score chem_score)Orchem_score math_score2. Where子句中条件的指定 SQL_Server 支持的运算符如下:1)逻辑运算符:AND/OR/NOT2)比较符:,!,,=,=/! 不等于/ in,not in,any,all判断为集合成员否

5、 between and判断满足指定区间否 like 匹配模式 is not null 测试空值例:模式匹配举例,查询stud_info中的姓氏为陈的学生姓名USE tsing_DB1SELECT nameFROM stud_info WHERE name LIKE 陈% 关于字符匹配 :匹配任意长度的字符串 _ :只匹配一个字符 ( ):匹配对指定范围 (例如a-f) 或集合 (例如abcdef) 中的任何单个字符 :可以匹配不属于指定范围的任何单个字符 例:查询stud_score表中学年年度在1997(含1997)到1998(含1998)的学生信息USE tsing_DB1SELECT

6、year, stud_id, comp_score FROM stud_score WHERE year BETWEEN 1997 AND 1998 例:查询表stud_info中出生日期在1979.1.1到1980.6.1之间的学生的学号,姓名,以及出生年月Use sting_DB1Select stud_id, name, birthdayFrom stud_infoWhere birthday between 1979.1.1 and 1980.6.1例:查询数据库tisng_DB2中表device_manage 中supply_id 字段值为null的设备信息,请读者注意对字段为空或非

7、空时的判断时应该在WHERE子句中使用 IS NULL 或 IS NOT NULL判断 Use tsing_DB2SELECT dev_id,dev_name,lab_id FROM device_manage WHERE supply_id is null 例:查询数据库tisng_DB1中表stud_score中学生数学成绩为80,85或90的学生的姓名,学年年度和该学年的数学成绩 Use tisng_DB1Select year,name,math_scoreFrom stud_scoreWhere math_score in (80,85,90)例:在数据库tsing_DB2中根据对表

8、device_use中experiment_lab为空值的查询结果来确定对表device_manage的查询条件 Use tsing_DB2SELECT dev_id,dev_name,lab_idFROM device_manage WHERE dev_id= (SELECT dev_id FROM device_use WHERE experiment_lab is null) 例:在数据库tsing_DB2中查询表device_manage中dev_id字段值不在表device_use中dev_id字段值范围的所有仪器信息 Use tsing_DB2Select *From device

9、_manageWhere dev_id not in (select dev_id from device_use)3. Having 子句 该子句也能指定查询条件,类似where子句例:在数据库tsing_DB1 中从表stud_score中查询学年年度早于1998年的每年comp_score的总和Use tsing_DB1SELECT year,total=sum(comp_score ) FROM stud_score GROUP BY(year) HAVING year1998 SQL中 having和where的区别1.WHERE 子句用来筛选 FROM 子句中指定的操作所产生的行。

10、2.GROUP BY 子句用来分组 WHERE 子句的输出。3.HAVING 子句用来从分组的结果中筛选行.4. COMPUTE BY及COMPUTE子句 COMPUTE BY子句可以通过BY指定字段进行分组计算,COMPUTE子句则计算所有的字段值之和 例:查询学号为96*的学生并按入学年年度分别计算他们的总分,最后计算出comp_score 的总和 Select stud_id,year,comp_scoreFrom stud_scoreWHERE stud_id LIKE 96%ORDER BY yearCOMPUTE SUM(comp_score)BY yearCOMPUTE SUM(

11、comp_score)三、从多张表中查询数据 例如一个数据库包含学生基本信息表和学生成绩信息表,若要得知道学生的基本信息和成绩,那就必须进行多表查询例:查询stud_info和stud_score两表,得到学号为980814的学生的姓名、性别及其在1998年的数学科目的成绩 SELECT stud_info.stud_id,stud_info.name,stud_info.gender,stud_score.math_score FROM stud_info ,stud_score WHERE stud_info.stud_id=980814AND stud_info.stud_id=stud

12、_score.stud_id AND stud_score.year=1998 该查询由于两张表中出现同名字段stud_id,为了区分字段,加上了表名,整个查询命令显得十分冗长。为了简洁起见,用户可以采用为表指定别名的方法SELECT a.stud_id,a.name,a.gender,b.math_score FROM stud_score b,stud_info aWHERE a.stud_id=980814AND a.stud_id=b.stud_id AND b.year=1998不仅可以给不同的表赋以不同的别名,还可以给同一张表赋以不同的别名,操作起来就象是在操作两张表一样SELEC

13、T a.stud_id,b.stud_id,FROM stud_info a,stud_info bWHERE a.stud_id=b.stud_id 四、UNION操作 通过UNION操作可以把从两个或两个以上的查询结果合并到一个结果集中例:从表stud_info和表Add_stud_info中查询stud_id和name信息,并把查询结果合并在一起 SELECT stud_id, nameFROM stud_info UNIONSELECT stud_id, nameFROM Add_stud_info 使用UNION、INTERSECT 或EXCEPT 运算符合并的所有查询必须在其目标列

14、表中有相同数目的表达式相同项目例:创建temp_stud_info表,把stud_info及Add_stud_info表中的stud_id和name字段的内容复制到temp_stud_info表中,同时创建临时字段tpColumn,值为TempSELECT stud_id,name,tpColumn=Temp INTO temp_stud_info FROM stud_info UNIONSELECT stud_id,name,tpColumn=Temp FROM Add_stud_info 五、子查询可在INSERT、SELECT、UPDATE、DELETE等处嵌套SELECT查询子句 例:通过子查询获得表Add_stud_info的信息,并根据子查询的结果更新表temp_stdu_info中的字段tpColumn数据 UPDATE temp_stud_info SET tpColumn=NewWHERE stud_id IN (SELECT stud_id FROM Add_stud_info) 例:通过EXISTS子句指定条件查询表publishers中pub_name信息 SELECT DISTINCT name FROM temp_stud_info WHERE EXISTS (SELECT * FROM Add_stud_info WHERE gender LI

展开阅读全文
相关资源
相关搜索

当前位置:首页 > IT计算机/网络 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号