实验一 SQL语言单表查询
《sql语句的单表查询实验》教学设计

பைடு நூலகம்
≪S。L单表查询实验》教学设计 广州市信息工程职业学校肖维明 小结:罗列本课中各有关SELECT查询语句,分析语法结构与注意事项;剖析各附加子句的 小结 运算关系,强调组合使用的效果。 和评 教学 反思 评价:对学习过程中的积极练习的小组和个人进行表扬。课后收集学生实验报告。 本课实验练习的SELECT单表查询命令是非常复杂多变的•组命令语句,语法结构复杂,附 加子句功能多。在练习前很有必要与学生重温SELECT语句命令的语法,并拆分讲解附加子 句的功能特点,编写要求,让学生有比较清晰地印象。而后设计的查询实验题目有针对性地 应用不同的查询命令组合形式,让学生在练习中可接触尽可能多的查询效果,并争取举•反 三。在活动教学开展过程,学生学习积极性要大力保护与促进,所以尽可能安排小组学习互
助,既实现了协助式学习效果,又可形成一种互进的浓厚学习氛围。 八、教学流程图
sql单表查询练习题

sql单表查询练习题一、实验目的1. 掌握SQL Server数据库的恢复技术2. 熟练掌握SQL单表查询语句二、实验内容1. 数据库恢复2. SQL查询语言练习实验基础知识提要Microsoft? SQL Server?查询分析器是一种图形工具,您可以使用它创建查询和其它 SQL 脚本,并针对 SQL Server 数据库执行它们。
连接 SQL Server连接某个 Microsoft? SQL Server? 实例以打开 SQL 查询分析器中的一个查询窗口。
如果通过 SQL Server 企业管理器中的连接访问 SQL 查询分析器,则自动打开一个查询窗口。
如果未建立连接而访问 SQL 查询分析器,则显示”连接到SQL Server”对话框,使您可以指定数据库服务器。
该对话框还可从工具栏和从”文件”菜单上的”连接”命令进行访问。
下表列出”SQL 查询分析器”工具栏中显示的图标。
最基本的查询语句具有以下的形式:SELECT select_list FROM table_source[ WHERE search_condition ] select_list 描述结果集的列。
它是一个逗号分隔的表达式列表。
每个表达式同时定义格式和结果集列的数据来源。
每个选择列表表达式通常是对从中获取数据的源表或视图的列的引用,但也可能是其它表达式,例如常量或 Transact-SQL 函数。
在选择列表中使用 * 表达式指定返回源表中的所有列。
选择列表还可包含控制结果集的最终格式的关键字:DISTINCTDISTINCT 关键字可从结果集中除去重复的行。
TOP n TOP 关键字指定返回结果集的前 n 行。
如果指定了ORDER BY,行将在结果集排序之后选定。
除非指定了 PERCENT 关键字,否则 n 即为返回的行数。
PERCENT 指定 n 为结果集中返回的行的百分比。
三、实验步骤构建一下数据库表作为实验数据来源运行SQL SERVER服务管理器,确认数据库服务器开始运行。
SQL 单表查询

实验三单表查询一、实验目的掌握简单SQL 查询语句的应用,包括like、top、order by、compute 、聚集函数的应用。
二、实验内容1、基本查询(1)查询学生表中全体学生的全部信息。
select*from Student_20103266;(2)检索全体学生的学号、姓名。
select Sno,Snamefrom Student_20103266;2、查询时改变列标题的显示检索全体学生的学号、姓名、家庭地址信息,并分别加上“学生”、“学号”、“家庭地址”的别名信息。
select Sno'学号',Sname'姓名',Home_addr'家庭地址'from Student_20103266;3、条件查询(1)查询成绩大于80分的学生的学号及课程号、成绩。
SELECT Sno,Cno,Gradefrom SC_20103266where Grade>80;(2)查询成绩介于75~80分的学生的学号及课程号、成绩。
SELECT Sno,Cno,Gradefrom SC_20103266where Grade between 75 and 80;(3)查询选修了课程号为“002”,且成绩大于80的学生的学号。
SELECT Snofrom SC_20103266where Cno='002'AND Grade>80;(4)某些学生选修某门课程后没有参加考试,所以有选课记录,但没有考试成绩,下面我们来查一下缺少成绩的学生的学号和相应的课程号。
SELECT Sno,Cnofrom SC_20103266where Grade IS NULL;4、基于IN子句的数据查询从课程表中查询出“高数”、“C语言程序设计”的所有信息。
SELECT*FROM Course_20103266where Cname IN('高数','C语言程序设计');5、基于BETWEEN。
SQL语言--数据查询1(单表查询)

(上个汉字占两个字节,所以要有二个下横线)
■:查询学生表中所有不姓“刘”的学生情况
SELECT * FROM 学生表 WHERE 姓名 NOT LIKE “刘%”
■。对学生表,按性别排序(女在前男在后)
SELECT * FROM ST ORDER BY SSEX DESC
2。多列排序
■。对学生表,按性别排序(男在前女在后),同性别者,则按年龄排序(从大到小)
SELECT * FROM ST ORDER BY SSEX,SLN DESC
一。 单表查询的内容:
1。投影查询
2。选择查询
3。匹配查询
4。排序查询
5。统计查询
1)无分类统计查询
2)有分类统计查询
3)有分类并带条件统计查询
二。投影查询:对表进行纵向(按列)查询
1。查询表中所有字段
■:查询ST表中全体学生的详细记录(所有字段)
注:统计函数前要加上性别,否则不知道统计的对象是谁
■。带条件分类统计
在学生表中,按系别分类,统计平均年龄不低于20的学生信息
SELECT 系名,AVG(年龄) FROM 学生表 GROUP BY 系名
HAVING AVG(年龄)!<20
4. 确定范围查询 (BETWEEN AND , NOT BETWEEN AND)
■:查询教师表中,工资1000到3000之间的职工记录
SELECT * FROM TEACHER WHERE 工资 BETWEEN 1000 AND 3000
等价于:
■:查询学生表中学号为0011I学生的详细情况
数据库实验1:SQL查询操作

数据库实验1:SQL查询操作题目:设有一个SPJ数据库,包括S,P,J,SPJ四个关系模式:S(SNO,SNAME,STATUS,CITY);P(PNO,PNAME,COLOR,WEIGHT);J(JNO,JNAME,CITY);SPJ(SNO,PNO,JNO,QTY)。
供应商表S由供应商代码(SNO)、供应商姓名(SNAME)、供应商状态(STATUS)、供应商所在城市(CITY)组成。
零件表P由零件代码(PNO)、零件名(PNAME)、颜色(COLOR)、重量(WEIGHT)组成。
工程项目表J由工程项目代码(JNO)、工程项目名(JNAME)、工程项目所在城市(CITY)组成。
工程项目表SPJ由供应商代码(SNO)、零件代码(PNO)、工程项目代码(JNO)、供应数量(QTY)组成,表示某供应商供应某种零件给某工程项目的数量为QTY。
今有若干数据如下:S表:SNO SNAME STATUS CITYS1 精益20 天津S2 盛锡10 北京S3 东方红30 北京S4 丰盛泰20 天津S5 为民30 上海P表:PNO PNAME COLOR WEIGHTP1 螺母红12P2 螺栓绿17P3 螺丝刀蓝14P4 螺丝刀红14P5 凸轮蓝40P6 齿轮红30J表:JNO JNAME CITY J1 三建北京J2 一汽长春J3 弹簧厂天津J4 造船厂天津J5 机车厂唐山J6 无线电厂常州J7 半导体厂南京SPJ表:SNO PNO JNO QTY S1 P1 J1 200S1 P1 J3 100S1 P1 J4 700S1 P2 J2 100S2 P3 J1 400S2 P3 J2 200S2 P3 J4 500S2 P3 J5 400S2 P5 J1 400S2 P5 J2 100S3 P1 J1 200S3 P3 J1 200S4 P5 J1 100S4 P6 J3 300S4 P6 J4 200S5 P2 J4 100S5 P3 J1 200S5 P6 J2 200S5 P6 J4 500首先进行创建数据库、表,插入数据等操作。
SQL中表单查询 实验

实验报告
select sname,sage,sdept from student where sdept in('CS') and ssex is ‘男’
建立表格时,定义了长度,实际输入的数值不一定占全,应使用2.查询计算机系年龄不到21岁的所有男生的姓名和出生年份。
4.查询所有有成绩的学生学号和课程号,并为各列分别取相应的中文别名。
(三) 按照《数据库系统概论》P75页中的SPJ数据库及数据实现以下查询:
1.查询地点在‘北京’、‘上海’的供应商代码和供应商名字。
2.查询供应商名中包含‘方’这个汉字的供应商信息。
3.查询零件名以‘刀’字结尾,包含三个汉字的零件信息。
4.查询使用了供应商S1所供应零件的工程项目数。
5.查询各个供应商所供应的零件的总数,要求对查询结果降序显示。
6.查询供应了3个以上项目的供应商代码和供应的项目总数。
SQL查询语句(一)——单表查询
SQL查询语句(⼀)——单表查询------------恢复内容开始------------⼀、查询语句语句执⾏顺序FROM ——> SELECTSELECT select_listFROM table_name;查询多列数据SELECTlastname,firstname,jobtitleFROMemployees;⼆、排序数据语句执⾏顺序FROM --> SELECT --> ORDER BYSELECTselect_listFROMtable_nameORDER BYcolumn1 [ASC|DESC],column2 [ASC|DESC],...;如果未明确指定任何排序规则,默认(升序)使⽤ORDER BY ASC升序 ASCORDER BY column1 ASC;降序 DESCORDER BY column1 DESC;多列对结果集进⾏排序ORDER BYcolumn1,column2;第⼀个名字降序排列,然后将客户的姓⽒排序SELECTcontactLastname,contactFirstnameFROMcustomersORDER BYcontactLastname DESC,contactFirstname ASC;orderNumber,orderlinenumber,quantityOrdered * priceEachFROMorderdetailsORDER BYquantityOrdered * priceEach DESC;按订单状态进⾏排序SELECTorderNumber,statusFROMordersORDER BYFIELD(status,'In Process','On Hold','Cancelled','Resolved','Disputed','Shipped');三、过滤数据WHERE⼦句,为查询返回的⾏指定搜索条件语句执⾏顺序FROM --> WHERE-->SELECT --> ORDER BYSELECTlastname,firstname,jobtitleFROMemployeesWHEREjobtitle = 'Sales Rep';WHERE⼦句与AND运算符查找职务为Sales Rep且办公代码为1的员⼯SELECTlastname,firstname,jobtitle,officeCodeFROMemployeesWHEREjobtitle = 'Sales Rep' ANDofficeCode = 1;WHERE⼦句与OR运算符查找职务为的Sales Rep员⼯或使⽤办公代码1查找办公室的员⼯SELECTlastName,firstName,jobTitle,officeCodeFROMemployeesWHEREjobtitle = 'Sales Rep' ORofficeCode = 1ORDER BYofficeCode ,jobTitle;WHERE⼦句与BETWEEN运算符查找办公室代码为1到3的办公室中的员⼯SELECTFROMemployeesWHEREofficeCode BETWEEN 1 AND 3ORDER BY officeCode;WHERE和LIKE运算符查询查找姓⽒以字符串结尾的员⼯'son'SELECTfirstName,lastNameFROMemployeesWHERElastName LIKE '%son'ORDER BY firstName;WHERE和IN操作符查找位于办公室的办公室代码为1的员⼯SELECTfirstName,lastName,officeCodeFROMemployeesWHEREofficeCode IN (1 , 2, 3)ORDER BYofficeCode;WHERE和 IS NULL 操作符在数据库世界中,NULL是⼀个标记,指⽰⼀条信息丢失或未知。
单表查询实验报告
《数据库系统概论》实验报告实验名称:单表查询实验人:实验地点:实验楼317实验日期:2009-10-5一、实验准备1.硬件及软件环境要求为了使该实验顺利进行,需要有一台计算机,计算机必须安装Windows 2000、Windows XP或Windows NT操作系统,还必须安装Microsoft SQL Server 2000 任意一版本(个人版、标准版、企业版)。
实验开始之前,必须将实验1.2节中创建好的SCDB数据库和ShiYan数据库附加到当前SQL数据库服务器中。
2.本实验涉及的主要SQL语句的语法格式(1) SELECT子句指定由查询返回的列。
SELECT [ ALL | DISTINCT ][ TOP n [ PERCENT ] [ WITH TIES ] ]< select_list >< select_list > ::={ * |{table_name|view_name|table_alias}.*|{column_name|expression|IDENTITYCOL|ROWGUIDCOL}[[AS]column_alias] | column_alias = expression } [ ,...n ]【说明】ALL:默认设置,指定在查询结果集中可以显示重复行。
DISTINCT:指定在查询结果集中不显示重复行,空值被认为相等。
TOP n:指定只从查询结果集中输出前n行。
PERCENT:指定只从查询结果集中输出前n%行,当指定时带PERCENT,则n 的值必须介于0~100之间。
WITH TIES:指定从基本查询结果集中返回附加的行。
如果使用了ORDER BY 子句,则只能使用TOP或WITH TIES选项。
select_list:指定查询列或列表达式(即查询列表)。
各查询列表之间以逗号分隔。
*:指定在FROM 子句内返回所有表和视图内的所有列。
列按FROM 子句所指定的由表或视图返回,并按它们在表或视图中的顺序返回。
SQL查询实验报告讲解
实验题目:sql查询——简单查询【实验目的与要求】一、实验目的1. 熟练掌握单表查询的select语法结构;2. 通过观察查询结果, 体会select语句的实际应用。
二、实验要求1.实验前做好上机实验的准备,针对实验内容,认真复习与本次实验有关的知识,完成实验内容的预习准备工作。
2.能认真独立完成实验内容。
3.实验后做好实验总结,根据实验情况完成实验报告。
【实验环境】pc机、windows xp系统+sql server 2005 【实验内容】基于实验一建立的educ 数据库,用transact-sql 语句实现如下查询:1.选修了课程的学生学号;2.计算机系的学生;3.计算机系学生的学号和姓名;4.计算机系和信息系的男生信息;(提示:逻辑运算符的优先级顺序)5.选修上课编号为1且成绩在80-90 之间的学生学号和成绩,并将成绩乘以系数0.75输出;(提示:新输出项要命名列标题)6.没有成绩的学生的学号和上课编号;7.选修上课编号为1或4的学生的学号和成绩,并要求对查询结果按成绩的降序排列,如果成绩相同则按学号的升序排列;(提示:查询输出哪几项)8.1995年1月1日(含)以后出生的学生信息,并按姓氏拼音字母顺序从前往后排列(注:默认排序规则通常是chinese_prc_ci_as,汉字按照汉语拼音的字典顺序来排序:首先按拼音,拼音相同按声调,声调相同按笔画数。
)9.姓李和刘的学生的信息;10.不姓张王李刘的学生的学号、姓名和性别;11.选修课程的学生人数;12.选修上课编号为1的学生的最高分;13.每位学生所修课程的平均分;14.选修两门以上课程的学生;15.总成绩大于200 分的学生的学号和总成绩。
(提示:group by分组统计)【实验方法和步骤】1.新建查询,在查询编辑器中依次按照如上实验内容编写select语句完成查询。
2.每执行一条查询语句,在查询结果网格中查看执行结果是否正确。
【实验结果】select distinct sno from student_course select * from student where dno = 计算机select sno,sname from student where dno = 计算机select * from studentwhere sex =男 and dno in(计算机,信息) select sno,0.75*score as 成绩from student_course where tcid =1 and score between80 and 90select sno,score from student where (tcid=1 or tcid=4) order by score desc,sno select *from student where birthday>=1995-1-1order by sname asc select *from student where sname like[李刘]% select sno,sname,sex from student where sname like[^张王李刘]% select count(distinct sno)as 选课人数from student_course select max(score) as 最高分from student_course where tcid=1 select sno,avg(score)as 平均分from student_course group by sno select sno,count(distinct tcid)as 选课门数from student_course group by snohaving count(tcid)>2 select sno,sum(score)as 总成绩from student_course group by sno havingsum(score)>=200 order by 总成绩desc 【实验体会】利用select语句可以实现对已有表中数据的查询的。
单表查询.doc
实验目的和要求:利用SQL语言在数据库中进行单表的数据查询操作。
实验内容:1在SM数据库中新建表Teacher,包括如下数据项Teacher(Tno,TName,age,sal,mgr,DNo)。
其中Tno为教师编号、Tname为教师姓名、age为年龄,sal为月薪,mgr为教职工的上一级领导(即上一级领导的职工号),DNo为部门号。
添加十行数据。
2 SELECT子句的应用。
(1) 查看所有职工的信息。
(2) 查看所有职工的职工号、姓名,并且将输出结果中的列名显示为“教职工号”、“姓名”。
(3) 查询所有教职工的姓名和年薪,并且将输出结果中的列名显示为“姓名”、“年薪”、“币种单位”,其中币种单位的值为“元”。
3 WHERE子句的应用。
(1) 查询所有0002部门职工的信息。
(2) 查询1980年到1985年出生的教师。
(3) 查询姓王的教师的信息。
4 ORDER BY子句的应用。
(1) 查询职工的年薪,并按年薪的升序排列。
5 聚合函数的应用(1) 统计职工的工资总额。
(2) 统计职工的工资总额,并显示每个职工的工资情况。
(3) 求职工的最高工资、最低工资和平均工资。
(4) 求‘0003’部门教师的总人数。
create table Teacher(Tno char(6) not null,Tname varchar(20) not null,Age int,Sal money,Mgr char(6),Deptno char(4))i n s e r t i n t o T e a c h e rv a l u e s('020131','宋晓跃',32,2980,'020101','0002')i n s e r t i n t o T e a c h e rv a l u e s('020132','刘玉玲',29,2350,'020101','0002')i n s e r t i n t o T e a c h e rv a l u e s('020133','魏斯理',38,3560,'020101','0002')i n s e r t i n t o T e a c h e rv a l u e s('020134','王强',26,2180,'020102','0002')i n s e r t i n t o T e a c h e rv a l u e s('020135','张晓',27,2180,'020101','0002')i n s e r t i n t o T e a c h e rv a l u e s('030236','任静',30,2980,'030201','0003')i n s e r t i n t o T e a c h e rv a l u e s('030237','马玉静',42,4980,'030201','0003')i n s e r t i n t o T e a c h e rv a l u e s('030238','辛东海',30,2680,'030201','0003')i n s e r t i n t o T e a c h e rv a l u e s('030239','王峰',40,4680,'030201','0003')i n s e r t i n t o T e a c h e rv a l u e s('030240','童心力',27,2180,'030201','0003')s e l e c t*f r o m T e a c h e rs e l e c t T n o教职工号,T n a m e姓名f r o m T e a c h e rs e l e c t T n a m e姓名,s a l*12年薪,币种单位='元'f r o m T e a c h e rs e l e c t*f r o m T e a c h e rw h e r e D e p t n o='0002's e l e c t*f r o m T e a c h e rw h e r e A g e b e t w e e n y e a r(g e t d a t e())-y e a r('1985-1-1')a n dy e a r(g e t d a t e())-y e a r('1980-1-1')s e l e c t*f r o m T e a c h e rw h e r e T n a m e l i k e'王%'s e l e c t T n o教职工号,s a l*12年薪f r o m T e a c h e ro r d e r b y年薪s e l e c t s u m(s a l)工资总额f r o m T e a c h e rs e l e c t T n o教职工号,s a l月工资f r o m T e a c h e rc o m p u t e s u m(s a l)s e l e c t m a x(s a l)最高工资,m i n(s a l)最低工资,a v g(s a l)平均工资f r o m T e a c h e rs e l e c t c o u n t(D e p t n o)f r o m T e a c h e rw h e r e D e p t n o='0003'。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一SQL语言单表查询
一、实验目的
熟悉SQLServer2008建立数据库和表的方法;掌握SQL语言单表查询方法二.实验内容
1、建立数据库Student
2、建立该数据库的三张表:stu_info,course_info,stu_grade,三张表分别存放学生的学生信息、课程信息和学生选课信息
3、请写出实现如下功能的SQL语句,并在SQLServer2008中进行测试
(1)查询所有同学的姓名和年龄信息,要求使用别名(姓名和年龄),结果如下:
(2)查询所有的院系信息,要求取消重复的行,结果如下:
(3)查询前5位同学的学号、姓名和成绩信息。
查询结果如下:
(4)查询所有的男同学学号、姓名、生日和性别信息。
查询结果如下:
(5)查询所有总分大于550的男同学信息。
查询结果如下:
(6)查询所有信息学院和会计学院并且总分大于550分的同学信息。
查询结果如下:
(7)查询所有籍贯为空的同学信息。
查询结果如下:
(8)查询总分在530—560之间的同学信息。
查询结果如下:
(9)查询所有在信息学院或会计学院就读的同学信息。
查询结果如下:
(10)查询所有姓“张”的同学信息。
查询结果如下:
(11)查询所有姓“张”,而且姓名是两个字的同学信息。
查询结果如下:
(12)查询所有不姓“张”也不姓“王”的同学信息。
查询结果如下:
(13)查询所有同学课程编号701的课程成绩,并按由大到小的顺序输出,如果成绩相同,则按学号由小到大排序。
查询结果如下:
(14)统计学生成绩表中每个同学的最高分、最低分、平均分和总分。
查询结果如下:
(15)统计学生成绩表中每个同学的最高分、最低分、平均分和总分,80分以下的成绩不参与统计。
Select stu_id,MAX(grade),MIN(grade),AVG(grade),SUM(grade)
From stu_grade
Where grade>=80
Group by stu_id
查询结果如下:
(16)统计学生成绩表中每个同学的最高分、最低分、平均分和总分,并输出平均分大于87分的信息。
查询结果如下:
(17)明细汇总:
使用group by子句对查询数据进行分组汇总,为每一组产生一个汇总结果,每个组只返回一行,无法看到详细信息。
使用compute和compute by子句既能够看到统计经营部的结果又能够浏览详细数据。
使用compute子句对所有学生的人数进行明细汇总。
查询结果如下:
(18)使用compute by子句按照院系对所有学生的人数进行明细汇总。
select*
from stu_info
order by sdept
compute count(stu_id)
by sdept
查询结果如下:
附:样本数据库student表数据:
学生信息表(stu_info):
课程信息表(course_info):
学生成绩表(stu_grade):。