实验一 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'。
Sql_Lab1 单表查询

SQL实验一单表查询实验目标:⏹启动SQL*Plus⏹单表查询1.1启动SQL*Plus要调用SQL Plus,需依次完成如下步骤:✧单击Start(“开始”)按钮。
✧指向Programs(“程序”)组图标。
✧选择Oracle—oracle10g。
图1-1✧选择Application Development(“应用程序开发”)选项。
✧单击SQL Plus。
启动SQL 之后,将会出现图1-2 所示的屏幕。
填写相应的详细资料。
按Tab 键转到下一个选项。
安装Oracle 时创建的默认用户为Scott,密码为tiger。
主机字符串是oracle。
可以向实验室老师询问所在终端的用户名和密码。
图 1-2单击 OK (“确定”)。
将会出现如下图所示的屏幕,显示产品信息。
图 1-3SQL > 是 SQL 提示符。
在此提示符下提供要执行的 SQL 命令和语句。
下面给出可通过 scott/tiger 登录访问的默认表及其列名。
在本实验中,我们将使用这些表。
EMP DEPT SALGRADE EMPNO ENAME JOB MGRHIREDATE SAL COMM DEPTNODEPTNO DNAME LOC GRADE LOSAL HISAL1.2 从表中查看数据输入表中的数据可通过使用 SELECT 语句进行查看。
1.2.1 查看所有列语法如下:SELECT * FROM tablename ;其中“*” 表示将显示所有列。
实验1-1 部门表中查看所有记录和所有字段,请执行如下步骤:您将得到图1-4 中显示的结果。
图1-41.2.2 查看选择列要查看选择列,请输入列名,并用逗点而不是“*”隔开。
语法如下:SELECT columnname1, columnname2, ?, columnnameNFROM tablename;实验1-2只显示部门表中的部门名和位置,请给出如下所示的语句:图1-5某些列标题由于其列大小限制而使用缩写词。
数据库原理与应用 实验报告 单表查询

《数据库原理及应用》电子实验报告题目:SQL语言数据查询--单表查询日期姓名实验环境:Windows 7,Sql Server2005实验目的:1.掌握基本的select语句2.掌握表中列的查询3.掌握表中元组的选择实验内容:1.基本的select语句格式及说明SQL提供了SELECT语句进行数据库的查询,该语句具有灵活的使用方法和丰富的功能。
其一般格式为:SELECT [ALL|DISTINCT]<目标列表达式>[,<目标列表达式>]…FROM <表名或视图名>[,<表名或视图名>]…[WHERE <条件表达式>][GROUP BY<列名1>[HAVING<条件表达式>]][ORDER BY<列名2>[ASC|DESC]];说明:整个SELECT语句的含义是,根据WHERE子句的条件表达式,从FROM子句指定的基本表或视图中找出满足条件的元组,再按SELECT子句中的目标列表达式,选出元组中的属性值形成结果表。
如果有GROUP BY子句,将结果按<列名1>的值进行分组,该属性列值性等的元祖为一个组。
通常会在每个组中作用聚集函数。
如果GROUP BY子句带HAVING短语,则只有满足指定条件的组才给予输出。
如果有ORDER BY子句,则将结果按<列名2>的值的升序或降序排列。
SELECT语句既可以完成简单的单表查询,也可以完成复杂的连接查询和嵌套查询。
2. 表中列的查询1)表中若干列的查询(写出题目、关系代数表达式和sql语句)【实例1】从学生表查询学生的学号。
代码如下:SELECT SnoFROM Student;结果如图所示:【实例2】从学生表查询学生的姓名。
代码如下:SELECT SnameFROM Student;结果如图所示:【实例3】从课程表查询课程名。
代码如下:SELECT CnameFROM Course;结果如图所示:2)掌握表中全部列的查询(写出题目、关系代数表达式和sql语句)【实例4】查询全体学生的详细信息。
第2讲sql语句的单表查询实验

一、Transact-SQL语言
1)T-SQL语言的组成元素
数据定义语言DDL(Data Definition Language) () – 定义数据库结构、各对象及属性的语句 – 例如:CREATE DATABASE Student 数据操纵语言DML(Data Manipulation Language) – 实现对数据库基本操作的语句,主要包括查询、 插入、修改、删除等 数据控制语言DCL(Data Control Language) () – 保证数据库一致性和完整性
(10)Group by [having] (11)Order by //排序
1) 可以使用通配符“ * ”表示表中的所有字段。 【例2】 使用SELECT语句显示T_Student表中所有字段 的值。 SELECT * FROM T_Student 注:如果字段名或表名中含有空格,则该字段名或表名 必须用方括号括起。 USE Northwind SELECT * FROM [Order Details] 2) 在字段表中,可以使用 字段名 AS 新字段名 的方式将原字段名以新的字段名显示。 【例3】 显示T_Class表中班级代号,并将ClassCode字段 改为班级号。 SELECT ClassCode AS 班级号 FROM T_Class
1.数据库定义语句()
(1) 创建数据库语句(CREATE DATABASE) 【例1】创建一个只有一个主数据文件 SchoolTest(不 指定该文件的大小)的数据库。 CREATE DATABASE SchoolTest ON (NAME=SchoolTest_Data, FILENAME ='D:\DBSchoolTest\SchoolTest_Data.MDF')
实验参考:SQL的数据查询(单表查询)

例如:设教学数据库EDUCATION中有三个关系: 学生关系 S ( SNO, SNAME, AGE, SEX, SDEPT) 学习关系SC(SNO, CNO, GRADE) 课程关系 C ( CNO, CNAME, CDEPT, TNAME)
SQL的数据查询
SNO, SNAME, AGE, s1 LiYang 20 s2 WangLi 21 s3 WuFang 19 …… …… sn TangWen 20 学生关系 S SEX, SDEPT M 通讯 M 计算机 F 材料 …… …… F 物理 SNO, CNO, GRADE S1 c1 A S2 c2 B … … … 学习关系 SC
SELECT命令的格式<目标列表达式>不仅可以是算术表达式 , 还可以是字符串常量、函数等。同时用户可以通过指定别名来改 变查询结果的列标题,这对于含算术表达式、常量、函数名的目 标列表达式尤为有用。
单表查询
(二)选择表中的若干元组 SNO, CNO, (1)消除取值重复的行 95001 c1 【例4】假如教学数据库EDUCATION中有一个 95001 c2 … … 学习关系:SC(SNO, CNO, GRADE) 99999 c5 查所有选修过课的学生的学号 … … SELECT Sno FROM SC; 该查询结果里包含了许多重复的行。如果想去掉结果 SNO 表中的重复行,必须指定DISTINCT短语: SELECT DISTINCT Sno FROM SC; 95001 95002 (2)查询满足条件的元组 … … 查询满足指定条件的元组可以通过 95100 WHERE子句实现。 … …
SQL的数据查询
1、SELECT完整语句的执行过程:
SELECT 的完整语 句格式
SQL数据查询之——单表查询

SQL数据查询之——单表查询⼀、SQL数据查询的⼀般格式数据查询是数据库的核⼼操作。
SQL提供了SELECT语句进⾏数据查询,其⼀般格式为:SELECT[ALL | DISTINCT]<⽬标列表达式>[,<⽬标列表达式>]···FROM<表名或视图名>[,<表名或视图名>···]| (SELECT语句>)[AS]<别名>[WHERE<条件表达式>][GROUP BY<列名1>[HAVING<条件表达式>]][ORDER BY<列名2>[ASC | DESC]];整个SELECT语句的含义是,根据WHERE⼦句的条件表达式从FROM⼦句指定的基本表、视图或派⽣表中找出满⾜条件的元组,再按SELECT⼦句中的⽬标列表达式选出元组中的属性值形成结果表。
如果有GROUP BY⼦句,则将结果按<列名1>的值进⾏分组,该属性列值相等的元组为⼀个组。
通常会在每组中作⽤聚集函数。
如果GROUP BY⼦句带HAVING短语,则只有满⾜指定条件的组才予以输出。
如果有ORDER BY⼦句,则结果还要按<列名2>的值的升序或降序排序。
SELECT语句既可以完成简单的单表查询,也可以完成复杂的连接查询和嵌套查询。
⼆、SQL单表查询(仅涉及⼀个表的查询)1.选择表中的若⼲列(1)查询指定列查询全体学⽣的学号与姓名SELECT Sno,SnameFROM Student;查询全体学⽣的姓名、学号、所在系SELECT Sname,Sno,SdeptFROM Student;(2)查询全部列查询全体学⽣的详细记录SELECT*FROM Students;等价于SELECT Sno,Sname,Ssex,Sage,SdeptFROM Student;(3)查询经过计算的值查询全体学⽣的姓名及其出⽣年份SELECT Sname,2014-Sage //查询结果的第2列是⼀个算术表达式FROM Student;注意:⽤当时的年份(假设为2014年)减去学⽣的年龄,这样所得的即是学⽣的出⽣年份。
实验一 SQL语言单表查询

实验一SQL语言单表查询一、实验目的熟悉SQLServer2008建立数据库和表的方法;掌握SQL语言单表查询方法二.实验内容1、建立数据库Student2、建立该数据库的三张表: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_gradeWhere grade>=80Group by stu_id查询结果如下:(16)统计学生成绩表中每个同学的最高分、最低分、平均分和总分,并输出平均分大于87分的信息。
数据库SQL实验报告__SQL交互式查询(单表查询)

实验3 SQL交互式查询(单表查询)实验日期和时间:实验室:班级:学号:姓名:实验环境:1.硬件:计算机2.软件:windows 7 & SQL 2000实验主要任务:在实验1中建立的学生选课数据库中,用SQL语句完成下列查询任务1.在学生表中查询姓名为“张晶晶”学生的记录。
2.查询“会计系”全体女同学的记录,列出学号、姓名、年龄。
3.查询非“金融系”且年龄小于等于20岁的学生记录,列出学号、姓名、系编号。
4.查询所有2009级(学号以2009 开头)的学生的成绩,列出学号、课程号、成绩,查询结果按课程号排序。
5.查询所有低于60 分的学生成绩记录,列出学号、课程号、成绩,结果按课程号、学号排序列表。
6.查询选修了1 号课程并且成绩大于等于90分的学生记录,列出学号、成绩,并按成绩降序排序。
7.查询超过2 学分(大于)的课程记录。
8.查询学生表中所有1993年出生的学生的记录,按出生日期排序。
9.统计全体学生的总人数。
10.统计各系的学生人数,列出所在系、人数。
11.统计各门课的平均分,列出课程号、平均分。
12.查询选修人数不足5 人的课程,列出课程号、人数。
查询1:在学生表中查询姓名为“张晶晶”学生的记录。
代码:select * from 学生 where 姓名='张晶晶'执行结果:说明:查询的姓名有改动查询2:查询“会计系”全体女同学的记录,列出学号、姓名、年龄。
代码:select * from 学生,系where 系名='会计' and 系.系编号=学生.系编号执行结果:说明:查询3:查询非“金融系”且年龄小于等于21岁的学生记录,列出学号、姓名、系编号、系名。
代码:select 学号,姓名,学生.系编号,系名from 学生,系where 系名<>'金融' and 系.系编号=学生.系编号and year(getdate())-year(出生日期)<21执行结果:说明:改成21岁,添加了系名显示查询4:查询所有2009级(学号以2009 开头)的学生的成绩,列出学号、课程号、成绩,查询结果按课程号排序代码:select 学号,课程号,成绩from 选课where 学号like '2009%'order by 课程号执行结果:说明:查询5:查询所有低于80 分的学生成绩记录,列出学号、课程号、成绩,结果按课程号、学号排序列表代码:select 学号,课程号,成绩from 选课where 成绩<80order by 课程号,学号执行结果:说明:低于60分改成了低于80分查询6:查询选修了0001 号课程并且成绩大于等于90分的学生记录,列出学号、成绩、课程号,并按成绩降序排序代码:select 学号,成绩,课程号from 选课where 成绩>90 and 课程号='0001'order by 成绩DESC执行结果:说明:1号课程改成了课程号0001,显示时候加了属性课程号查询7:查询超过4 学分(大于)的课程记录代码:select * from 课程where 学分>4执行结果:说明:超过2学分改成了超过4学分查询8:查询学生表中所有1990年出生的学生的记录,按出生日期排序代码:select * from 学生where year(出生日期)=1990order by 出生日期执行结果:说明:查询1993年出生改成了1990查询9:统计全体学生的总人数代码:select count(学号) as 总人数from 学生执行结果:说明:查询10:统计各系的学生人数,列出所在系、人数代码:select 系名,sum(选课人数) as 人数from 系, 授课,课程where 系.系编号=课程.系编号and 课程.课程号=授课.课程号group by 系名执行结果:说明:查询11:统计各门课的平均分,列出课程号、平均分代码:select 课程号,avg(成绩) as 平均分from 选课group by 课程号执行结果:说明:查询12:查询选修人数不足100人的课程,列出课程号、人数代码:select 课程号,选课人数as 人数from 授课where 选课人数<100执行结果:说明:不足5人改成了不足100人你在完成查询任务1-12的过程中遇到的问题及解决的方法有:实验10:代码:select 系名,sum(选课人数) as 人数from 系, 授课,课程where 系.系编号=课程.系编号and 课程.课程号=授课.课程号group by 系.系编号结果:解决办法:把group by 后面的系.系编号给成系名疑问?为什么货出现这样的结果啊?请老师解答本次实验涉及到的基本原理:(语法)select 对表的查询;表的连接;给数据分组;给数据排序;小结:一个标点符号都会造成错误,需要注意细节1.报告格式和内容要求:a. 内容和格式整齐。
SQL语句基础之单表查找

SQL语句基础之单表查找Sql语句之单表查询⼀.⼀般查询1.查看表中的所有记录以及所有字段(属性)语句 : select * from student;2.只查看某些字段语句:select sname,sex from student;3.把查询出来的结果的字段名显⽰为其它名字语句: select sname as ‘姓名’ , sage as ‘年龄’ from student;4.在查询结果中添加⼀列,这⼀列的值为⼀个常量语句:select sname,sex,’⼴州’ address from student;5.把某些字段合并后显⽰出来(我先在表中添加了⼀个字段score,它的值为90)语句: select sname,(sage+score) as ‘年龄加得分’ from student;注意,合并的字段的数据类型必须⼀致。
6.把查询出来的结果的重复记录去掉语句: select distinct score from student;因为学⽣们的成绩都是90,去掉重复后,只显⽰⼀个记录。
条件查询除了根据字段来查询,我们还可以通过设定某些条件来查询,得到⾃⼰想要的记录。
使⽤where关键字来设置条件;1.单条件查询查询名字为 Jax的学⽣的信息:语句:select * from student where sname=’Jax’;2.多条件查询查询名字为JinX,并且年龄为18岁的学⽣信息:语句: select * from student where sname=’JinX’ and sage=18;查询名字为VN,或则EZ的学⽣的年龄。
语句:select sage from student where sname=’VN’ or sname=’EZ’;3.范围查询查询年龄在17到20岁的学⽣的信息。
语句:SELECT * FROM student WHERE sage BETWEEN 17 AND 20; -- 包前包后4.判空查询判空主要有两个:⼀.判断是否为null,⼆.判断是否为空字符串判断是否为null:语句 select * from student where score is not null;select * from student where score null;判断是否为空字符串: 语句 select * from student where sex<>’’; ------”<>”表⽰ “不等于” Select * from student where sex=’’;5.模糊查询使⽤ like 关键字,”%”代表任意数量的字符,”_”代表占位符。
- 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):。