实验4数据库的查询和视图.docx

合集下载

数据库实验4_数据库查询与视图

数据库实验4_数据库查询与视图

在学生选课数据库中完成规定查询,并创建视图。

1.查询线性代数不及格的同学的学号和姓名;SQL语句为:SELECT名单$.学号,姓名FROM名单$,学生选课信息和成绩$,课程$WHERE名单$.学号=学生选课信息和成绩$.学号AND课程$.课号=学生选课信息和成绩$.课号AND课程$.课程名='线性代数'AND学生选课信息和成绩$.成绩<60;执行后结果为:2.查询没有选课记录的同学的所有基本信息;SQL语句为:SELECT*FROM名单$WHERE NOTEXISTS(SELECT*FROM学生选课信息和成绩$WHERE学号=名单$.学号);执行后结果为:3.查询具有简介先修课的课程信息及对应的先修课名;SQL语句为:SELECTFIRST.课号,SECOND.课程名FROM课程$FIRST,课程$SECONDWHEREFIRST.先修课号=SECOND.课号;执行后结果如下:4.统计高等数学(1)的平均成绩;SQL语句为:SELECT AVG(成绩)FROM学生选课信息和成绩$,课程$WHERE学生选课信息和成绩$.课号=课程$.课号AND课程$.课程名='高等数学(1)'; 执行后结果如下:5.统计各门课的选课人数;SQL语句为:SELECT课号,COUNT(学号)FROM学生选课信息和成绩$GROUPBY课号;执行后结果为:6.查询选修5门课以上的学生的学号;SQL语句为:SELECT学号FROM学生选课信息和成绩$GROUPBY学号HAVING COUNT(*)>5;执行后结果为:7.用你的学号查询和你一个班的同学的学号和姓名;SQL语句为:SELECT学号,姓名FROM名单$WHERE班级IN(SELECT班级FROM名单$WHERE学号='201000800145');执行后结果如下:8.查询高等数学(1)成绩比你高出10分以上的同学的姓名和对应成绩;SQL语句为:SELECT姓名,成绩FROM名单$,学生选课信息和成绩$WHERE名单$.学号=学生选课信息和成绩$.学号AND学生选课信息和成绩$.课号='82006010'AND成绩>(SELECT成绩+10FROM学生选课信息和成绩$,课程$WHERE学生选课信息和成绩$.课号=课程$.课号AND课程$.课程名='高等数学(1)' AND学生选课信息和成绩$.学号='201000800145')执行后结果为:9.找到每门课获得最高成绩的同学的学号、姓名、课名和成绩;选做。

第4章 数据库的查询和视图

第4章  数据库的查询和视图

图4.2 使用全文索引
第3步 下面使用SQL Server全文索引向导创建全文索引。在“对象资源管 理器”中展开“数据库”→“PXSCJ”→选择表“dbo.XSB”,右击鼠标,在 弹出的快捷菜单上选择“全文索引”菜单项,在打开的子菜单中选择“定义全 文索引”菜单项。 第4步 在打开的“全文索引向导”窗口中单击“下一步”按钮,为表选择 “唯一索引”后单击“下一步”按钮。选择作为全文索引的“属性列”及“语 言种类”(如图4.3所示),单击“下一步”按钮,这里跟踪模式选择默认的 “自动”。
说 明
求组中值的平均值 返回对表中的行或表达式列表计算的二进制校验值,可用于检测表中 行的更改 返回在表的行上或在表达式列表上计算的校验值,用于生成哈希索引 返回组中值的校验值 求组中项数,返回int类型整数 求组中项数,返回bigint类型整数 产生一个附加的列 求最大值 求最小值 返回表达式中所有值的和 返回给定表达式中所有值的统计标准偏差 返回给定表达式中所有值的填充统计标准偏差 返回给定表达式中所有值的统计方差 返回给定表达式中所有值的填充的统计方差
【例4.23】 查询XSB表中专业为“计算机”或“通信工程”或“无线电” 的学生的情况。
SELECT * FROM XSB WHERE 专业 IN ('计算机', '通信工程', '无线电') 该语句与下列语句等价: SELECT * FROM XSB WHERE 专业= '计算机' or 专业= '通信工程' or 专业='无线电‘
SELECT 姓名,学号,总学分 FROM ( SELECT 姓名,学号,性别,总学分 FROM XSB WHERE 总学分>50 ) AS STUDENT WHERE 性别=1;

数据库的视图操作实验报告

数据库的视图操作实验报告

实验(四)数据库的视图操作实验一、实验目的和要求(1)掌握SQL Server中的视图创建向导和图表创建向导的使用方法;(2)加深对视图和SQL Server图表作用的理解。

(3)掌握数据库安全性的操作方法。

二、实验内容和原理1. 基本操作实验(1)在SQL Server企业管理器中调出Create View Wizard(创建图表向导),按下列Transact-SQL描述的视图定义,创建借阅_计算机图书视图。

CREATE VIEW 借阅_计算机图书AS SELECT 图书.*,借阅.*FROM 图书,借阅WHERE图书.编号=借阅.书号AND图书.类别=‘计算机’(2)在SQL server企业管理器中调出Create View Wizard(创建图表向导),完成在图书-读者数据库中建立一个图书_借阅图表操作。

要求该图表包括图书和借阅两个表,并包括图书与借阅之间的“图书.书号=借阅.书号”外码与被参照表之间的关联。

(3)查看上述实验结果。

如果结果有误,予以纠正。

2. 提高操作实验在学生-课程数据库中用Transact-SQL语句描述下列视图定义。

(1)从学生表中建立查询所有男(女)生信息的视图STU_SEX。

视图的列名为SNO、SNAME、SSEX和SAGE。

(2)从课程表中建立查询所有课程先修课信息的视图课程_PRE。

视图的列名为课程号、课程名称和先修课名称。

(3)从选修表中建立查询成绩大于等于80信息的视图STU_CJ1。

视图的列名为学号、课程号和成绩。

(4)从学生、选修和课程三个表建立查询学生选修情况的视图STU_CJ2。

视图的列名为姓名、课程名称和成绩。

(5)从学生、选修和课程三个表建立查询学生选修情况并且成绩小于80的视图STU_CJ3。

视图的列名为姓名、课程名称和成绩。

(6)利用Transact-SQL命令修改视图STU_SEX。

把视图的列名改为学号、姓名、性别和年龄,把加上“WITH CHECK OPTION”选项。

实验4:数据库的高级查询操作

实验4:数据库的高级查询操作

实验4:数据库的高级查询操作实验四:数据库的各类数据查询操作一、实验目的掌握SQL程序设计基本规范,熟练运用SQL语言实现数据的各种查询和设计,包括连接查询、嵌套查询、集合查询等。

二、实验内容和要求针对KingbaseES数据库设计单个表针对自身的连接查询,设计多个表的连接查询;设计各种嵌套查询和集合查询。

了解和掌握SQL查询语句各个子句的特点和作用,按照SQL程序设计规范写出具体的SQL查询语句,并调试通过。

三、实验步骤连接查询1. 查询每个学生及其选修课程的情况:select student.*, sc.* from student, sc where student.sno=sc.sno比较: 笛卡尔集: select student.*, sc.* from student, sc自然连接: select student.sno, sname, ssex, sdept, cno, grade from student, sc where student.sno=sc.sno2. 查询每一门课程的间接先行课(只求两层即先行课的先行课):select /doc/3d4429586.html,o, Second.pcno 间接先行课from course First, course Second where First.pcno=/doc/3d4429586.html,o比较:select /doc/3d4429586.html,o, Second.pcno 间接先行课from course First, course Second where First.pcno=/doc/3d4429586.html,o and Second.pcno is not null3. 列出所有学生的基本情况和选课情况, 若没有选课,则只列出基本情况信息:SQL Server 中: select s.sno, sname, ssex,sdept, cno, grade from student s, sc sc where s.sno*=sc.sno4. 查询每个学生的学号, 姓名, 选修的课程名和成绩:select S.sno, sname, cname, grade from student S, course C, sc SC where S.sno=SC.sno and /doc/3d4429586.html,o=/doc/ 3d4429586.html,o5. 查询平均成绩在80分以上的学生姓名Select sname from student,sc where student.sno=sc.sno GROUP BY sc.snoHAVING AVG(sc.grade)>80;高级查询使用带IN谓词的子查询1.查询与’刘晨’在同一个系学习的学生的信息:select * from student where sdept in(select sdept from student where sname='刘晨')比较: select * from student where sdept =(select sdept from student where sname='刘晨') 的异同比较: select * from student where sdept =(select sdept from student where sname='刘晨') and sname<>'刘晨' 比较: select S1.* from student S1, student S2 where S1.sdept=S2.sdept and S2.sname='刘晨'2.查询选修了课程名为’信息系统’的学生的学号和姓名:SQL Server中: select sno, sname from student where sno in (select sno from sc where cno in(select cno from course where cname='信息系统'))3.查询选修了课程’1’和课程’2’的学生的学号:select sno from student where sno in (select sno from sc where cno='1')and sno in (select sno from sc where cno='2') 比较: 查询选修了课程’1’或课程’2’的学生的sno:select sno from sc where cno='1' or cno='2'比较连接查询:select A.sno from sc A, sc B where A.sno=B.sno and /doc/3d4429586.html,o='1' and/doc/3d4429586.html,o='2'使用带比较运算的子查询1.查询比’刘晨’年龄小的所有学生的信息:select * from student where sage<(select sage from student where sname='刘晨')使用带Any, All谓词的子查询2.查询其他系中比信息系(IS)某一学生年龄小的学生姓名和年龄;select sname, sage from student where sage <any< p=""> (select sage from student where sdept='IS')and sdept<>'IS'3.查询其他系中比信息系(IS)学生年龄都小的学生姓名和年龄:select sname, sage from student where sage <all< p="">(select sage from student where sdept='IS')and sdept<>'IS'4.查询与计算机系(CS)系所有学生的年龄均不同的学生学号, 姓名和年龄:select sno,sname,sage from student where sage<>all(select sage from student where sdept='CS')使用带Exists谓词的子查询和相关子查询5.查询与其他所有学生年龄均不同的学生学号, 姓名和年龄:select sno,sname,sage from student A where not exists(select * from student B where A.sage=B.sage andA.sno<>B.sno)6.查询所有选修了1号课程的学生姓名:select sname from student where exists(select * from sc where sno=student.sno and cno='1')7.查询没有选修了1号课程的学生姓名:select sname from student where not exists(select * from sc where sno=student.sno and cno='1')8.查询选修了全部课程的学生姓名:select sname from student where not exists(select * from course where not exists( select * from sc where sno=student.sno and cno=/doc/3d4429586.html,o))12. 查询至少选修了学生95002选修的全部课程的学生的学号:select distinct sno from sc A where not exists(select * from sc B where sno='95002'and not exists(select * from sc C where sno=A.sno and cno=/doc/3d4429586.html,o))13. 求没有人选修的课程号cno和cnamecname:select cno,cname from course C where not exists(select * from sc where /doc/3d4429586.html,o=/doc/ 3d4429586.html,o )14. 查询满足条件的(sno,cno)对, 其中该学号的学生没有选修该课程号cno 的课程select sno,cno from student,course where not exists(select * from sc where cno=/doc/3d4429586.html,o and sno=student.sno)15. 查询每个学生的课程成绩最高的成绩信息(sno,cno,grade):select * from sc A where grade=(select max(grade) from sc where sno=A.sno )集合查询1. 查询数学系和信息系的学生的信息;select * from student where sdept='MA' union select * from student where sdept='IS'2. 查询选修了1号课程或2号课程的学生的学号:select sno from sc where cno='1'Unionselect sno from sc where cno='2'思考:1. 连接查询速度是影响关系数据库性能的关键因素。

第4章 数据库的查询和视图

第4章 数据库的查询和视图
ΠT1,T2,T5(T) 该运算得到如表4.3所示的新表。
T1
T2
T5
T1
T2
T5
1
A1
M
3
A2
O
2
B1
N
5
D
P
第三页,共73页。
3.连接(JOIN) 连接是把两个表中的行按照给定的条件进行拼接而形成新表,记为 。其中,R、S是被 操作的表,F是条件。 例如,若表A和B分别如表4.4和表4.5所示,则 如表4.6所示,其中F为T1=T3。
执行结果如下所示:
【例4.21】 查询XSB表中名字包含下画线的学生学号和姓名。
SELECT 学号,姓名 FROM XSB
WHERE 学号 LIKE '%#_%' ESCAPE '#'
第二十一页,共73页。
3.范围比较 用于范围比较的关键字有两个:BETWEEN和IN。当要查询的条件是某个值的范围时,可 以使用BETWEEN关键字。BETWEEN关键字指出查询范围,格式为: <表达式> [ NOT ] BETWEEN <表达式1> AND <表达式2> 使用IN关键字可以指定一个值表,值表中列出所有可能的值,当与值表中的任一个匹配时, 即返回TRUE,否则返回FALSE。使用IN关键字指定值表的格式为:
GO
SELECT 姓名,学号,总学分 FROM XSB WHERE 学号='081101';
执行结果如下所示:
第十八页,共73页。
【例4.17】 查询XSB表中总学分大于50的学生的情况。
SELECT 姓名,学号,出生时间,总学分
FROM XSB
WHERE 总学分>50;

数据库实验四.视图创建和查询

数据库实验四.视图创建和查询

南昌大学实验报告
一、实验项目名称
视图创建和查询
二、实验目的
熟悉视图定义和使用视图查询
三、实验基本原理和内容
请为三建公司项目建立一个供应情况的视图,包括供应商代码,零件代码,供应数量.针对该视图完成下列查询:
(1)找出三建工程项目使用的各种零件代码及其数量
(2)找出供应商S1的供应情况
四、主要仪器设备及耗材
PC机一台
五、实验步骤及实验数据及处理结果
1、创建视图:
CREATE VIEW三建供应情况
AS
SELECT SNO,PNO,QTY
FROM SPJ
WHERE JNO=(SELECT JNO
FROM J
WHERE JNAME='三建')
2、a:找出三建工程项目使用的各种零件代码及其数量
SELECT PNO,SUM(QTY)
FROM三建供应情况
GROUP BY PNO
b:找出供应商S1的供应情况
SELECT*FROM三建供应情况
WHERE SNO='S1'
六、参考资料
卫琳《SQL SERVER 2008数据库应用与开发教程》清华大学出版社2011.6。

数据库实验4_数据库查询与视图

数据库实验4_数据库查询与视图

数据库实验4_数据库查询与视图在学⽣选课数据库中完成规定查询,并创建视图。

1.查询线性代数不及格的同学的学号和姓名;SQL语句为:SELECT名单$.学号,姓名FROM名单$,学⽣选课信息和成绩$,课程$WHERE名单$.学号=学⽣选课信息和成绩$.学号AND课程$.课号=学⽣选课信息和成绩$.课号AND 课程$.课程名='线性代数'AND学⽣选课信息和成绩$.成绩<60;执⾏后结果为:2.查询没有选课记录的同学的所有基本信息;SQL语句为:SELECT*FROM名单$WHERE NOTEXISTS(SELECT*FROM学⽣选课信息和成绩$WHERE学号=名单$.学号);执⾏后结果为:3.查询具有简介先修课的课程信息及对应的先修课名;SQL语句为:SELECTFIRST.课号,SECOND.课程名FROM课程$FIRST,课程$SECONDWHEREFIRST.先修课号=SECOND.课号;执⾏后结果如下:4.统计⾼等数学(1)的平均成绩;SQL语句为:SELECT AVG(成绩)FROM学⽣选课信息和成绩$,课程$WHERE学⽣选课信息和成绩$.课号=课程$.课号AND课程$.课程名='⾼等数学(1)'; 执⾏后结果如下:5.统计各门课的选课⼈数;SQL语句为:SELECT课号,COUNT(学号)FROM学⽣选课信息和成绩$GROUPBY课号;执⾏后结果为:6.查询选修5门课以上的学⽣的学号;SQL语句为:SELECT学号FROM学⽣选课信息和成绩$GROUPBY学号HAVING COUNT(*)>5;执⾏后结果为:7.⽤你的学号查询和你⼀个班的同学的学号和姓名;SQL语句为:SELECT学号,姓名FROM名单$WHERE班级IN(SELECT班级FROM名单$WHERE学号='201000800145');执⾏后结果如下:8.查询⾼等数学(1)成绩⽐你⾼出10分以上的同学的姓名和对应成绩;SQL语句为:SELECT姓名,成绩FROM名单$,学⽣选课信息和成绩$WHERE名单$.学号=学⽣选课信息和成绩$.学号AND学⽣选课信息和成绩$.课号='82006010'AND成绩>(SELECT成绩+10FROM学⽣选课信息和成绩$,课程$WHERE学⽣选课信息和成绩$.课号=课程$.课号AND课程$.课程名='⾼等数学(1)' AND学⽣选课信息和成绩$.学号='201000800145')执⾏后结果为:9.找到每门课获得最⾼成绩的同学的学号、姓名、课名和成绩;选做。

实验四 数据查询

实验四 数据查询

实验四数据查询【实验目的】1.掌握使用SQL语句查询数据【实验内容】1.使用企业管理器进行数据查询2.在查询分析器内使用SQL语句进行数据查询【实验准备】1.复习与本次实验内容相关知识2.复习查询分析器的使用3.对本次实验中要求自己完成的部分做好准备(第二部分,请预先写出来) 【实验步骤】1.用SQL Server Management Studio(SSMS)进行数据查询o打开SQL Server Management Studioo展开服务器-->展开数据库-->展开自己的数据库-->单击表。

o在需要查询的表上单击右键,在弹出的快捷菜单中选择"打开表(O)",在已打开的表格形式下,右键,其下级菜单即为:▪关系图(D) --显示关系图▪条件(C) --以交互方式设计查询▪SQL (S) --打开查询窗口,以命令方式设计查询oo请从学生表(U_STUDENTS)上右击,使用"条件(C)"命令建立一个查询,请选中学号(SID)、姓名(NAME)两个字段,再单击上面的执行按钮(!按钮)执行查询,查看结果。

o 再在关系图窗格内右击鼠标在弹出菜单中选择添加表,添加班级表(U_CLASSES ),在班级表的CID 字段上按下鼠标左键,拖至学生表的CID 上建立关联,在班级表上选中班级(CLASS )、系(DEPARTMENT )字段,再在网格窗格上选择姓名(NAME )行上选择排序类型为"升序"。

执行该查询,查看结果。

结果如下图所示。

(注意查看SQL窗格内的SQL查询语句)o该操作实现了从班级表、学生表中查询出所有学生的姓名(NAME)、班级(CID)、班级名称(CLASS)、所在系(DEPARTMENT)的记录数据。

2.用SQL语句查询数据o启动数据库引擎查询器o在查询器中分别执行下列查询语句(有的语句请自己写出),体会或说明各语句的功能(请将下面的语句复制到查询分析器,逐条执行--要执行一条语句请选中该语句再按F5或单击执行铵钮,如下图所示)。

实验四 数据库的查询和视图

实验四 数据库的查询和视图

软件实验报告专业:电子商务课程:___SQL server 实用教程____ _______学号:_121144063__姓名:__姚玉龙____班级:___12级电子商务________实验内容:4.1 数据库的查询1 实验准备(1)了解SELECT语句的基本语法格式;(2)了解SELECT语句的执行方法;(3)了解子查询的表示方法;(4)了解连接查询的表示;(5)了解SELECT语句的GROUPBY子句的作用和使用方法;(6)了解SELECT语句的ORDER BY子句的作用;2实验内容(1)SELECT语句的基本使用。

①对于实验2给出的数据库表结构,查询每个雇员的所有数据。

新建一个查询,在查询分析器中输入如下语句并执行:USEYGGLGOSELECT*FROMEmployees\ ②用SELECT语句查询Employees表中每个雇员的地址和电话。

新建一个查询,在查询分析器中输入如下语句并执行:Use YGGLGOSELECT Address PhoneNumberFROM Employees③查询EmployeeID为000001的雇员的地址和电话。

Use YGGLGOSELECT Address PhoneNumberFROM EmployeesWHERE EmployeeID=’000001’④查询Employees表中女雇员的地址和电话,使用AS子句将结果中各列的标题分别指定为地址、电话。

USE YGGLGOSELECT Address AS 地址,PhoneNumber AS 电话FROM EmployeesWHERE Sex=0⑤查询Employees表中员工的姓名和性别,要求SEX值为时显示为“男”,为0时显示为“女”。

SELECT NameAS姓名,CASEWHENSex=1 THEN 男WHENSex=1 THEN 女END AS性别FROM Employees ⑥计算每个雇员的实际收入USE YGGLGOSELECT EployeeID,实际收入=income-OutCome FROMSalary⑦获得员工总数。

mysql实验四数据库查询和视图_数据库-第四次实验报告-视图-t-sql语句

mysql实验四数据库查询和视图_数据库-第四次实验报告-视图-t-sql语句

mysql实验四数据库查询和视图_数据库-第四次实验报告-视图-t-sql语句实验⼗报告 创建视图实验⽬的1.掌握创建视图的SQL语句的⽤法。

2.掌握使⽤企业管管理器创建视图的⽅法。

3.掌握使⽤创建视图向导创建视图的⽅法。

4.掌握查看视图的系统存储过程的⽤法。

5.掌握修改视图的⽅法。

⼀. 实验准备1.了解创建视图⽅法。

2.了解修改视图的SQL语句的语法格式。

3.了解视图更名的系统存储过程的⽤法。

4.了解删除视图的SQL语句的⽤法。

⼆. 实验要求1. ⽤不同的⽅法创建视图。

2. 提交实验报告,并验收实验结果。

三. 实验内容 1. 创建视图(1) 使⽤企业管理器创建视图① 在EDUC库中以“student”表为基础,建⽴⼀个名为“V_计算机系学⽣”的视图。

在使⽤该视图时,将显⽰“student”表中的所有字段.兰州⼤学数据库实验报告视图如下:(2) 使⽤SQL语句创建视图 ① 在查询分析器中建⽴⼀个每个学⽣的学号、姓名、选修的课名及成绩的视图S_C_GRADE; Create VIEWS_C_GRADE ASSELECT student.sno,sname,cname,score FROM student,course,student_course WHERE student.sno=student_course.sno AND o=student_o;视图如下:②建⽴⼀个所有计算机系学⽣的学号、选修课程号以及平均成绩的视图COMPUTE_AVG_GRADE; Create VIEWCOMPUTE_AVG_GRADE ASSELECT student.sno,o,AVG(score) '平均成绩' FROM student,course,student_course WHEREstudent.sno=student_course.snoAND o=student_o AND student.dno='CS' GROUP BY student.sno,o;视图如下:2. 修改视图(1) 使⽤企业管理器修改视图在企业管理器中将视图COMPUTE_AVG_GRADE中改成建⽴在数学系的学⽣学号、选修课程号以及平均成绩的视图。

数据库实验报告 (4)

数据库实验报告 (4)

一实验题目1.索引的建立和删除操作2.视图的创建、修改、更新和查询操作二实验目的1.掌握数据库索引建立与删除操作,掌握数据库索引的分类,并了解建立数据库索引的意义、作用。

2.掌握视图的创建和查询操作,理解视图的使用,理解实图在数据库安全性中的作用。

三实验内容1.索引的建立和删除操作(1)在S表中,建立按照sno升序的惟一性索引snoIDX。

(2)在SC表中,建立按照学号升序和课程号降序的唯一性索引scIDX。

(3)在S表中,按照生日建立一个非聚簇索引birthdayIDX。

(4)在C表中,建立一个按照课程名升序的聚簇索引cnameIDX。

(5)删除索引cnameIDX。

2.视图的创建、修改、更新和查询操作(1)建立一个关于所有女生信息的视图S_GIRL。

(2)将各系学生人数,平均年龄定义为视图V_NUM_A VG(3)建立一个视图反映学生所选课程的总学分情况TOTAL_CREDIT。

(4)建立一个所有学生课程成绩的视图S_GRADE,包括基本学生信息,课程信息和成绩。

(5)在视图S_GRADE基础之上,建立一个两门课以上成绩不及格的学生情况视图FAIL_GRADE。

(6)建立一个至少选修了4门课及4门课以上的学生信息的视图SC_FOUR。

(7)修改视图S_GIRL,要求只显示1997年以前出生的女生信息。

(8)在视图FAIL_GRADE查询不及格超过2门课的学生信息。

(9)删除视图S_GRADE。

(10)通过视图S_GIRL,将“王丹”的名字修改为“汪丹”,并查询结果。

(11)通过视图S_GIRL,新增一个学生信息(“刘兰兰”,“女”,“计算机学院”,1996-8-8),并查询结果。

(12)通过视图S_GIRL,删除1995年出生的女生信息,并查询结果。

(13)通过视图S_GRADE,将“汪丹”的名字修改为“王丹”,是否可以实现,请说明原因。

(14)通过视图COMPUTE_A VG_GRADE,将“4121090301”学生的平均分改为90分,是否可以实现,请说明原因。

数据库实验4 数据查询

数据库实验4 数据查询

实验4:数据查询1.实验目的与要求:1.1 了解、理解、掌握1.2 了解、理解、掌握1.3 了解、理解、掌握2.实验环境与实验器材:计算机,网络环境,投影设备。

实验相关软件:Window xp、SQL Server 2000。

2*.实验预备知识2.1 SELECT语句的基本语法如下:SELECT [ALL|DISTINCT][TOP n1 [PERCENT] [WITH TIES]]<select_list><select_list>::={*|{table_name|view_name|table_alias}.*|{column_name}[[AS]column_alias]}[, (2)说明:ALL:默认设置,指定在结果集中可以显示重复行。

DISTINCT:指定在结果集中只能显示唯一行,空值被认为相等。

TOP n1:指定只从查询结果集中输出前n1行。

n1是介于0—4294967295之间的整数。

PERCENT:从结果集中输出前百分之n行,当指定时带PERCENT,n的值必须介于0—100之间。

WITH TIES:指定从基本结果集中返回附加的行,这些行包含与出现在TOP n(PERCENT)行最后的ORDER BY列中的值相等的值。

如果指定了ORDER BY字句,则只能指定TOP…WITH TIES。

<select_list>:为结果选择的列。

选择列表是以逗号分隔的一系列表达式。

*:指定在子句内返回所有表和视图内的所有列,或者是返回指定的表或视图的列,并按它们在表或视图中的顺序返回。

column_name:要返回的列名,必要时限定column_name以避免二义性引用,当FROM子句中的两个表内包含重复名的列时会出现该情况。

column_alias:是查询结果集内替换列名的可选名。

2.2 数据库的备份与恢复1)创建备份设备在根目录下选择“管理”-“备份”项目,右击鼠标,从弹出的快捷菜单中选择“新建备份设备”,此时弹出“备份设备属性-新设备”对话框。

实验四 - 数据库表的查询操作与视图操作

实验四 - 数据库表的查询操作与视图操作

实验4.1 连接查询

连接查询


查询所有选课学生的学号、姓名、选课名称 及成绩 查询每门课程的课程号、任课教师姓名及其 选课人数
实验4.1 连接查询

自身连接


查询所有比“刘伟”工资高的教师的姓名、 工资以及刘伟的工资。 查询同时选修了“程序设计”和“微机原理” 的学生的姓名和系名用SQL创建一个课程表视图。视图名称为 VIEW_Course,其数据来源于两个基本表 jx_Tea和jx_Course,包含的数据有 jx_Tea.Tname和jx_ame。

提示:首先将两表建立连接
实验4.3 视图操作


使用交互式方法把视图VIEW_Stu中的字 段Sno删掉 使用SQL给视图VIEW_Course增加一个课 时字段Chour
实验4.3 视图操作


交互式创建一个视图。要求:视图名称为 VIEW_Stu,其数据来源于一个基本表 jx_stu,包含的数据有:Sno、Sname、 Sgender、Sdept 交互式创建一个成绩视图。要求:视图名 称为VIEW_Score,其数据来源于两个基本 表jx_Course和jx_SelCourse及一个已有的 视图View_Stu,包含的数据有 VIEW_Stu.Sname、jx_ame、 jx_SelCourse.Score
实验4.3 视图操作


交互式删除视图VIEW_Stu 使用SQL删除视图VIEW_Course
实验报告


写出以上练习中要求用SQL语句实现的操 作,要求:查询结果显示的字段信息用中 文表达。 写出采用视图机制具有哪些优点? 思考:是否所有的视图都具有可通过其修 改基本表数据的性质?哪些视图不具有这 种性质?

实验四 - 数据库表的查询操作与视图操作

实验四 - 数据库表的查询操作与视图操作


外连接

查询所有学生的学号、姓名、选课名称及成 绩(没有选课的学生的选课信息显示为空)。
实验4.2 嵌套查询

返回一个值的子查询

查询与“刘伟”教师职称相同的教师号、姓 名和职称(用‘=‘)
实验4.2 嵌套查询

返回一组值的子查询

使用ANY谓词查询讲授课程号为C5的教师姓名 使用IN谓词查询讲授课程号为C5的教师姓名 使用ALL谓词查询其他系中比计算机系所有教 师工资都高的教师的姓名、工资和所在系。 使用EXISTS谓词查询没有讲授课程号为C5的 课程的教师姓名、所在系。
实验4.3 视图操作

使用SQL创建一个课程表视图。视图名称为 VIEW_Course,其数据来源于两个基本表 jx_Tea和jx_Course,包含的数据有 jx_Tea.Tname和jx_ame。

提示:首先将两表建立连接
实验4.3 视图操作


使用交互式方法把视图VIEW_Stu中的字 段Sno删掉 使用SQL给视图VIEW_Course增加一个课 时字段Chour
实验4.3 视图操作


交互式删除视图VIEW_Stu 使用SQL删除视图VIEW_Course
实验报告


写出以上练习中要求用SQL语句实现的操 作,要求:查询结果显示的字段信息用中 文表达。 写出采用视图机制具有哪些优点? 思考:是否所有的视图都具有可通过其修 改基本表数据的性质?哪些视图不具有这 种性质?实验四Leabharlann 数据库表的查询操作与视图操作
【实验目的】

掌握涉及一个以上数据表的查询方法。

多表之间的连接包括等值连接、自然连接、 非等值连接、自身连接、外连接和复合条件 连接

指导书 实验四数据库与视图分析

指导书 实验四数据库与视图分析

实验四:数据库与视图(本实验为练习,不用上交作业,务必操作一遍!)一、实验目的?掌握数据库文件的创建方法。

理解和掌握数据库的数据字典。

?学习掌握有关数据库操作的各种命令。

?掌握查询与视图的建立?二、实验内容创建数据库。

?管理数据库表。

?. 设置数据库的数据字典。

??查询与视图三、实验步骤1.创建数据库。

通过【项目管理器】在项目文件”商品.PJX”中建立1个数据库文件”商品库.DBC”,具体的操作步骤如下。

【新建数据库】对话框图2-1 在【项目管理器】中新建数据库2-2 图2-3 图图2-4将三个实验用表添加到数据库中:2.实验四:数据库与视图3.设置数据库的数据字典数据字典用于保存数据库中各种数据的定义和设置信息,包括表属性、字段属性、表间关系和参照完整性等。

(1)字段属性和表属性的设置和自由表不同,数据库表可以设置表属性和字段属性,这些属性包括字段注释和表注释、字段标题、输入输出的格式控制、字段及记录的验证规则与错误信息、触发器等。

?打开数据库”商品库.DBC”,在【数据库设计器】中选择表”库存.DBF”,单击右键,在弹出的快捷菜单中选择【修改】命令,如图2-64所示。

(也可以选择【数据库】菜单中的【修改】命令。

)图2-5 打开【表设计器】修改表?此时,系统将打开表”库存.DBF”的【表设计器】,如图2-65所示。

选择【字段】选项卡,可看到窗口的下半部分有许多文本框,可通过它们设置字段属性,设置如表2-11所示的字段属性。

图2-6 在数据库表【表设计器】窗口中设置字段属性表2-11“库存.DBF”中的部分字段属性表输入掩码规则字段信息字段注释标题条码编A99999 .NOT.EMPTY(商品条码编号条码编号) “不能为空!”商品的条码编号号.NOT.EMPTY( 商品名称品名品名) “不能为空!”商品名称/型号18 实验四:数据库与视图“库存总量不能超过现有的库存总量<=100库存量库存量库存总量9999100!”V AL(库房)>=1 .AND. 本商品存储的库房“库房编号应为1-5!09”库房所在库房的编号编号V AL(库房)<= 5?在字段列表中选择”库房”字段,在相应的属性设置文本框中输入表2-11中”库房”字段的各种属性,如图2-66所示。

实验4:查询与视图

实验4:查询与视图

一、实验目的
1.理解视图的概念与作用
2.掌握使用查询设计器建立查询的方法
3.掌握使用视图设计器建立视图的方法
二、实验准备
1.查询设计器中各选项卡的意义和作用
2.视图设计器中“数据更新”选项卡的意义与作用
3.理解查询与视图的相同点与不同点
三、实验内容
1.根据实验三中建立的数据库xscj.dbc及其所包含的表,完成下列实验内容:(1)根据已建立的永久关系和表中数据,使用查询设计器,查找所有学生所修课程的成绩及学分,要求有以下字段:
班级编号、班级名称、学号、姓名、课程编号、课程名称、学分、成绩
(2)根据已建立的永久关系和表中数据,建立一个查询查找一个指定班(根据
表中实际情况填写)所修课程的成绩及学分,要求有以下字段:
班级编号、班级名称、学号、课程编号、课程名称、学分、成绩
(3)根据已建立的永久关系和表中数据,建立一个查询查找所有成绩为80分(含80分)以上的学生,要求有以下字段:
班级编号、班级名称、学号、姓名、课程编号、课程名称、学分、成绩
(4)根据已建立的永久关系和表中数据,建立所有成绩为80分(含80分)以上学生的视图,要求有以下字段:
班级编号、班级名称、学号、姓名、课程编号、课程名称、学分、成绩
(5)根据第4项建立的视图,修改视图中“成绩”字段的值,观察相应源表(数据来源的表)是否随之变化。

运行查询为
改为66
仍为。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

南京信息工程大学实验(实习)报告
实验(实习)名称实验4 数据库的查询和视图实验(实习)日期2016.10.24 得分指导教师方忠进系计算机专业网络工程年级2014 班次 2 姓名刘信言学号20142346074 一.实验目的
(1)掌握select语句的基本语法;
(2)掌握子查询的表示
(3)掌握连接查询的表示
(4)掌握select语句的group by子句的作用和使用方法
(5)掌握select语句的order by子句的作用和使用方法
二、实验准备
(1)了解SELECT语句的基本语法格式;
(2)了解SELECT语句的执行方法;
(3)了解子查询的表示方法;
(4)了解连接查询的表示;
(5)了解SELECT语句的GROUPBY子句的作用和使用方法;
(6)了解SELECT语句的ORDER BY子句的作用;
三、实验内容
T4.1 数据库的查询
(1)SELECT语句的基本使用。

①对于实验2给出的数据库表结构,查询每个雇员的所有数据。

新建一个查询,在查询分析器中输入如下语句并执行:
【思考与练习】
用SELECT语句查询Departments和Salary表中所有的数据信息。

②用SELECT语句查询Employees表中每个雇员的地址和电话。

新建一个查询,在查询分析器中输入如下语句并执行:
【思考与练习】
a. 用SELECT语句查询Deparments和Salary表的一列或若干列。

b. 查询Employees表中的部门号和性别,要求使用DISTINCT消除重复行。

③查询EmployeeID为000001的雇员的地址和电话。

【思考与练习】
a.查询月收入高于2000元的员工号码。

b.查询1970年以后出生的员工的姓名和住址。

c.查询所有财务部的员工的号码和姓名。

④查询Employees表中女雇员的地址和电话,使用AS子句将结果中各列的标题分别指定为地址、电话。

【思考与练习】查询Employees表中男员工的姓名和出生日期,要求将各列标题用中文标示。

⑤查询Employees表中员工的姓名和性别,要求SEX值为时显示为“男”,为0时显示为“女”。

【思考与练习】查询Employees员工的姓名、住址和收入水平,2000元以下显示低收入,2000-3000元显示为中等收入,3000元以上显示为高收入。

⑥计算每个雇员的实际收入
【思考与练习】使用SELECT语句进行简单的计算。

⑦获得员工总数。

【思考与练习】
a.计算salary表中员工月收入的平均数。

b.获得Employees表中最大员工号码。

c.计算Salary表中所有员工的总支出。

d.查询财务部雇员的最高和最低实际收入。

⑧找出所有姓王的雇员的部门号。

【思考与练习】
a.找出所有其地址中含有“中山”的雇员的号码及部门.。

b.查找员工号码倒数第二个数字为0的员工的姓名、地址和学历。

⑨找出所有收入在2000-3000元之间的员工号码。

【思考与练习】找出所有在部门“1”或“2”工作的雇员的号码。

注意:了解在SELECT语句中LIKE、BETWEEN…AND、IN、NOT以及CONTAIN谓词的作用。

⑩使用into子句,由表Salary创建“收入在1500元以上的员工”表,包括编号和收入
【思考与练习】使用Into子句,由表Employees创建“男员工”表,包括编号和姓名。

(2)子查询的使用。

①查找在财务部工作的雇员的情况
【思考与练习】用子查询的方法查找所有收入在2500元以下的雇员的情况
②查找财务部年龄不低于研发部雇员年龄的雇员的姓名。

【思考与练习】用子查询的方法查找研发部比所有财务部雇员收入都高的雇员的姓名。

②查找比所有财务部的雇员收入都高的雇员的姓名。

【思考与练习】用子查询的方法查找所有年龄比研发部雇员年龄都大的雇员的姓名。

(3)连接查询的使用。

①查询每个雇员的情况及其薪水的情况。

【思考与练习】查询每个雇员的情况及其工作部门的情况。

②使用内连接的方法查询名字为“王林”的员工所在的部门
【思考与练习】
a.使用内连接的方法查找出不在财务部工作的所有员工信息。

b . 使用外连接方法查找出所有员工的月收入。

③查找财务部收入在2000元以上的雇员姓名及其薪水详情。

新建一个查询,在查询分析器中输入如下语句并执行。

【思考与练习】查询研发部在1976以前出生的雇员姓名及其薪水详情。

(4)聚合函数的使用。

①求财务部雇员的平均收入
新建一个查询,在查询分析器中输入如下语句并执行。

【思考与练习】查询财务部雇员的最高和最低收入。

②求财务部的平均实际收入
新建一个查询,在查询分析其中输入如下语句并执行。

【思考与练习】查询财务部雇员的最高和最低实际收入。

③求财务部雇员的总人数
④【思考与练习】统计财务部收入在2500以上的雇员的人数。

(5)GROUP BY、ORDER BY子句的使用:①查找Employees表中男性和女性的人数
【思考与练习】
a.按部门列出在该部门工作的员工的人数。

b.按员工的学历分组,排列出本科、大专和硕士的人数。

②查找员工数超过2的部门名称和员工数量。

【思考与练习】按员工的工作年份分组,统计各个工作年份的人数,例如,工作一年的多少人,工作两年的多少人。

③将各雇员的情况按收入由低到高排列。

【思考与练习】
a.将员工的信息按出生的时间从小到大排列。

b.在order by 子句中使用子查询,查询员工姓名、性别和工龄信息,要求按实际收入从大到小排列。

T4.2视图的使用
1.目的和要求
(1)熟悉视图的概念和作用;
(2)掌握视图的创建方法;
(3)掌握如何查询和修改视图。

2.实验准备
(1)了解视图的概念;
(2)了解创建视图的方法;
(3)了解并掌握对视图的操作。

3.实验内容
(1)创建视图
①创建YGGL数据库上的视图DS_VIEW,视图包含Departments表的全部列。

②创建YGGL数据库上的视图Employees_view,视图包含“员工号码”、“姓名”和“实际收入”三列。

使用如下SQL语句:
(2)查询视图。

①从视图DS_VIEW中查询出部门号为3的部门名称。

②从视图Employees_view中查询出姓名为“王林”的员工的实际收入。

(3)更新视图
①向视图DS_VIEW中插入一行数据“6,广告部,广告业务”。

②修改视图DS_VIEW,将部门号为5的部门名称修改为“生产车间”。

③将视图Employees_view中员工号为“000001”的员工的姓名修改为“王浩”。

④删除视图DS_VIEW中部门号为“1”的一行数据。

(4)删除视图
删除视图DS_VIEW。

(5)在界面工具中操作视图。

①创建视图:启动SQL Server Management Studio,在对象资源管理器中展开“数据库→YGGL”,选择其中的“视图”项,右击鼠标,在弹出的快捷菜单上选择“新建视图”菜单项。

在随后出现的“添加表”窗口中,添加所需关联的基本表。

在视图窗口的关系图窗口显示了基表的全部列信息。

根据需要在窗口中选择创建视图所需的字段。

完成后单击“保存”按钮保存。

②查询视图:新建一个查询,输入T-SQL查询命令即可像查询表一样查询视图。

③删除视图:展开YGGL数据库→“视图”,选择要删除的视图,右击选择“删除”选项,确认即可。

相关文档
最新文档