文档库 最新最全的文档下载
当前位置:文档库 › 实验五 SQL语言

实验五 SQL语言

实验五 SQL语言
实验五 SQL语言

实验五SQL语言

一、目的与要求

1.掌握SQL语言的查询功能;

2.掌握SQL语言的数据操作功能;

3.掌握对象资源管理器建立查询、索引和视图的方法;

二、实验准备

1.了解SQL语言的查改增删四大操作的语法;

2.了解查询、索引和视图的概念;

3.了解各类常用函数的含义。

三、实验内容

(一)SQL查询功能

使用提供的studentdb数据库文件,先附加到目录树中,再完成下列题目,SQL命令请保存到脚本文件中。

1.基本查询

(1)查询所有姓王的学生的姓名、学号和性别

Select St_Name ,St_Sex, St_ID

From st_info

Where St_Name like '王%'

(2)查询全体学生的情况,查询结构按班级降序排列,同一班级再按学号升序,

并将结果存入新表new中

select * into new

from st_info

order by Cl_Name desc,St_ID asc

(3)对S_C_info表中选修了“体育”课的学生的平均成绩生成汇总行和明细

行。(提示:用compute汇总计算)

Select c_no,score

From s_c_info

Where c_no=29000011

compute avg(score)

2.嵌套查询

(1)查询其他班级中比“材料科学0601班”的学生年龄都大的学生姓名

和年龄

Select St_Name ,Born_Date

from st_info

where Cl_Name!='材料科学0601班' and Born_Date<(select Min(Born_Date) from st_info where Cl_Name='材料科学0601班')

(2)用exists查询选修了“9710041”课程的学生姓名

select St_Name

from st_info

where exists (select * from s_c_info where c_no = 9710041 and st_id=st_info.St_ID )

(3)用in查询找出没有选修“9710041”课程的学生的姓名和所在班级。select St_Name,Cl_Name

from st_info

where st_ID not in (select st_id from s_c_info where c_no ='9710041')

(4)查询选修了学号为“2001050105”的学生所选全部课程的学生姓名。select St_Name

from st_info where St_ID in

(select distinct St_ID from s_c_info where not exists

(select * from s_c_info where st_id='2001050105' and not exists

(select * from s_c_info where st_info.St_ID=s_c_info.st_id and c_no=any(select c_no from s_c_info where st_id='2001050105'))))

3.连接综合查询及其他

(1)查询每个学生所选课程的最高成绩,要求列出学号,姓名,课程编号和分

数。

select st_info.St_ID, St_Name,C_info.c_no,score

from st_info inner join s_c_info on st_info.St_ID=s_c_info.st_id inner join C_info on s_c_info.c_no=C_info.c_no

where score=(select max(s_c_info.score)from s_c_info

where st_info.St_ID=s_c_info.st_id)

(2)查询所有学生的总成绩,要求列出学号、姓名、总成绩,没有选修课程的

学生总成绩为空。

select st_info.St_ID,St_Name,总成绩

from st_info

left outer join (select st_id,sum(score)as 总成绩from s_c_info group by st_id)s_c_info on st_info.St_ID=s_c_info.st_id

(3)查询“大学计算机基础”课程考试成绩前三名的学生姓名和成绩。

select st_info.St_ID,St_Name,score

from st_info

inner join s_c_info on st_info.St_ID=s_c_info.st_id

inner join C_info on s_c_info.c_no=C_info.c_no

and c_Name='大学计算机基础'

(4)将s_c_info中的score列的值转为等级制输出,即60分以下显示为“不及

格”,60~69分显示“及格”,70~79分显示“中等”,80~81显示“良好”,90~100显示“优秀”。要求输出学号、姓名、课程名、成绩等级。(提示:

在select字句中使用case…when…end语句)

select St_info.st_id,St_name,C_Name,成绩等级=

case

when score>=90 then '优秀'

when score>=80 then '良好'

when score>=70 then '中等'

when score>=60 then '及格'

when score<60 then '不及格'

end

from s_c_info,St_info,C_Info

where St_info.st_id=s_c_info.st_id and C_Info.C_No=s_c_info.c_no

(二)SQL的增删改功能

在实验四建立的studb数据库中,写SQL语句实现增删改功能。

1.在S表中增加如下记录:

insert S

values('s3','张明华','男','1995-08-21 00:00:00.000','MA_数学','530.0','浙江杭州',NULL)

2. 在C表中将课程名为“数据库”的学分更改为3

update C

set ccredit='3'

where cname='数据库'

3.删除S表中S2的学生记录,请问是否能删除,为什么,要如何操作。能删除

delete from S where sno='S2'

(三)索引

在studb数据库中,分别用对象资源管理器和SQL语言定义索引

1.在对象资源管理器中,在T表的tname列上中建立聚集索引ix_tname,降序。

查看聚集的效果。

create clustered index ix_tname

on T(tname)

sp_helpindex T

2.使用SQL语言定义T表的(tno,cno)列上的复合索引ix_tc,tno列设为升序,cno列设为降序

create clustered index ix_tc

on T(tno,cno)

(四)视图

在studb数据库中操作。

1.在对象资源管理中建立视图v_s_c,列出所有学生所选课程的成绩:学号,

姓名,班级名,课程号,课程名,成绩。

2.使用SQL语言建立视图v_cjtj,列出每位同学的学号,最高成绩,最低成绩,平均成绩和总成绩,按总成绩降序排列。

create view v_cjtj(xh.zgf,zdf.pjf,zf)

as

(select top 100 son,max(score),min(score),avg(score),sum(score)

from SC

group by son

order by sum(score) desc

)四、思考与练习

1.视图和表有何区别?

1、视图是已经编译好的sql语句。而表不是

2、视图没有实际的物理记录。而表有。

3、表是内容,视图是窗口

4、表只用物理空间而视图不占用物理空间,视图只是逻辑概念的存在,表可以及时对它进行修改,但视图只能有创建的语句来修改

5、表是内模式,视图是外模式

6、视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些SQL语句的集合。从安全的角度说,视图可以不给用户接触数据表,从而不知道表结构。

7、表属于全局模式中的表,是实表;视图属于局部模式的表,是虚表。

8、视图的建立和删除只影响视图本身,不影响对应的基本表。

2.视图中的列都能更新吗?

不一定可以更新

3.查询年龄最大的教师号和年龄,SQL命令如下:请问为什么报错?如何修改?Select tno,max(year(getdate( ))-year(tbirday))

From T

选择列表中的列‘T.tno’无效,因为该列没有包含在聚合函数或GROUP BY 子

句中。

在from后面加group by tno。

VFP实验5 SQL语言的应用-参考答案

实验5 SQL语言的应用 【实验目的】 1.掌握SQL的基本语句的使用 2.掌握SELECT命令的基本用法 3. 掌握对查询的结果进行处理 4.掌握用查询设计器建立查询的方法 【实验内容与操作步骤】 说明:红色字体为答案 设置VFP的默认工作目录为D:\EX7,并完成以下各操作,将操作结果存入D:\EX5文件夹中。 1、使用SQL语句实现下列功能: ( creat table 学生成绩(学号C(7),姓名C(8),入学成绩N(5,1)) (2)使用ALTER TABLE命令,增加一个字段:性别C(2),并将“学号”的字段长度改为8。 alter table 学生成绩add 性别C(2) alter table 学生成绩alter 学号C(8) ( insert into 学生成绩values("0503102","李丽",680,"女") insert into 学生成绩values("0603101","王庆",600,"男") 或者是: Insert into 学生成绩(学号,姓名,入学成绩,性别) values(“0503101”,”张海”,660,”男”) Insert into 学生成绩(学号,姓名,入学成绩,性别) values(“0503102”,”李丽”,680,”女”) Insert into 学生成绩(学号,姓名,入学成绩,性别) values(“0603101”,”王庆”,600,”男”)

庆”,600,”男”) (4)使用DELETE 删除“王庆”的记录。 dele from 学生成绩where 姓名="王庆" (5)使用UPDATE命令将所有人的“入学成绩”置为0。 update 学生成绩set 入学成绩=0 2、使用SQL语句中的SELECT命令来实现下列查询: (1)查询“学生.dbf”表中全部记录,输出“学号”、“姓名”、“性别”、“出生日期”和“入学成绩”这5个字段的内容; select 学号,姓名,性别,出生日期,入学成绩from 学生 (2)查询“学生.dbf”表中的性别为男的所有内容,并按“学号”的降序排列; select * from 学生where 性别=”男” order by 学号 (3)查询“学生.dbf”表中的全部学生中的入学最高分; select max(入学成绩) from 学生 (4)查询“学生.dbf”表中的数学专业和英语专业的学生的学号,姓名和专业; select 学号,姓名,专业from 学生where 专业=”数学” or 专业=”英语” (5)查询“学生.dbf”表中的入学成绩在550到650之间的学生的学号,姓名和入学成绩,并按“入学成绩”的降序排序; select 学号,姓名,入学成绩from 学生where 入学成绩>=550 and 入学成绩<=650 order by 入学成绩 (6)利用学生表中的数据创建一个查询,其结果包含学号、姓名、性别、出生日期、专业和入学成绩6个字段,查询结果按入学成绩由高分到低分排序,并将查询结果保存到一个“学生情况表.DBF”文件中; select 学号,姓名,性别,出生日期,专业,入学成绩from 学生order by 入学成绩desc into table 学生情况表 【思考题】 请参考教材6.4.3 嵌套查询、6.4.4 多表联接查询、6.4.5查询结果输出处理做如下练习。写出相应的SQL命令并上机运行。 (1)查询“学生.dbf”和“学生其它情况.dbf”表中的所有姓“李”的学生的学号、姓名和身份证; (2)查询“成绩.dbf”和“课程.dbf”表中的选修“计算机基础”的所有学生的学号和成绩,按“学号”的升序进行排序,并输出到TEST文件中; (3)查询“学生.dbf”、“成绩.dbf”和“课程.dbf”表中的选修“电脑文秘应用”的所有学生的学号,姓名,课名和总评(总评=(平时+期中+期末)/3);

数据库-SQL语言的实验

北华航天工业学院《数据库原理与应用》 实验报告 报告题目:SQL语言 作者所在系部:计算机系 作者所在专业:网络工程 作者学号:20114052233 作者姓名: 张旭刚 指导教师姓名:李建义 完成时间:20134.24 北华航天工业学院教务处制

SQL语言 一、实验目的 1、理解数据库以及数据表的设计; 2、熟悉SQLServer2005中的数据类型; 3、熟悉使用SQL语句创建和删除模式和索引; 4、掌握使用SQL语句创建、修改和删除数据表; 5、掌握使用SQL语句查询表中的数据; 6、掌握使用SQL语句插入、修改和删除数据表中的数据; 7、掌握使用SQL语句创建、删除、查询和更新视图。 二、实验内容 (一)创建数据库和模式 1、通过SQL语句创建图书信息管理数据库,命名为“db_Library”,数据文件和日志文件放在D盘下以自己学号和姓名命名的文件夹中,数据文件的逻辑名为db_Library_data,数据文件的操作系统名为db_Library_data.mdf,文件初始大小为10MB,最大可增加至300MB,增幅为10%;日志文件的逻辑名为db_Library_log,日志文件的操作系统名为db_Library_data.ldf,文件初始大小为5MB,最大可增加至200MB,增幅为2MB。 2、通过SQL语句在该数据库中创建模式L-C。 (二)创建和管理数据表 要求为各数据表的字段选择合适的数据类型及名称;为各数据表设置相应的完整性约束条件。 1、通过SQL语句将以下数据表创建在L-C模式下: 课程信息表(tb_course)——课程编号、课程名、先修课、学分 2、通过SQL语句将以下数据表创建在该数据库的默认模式dbo下: 图书类别信息表(tb_booktype)——类别编号、类别名称 图书信息表(tb_book)——图书编号、类别编号、书名、作者、出版社、定价、库存数 读者信息表(tb_reader)——读者编号、姓名、性别、学号、班级、系部 借阅信息表(tb_borrow)——图书编号、读者编号、借阅日期、归还日期 3、通过SQL语句对读者信息表进行修改:删除系部字段、添加所在系字段。 4、通过SQL语句对图书信息表进行修改:将定价的数据类型改为REAL。 5、通过SQL语句删除课程信息表。 (三)创建和删除索引 1、使用SQL语句在图书信息表上创建一个非聚簇索引IX_S_QUANTITY,要求按照该表中库存数字段的降序创建。 2、使用SQL语句在读者信息表上创建一个唯一的非聚簇索引IX_S_NAME,要求按照该表中的姓名字段的升序创建。 3、使用SQL语句删除之前创建的两个索引。 (四)数据库及数据表设计 根据周围的实际应用情况,自选一个小型的数据库应用项目进行研究,完成该系统的设计。要求2人一组,通过需求分析,列出系统的主要功能,并完成该系统数据库的逻辑结构设计。例如可选择学籍管理系统、企业进销存管理系统、人事管理系统或在线考试系统等。

sql实验5(一)

实验报告专用纸 实验5 索引和视图 三、实验内容 1.分别使用企业管理器和Transact-SQL语句为studentsdb数据库的student_info和curriculum创建主键索引。 ①、使用企业管理器为studentsdb数据库的student_info创建主键索引。 ②使用企业管理器为studentsdb数据库的curriculum创建主键索引。(将课程表的课程编号属性设为主键,系统将自动创建主键索引) ③使用Transact-SQL语句为studentsdb数据库的student_info创建主键索引。(将先前创建好的主键移除) create clustered index student_info_idx on student_info(学号)

④使用Transact-SQL语句为studentsdb数据库的curriculum创建主键索引。(将先前创建好的主键移除) create clustered index curriculum_idx on curriculum(课程编号) 2.使用企业管理器按curriculum的课程编号列创建唯一性索引。

3.分别使用企业管理器和Transact-SQL语句为studentsdb数据库的grade表的“分数”字段创建一个非聚集索引,命名为grade_index

①使用企业管理器为studentsdb数据库的grade表的“分数”字段创建一个非聚集索引。 ②使用Transact-SQL语句为studentsdb数据库的grade表的“分数”字段创建一个非聚集索引。(删除之前所创建的索引)

实验五 SQL语句应用

实验5 SQL语句应用 1 实验目的 (1)掌握数据的插入、修改和删除操作。 (2)掌握不同类型的数据查询操作。 2 实验要求 (1)利用SQL语句对图书销售系统表进行插入、修改、删除和查询操作。 3 实验步骤 (1)以bs用户登录BOOKSALES数据库,将表1至表6中的数据插入到数据库的相应表中。 表1CUSTOMERS 表2PUBLISHERS

表3BOOKS 表4ORDERS ORDERITEM 表5 表6PROMOTION

(2)将ISBN为978-7-121-18619-8的图书的零售价格(retail)修改为30。Update books set retail=30 where isbn=’978-7-121-18619-8’; (3)将订单号为1000的订单的发货日期修改为“2013-2-2”。 Update orders set shipdate=to_date('2013-02-02','yyyy-mm-dd') where order_id=1000; (4)已知当前有一个图书表OLDPUBLISHERS,其表中数据如下: publisher_id name contact phone 1 电子工业出版社李明0 2 机械工业出版社孙浩 3 人民邮电出版社张春 4 传智播客吴瑞997990 请将表中的数据与PUBLISHERS中的数据进行合并。 创建表: CREATE TABLE OLDPUBLISHERS ( 2 publisher_id CHAR(10) PRIMARY KEY, 3 name VARCHAR2(25), 4 contact V ARCHAR2(25),

实验5 sql语句练习——图书馆数据库答案

实验5sql语句练习——图书馆数据库 实验5 sql语句练习——图书馆数据库 实验目的 (1)了解SQL Server数据库的逻辑结构和物理结构; (2)了解表的结构特点; (3)了解SQL Server的基本数据类型; (4)了解空值概念; (5)学会在企业管理器中创建数据库和表; (6)学会使用T-SQL语句创建数据库和表。 (7)学会使用T-SQL语句更新数据。 (7)学会使用T-SQL语句创建多种查询。 实验准备 首先要明确,能够创建数据库的用户必须是系统管理员,或是被授权使用CREATE DATABASE语句的用户。 其次创建数据库必须要确定数据库名、数据库大小(最初的大小、最大的大小、是否允许增长及增长方式)和存储数据库的文件。 然后,确定数据库包含哪些表,以及所包含的各表的结构,还要了解SQL Server的常用数据类型,以创建数据库的表。 此外还要了解两种常用的创建数据库、表的方法,即在企业管理器中创建和使用T-SQL的CREATE DA TABASE语句。 实验内容 假设有5本书 设有一图书馆数据库,其中包括3个表,即图书表、读者表和借阅表。三个表的结构如图: 读者表结构

(1)用Sql语句创建图书馆数据库 Create database Lab05 (2)用Sql语句创建上述3个表 create table book ( bookId char(10)primary key, bookName varchar(50), bookWriter varchar(30), bookPublish varchar(30), bookPrice float ) create table reader ( readerId char(10) primary key, readerName varchar(8)not null, readerSex char(2)not null, readerOfficeTel char(8), readerDepartment varchar(30) ) create table 借阅表 ( readerId char(10), bookId char(10), checkOutTime char(8), checkInTime char(8), primary key(readerId,bookId), foreign key (readerId) references reader(readerId), foreign key (bookId) references book(bookId), ) (3)基于图书馆数据库的3个表,用sql语言完成一下操作:1)为图书表增加一列“ISBN”,数据类型为CHAR(10)

SQL Serve实验5_索引和视图_要点

实验5 索引和视图 1.实验目的 (1)掌握使用SQL Server管理平台和Transact-SQL语句CREATE INDEX创建索引的方法。 (2)掌握使用SQL Server管理平台查看索引的方法。 (3)掌握使用SQL Server管理平台和Transact-SQL语句DROP INDEX删除索引的方法。 (4)掌握使用SQL Server管理平台和Transact-SQL语句CREATE VIEW创建视图的用法。 (5)了解索引和视图更名的系统存储过程sp_rename的用法。(6)掌握使用Transact-SQL语句ALTER VIEW修改视图的方法。 (7)了解删除视图的Transact-SQL语句DROP VIEW的用法。2.实验内容及步骤 (1)分别使用SQL Server管理平台和Transact-SQL语句为studentsdb数据库的student_info表和curriculum表创建主键索引。 使用SQL Server管理平台:

a. b. c. d.

e. 使用Transact-SQL语句: (2)使用SQL Server管理平台按curriculum表的课程编号列创建唯一性索引。

(3)分别使用SQL Server管理平台和Transact-SQL语句为studentsdb数据库的grade表的“分数”字段创建一个非聚集索引,命名为grade_index。 使用SQL Server管理平台: 使用SQL语句: use studentsdb go create index grade_index on grade (分数) (4)为studentsdb数据库的grade表的“学号”和“课程编号”字段创建一个复合唯一索引,命名为grade_id_c_ind。 create index grade_id_c_ind on grade (学号,课程编号)

数据库实验五:视图的应用

数据库实验五:视图的应用 一、实验目的与要求: 1.实验目的 (1)理解视图的概念; (2)掌握视图的使用方法。 (3)理解视图和基本表的异同之处。 2.实验要求 (1)参照实验五中完成的查询,按如下要求设计和建立视图: 1)基于单个表按投影操作定义视图。 2)基于单个表按选择操作定义视图。 3)基于单个表按选择和投影操作定义视图。 4)基于多个表根据连接操作定义视图。 5)基于多个表根据嵌套操作定义视图。 6)定义含有虚字段的视图。 (2)分别在定义的视图设计一些查询(包括基于视图和基本表的连接或嵌套查询)。 (3)在定义的视图上进行插入、更新和删除操作,分情况讨论哪些操作可以成功完成,哪些操作不能完成,并分析原因。 (4)在实验报告中要给出具体的视图定义要求和操作要求,并针对各种情况做出具体的分析和讨论。 二、实验内容 1、实验原理 (1)视图是用SQL SELECT查询定义的,创建视图命令格式如下: CREATE VIEW <视图名> AS (2)删除视图的命令格式如下: DROP VIEW <视图名> 2、实验步骤与结果 (1)调出SQL Server2005软件的用户界面,进入SQL SERVER MANAGEMENT

STUDIO。 (2)输入自己编好的程序。 (3)检查已输入的程序正确与否。 (4)运行程序,并分析运行结果是否合理和正确。在运行时要注意当输入不同的数据时所得到的结果是否正确。 (5)输出程序清单和运行结果。 (1)参照实验五中完成的查询,按如下要求设计和建立视图: 1)基于单个表按投影操作定义视图。 create view v as select教师编号,姓名 from教师 2)基于单个表按选择操作定义视图。 create view v_order as select* from教师 where职称='教授' 3)基于单个表按选择和投影操作定义视图。 create view v_cuss as select教师编号,姓名,职称

数据库SQL语句实验报告

《数据库原理及应用》实验报告SQL语句部分 :绩成总

实验一熟悉SQL SERVER,数据定义实验 实验一成绩: 一、实验目的 1、利用查询分析器创建数据库 2、利用查询分析器用SQL语言定义基本表、索引并进行相关操作 二、实验步骤及内容 在以下实验中,使用学生-课程数据库,它描述了学生的基本信息、课程的基本信息及学生选修课程的信息。 1.创建学生课程数据库 2.创建学生关系表S : 3.创建课程关系表C : 课程名学分先行课课程号Cno ccreditCname Cpno 4.创建课程关系表SC : 5.将以上创建表S、C、SC的SQL命令以 .SQL文件的形式保存在磁盘上。 6、在表S上增加“出生日期”属性列。 7、删除表S的“年龄”属性列。 8、删除S姓名列的唯一值约束。 9、修改SC表成绩属性列为精确数字型。 10、在表S上,按“Sno”属性列的唯一值方式建立索引。 11、删除表SC,利用磁盘上保存的.SQL文件重新创建表SC。 12、创建教材P74页习题5中SPJ数据库中的四个关系:S、P、J、SPJ。 三、实验结果: 1.创建学生课程数据库 ; Studend create database2.创建学生关系表S : S create table(, 9Sno CHAR()PRIMARYKEY UNIQUE,)(Sname CHAR20CHAR Ssex (2), smallint Sage ,

char Sdept 20(), ); .创建课程关系表C 3: 课程号课程名先行课学分 ccredit Cpno CnoCname table C create (primary key,) Cno char(4Cname CHAR(40 ),char(), 4Cpno ,Ccredit SMALLINT); 4.创建课程关系表SC : 学号课程号成绩 grade Sno Cno createtable SC(9),Sno char(),char Cno (4, Grade smallint); 5.将以上创建表S、C、SC的SQL命令以 .SQL文件的形式保存在磁盘上。 6、在表S上增加“出生日期”属性列。 ;datetimeadd Sbirthday alter table S 7、删除表S的“年龄”属性列。

数据库系统原理实验报告_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'; 查询结果截图:

数据库SQL语句实验报告

《数据库原理及应用》实验报告 SQL语句部分 总成绩:

实验一熟悉SQL SERVER,数据定义实验 实验一成绩: 一、实验目的 1、利用查询分析器创建数据库 2、利用查询分析器用SQL语言定义基本表、索引并进行相关操作 二、实验步骤及内容 在以下实验中,使用学生-课程数据库,它描述了学生的基本信息、课程的基本信息及学生选修课程的信息。 1.创建学生课程数据库 3.创建课程关系表C : 5.将以上创建表S、C、SC的SQL命令以 .SQL文件的形式保存在磁盘上。 6、在表S上增加“出生日期”属性列。 7、删除表S的“年龄”属性列。 8、删除S姓名列的唯一值约束。 9、修改SC表成绩属性列为精确数字型。 10、在表S上,按“Sno”属性列的唯一值方式建立索引。 11、删除表SC,利用磁盘上保存的.SQL文件重新创建表SC。 12、创建教材P74页习题5中SPJ数据库中的四个关系:S、P、J、SPJ。 三、实验结果: 1.创建学生课程数据库 create database Studend; create table S ( Sno CHAR(9)PRIMARY KEY, Sname CHAR(20)UNIQUE, Ssex CHAR(2), Sage smallint, Sdept char(20), );

3.创建课程关系表C : 课程号课程名先行课学分 Cno Cname Cpno ccredit create table C ( Cno char(4)primary key, Cname CHAR(40), Cpno char(4), Ccredit SMALLINT, ); 4.创建课程关系表SC : 学号课程号成绩 Sno Cno grade create table SC ( Sno char(9), Cno char(4), Grade smallint, ); 5.将以上创建表S、C、SC的SQL命令以 .SQL文件的形式保存在磁盘上。 6、在表S上增加“出生日期”属性列。 alter table S add Sbirthday datetime; 7、删除表S的“年龄”属性列。 alter table S drop column Sage;

实验五 SQL查询

实验五SQL语言 一、实验指导书:实验五SQL语言应用 二、学院信息管理.mdb补充(使用SQL语句) (1. 建立一个Student表,它由Sno(学号)、Sname(姓名)、Ssex(性别)、Sage(年龄)、Sdept(所在系)五个属性组成。其中学号不能为空,值是唯一的,并且姓名取值也唯一。 2. 建立一个SC (学生选课)表,它由学号Sno、课程号Cno,修课成绩Grade组成,其中(Sno, Cno)为主码。) 3. 查询所有姓刘的学生的学号与姓名及其出生年份。 4. 查询全体学生的姓名、学号、班级名称,学院名称。 5. 查询信息学院全体学生的学号、姓名、每门课程的成绩。 6. 查所有年龄在20岁以下的学生姓名及其年龄。 7. 查考试成绩有不及格的学生的学号和姓名。有多门课程不及格的学生,学号和姓名只显示一次。 8. 查信息学院和工程学院学生的姓名和性别。 9. 查询选修了“数据库应用”课程的学生的学号及其成绩,查询结果按分数的降序排列 10. 查询选修了“数据库应用”课程的学生人数 11. 查询每个学生及其选修的课程名其及成绩。 三、(教学管理.mdb) 使用SQL语句完成下列操作。 1.创建一个“雇员”表,字段包括雇员号(主键)、姓名(必填字段)、性别、出生日期、 部门、备注字段。 2.在“雇员”表中增加一个字段,字段名为“职务”,数据类型为“文本”;将“备注”字 段删除;将“雇员号”字段的数据类型改为文本型,字段大小为8. 3.将一条新记录插入到“雇员”表中。其中雇员号为“0001”,“姓名”为“张磊”,“性别” 为“男”,出生日期为1960年1月1日,“部门”为“办公室”。 4.将一条新记录插入到“雇员”表中。其中雇员号为“0002”,“姓名”为“王宏”,“性别” 为“男”。 5.将“雇员”表张磊的出生日期改为1960年1月11日。 6.将“雇员”表中雇员号为“0002”的记录删除。 7.删除已建立的“雇员”表。 8.查找并显示“教师”表中的所有字段。 9.查找1992年参加工作的男教师,并显示“姓名”、“性别”、“学历”、“职称”、“系别” 和“联系电话”。 10.计算每名学生的平均成绩,并按平均成绩降序显示。 11.查找学生的选课成绩,并显示“学生编号”、“姓名”、“课程名称”和“成绩”。 12.显示“90分以上学生情况”表中所有记录和“学生成绩查询”中80分一下的记录,显 示内容为“学生编号”、“姓名”、“成绩”3个字段。 13.查询并显示“学生”表中高于平均年龄的学生记录。

实验5sql语句练习——图书馆数据库答案

实验5sql语句练习一一图书馆数据库 实验5 Sql语句练习一一图书馆数据库 实验目的 (1)了解SQL SerVer数据库的逻辑结构和物理结构; (2)了解表的结构特点; (3)了解SQL SerVer的基本数据类型; (4)了解空值概念; (5)学会在企业管理器中创建数据库和表; (6)学会使用T-SQL语句创建数据库和表。 (7)学会使用T-SQL语句更新数据。 (7)学会使用T-SQL语句创建多种查询。 实验准备 首先要明确,能够创建数据库的用户必须是系统管理员,或是被授权使用CREATE DATABASE语句的用户。 其次创建数据库必须要确定数据库名、数据库大小(最初的大小、最大的大小、是否允许增长及增长方式)和存储数 据库的文件。 然后,确定数据库包含哪些表,以及所包含的各表的结构,还要了解SQL SerVer的常用数据类型,以创建 数据库的表。 此外还要了解两种常用的创建数据库、表的方法,即在企业管理器中创建和使用T-SQL的CREATE DATABASE 语句。 实验内容 假设有5本书 设有一图书馆数据库,其中包括3个表,即图书表、读者表和借阅表。三个表的结构如图: 图书表结构 读者表结构 假设有10位读者

借阅表结构 Create database Lab05 (2) 用Sql语句创建上述3个表 Create table book ( bookId Char(Io)Primary key, bookName VarChar(50), bookWriter VarChar(30), bookPublish VarChar(30), bookPrice float ) Create table reader ( readerId Char(10) Primary key, readerName VarChar(8)not null, readerSex char(2)not null, readerOfficeTel char(8), readerDepartment VarChar(30) ) Create table 借阅表 ( readerId Char(10), bookId Char(10), CheCkOUtTime char(8), CheCkInTime char(8), Primary key(readerId,bookId), foreign key (readerId) references reader(readerId), foreign key (bookId) references book(bookId), ) (3) 基于图书馆数据库的3个表,用sql语言完成一下操作: 1) 为图书表增加一列“ ISBN ”,数据类型为CHAR(Io) alter table book add ISBN char(10) 2) 为刚添加的ISBN 列增加缺省值约束,约束名为ISBNDEF ,缺省值为‘ 7111085949' ALTER TABLE book ADD CONSTRAINT ISBNDEF DEFAULT ('7111085949') FOR ISBN 3) 删除图书表中ISBN 列增加的缺省值约束alter table book drop ISBNDEF 4) 删除图书表中新增的ISBN 列ALTER TABLE book DROP COLUMN ISBN 5) 查询全体图书的图书号、书名、作者、出版社和单价select bookId,bookName,bookWriter,bookPublish,bookPrice from book 6) 查询全体图书的信息,其中单价打8 折,并设置该列的别名为‘打折价'

SQL实验五:T-SQL编程

( 二 〇 一 五 年 四 月 《数据库原理及应用》实验报告 学校代码: 10128 学 号: 201120905048 题 目:T-S Q L 编程 学生姓名:孙跃 学 院:理学院 系 别:数学系 专 业:信息与计算科学 班 级:信计12-2 任课教师:侯睿

一、实验目的 (1)进一步巩固第2章~第4章所学内容; (2)掌握用户自定义类型的使用; (3)掌握变量的分类及其使用; (4)掌握各种运算符的使用; (5)掌握各种控制语句的使用; (6)掌握系统函数及用户自定义函数的使用。 二、实验内容 1.自定义数据类型的使用。 (1)对于实验2给出的数据库表结构,再自定义一数据类型ID_type,用于描述员工编号。 (2)在YGGL数据库中创建Employees3表,表结构与Employees类似,只是EmployeeID列使用的数据类型为用户自定义类型ID_type。 2.变量的使用。 (1)对于实验2给出的数据库表结构,创建一个名为female的用户变量,并在SELECT语句中使用该局部变量查找表中所有女员工的编号、姓名。 (2)定义一个变量,用于获取号码为102201的员工的电话号码。 3.运算符的使用。 (1)使用算数运算符“-”查询员工的实际收入。 (2)使用比较运算符“>”查询Employees表中工作时间大于5年的员工信息。 4.流程控制语句。 (1)判断Employees表中是否存在编号为11006的员工,如果存在则显示该员工信息,不存在则显示查无此人。 (2)假设变量X的初始值为0,每次加1,直至X变为5。 (3)使用CASE语句对Employees表按部门进行分类。 5.自定义函数的使用。 (1)定义一个函数实现如下功能:对于一个给定的DepartmentID值,查询该值在Departments表中是否存在,若存在则返回0,否则返回-1。 (2)写一段T-SQL程序调用上述函数。 6.系统内置函数的使用。 (1)求一个数的绝对值。 (2)求财务部雇员的总人数。 (3)使用ASCII函数返回字符表达式最左端字符的ASCII值。 (4)获得当前的日期和时间。

实验五 SQL PL查询语句的使用

实验五、SQL/PL查询语句的使用 一、目的与要求 1.进一步巩固第2章~第4章所学内容; 2.掌握变量的分类及其使用; 3.掌握各种运算符的使用; 4.掌握各种控制语句的使用; 5.掌握系统函数及用户自定义函数的使用。 二、实验准备 1.了解PL/SQL支持的各种基本数据类型; 2.了解PL/SQL各种运算符、控制语句的功能及其用法; 3.了解系统函数的调用方法; 4.了解用户自定义函数使用的一般步骤 三、实验内容 1.条件结构的使用 例[6.5]查询部门号大于2的员工人数 例[6.6]判断工资大于2000的人是否超过10人。

例[6.7]员工的平均工资大于1500则显示“平均工资大于1500”,否则显示“平均工资小于1500” 例[6.8]求X2+4X+3=0的根。

2.循环结构的使用 例[6.9]用LOOP-EXIT-END求10的阶乘 例[6.10] 用LOOP-EXIT-WHEN-END求10的阶乘

3.自定义函数的使用 (1)定义一个函数实现如下功能。对于一个给定的departmentid的值,查询该值在 departments表中是否存在,若存在,返回0,否则返回1. (2)写一段PL/SQL脚本程序调用上述函数。当向employees表插入一条记录时,首先调用 函数CHECK_ID检索该记录的departmentid值在表departments的departmentid字段中是否存在对应的值,若存在,则将该记录插入employees表。

四、问题及体会 在这次的实验中,我学会了PL/SQL查询语句的使用方法,包括一些运算符、控制语句和自定义函数的使用方法。但在实验的过程中,也出现了如下的一些问题; 1.在做例6.7的时候,第一次由于设置的求平均的结果的值的精度过高,导致编译时报 错。 2.在做例6.7时,输入程序命令ELSEIF 语句输错了导致编译报错,后经检查纠正了 所以,在写程序是首先要熟悉各种运算符和控制语句的使用规则,知道程序的语法和结构,以实现需要的功能,其次,就是要认真检查,避出现笔误。

西安石油大学数据库实验5T-SQL程序设计

实验5 T-SQL程序设计 一、实验目的 1.熟练掌握变量的定义和赋值。 2.掌握各种运算符。 3.掌握流程控制语句,尤其是条件语句和循环预语句。 二、实验环境 硬件环境:PC机 软件环境:操作系统为Microsoft Windows 2000或以上版本。 数据库管理系统为Microsoft SQL Server 2008企业版。 三、实验内容 1.变量的定义与输出。 2. 条件结构的使用。 四、实验步骤 1.创建一名为Student_name的局部变量,并在select语句中使用该变量查找“张强”同学所选课程的成绩情况,给出相应的语句段和运行结果。 2.将选修课程号为720的同学的成绩增加3分,同时使用全局变量@@rowcount检查获得更新的数据行数目。

4.利用学生_课程数据库中的SC表查找学生的成绩信息并判断是否有某学生的某门课程的 成绩在90分以上的信息,若有,则显示学号、姓名、课程名和成绩,否则输出信息,说明“不存在成绩大于90分的学生!”。 5.从学生_课程数据库中查询所有学生选课成绩情况:姓名、课程名、成绩。要求:将学生的百分制转换为5级评分制,成绩大于等于90显示为“优秀”,成绩在80-89分显示为“良好”,“70-79”分显示为“中等”,成绩在60-69显示为“及格”,60以下显示为“不及格”,没成绩的显示为“未考”。并且输出记录按下列要求排序:先按学号升序,再按课程号升序,最后按成绩降序。

6.利用学生_课程数据库中的SC表,编程实现:如果所有学生所有课程的平均成绩高于80分,使用while循环就将每门成绩减5分,然后查找所有学生所有课程中的最高分,如

实验6-SQL语句使用

实验5 SQL语句使用(二) 一、实验内容、步骤 (一)把物理机上的数据表导入到虚拟机 1.将物理上的文件my2table.dmp拖到虚拟机e:\; 2.进入虚拟机,在e:\oracle9\bin下执行: imp scott/tiger file = e:\my2table.dmp full=y (二)执行以下命令,并反复比较分析 1. select 姓名,出生日期from xsda where 出生日期between '1-1月-1988' and31-12月-1990';//查找1988、1989、1990年三年出生的。 2.查找1990年出生的。 3.select 姓名,出生日期from xsda where to_char(出生日期,'yyyy-mm-dd') like '1990%'; //是什么功能? 4. select 姓名,出生日期from xsda where ( to_char(出生日期,'yyyy-mm-dd') like '1990%') or (to_char(出生日期,'yyyy-mm-dd') like '1988%');//查找1990和1988年出生的。 5. select 姓名,专业from xsda where 专业in ('计算机通信','通信技术');//查找专业为计算机通信和通信技术专业的。 6. 写出至少两种查找专业为网络管理和通信技术专业的人和专业。 7. select 姓名||性别||专业as "基本情况" from xsda ; 比较:select rtrim(姓名)||性别||专业as "基本情况" from xsda;

实验五 SQL语言

实验五SQL语言 一、目的与要求 1.掌握SQL语言的查询功能; 2.掌握SQL语言的数据操作功能; 3.掌握对象资源管理器建立查询、索引和视图的方法; 二、实验准备 1.了解SQL语言的查改增删四大操作的语法; 2.了解查询、索引和视图的概念; 3.了解各类常用函数的含义。 三、实验内容 (一)SQL查询功能 使用提供的studentdb数据库文件,先附加到目录树中,再完成下列题目,SQL命令请保存到脚本文件中。 1.基本查询 (1)查询所有姓王的学生的姓名、学号和性别 Select St_Name ,St_Sex, St_ID From st_info Where St_Name like '王%' (2)查询全体学生的情况,查询结构按班级降序排列,同一班级再按学号升序, 并将结果存入新表new中 select * into new from st_info order by Cl_Name desc,St_ID asc

(3)对S_C_info表中选修了“体育”课的学生的平均成绩生成汇总行和明细 行。(提示:用compute汇总计算) Select c_no,score From s_c_info Where c_no=29000011 compute avg(score) 2.嵌套查询 (1)查询其他班级中比“材料科学0601班”的学生年龄都大的学生姓名 和年龄 Select St_Name ,Born_Date from st_info where Cl_Name!='材料科学0601班' and Born_Date<(select Min(Born_Date) from st_info where Cl_Name='材料科学0601班')

实验五 SQL语句的基本使用(二)

实验五SQL语句的基本使用(二) 实验目的:掌握用SELECT语句对表或视图数据进行查询的方法。 实验内容:用SQL 语句对Student、Course、SCG三个表进行数据查询操作。 实验准备:进入“企业管理器”,分别在表Student、Courses、SCG上进行如下查询。 实验步骤: (1)查询1982年出生的男生的姓名: SELECT Sname FROM Student WHERE YEAR(Birthday)=1982 AND Sex='男' (2)查询信息系和管理系所有姓“王”的同学的姓名和年龄: SELECT Sname, YEAR(GETDATE())-YEAR(Birthday) FROM Student WHERE Sdept IN ('信息系' , '管理系') AND Sname LIKE '王%' (3)查询年龄大于女同学平均年龄的男学生姓名: DECLARE @AGE INT SELECT @AGE= AVERAGE(YEAR(GETDATE())-YEAR(Birthday)) FROM Student WHERE Sex='女' GO SELECT Sname FROM Student WHERE Sex='男' AND YEAR(GETDATE())-YEAR(Birthday)> @AGE (4)查询平均分最高的学生的学号: SELECT SNo, G= AVERAGE(grade) INTO AG FROM SCG GROUP BY SNo GO SELECT top 1 SNo FROM AG ORDER BY G desc (5)查询“网络数据库技术”85分以上的同学的姓名: SELECT Student.Sname FROM Student,SCG,Courses WHERE Student.SNo=SCG.SNo AND https://www.wendangku.net/doc/ab2325171.html,o=https://www.wendangku.net/doc/ab2325171.html,o AND SCG. Grade>85 AND https://www.wendangku.net/doc/ab2325171.html,ame='网络数据库技术' (6)查询每门课程的课程名及选修人数: SELECT CNo,Cname, COUNT(SNo) FROM SCG,Course WHERE https://www.wendangku.net/doc/ab2325171.html,o= https://www.wendangku.net/doc/ab2325171.html,o GROUP BY CNo 实验报告内容: 在SQL Server 2000中实现以下查询并写出SQL查询语句: (1)查询信息系所有年龄小于20岁的女生; (2)查询姓“王”的男同学的人数;

数据库实验1 sql语句

create table salvaging( prj_num char(8)primary key, pri_name varchar(50), start_date datetime, end_date datetime, prj_status bit ); 创建stock create table stock( mat_num char(8)primary key, mat_name varchar(50)not null, speci varchar(20)not null, warehouse varchar(50), amount int, unit decimal(18,2), total as ([amount]*[unit]) ); 创建out_stock create table out_stock( prj_num char(8), mat_num char(8), amount int, get_date datetime, department varchar(100), primary key(prj_num,mat_num), foreign key(prj_num)references salvaging(prj_num), foreign key(mat_num)references stock(mat_num), ); 插入到salvaging insert into dbo.salvaging values('20100015','220KV清经线接地箱及接地线被盗抢修',2010-10-12,2010-10-13,1); insert into salvaging values('20100016','沙河站#公变出线电缆老化烧毁抢修',2010-11-05,2010-11-05,1); insert into salvaging values('20110001','西丽站电缆短路烧毁抢修工程 ',2011-01-03,2011-01-03,1); insert into salvaging values('20110002','西丽站电缆接地抢修 ',2011-01-03,2011-01-05,1); insert into salvaging values('20110003','观澜站光缆抢修

相关文档
相关文档 最新文档