数据库多表查询的几种方法

数据库多表查询的几种方法
数据库多表查询的几种方法

1.连接查询.

/*-- 传统连接方式 --*/

select e.ename,d.dname

from dept d , emp e

where d.deptno = e.deptno

/*--natural join 两张表中只有一个同名栏位时行连接 --*/

select e.ename,d.dname

from dept d

natural join emp e

/*--using 两个表中有多个同名栏位时 --*/

select e.ename,d.dname

from dept d join emp e

using(deptno)

/*--左外连结左表的全部记录(部门表中的所有记录:demp)-- */

/*--方式1--*/

select e.ename,d.dname from dept d left outer join emp e

on d.deptno = e.deptno

/*--方式2--*/

select e.ename,d.dname

from dept d , emp e

where d.deptno = e.deptno(+)

/*--右外连结-- (员工表中的所有记录:emp)*/

/*-- 方式1 --*/

select e.ename,d.dname from dept d right outer join emp e

on d.deptno = e.deptno

/*-- 方式2 --*/

select e.ename,d.dname

from dept d , emp e

where d.deptno(+) = e.deptno

/*--完全外连结(匹配与不匹配)-- (包括部门表及员工表中的所有记录)*/ select e.ename,d.dname from dept d full outer join emp e

on d.deptno = e.deptno

2.子查询.

/*--子查询(单行,多行)--*/

select * from emp

where sal > (select avg(sal) from emp)

/*--单行子查询可以引用(=,>,>=,<,<=,<>)操作符 --*/ select * from emp e

where e.deptno=(select d.deptno from dept d where d.deptno=1 )

/*--多行子查询可以引用(in,any,all)操作符--*/

select * from emp e

where e.deptno in(select d.deptno from dept d)

/*-- any 比较返回值中的任何一个,其中一个满足,则返回true --*/ select * from emp e

where e.sal < any(select sal from emp where deptno=2)

/*-- all 比较返回值中的所有,全部满足,则返回true --*/

select * from emp e

where e.sal < all(select sal from emp where deptno=2)

3.聚合查询.

/*--求和,平均 --*/

select sum(sal),avg(sal) from emp

select avg(nvl(sal,0)) from emp

/*--记录总数 --*/

select count(*) from emp

select count(memo) from emp /*--统计该栏非空记录 --*/

select count(distinct(sex)) from emp /*--去掉重复记录 --*/

/*-- group by --*/

select e.deptno,sum(e.sal)

from emp e

group by e.deptno

/*-- group by having --*/

select e.deptno,avg(e.sal)

from emp e

group by e.deptno

having avg(e.sal) > 4500

例子:

有两个表

pur_pra,pur_seller

pur_pra里面有一条数据,pur_seller里面没有数据。

我想从pur_pra里面取出一条记录,然后根据记录的s_No字段,从pur_seller 表内提出相应资料,请问这条查询语句不是这样写吗?

SELECT a.*,b.linker,b.linker_tels,b.faxs,b.s_name from pur_pra

a,pur_seller b Where a.FID=1 and a.s_no=b.s_no

但我这样查不到任何记录,

而用

SELECT a.*,b.linker,b.linker_tels,b.faxs,b.s_name from pur_pra

a,pur_seller b Where a.FID=1

则会得到两条记录。。

如果从a表内取出记录s_No字段的值在b表内存在,前一条语句就会返回正确结果。

请问在从a表内取出记录s_No字段的值在b表里面没有的时候,怎样可以使得返回结果还是有从a表里面按条件“a.FID=1”查出的数据?其他要从b表里面的取出的数据留空。

是否可以用一条查询语句做到?程序要求返回结果同在一个Recordset里面

解决:

表内的联结方式有四种:内联结,左外联结,右外联结,全连接

定义如下:

INNER

指定返回每对匹配的行。废弃两个表中不匹配的行。如果未指定联接类型,则这是默认设置。

FULL [OUTER]

指定在结果集中包含左表或右表中不满足联接条件的行,并将对应于另一个表的输出列设为 NULL。这是对通常由 INNER JOIN 返回的所有行的补充。

LEFT [OUTER]

指定在结果集中包含左表中所有不满足联接条件的行,且在由内联接返回所有的行之外,将另外一个表的输出列设为 NULL。

RIGHT [OUTER]

指定在结果集中包含右表中所有不满足联接条件的行,且在由内联接返回的所有行之外,将与另外一个表对应的输出列设为 NULL。

你上面用的是默认的内联结,这时当B表为空时,则不能返回记录。你可以用左外连接,这样:

SELECT a.*,b.linker,b.linker_tels,b.faxs,b.s_name

from pur_pra a left join pur_seller b on a.s_no=b.s_no Where a.FID=1

数据库原理实验报告(数据查询)

数据库原理实验报告 实验三数据查询 班级:××× 姓名:××× 学号:××× 数据查询 一、[实验目的] 1.掌握SQL的单表查询操作

2.掌握SQL的连接查询操作 3.掌握SQL的嵌套查询操作 4.掌握SQL的集合查询操作 二、[实验内容] 本实验的主要内容是: 1.简单查询操作。包括投影、选择条件表达,数据排序,使用临时表等。 2.连接查询操作。包括等值连接、自然连接、求笛卡儿积、一般连接、外连接、内连接、左连接、右连接和自连接等。 3.在SQL Server查询分析器中,使用IN、比较符、ANY或ALL和EXISTS操作符进行嵌套查询操作。 4.组合查询与统计查询。 (1)分组查询实验。该实验包括分组条件表达、选择组条件的表达方法。 (2)使用函数查询的实验。该实验包括统计函数和分组统计函数的使用方法。 (3)组合查询实验。 (4)计算和分组计算查询的实验。 三、[实验方法] 1.将查询需求用Transact-SQL语言表示。 2.在SQL Server查询分析器的输入区中输入Transact-SQL查询语句。 3.设置查询分析器结果区为Standard Execute(标准执行)或Execute to Grid方式。 4.发布执行命令,查看查询结果;如果结果不正确,进行修改,直到正确为止。 5 查询分析器的主要作用是编辑Transact-SQL,将其发送到服务器,并将执行结果及分析显示出来(或进行存储)。查询分析功能主要是通过测试查询成本,判断该查询是否需要增加索引以提高查询速度,并可以实现自动建立索引的功能。 图5- 错误!未定义书签。SQL Server 2000查询分析器 查询分析器的界面如图5- 错误!未定义书签。所示。在查询生成器中的左边窗口是对象浏览器,其中按树结构列出了数据库对象;右上方是SQL代码区域,用于输入SQL的查

数据库数据查询实验报告

师学院数学与计算机科学学院 《数据库》实验报告 实验序号:07 实验项目名称:数据查询 学号2014210758 姓名邹业安专业、班级14信科 实验地点222 指导教师褚万军时间2017.6.07 一、实验目的及要求 ?掌握从简单到复杂的各种数据查询。包括:单表查询、多表连接查询、嵌套查询、集合查询。 ?掌握用条件表达式表示检索条件。 ?掌握用聚合函数计算统计检索结果。 二、实验设备(环境)及要求 1、环境要求: 硬件:PC(PII以上,128M以上存)、因特网接入; 软件:在SQL Server 2000中 三、实验容与步骤 1、一般简单查询 (1)不带条件的查询指定字段(考虑去掉和不去掉重复值两种情况)。select distinct 学号 from 选课 select 学号 from 选课

(2)查询某个表中的所有记录查询教师表中的所有记录 (3)使用单个条件的简单查询查询成绩大于50的学生的学号select 学号 from 选课where 成绩>50

(4)使用多个条件(AND关系)的查询 select工资 from教师 where工资>200 and工资<500 (5)使用多个条件(OR关系)的查询 select工资 from教师 where工资<200 or工资>500 (6)使用多个条件(混合AND和OR关系)的查询 select*from学生 where (院系='2'and生源='')or(院系='6'and生源='') (7)使用带NOT运算的查询

where not (生源='') (8)使用BETWEEN???AND???的查询 select * from 选课 where 成绩 between 86 and 93 (9)使用NOT???BETWEEN???AND???的查询select * from 选课 where 成绩 not between 76 and 93 (10)使用LIKE运算符的字符串匹配查询。

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语句完成查询。

实验报告 数据库的基本查询'

一、实验目的: 通过该实验掌握应用SQL 查询数据库的基本方法,包括单表、多表查询。 二、实验原理 数据库查询是数据库的核心操作。SQL语言提供了SELECT语句进行数据库的查询。 SELECT[ALL|DISTINCT] <目标列表达式〉[,<目标列表达式〉]... FROM<表名或视图名〉[,<表名或视图名〉]... [WHERE<条件表达式>] [GROUP BY<列名1〉[HA VING<条件表达式>]] [ORDERBY<列名2〉[ASC|DESC]] 三、实验内容和方法 实验用的数据库:用实验二建立的数据库:School 1. 投影查询 (1) 查询SC表的sno的不重复记录。 使用SQL语句:“select distinct Sno from SC”,得出结果如下图所示: (2) 改变查询结果的标题名:sno为学号,sname为姓名,ssex 为性别,sdept 为系名。 使用SQL语句:“select Sno 学号,Sname 姓名,Ssex 性别,Sdept 系名from Student”,得出结果如下图所示:

(3) 查询STUDENT表的前3条记录(top 3)。 使用SQL语句:“select top 3 * from Student”,得出结果如下图所示: 3. 选择查询 (1) 查询成绩在60-80之间的姓名、系名和成绩。 使用SQL语句:“select Sname,Sdept,Grade from Student,SC where Grade>60 and Grade<80 and Student.Sno=SC.Sno”,结果如下图所示: 若使用SQL语句:“select Sname,Sdept,Grade from Student,SC where Grade between 60 and 80 and Student.Sno=SC.Sno”,则结果如下图所示: (2) 查询信息系和计算机系的姓名和成绩。 使用SQL语句:“select Sname,Grade from Student,SC where Sdept='IS' and Student.Sno=SC.Sno or Sdept='CS' and Student.Sno=SC.Sno”,结果如下图所示:

数据库原理实验报告四(有答案)

南京晓庄学院 《数据库原理与应用》课程实验报告 实验四查询设计实验 所在院(系):数学与信息技术学院 班级: 学号: 姓名:

1.实验目的 (1)了解查询的目的,掌握SELECT语句的基本语法和查询条件的表示方法。 (2)掌握数据排序和数据联接查询的方法。 (3)掌握SQL Server查询分析器的使用方法。 2.实验要求 (1)针对“TM”数据库,在SQL Server查询分析器中,用T-SQL语句实现以下单表查询 操作,并将将调试成功的T-SQL命令,填入实验报告中。 a)查询所有课程的详细情况。 b)查询来自江苏或山东的学生学号和姓名,并以中文名称显示输出的列名。 c)查询选修了课程的学生学号(一人选了多门课程的话,学号只显示一次)。 d)查询选修课程号为07253001的学号和成绩,并要求对查询结果按成绩降 序排列,如果成绩相同则按学号升序排列。 e)查询所有学生的学号、姓名和年龄。 f)查询选修课程号为07253001的成绩在85-95之间的学生学号和成绩,并 将成绩乘以0.7输出。 g)查询数学与信息技术学院(DEPT_ID为07)或物理与电子工程学院 (DEPT_ID为09)姓张的学生的信息。。 h)查询所有核心课程(课程名中带*的)的情况。 i)查询缺少了成绩的学生的学号和课程号,查询结果按课程号升序排列。 (2)在SQL Server查询分析器中,用T-SQL语句实现下列数据联接查询操作: a)查询每个学生的情况以及他(她)所选修的课程。 b)查询学生的学号、姓名、选修的课程名及成绩。 c)查询选修C语言程序设计且成绩为85分以上的学生学号、姓名及成绩。 d)查询和学生柏文楠是同一个民族的学生(用自身联接实现)。 e)分别用等值联接和内联接查询有授课记录的老师的姓名。 f)用外联接查询所有老师的授课情况,输出老师的工号、姓名、职称、院 系、担任的课程号和授课的学期,结果按院系和职称升序排列。如果该 老师没有授课历史,在课程号和授课的学期中显示空值 (3)在SQL Server Management Studio中新建查询,完成以上查询命令的同时,熟悉SQL编 辑器工具栏中各快捷按钮的作用。 (4)按要求完成实验报告。

数据库系统原理实验报告_SQL查询语句

数据库系统原理 实验报告 :xxx 学号:xxxxxxxx 专业:xxxxx 日期:xxxxx

Lab2 一、实验目的 进一步熟悉关系数据库标准语言SQL。 二、实验环境 1)Windows 10 2)SQL Server 2017 三、实验容 给定如学生表、课程表和学生作业表所示的信息。 表1 学生表 表2 课程表 表3 学生作业表

K001 0433 60 75 75 K001 0529 70 70 60 K001 0531 70 80 80 K001 0591 80 90 90 K002 0496 80 80 90 K002 0529 70 70 85 K002 0531 80 80 80 K002 0538 65 75 85 K002 0592 75 85 85 K006 0531 80 80 90 K006 0591 80 80 80 M001 0496 70 70 80 M001 0591 65 75 75 S001 0531 80 80 80 S001 0538 60 80 写出如下SQL语句: 1.查询数据库中有哪些专业班级。(5分) Sql语句: SELECT专业班级 FROM学生表; 查询结果截图: 2.查询在1986年出生的学生的学号、和出生日期。(5分) Sql语句: SELECT学号,,出生日期 FROM学生表 WHERE出生日期LIKE'1986%'; 查询结果截图:

3.查询05级的男生信息。(5分) Sql语句: SELECT* FROM学生表 WHERE学号LIKE'05%'AND性别='男'; 查询结果截图: 4.查询没有作业成绩的学号和课程号。(5分) Sql语句: SELECT学号,课程号 FROM学生作业表 WHERE作业1成绩IS NULL OR作业2成绩IS NULL OR作业3成绩IS NULL; 查询结果截图: 5.查询选修了K001课程的学生人数。(5分) Sql语句: SELECT COUNT(DISTINCT学号) FROM学生作业表 WHERE课程号='K001'; 查询结果截图:

实验三--数据库中的数据查询及视图操作实验报告

实验三--数据库中的数据查询及视图操作实验报告

长春大学计算机学院科学与技术专业 数据库原理实验报告 实验 名称: 实验三数据库中的数据查询及视图操作(1) 班级: 姓 名: 学 号: 实验地点: 日期: 一、实验目的: 1.继续熟练SQL SERVER 2005/2008系统或KingBase ES V7.0的使用; 2.掌握SELECT语句的使用。 3.掌握单表查询,多表查询以及嵌套查询。 二、实验内容、要求和环境: 【实验要求】 注:将完成的实验报告重命名为:班级+学号+姓名+(实验三),(如:041540538张三(实验三)),提交到SPOC学堂。 1.实验课要携带教材、学习辅导、老师下发的实验报告文档等。 2.课前要对实验内容和步骤部分进行预习。 【实验环境】 1.SQL SERVER 2005/2008; 2.KingBase ES V7.0 ,人大金仓。 【实验内容和步骤】

针对实验一建立的数据库的表,用select语句完成如下查询操作,写出select语句,并给出操作结果。 1.针对SPJ数据库中的四个表,实现如下查询: (1)求供应工程J1零件的供应商号码SNO; (2)求供应工程J1零件P1的供应商号码SNO; (3)求供应工程J1零件的供应商名SNAME; (4)求供应工程J1零件P1的供应商名SNAME; (5)求供应工程J1零件为红色的供应商号码 SNO; (6)求没有使用天津供应商生产的红色零件的 工程号JNO; (7)求至少用了供应商S1所供应的全部零件的 工程号JNO; (8)找出使用上海产的零件的工程名称; 2.针对学生-课程数据库中的三个表,用嵌套方法查询实现如下查询: (1)查询选修了数据库的学生姓名。 (2)查询比计算机系CS所有学生年龄都大的学生信息。 (3)列出“李勇”选修的所有课程的课名和成绩。(4)查询数据库的先行课的课程名。 3.针对实验一建立的SPXS数据库中的三个表,实现如下查询: (1)查询与商品“电视”颜色相同的商品名; (2)查询不销售商品P2的商店名; (3)查询至少销售商品P1、P2两种商品的商店名; (4)所有商店都销售的商品号。 (5)只销售一种商品P4的商店名。 三、实验结果与分析: 写出操作语句,粘贴查询结果(粘贴结果要求粘贴SQL Server Managemet Studio整个窗口):

数据库SQL查询语句实验报告

实验一简单查询 在订单数据库中完成如下的查询 (1) 查询所有业务部门的员工姓名、职称、薪水 命令: select employeeName2612,headShip2612,salary2612 from Employee2612 where department2612='业务科' 结果: (2) 查询名字中含有“有限”的客户姓名和所在地。 命令: select CustomerName2612,address2612 from Customer2612 where CustomerName2612 like '%有限%' 结果: (3) 查询出姓“王”并且姓名的最后一个字为“成”的员工。 命令: select * from Employee2612 where employeeName2612 like '王%成' 结果: (4) 查询住址中含有上海或南昌的女员工,并显示其姓名、所属部门、职称、住址,其中性别用“男”和“女”显示。 命令:

select employeeName2612,department2612,headShip2612,address2612, case sex2612 when 'M' then '男' when 'F' then '女' end as 性别 from Employee2612 where address2612 like '%上海%' or address2612 like '%南昌%' and sex2612='F' 结果: (5) 在表sales中挑出销售金额大于等于10000元的订单。 命令: SELECT orderNo2612,sum(quantity2612*price2612) as total FROM OrderDetail2612 GROUP BY orderNo2612 HA VING sum(quantity2612*price2612)>10000 结果: (6) 选取订单金额最高的前10%的订单数据。 命令: select TOP 10 PERCENT orderNo2612, sum(quantity2612*price2612) as total from OrderDetail2612 group by orderNo2612 ORDER BY total desc 结果: (7) 查询出职务为“职员”或职务为“科长”的女员工的信息。 命令: select * from Employee2612 where headShip2612 in ('科长','职员') and sex2612='F' 结果:

数据库上机实验报告

实验一:建立数据库及基本表 一、实验目的 1、了解SQL Server数据库的逻辑结构和物理结构; 2、了解SQL Server的基本数据类型; 3、学会在企业管理器中创建数据库和表; 4、使用SQL查询分析器用CREATE、DROP、ALTER语句创建和删除数据库,创建、删除、更新基本表。 二、实验内容 1、创建数据库和查看数据库属性。 2、创建表。 3、查看和修改表结构。 4、熟悉企业管理器和查询分析器工具的使用方法 三、实验步骤 1、在企业管理器中创建数据库和数据表。 (1) 使用企业管理器建立图书管理数据库,数据库名为BM,初始大小为10MB,最大为50MB,数据库自动增长,增长方式是按5%比例增长;日志文件初始为2MB,最大可增长到5MB,按1MB增长。数据库的逻辑文件名和物理文件名均采用默认值。 详细步骤: (2) 在企业管理器中查看图书管理数据库的属性,并进行修改,使之符合要求。 (3) 通过企业管理器,在建好了图书管理数据库BM中建立图书(book)、读者(reader)和借阅(borrow)3个表,其结构为: 图书(书号,类别,出版社,作者,书名,定价);读者(编号,姓名,单位,性别,电话); 借阅(书号,读者编号,借阅日期)。 (4) 利用企业管理器向表中输入数据。 2、在查询分析器中创建数据库和数据表 (1) 创建数据库S-C 的sql语句: create database s_c (2) 在数据库S-C下,创建基本表学生表student(sno,sname,ssex,sage,sdept)的sql语句: create table student( sno c(8),sname c(10),ssex c(2),sage(4),sdept c(8) ) 创建基本表课程表course(cno,cname, ccredit)的sql语句: create table course( cno c(4),cname c(10),ccredit c(2) ) 创建基本表成绩表sc(sno,cno,grade)的sql语句: create table sc( sno c(8),cno c(4),grade n(4) )

数据库实验(实验七数据查询)实验报告答案

实验7数据查询 【实验内容】 7.1单表查询 1、指定列或全部列查询 1) 查询S表中全体学生的详细记录 use jxsk select * from S 出言岂select - f Tdtt s| .1结杲 SEX AGE DEPT NATEVE J_a, i so i王青 山 19计算机NULL 2SI—赵亦17软件MULL 35218计算机NULL 4S3弓綽明胃IS信息NULL 554李四21包动ft NULL &S519软件NULL 756昊丽20计算机NULL 8S7范思明女ie NULL 9S820自动化NULL 10 S919枫牛NULL 2) 查询所有学生的姓名及其岀生年份。 use jxsk select SN, 2012 - AGEfrom S 1 「王 諭】 1&93 2赵亦1995 J钱尔1594 4號慣明隔 &李四1S51 6周展憫1553 7昊丽1382 8范思明1994 S??1S92 10张海涛 2、按条件查询及模糊查询 1)查询考试成绩有不及格的学生的学号。 use jxsk selectdistinct SNOfrom SCwhere SCORE<60 2)查询年龄在20 —23岁之间的学生的姓名、系名和年龄use jxsk select SN,

DEPT, AGEfrom S where AGE>=20 and AGE<= 30 □ us* select 5N, DEET, troni 5 L AGE>=20 ard AGE<-30 V结果J消息 | SH DEPT ,

数据库实验报告——多表查询

集美大学计算机工程学院实验报告 课程名称:SQL Server实用教程班级:网络0911实验成绩:指导教师:李传目姓名:钟小平 实验项目名称: 多表查询学号: 2009811012 上机实践日期: 2011-11-25 实验项目编号:05 组号:上机实践时间: 2课时 一、实验目的 1.掌握多表连接查询方法; 2.掌握IN 子查询的嵌套查询; 3.了解EXISTS嵌套查询方法。 二、实验内容与设计思想 1.多表等值连接查询; 2.外连接查询; 3.IN子查询嵌套; 4* EXISTS嵌套查询。 设计思想: 1、复习书本上的相关知识,如查阅多表的连接查询、多表的等值连接查询、表自身的连 接、IN嵌套子查询和EXISTS嵌套子查询等知识点; 2、先建立一个XSDA库,在建立相关表(利用上次验证试验建立好的数据库); 3、根据实验要求进行各种查询操作; 4、遇到问题,及时问老师或同学,查阅资料,以便得到及时解决; 5、认真做好试验报告。 三、实验使用环境 操作系统:Win-7 编程环境:Microsoft SQL Server 2008 四、实验步骤和调试过程 ###验证性实验 1.多表的连接查询(相当于做笛卡儿乘积) SELECT * FROM C XX,SC XX(截图中间有省略)

………… (1) 查询各学生的选课信息(包括学号、课程名、成绩) 因为学号和成绩在SC表中,而课程名在C表中,因此需要多表查询。SELECT SNO,CNAME,GRADE FROM C XX C,SC XX SC WHERE https://www.360docs.net/doc/6e11282514.html,O=https://www.360docs.net/doc/6e11282514.html,O

(2) 查询学生的选课记录,显示学生的学号、姓名、课程号、成绩)SELECT S.SNO,SNAME,CNO,GRADE FROM S XX S,SC XX SC WHERE S.SNO=SC.SNO (3) 查询学生的选课记录,显示学生的学号、姓名、课程号、课程名、成绩SELECT S.SNO,SNAME,https://www.360docs.net/doc/6e11282514.html,O,CNAME,GRADE FROM S XX S,SC XX SC,C XX C WHERE S.SNO=SC.SNO AND https://www.360docs.net/doc/6e11282514.html,O=https://www.360docs.net/doc/6e11282514.html,O

数据库数据查询实验报告

数据库应用设计实验报告 实验名称:_____ 实验3 数据查询______ 实验类型:_________验证型实验_________ 实验环境:_________ PC机____________ 指导教师:__ ____ ___ 专业班级:__________计科0802班________ 姓名:____________ ____________ 学号:_______ ______ ______ 联系电话:________ ______ _ 电子邮件:_ _ _ 实验地点:____________________________ 实验日期:2011 年 4 月13 日 实验报告日期:2011 年 4 月 17 日 成绩:__________________________

一、实验目的 ●掌握查询语句的一般格式; ●熟练掌握单表查询、连接查询、集合查询、统计查询和嵌套 查询。 二、实验平台 PC机,操作系统为windows2000,SQLsever2000 三、实验步骤、出现的问题及解决方案(不能解决的将问题列出) 本次实验同样是在前2次实验的基础上进行的,也就是对上两次做好的实验进行数据查询。其中包括:单表查询,连接查询,嵌套查询和集合查询。上两次的代码就不在这里展示了。 在数据库“zjs”中完成查询。 完整代码如下: /*查询全体学生的学号与姓名。*/ select 学号,姓名 from 学生表; /*查询每个学生及其选修课程的情况。*/ select * from 选课表;

/*查询所有姓“张”的学生的基本情况。*/ select * from 学生表 where 姓名like '张%'; /*查询每一门课的间接先修课(即先修课的先修课)。*/ select first.课程编号,second.先修课 from 课程表first,课程表second where first.先修课=second.课程编号; /*查询选修了课程名为“数据库”的学生学号、姓名及所在班级的名称。*/ select 学号,姓名,班级名称 from 学生表,班级表 where 学生表.班级编号=班级表.班级编号 and 学号in( select 学号 from 选课表 where 课程编号in ( select 课程编号 from 课程表 where 课程名='数据库'

数据库实验报告

数据库实验报告 班级:计算机科学与技术0904 学号:0909091627 姓名:惠苗壮 指导教师:陈再良

目录 一.实验目的 (1) 二.实验要求 (1) 三.实验内容 (1) 四.运行结果 (6) 五.实验总结 (20)

一.实验目的 1.了解DBMS的工作环境和系统框架; 2.通过SQL语言对数据库进行操作; 3.熟悉SQL语句。 二.实验要求 1.所有的SQL语句和源代码; 2.要求有适当的注释; 3.性约束实施、实验三、实验四和实验五要求给出相应的测试用例。 三.实验内容 实验一:创建表、更新表和实施数据完整性 1.运行给定的SQL Script,建立数据库GlobalToyz。 2.创建所有表的关系图。 3.列出所有表中出现的约束(包括Primary key, Foreign key, check constraint, default, unique) 4.对Recipient表和Country表中的cCountryId属性定义一个用户自定义数据类型,并将该属性的类型定义为这个自定义数 据类型。 5.把价格在$20以上的所有玩具的材料拷贝到称为PremiumToys

的新表中。 6.对表Toys实施下面数据完整性规则:(1)玩具的现有数量应在0到200之间;(2)玩具适宜的最低年龄缺省为1。 7.不修改已创建的Toys表,利用规则实现以下数据完整性:(1)玩具的价格应大于0;(2)玩具的重量应缺省为1。 8.给id为‘000001’玩具的价格增加$1。 实验二:查询数据库 1.显示属于California和Illinoi州的顾客的名、姓和emailID。 2.显示定单号码、商店ID,定单的总价值,并以定单的总价值 的升序排列。 3.显示在orderDetail表中vMessage为空值的行。 4.显示玩具名字中有“Racer”字样的所有玩具的材料。 5.根据2000年的玩具销售总数,显示“Pick of the Month”玩 具的前五名玩具的ID。 6.根据OrderDetail表,显示玩具总价值大于¥50的定单的号 码和玩具总价值。 7.显示一份包含所有装运信息的报表,包括:Order Number, Shipment Date, Actual Delivery Date, Days in Transit. (提 示:Days in Transit = Actual Delivery Date – Shipment Date) 8.显示所有玩具的名称、商标和种类(Toy Name, Brand,

数据库查询实验报告

数据库查询实验报告 篇一:数据库数据查询实验报告 数据库应用设计实验报告 实验名称:_____ 实验3 数据查询______ 实验类型:_________验证型实验_________ 实验环境:指导教师:__ ____ ___ 专业班级:__________计科0802班________ 姓名:____________ ____________ 学号:_______ ______ ______ 联系电话:________ ______ _ 电子邮件:_ _ _ 实验地点:____________________________ 实验日期: XX 年 4 月13日 实验报告日期: XX 年 4 月17日 成绩:__________________________ 一、实验目的 ? 掌握查询语句的一般格式; ? 熟练掌握单表查询、连接查询、集合查询、统计查询和嵌套查询。 二、实验平台 PC机,操作系统为windowsXX,SQLseverXX 三、实验步骤、出现的问题及解决方案(不能解决的将

问题列出) 本次实验同样是在前2次实验的基础上进行的,也就是对上两次做好的实验进行数据查询。其中包括:单表查询,连接查询,嵌套查询和集合查询。上两次的代码就不在这里展示了。 在数据库“zjs”中完成查询。 完整代码如下: /*查询全体学生的学号与姓名。*/ select 学号,姓名 from 学生表; /*查询每个学生及其选修课程的情况。*/ select * from 选课表; /*查询所有姓“张”的学生的基本情况。*/ select * from 学生表 where 姓名 like '张%'; /*查询每一门课的间接先修课(即先修课的先修课)。*/ select first.课程编号,second.先修课 from 课程表 first,课程表 second where first.先修课=second.课程编号; /*查询选修了课程名为“数据库”的学生学号、姓名

数据库实验报告

《数据库原理与技术》实验报告 实验一、数据定义及更新语句练习 一、实验内容 建立如下mySPJ数据库,包括S,P,J,和SPJ四个基本表(《数据库系统概论》第二章习题5中的四个表),要求实现关系的三类完整性。 S(SNO,SNAME,STATUS,CITY); P(PNO,PNAME,COLOR,WEIGHT); J(JNO,JNAME,CITY); SPJ(SNO,PNO,JNO,QTY); 二、完成情况

附上按照实验内容编写的程序代码。(小四号字,宋体) 三、实验结果 1、插入一条记录 2、①将p表中的所有红色零件的重量增加5。 ②将spj表中所有天津供应商的QTY属性值减少10。用子查询。

3.利用Delete语句删除p表中的所有红色零件的记录。 附上各个步骤所用的实验用例与结果显示(小四号字,宋体) 四、问题与解决 (小四号字,宋体) 1 .实验中遇到的问题及解决过程 2 .实验中产生的错误及原因分析 首先写出执行语句不成功的时候系统报告的错误信息。然后分析错误原因,并给出解决办法。

实验二简单查询和连接查询 一、实验内容 (一)完成下面的简单查询: ①查询所有“天津”的供应商明细; ②查询所有“红色”的14公斤以上的零件。 ③查询工程名称中含有“厂”字的工程明细。 (二)完成下面的连接查询: ①等值连接:求s表和j表的相同城市的等值连接。 ②自然连接:查询所有的供应明细,要求显示供应商、零件和工程的名称,并按照供应、工程、零件排序。 ③笛卡尔积:求s和p表的笛卡尔积。 ④左连接:求j表和spj表的左连接。 ⑤右连接:求spj表和j表的右连接。 二、完成情况 (一)完成下面的简单查询: ①查询所有“天津”的供应商明细; ②查询所有“红色”的14公斤以上的零件。

数据库实验报告(完整版)

数据库实验报告 班级:07111103 学号:1120111857 姓名:曹睿鹏

实验一: [实验内容1 创建和修改数据库] 分别使用SQL Server Management Studio和Transact-SQL语句,按下列要求创建和修改用户数据库。 1.创建一个数据库,要求如下: (1)数据库名"testDB"。 (2)数据库中包含一个数据文件,逻辑文件名为testDB_data,磁盘文件名为 testDB_data.mdf,文件初始容量为5MB,最大容量为15MB,文件容量递增值 为1MB。 (3)事务日志文件,逻辑文件名为TestDB_log, 磁盘文件名为TestDB_log.ldf,文件 初始容量为5MB, 最大容量为10MB,文件容量递增值为1MB。 2.对该数据库做如下修改: (1)添加一个数据文件,逻辑文件名为TestDB2_data,实际文件为TestDB2_data.ndf, 文件初始容量为1MB,最大容量为6MB,文件容量递增值为1MB。 (2)将日志文件的最大容量增加为15MB,递增值改为2MB。 方法一:使用SQL Server Management Studio创建和修改数据库TestDB 方法二:使用Transact-SQL语句创建和修改数据库TestDB 方法一过于简单,暂不做讨论。 下面学习方法二。 首先,在sql sever 2008中单击新建查询。 然后键入下面的代码。 建立新的数据库。 1. 创建一个数据库,要求如下:

2.对该数据库做如下修改:对刚刚的操作进行验证

数据均已更新完毕。 [实验内容2 数据表的创建、修改和查询] 1.熟悉有关数据表的创建和修改等工作,并了解主键、外键以及约束的创建和应用, 熟练掌握使用SQL Server Management Studio和CREATE TABLE、ALTER TABLE 等Transact-SQL语句对数据表的操作方法 字段名数据类型字段长度注释 项目编码char 10 主键 名称varchar 负责人编码char 10 客户int 开始日期datetime 结束日期datetime 字段名数据类型字段长度注释 员工编码char 10 主键 姓名varchar

数据库实验报告2

实验内容与要求 请有选择地实践以下各题。 (1)基于“教学管理”数据库jxgl,使用SQL的查询语句表达下列查询:①检索年龄大于23岁的男学生的学号和姓名; SELECT Sno,Sname FROM Student WHERE Ssex=’男’AND Sage>23; ②检索至少选修一门课程的女生姓名; SELECT Sname FROM Student WHERE Ssex=’女’AND Sno IN ( SELECT Sno FROM SC GROUP BY Sno HAVING count(*)>=1; ); ③检索王同学不学的课程的课程号; SELECT Cno; FROM Course WHERE Cno NOT IN ( SELECT Cno FROM Student,SC WHERE Sname like ’王%’AND Student.Sno=SC.Sno ); ④检索至少选修两门课程的学生学号; SELECT DISTINCT Sno FROM SC GROUP BY Sno HAVING count(*)>=2; ⑤检索全部学生都选修的课程的课程号与课程名; SELECT Cno,Cname FROM Course WHERE NOT EXISTS ( SELECT * FROM Student WHERE NOT EXISTS ( SELECT * FROM SC WHERE SC.Sno=Student.Sno AND https://www.360docs.net/doc/6e11282514.html,o=https://www.360docs.net/doc/6e11282514.html,o ) ); ⑥检索选修了所有3学分课程的学生学号;

FROM SC X WHERE NOT EXISTS ( SELECT * FROM Course WHERE Ccredit=3 AND NOT EXISTS ( SELECT * FROM SC Y WHERE X.Sno=Y.Sno AND https://www.360docs.net/doc/6e11282514.html,o=https://www.360docs.net/doc/6e11282514.html,o ) ); (2)基于“教学管理”数据库jxgl,使用SQL的查询语句表达下列查询: ①统计有学生选修的课程门数; SELECT count(DISTINCT Cno) FROM SC; ②求选修4号课程的学生的平均年龄; SELECT AVG(Sage) FROM Student,SC WHERE Cno=4 AND Student.Sno=SC.Sno; ③求学分为3的每门课程的学生平均成绩; SELECT AVG(Grade) FROM Course,SC WHERE Ccredit=3 AND https://www.360docs.net/doc/6e11282514.html,o=https://www.360docs.net/doc/6e11282514.html,o GROUP BY https://www.360docs.net/doc/6e11282514.html,o; ④统计每门课程的学生选修人数,要求超过3人的课程才统计,要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列; SELECT Cno,count(Sno) FROM SC GROUP BY Cno HAVING count(Sno)>3 ORDER BY count(Sno) DESC,Cno ASC; ⑤检索学号比“王菲”同学大而年龄比他小的学生姓名; SELECT Sname FROM Student X WHERE Sno> ( SELECT Sno FROM Student Y WHERE Sname=’王菲’AND Sage> ( SELECT Sage FROM Student Z WHERE Sname=’王菲’AND X.Sno=Z.Sno AND Y.Sno=Z.Sno ) ); ⑥检索姓名以“王”打头的所有学生的姓名和年龄;

数据库实验多表查询实验报告

附页 实验内容: 针对实验数据库shiyan,完成以下单表查询操作: 1.查询为工程J1供应红色零件的供应商号码SNO。 2.查询没有使用天津供应商生产的零件并且当前工程所使用零件的颜色全部为红色的工程号JNO。 3.查询至少选用了供应商S1所供应的全部零件的工程号JNO。 4.找出工程项目J2使用的各种零件的名称及其重量。 5.找出上海厂商供应的所有零件号码。 6.找出使用上海产的零件的工程名称。 7.找出没有使用天津产的零件的工程号码。 8.找出重量最轻的红色零件的零件编号PNO。 9.找出供应商与工程所在城市相同的供应商提供的零件号码。 10.找出所有这样的一些<CITY,CITY,PNAME>三元组,使得第一个城市的供应商为第二个城市的工程供应零件的名称为PNAME。 11.重复第15题,但不检索两个CITY值相同的三元组。 12.找出供应商S1为工程名中含有“厂”字的工程供应的零件数量总和。 实验方法、步骤以及实验结果: 操作1 (1)打开SQL Server查询分析器。 (2)在查询分析器中输入如下所示的SQL脚本: use ShiYan go select sno from spj where jno='j1'and pno in(select pno from p where color='红') 操作结果: 操作2 (1)打开SQL Server查询分析器。 (2)在查询分析器中输入如下所示的SQL脚本: use shiyan

go select jno from spj where sno in (select sno from s where city<>'天津') and pno in (select pno from p where color='红') 操作结果: 操作3 (1)打开SQL Server查询分析器。 (2)在查询分析器中输入如下所示的SQL脚本: select distinct jno from spj as x where not exists ( select * from spj as y where sno='s1' and not exists (select * from spj as z where z.pno=y.pno and z.jno=x.jno)) 操作结果: 操作4 (1)打开SQL Server查询分析器。 (2)在查询分析器中输入如下所示的SQL脚本: use shiyan go select pname,weight from p,spj where spj.jno='j2' and spj.pno=p.pno 或者 select pname,weight from p where pno in (select distinct pno from spj where jno='j2') 操作结果:

数据库原理 单表查询 实验报告

计算机科学与信息学院软件工程系上机实验报告

(2)求该校的所有系名。 SELECT DISTINCT Sdept FROM Student; (3)求计科系男生的学号和姓名。 SELECT Sno,Sname FROM Student WHERE Ssex=’男’ and Sdept=’CS’; (4)求年龄在19-21岁(包含19岁和21岁)之间的学生姓名和所在系。 SLELCT Sno,Sdept FROM Student WHERE Sage BETWEEN 19 AND 21;

(5)求存在先行课的课程的课程名和学分。 SELECT Cname,Ccredit FROM Course WHERE Cpno IS not NULL; (6)求数学系或者信息系的学生姓名。 SELECT Sname FROM Student where Sdept in('MA','IS'); (7)求以“数据”开头的所有课程的课程名和学分。SELECT Cname,Ccredit FROM Course WHERE Cname LIKE'数据%';

(8)求课程DB_Design的学分。 SELECT Ccredit FROM Course WHERE Cname LIKE'DB_Design'; (9)求缺考学生的学号和课程号。 SELECT Sno,Cno FROM SC WHERE Grade IS NULL; (10)求选修了2号课程学生的学号和成绩。SELECT Sno,Grade FROM SC WHERE Cno='2'; (11)求计科系老师的姓名和工资。 SELECT Tname,Twage FROM Teacher WHERE Tdept='CS';

相关文档
最新文档