程序员sql查询教程.pptx
《程序员sql查询教程.pptx》由会员分享,可在线阅读,更多相关《程序员sql查询教程.pptx(101页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、5.2 SELECT查询语句5.2.1 查询分析器5.2.2 查询语句格式5.2.3关于演示数据库的说明第1页/共101页5.2.1 查询分析器在SQL查询分析器中,用户既可在全文窗口中输入Transact-SQL语句,也可以打开包含Transact-SQL语句的文本文件,执行语句并在结果窗口中,查看结果。启动SQL查询分析器可采用两种方法:在“开始”菜单中,通过Microsoft SQL Server下拉菜单的“查询分析器”命令来打开查询分析器。在SQL Server企业管理器中通过工具菜单启动。第2页/共101页启动SQL查询分析器并执行相应语句的操作步骤如下:(1)在【开始】菜单中,点击
2、【程序】级联菜单,选择【Microsoft SQL Server】程序组中的【查询分析器】选项,即可启动SQL查询分析器。或在企业管理器中,点击【工具】,选择【SQL查询分析器】选项,也可启动SQL查询分析器。(2)在启动SQL查询分析器时,系统首先打开【连接到SQL Server】对话框。使用该对话框可以指定连接到哪个SQL Server服务器。如图5-1所示。第3页/共101页图5-1 连接到SQL Server对话框第4页/共101页(3)单击SQL Server文本框后面的按钮,可打开【选择服务器】对话框。可以在此对话框中选择要连接到的SQL Server服务器。如图5-2所示。(4)
3、在【连接到SQL Server】对话框中设置正确的验证模式,即可连接到SQL Server服务器,并打开SQL查询分析器。如图5-3所示。(5)进入【SQL 查询分析器】界面,在工具栏中,单击 master所在的下拉框,即可选择待查询的数据库,例如选择【学生信息数据库】。(6)在SQL语句录入框中录入SQL语句,然后单击工具栏中按钮【】,执行该【SELECT】查询语句,即可得到操作结果。第5页/共101页图5-2 选择服务器对话框第6页/共101页图5-3 选择服务器对话框第7页/共101页5.2.2 查询语句格式在SQL语言中,使用SELECT语句进行数据库的查询时,应用灵活、功能强大。1、
4、基本格式SELECT ALL|DISTICT ,FROM ,.WHERE GROUP BY HAVING ORDER BY ASC|DESC 2、语句说明 SELECT语句的基本格式是由SELECT子句、FROM子句和WHERE子句组成的查询块。第8页/共101页 整个SELECT语句的含义是:根据WHERE子句的筛选条件表达式,从FROM子句指定的表中找出满足条件记录,再按SELECT语句中指定的字段次序,筛选出记录中的字段值构造一个显示结果表。如果有GROUP子句,则将结果按的值进行分组,该值相等的记录为一个组。如果GROUP子句带HAVING短语,则只有满足指定条件的组才会显示输出。提示
5、:SELECT语句操作的是记录(数据)集合(一个表或多个表),而不是单独的一条记录。语句返回的也是记录集合(满足Where条件的),即结果表。第9页/共101页5.2.3关于演示数据库的说明为了说明【SELECT】语句的各种用法,下面我们以【学生课程数据库】为操作对象进行说明。在【student】数据库中包含了4个表:学生信息表;反映了学生个人信息,具体的记录如图5-4所示。课程信息表:反映了学校的课程信息,具体的记录如图5-5所示。成绩信息表:反映了学生考试成绩信息,具体的记录如图5-6所示。班级信息表:反映了学生所在班级的信息,具体的记录如图5-7所示。第10页/共101页图5-4 学生信
6、息表第11页/共101页图5-5 课程信息表第12页/共101页图5-6 成绩信息表第13页/共101页图5-7 班级信息表第14页/共101页图5-8 学生信息表结构第15页/共101页图5-9 课程信息表结构第16页/共101页图5-10 成绩信息表结构 第17页/共101页图5-11 班级信息表结构第18页/共101页5.3 基于单表的查询 问题:我们需要对数据进行哪些维护操作?如何对数据进行查询、统计?结构化查询语言(Structured Query Language)。这种语言的语法结构类似于英语,易学易用,书写随意。第19页/共101页查询表中指定的字段SELECT子句后的各个字段
7、的先后顺序可以与原表中的顺序不一致,但在结果表中,字段是按照SELECT子句后的各个字段的顺序显示。【例5-1】显示student_info表中学生的姓名、性别以及家庭住址。SELECT student_name,student_sex,address FROM student_info 第20页/共101页 通配符“*”的使用在SELECT语句中,可以使用通配符“*”显示所有的字段。SELECT *FROM student_info【例5-2】列出student_info表所有的字段。第21页/共101页 使用单引号加入字符串在SELECT语句中,可以在一个字段的前面加上一个单引号字符串,对
8、后面的字段起说明作用。【例5-3】显示student_info表中学生的姓名、家庭住址。SELECT student_name,家庭住址,address FROM student_info第22页/共101页使用别名在显示结果时,可以指定以别名代替原来的字段名称,总共有3种方法:采用“字段名称 AS 别名”的格式。采用“字段名称 别名”的格式。采用“别名=字段名称”的格式。【例5-4】显示student_info表中学生的姓名、家庭住址,并在标题栏种显示“姓名”和“家庭住址”字样,而不是显示student_name和address。SELECT student_name AS 姓名,addre
9、ss AS 家庭住址 FROM student_info第23页/共101页显示表达式的值 在SELECT语句后面可以是字段表达式,字段表达式不仅可以是算术表达式,还可以是字符串常量、函数等。【例5-5】显示student_info表中所有学生姓名和年龄。SELECT student_name,year(getdate()-year(born_date)as 年龄 FROM student_info第24页/共101页使用DISTINCT短语消除重复的记录 DISTINCT短语能够从结果表中去掉重复的记录。【例5-6】查询所有学生所属班级的班号。SELECT DISTINCT class_no
10、 FROM student_info第25页/共101页用WHERE子句查询特定的记录 SQL是一种集合处理语言,所以数据修改及数据检索语句会对表中的所有记录(行)起作用,除非使用WHERE子句来限定查询的范围。注意WHERE子句必须紧跟在FROM子句之后。SELECT FROM WHERE 这里条件表达式可以是关系表达式、逻辑表达式、特殊表达式。1、关系表达式用关系运算符将两个表达式连接在一起的式子即为关系表达式,关系表达式的返回值为逻辑值(TRUE、FALSE),关系表达式的格式为:第26页/共101页WHERE子句中关系表达式常用的关系运算符如表5-1所示。注意:在关系表达式字符型数据之
11、间的比较是对字符的ASCII码值进行比较。所有字符都有一个ASCII码值与之对应。例如,字母“A”,字母“B”字母“C”,它们的ASCII码值分别是65、66、67。字符串的比较是从左向右依次进行。在SQL Server 2000中,日期字符串可以按照“年月日”的格式书写。第27页/共101页2、逻辑表达式用逻辑运算符将两个表达式连接在一起的式子即为逻辑表达式,逻辑表达式的返回值为逻辑值(TRUE、FALSE),逻辑表达式的格式为:3、特殊表达式特殊表达式在比较运算中有一些特殊的用途,具体的格式在使用时给出。第28页/共101页有关关系运算符的使用【例5-7】列出性别为女的学生姓名、家庭住址。
12、SELECT *FROM student_info WHERE born_date 1980-12-31SELECT student_name,address FROM student_info WHERE student_sex=女【例5-8】列出1980年以后出生的学生的基本情况。第29页/共101页有关逻辑运算符的使用【例5-9】列出所有家住“武汉市”的男学生姓名、电话号码和家庭住址。SELECT student_name,tele_number,student_sex,address FROM student_info WHERE substring(address,1,3)=武汉市
13、AND student_sex=男【例5-10】列出200001班女同学的名单。SELECT*FROM student_info WHERE class_no=200001 AND student_sex=女第30页/共101页【例5-11】列出200001班或电话号码以87开头同学姓名、性别和电话号码。SELECT student_name,student_sex,tele_number FROM student_info WHERE class_no=200001 OR SUBSTRING(tele_number,1,2)=87【例5-12】列出所有年龄不是19岁的学生姓名、性别和出生日期
14、。SELECT student_name,student_sex,born_date FROM student_info WHERE(year(getdate()-year(born_date)!=23第31页/共101页有关特殊运算符的使用【例5-13】列出年龄不在18-20岁之间的所有学生名单。本例主要学习有关“BETWEENAND”的使用格式,使用“BETWEENAND”的作用是定义表达式在两数之间。格式为:表达式 NOT BETWEEN 表达式1 AND 表达式2 SELECT *FROM student_info WHERE (year(getdate()-year(born_dat
15、e)BETWEEN 18 AND 20第32页/共101页【例5-14】列出所有注释内容为空的学生姓名。当需要判断一个表达式的值是否为空值时,可使用关键字“IS NULL”。本例主要学习有关“IS NULL”短语的书写格式。使用“IS NULL”短语的格式为:表达式 IS NOT NULL当使用NOT 关键字,表示不为空。SELECT student_name,tele_number FROM student_info WHERE comment IS NULL第33页/共101页【例5-15】列出200001班和200002班学生的学号、姓名和性别。使用IN关键字可以指定一个值表,值表中指定
16、列出所有可能的值,当表达式与值表中的任意一个匹配时,即返回 TRUE,否则返回FALSE。使用IN关键字指定值表的格式为:表达式 IN (表达式1,n)本例主要学习“IN 短语”的书写格式。SELECT student_id,student_name,student_sex FROM student_info WHERE class_no IN (200001,200002)“IN 短语”的作用类似于逻辑“或”,有时用IN比OR更方便。例如上述语句也可以写为:SELECT student_id,student_name,student_sex FROM student_info WHERE c
17、lass_no=200001 OR class_no=200002第34页/共101页【例5-16】列出既不是200001班,也不是200002班学生的学号、姓名和性别。本例主要学习有关“NOT IN 短语”的书写格式。SELECT student_id,student_name,student_sex FROM student_info WHERE class_no NOT IN (200001,200002)第35页/共101页【例5-17】列出所有“刘”姓且为双名的学生。本例主要学习LIKE与通配符“_、%”的使用及模式匹配表达式书写格式。LIKE关键字用于指出一个字符串是否与指定的字符
18、串相匹配,其运算对象可以是char、text、datetime、smalldatetime等类型的数据,返回逻辑值TRUE或FALSE。LIKE关键字表达式的格式为:字符表达式1 NOT LIKE 字符表达式2 SELECT student_id,student_name FROM student_info WHERE student_name LIKE 刘_第36页/共101页【例5-18】列出所有有体育特长的学生的姓名。SELECT student_id,student_name FROM student_info WHERE comment LIKE%体育特长%第37页/共101页使用O
19、RDER BY子句对查询结果排序在SELECT语句中,使用“ORDER BY”子句可以对查询结果进行升序或降序的排列。1、“ORDER BY”子句的基本格式基本格式:SELECT FROM WHERE ORDER BY ASC|DESC,上述格式中,“子句表达式1”可以是一个列名、列的别名、表达式或非零的整数值,而非零的整数值则表示字段、别名或表达式在选择列表中的位置。ASC表示升序,为默认值;DESC表示降序,排序时空值(NULL)被认为是最小值。第38页/共101页“ORDER BY”子句应用实例【例5-21】将student_info表中的学生按出生时间先后顺序。“ORDER BY”子句
20、的输出结果仅仅是影响表的逻辑顺序(排序顺序),并没影响表的真正物理顺序(实际顺序)。SELECT student_id,student_name,born_dateFROM student_info ORDER BY born_date第39页/共101页这种多能排序叫做能联排序。只要在“ORDER BY”子句后面,按照顺序列出字段的清单,字段之间用逗号分隔,即可实现能联排序的功能。【例5-23】列出2000年元旦前入学的学生名单。要求查询结果按入学时间降序显示。本例主要学习“ORDER BY”子句和“WHERE”子句一起使用。SELECT student_id,student_name,ru
21、_date FROM student_info WHERE ru_date 19 AND student_sex=女第43页/共101页MAX和MIN函数的应用MAX和MIN函数分别用于求表达式中所有值项的最大值与最小值,语句格式为:MAX/MIN(ALL|DISTINCT 表达式)其中表达式是常量、列、函数或表达式,其数据类型可以是数字、字符和时间日期类型。ALL表示对所有值进行运算,DISTINCT表示去除重复值、默认为ALL。忽略NULL值。【例5-26】查找年龄最大和最小的学生出生日期。SELECT MIN(born_date)年龄最大,MAX(born_date)年龄最小 FROM
22、student_info第44页/共101页AVG函数的应用AVG函数的表达式格式与MAX和MIN的表达式格式一样。求表达式中所有项的平均值。其格式为:AVG(ALL|DISTINCT 表达式)其中表达式是常量、列、函数或表达式,其数据类型只能是int、smallint、tinyint、bigint、decimal、numeric、float、real、money、smallmoney。ALL表示对所有值进行运算,DISTINCT表示去除重复值、默认为ALL。AVG忽略NULL值第45页/共101页【例5-28】求出第一学期所开课程的平均课时和平均学分。SELECT AVG(course_ti
23、me)平均课时,AVG(course_score)平均学分 FROM course_info WHERE course_start=1第46页/共101页SUM函数的应用SUM函数用于求表达式中所有项的总和。其格式为:SUM(ALL|DISTINCT 表达式)其中表达式是常量、列、函数或表达式,其数据类型只能是int、smallint、tinyint、bigint、decimal、numeric、float、real、money、smallmoney。ALL表示对所有值进行运算,DISTINCT表示去除重复值、默认为ALL。SUM 忽略NULL值第47页/共101页【例5-29】求出第一学期所
24、开课程的总课时和总学分。SELECT SUM(course_time)总课程,SUM(course_score)总学分 FROM course_info WHERE course_start=1第48页/共101页利用SQL 的GROUP BY子句,能够快速而简便地将查询结果表按照指定的字段进行分组,值相等的记录分为一组。GROUP BY子句一般和SQL的聚合函数一起使用。【基本格式】:SELECT FROM GROUP BY 使用GROUP BY对查询结果进行分组第49页/共101页【例5-30】统计各班学生的总人数。本例主要学习有关GROUP BY子句的表达式书写格式。SELECT cla
25、ss_no,COUNT(student_id)学生人数 FROM student_info GROUP BY class_no第50页/共101页【例5-31】统计男、女学生各自的总人数和平均年龄。SELECT COUNT(student_id)总人数,AVG(year(getdate()-year(born_date)平均年龄 FROM student_info GROUP BY student_sex第51页/共101页利用HAVING筛选结果表在实际使用中,往往还要对分组后的结果按某种条件再进行筛选,而只输出满足用户指定条件的记录。在SQL中,HAVING子句能完成此功能。“WHERE”
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序员 sql 查询 教程
限制150内