文档库 最新最全的文档下载
当前位置:文档库 › 实验十五 使用SQL语言(二)

实验十五 使用SQL语言(二)

实验十五 使用SQL语言(二)
实验十五 使用SQL语言(二)

实验十五使用SQL语言(二)

一、实验目的与要求

1.复习创建数据库的方法。

2.掌握导入数据表的方法。

3.掌握使用SQL语言的方法。

二、实验内容

1.创建数据库,并导入数据表

【任务1】使用MySQL-front软件创建数据库studb,然后导入数据表。

步骤:

(1)连接MySQL服务器

方法:把教师机共享的“实验15数据表”文件夹复制到桌面上,在phpStudy界面的“MySQL管理器”中选择MySQL-front,打开该软件,然后选择localhost,点击“打开”按钮。如下图所示:

(2)创建一个数据库studb,并采用简体中文编码格式。

方法:在左侧点击“localhost”,然后单击“新建数据库”按钮,在“新建数据库”的文本框中,输入名称:studb,选择字符集:gbk,字符集校对:gbk_Chinese_ci(即简体中文),然后单击“确定”按钮。如下图所示:

当添加数据库studb完毕之后,在左侧列表中会显示该数据库,如下图所示:

(3)在数据库“studb”中导入3张数据表student、course和sc。

方法:在左侧列表中选择数据库“studb”,右键单击它,选择“输入-SQL文件夹”,然后选择数据表文件student.sql,然后单击“打开”按钮。如下图所示:

按照类似的方法,在数据库“studb”中导入其他2张数据表course和sc。导入完毕后,会显示出数据库“studb”中所有的数据表,如下图所示:

如果无法显示出数据表,则可以先关闭MySQL-front软件,再重新打开该软件,即可正常显示出所有数据表。

这3张表中的字段如下所示:

数据表student,用于存放学生信息,有5个字段,具体如下:

数据表course,用于存放课程信息,有2个字段,具体如下:

数据表sc,用于存放学生考试成绩信息,有3个字段,具体如下:

2.使用SQL语言

【任务2】使用SQL语言,完成数据查询。

请同学们记录任务2中各题对应的SQL语句,并保存select查询的结果,填入Word文档“实验15实验报告.doc”中。

注意:

●一个SQL语句使用分号(;)结尾,否则mysql认为语句没有输入完。

●SQL语句关键字和函数名不区分大小写(Linux区分,Windows不区分)。

SELECT查询语句的语法:

SELECT [DISTINCT|ALL] <列名1>[,<列名2>,...]

FROM <表名1>[,<表名2>,...]

[WHERE <条件表达式>]

[GROUP BY <列名1> [HAVING <条件表达式>]

[ORDER BY <列名2> [ASC|DESC],...]

说明:

●from子句:指定查询数据的表

●where子句:查询的数据应满足什么条件

●group by子句:按“列名1”的值进行分组

●having子句:对分组后的结果进行条件限制

●order by子句:对查询结果结果按“列名2”排序,选项asc升序(默认)或desc降序。

步骤:

(1)查询选修了课程号为“01000002”的学生的学号sno及考试成绩grade,并将查询结果按“考试成绩”降序排列,成绩相同的按照“学号”升序排列。

方法:在左侧选择“studb”,然后单击“SQL编辑器”,删除原来的代码,输入下图所示的代码,然后单击“运行”按钮。如下图所示:

(2)查询所有学生的姓名sname和年龄,要求用中文“姓名”和“年龄”显示列名,并按照“年龄”降序排列。

方法:与上例类似,请自己完成SQL语句,并记录查询结果。

提示:年龄要通过“当前系统日期所在年份-出生日期所在年份”来计算,其中年份函数是year(),系统当前日期函数是curdate(),即当前系统日期所在年份是year(curdate())。

在查询语句中常用的集函数:

●计数函数:count(列名) 计算元素的个数

●求和函数:sum(列名) 对某一列的值求和,但属性必须是整型

●计算平均值:avg(列名)对某一列的值计算平均值

●求最大值:max(列名)找出某一列的最大值

●求最小值:min(列名)找出某一列的最小值

(3)查询每个学生的平均成绩,并用中文“学号”和“平均分”显示列名。

方法:单击“SQL编辑器”,输入下图所示的代码,然后单击“运行”按钮。如下图所示:

(4)查询每个学生的平均成绩在70分以上的记录,并用中文“平均分”显示列名。

方法:与上例类似,请自己完成SQL语句,并记录查询结果。

提示:用group by子句对学号sno进行分组,用having子句对分组后的结果进行条件限制,筛选出平均成绩大于70分的记录。

WHERE子句中常用的谓词:

●BETWEEN ……AND……:在两个数之间

●NOT BETWEEN …… AND……:不在两个数之间

●IN (值1,值2……):是否在特定的集合里(枚举);NOT IN (值1,值2……):与前者相反

●LIKE:是否匹配于一个模式

●IS NULL :是否为空; IS NOT NULL:是否不为空

(5)使用BETWEEN……AND谓词查询课程号为“01000001”的成绩在80~100分(包括80分和100分)之间的学生的学号sno和成绩grade。

方法:单击“SQL编辑器”,输入下图所示的代码,然后单击“运行”按钮。如下图所示:

(6)使用BETWEEN……AND谓词查询年龄在16~18岁(包括16岁和18岁)之间的学生的姓名sname 和年龄,并用中文“姓名”和“年龄”显示列名。

方法:与上例类似,请自己完成SQL语句,并记录查询结果。

(7)使用IN谓词查询系名为“外语”和“计算机”学生的姓名sname和性别ssex。

方法:单击“SQL编辑器”,输入下图所示的代码,然后单击“运行”按钮。如下图所示:

(8)使用IN谓词查询选修了课程号courseid为“01000002”和“01000003”的学生的学号sno和

课程号courseid。

方法:与上例类似,请自己完成SQL语句,并记录查询结果。

使用LIKE谓词进行模糊查询时,可以使用2种通配符:

●_:匹配任何单个字符

●%:匹配任意个字符(包括零个字符)

(9)使用LIKE谓词查询所有姓“田”的学生学号sno、姓名sname和性别ssex。

方法:单击“SQL编辑器”,输入下图所示的代码,然后单击“运行”按钮。如下图所示:

(10)使用LIKE谓词查询学生姓名中第2个字为“伟”的学生学号sno和姓名sname。

方法:与上例类似,请自己完成SQL语句,并记录查询结果。

(11)使用IS NULL谓词查询缺少成绩的学生的学号sno和相应的课程号courseid。

说明:由于某些学生选修课程后,并没有参加考试,所以他们有选课记录,但没有考试成绩。

方法:单击“SQL编辑器”,输入下图所示的代码,然后单击“运行”按钮。如下图所示:

此题查询结果是空的,因为数据表中不存在没有成绩的学生。

如果查询时,需要同时涉及多个表的查询,则称为连接查询。用来连接两个表的条件称为连接条件。

(12)使用多表连接查询各个学生选修课程的情况,要求:显示出学生的姓名sname、选修的课程号courseid和成绩grade。

方法:单击“SQL编辑器”,输入下图所示的代码,然后单击“运行”按钮。如下图所示:

(13)使用多表连接查询选修了课程号为“01000001”的学生的学号sno、姓名sname和成绩grade。

方法:与上例类似,请自己完成SQL语句,并记录查询结果。

(14)使用多表连接查询所有选修了课程号为“01000001”的学生的姓名sname、课程名cname和成绩grade,并用中文“姓名”、“课程名”和“成绩”显示列名。

方法:单击“SQL编辑器”,输入下图所示的代码,然后单击“运行”按钮。如下图所示:

将一个查询块嵌套在另一个查询块的WHERE或HAVING子句条件中的查询称为子查询。

一个SELECT-FROM-WHERE语句称为查询块。

(15)使用子查询查询选修了课程号为“01000002”的学生的姓名sname。

方法:单击“SQL编辑器”,输入下图所示的代码,然后单击“运行”按钮。如下图所示:

(16)使用子查询查询选修了课程号“01000001”且成绩大于85的学生的姓名sname。

方法:与上例类似,请自己完成SQL语句,并记录查询结果。

(17)使用子查询查询学生“张欣然”选修课程的情况,要求显示出它选修的课程号courseid和成绩grade。

方法:与上例类似,请自己完成SQL语句,并记录查询结果。

(18)使用子查询查询选修了课程名“计算机应用基础”的学生的学号sno和姓名sname。

方法:与上例类似,请自己完成SQL语句,并记录查询结果。

上交实验内容:

完成实验后,保存“实验15实验报告.doc”,并重命名为“实验15实验报告-学号末2位+姓名.doc”(例如:实验15实验报告-01张三)。

在桌面上新建一个文件夹“学号末2位+姓名”,然后将“实验15实验报告-学号末2位+姓名.doc”复制到“学号末2位+姓名”文件夹中,最后将自己的“学号末2位+姓名”文件夹上交到教师机指定文件夹中。

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/353948150.html,o=https://www.wendangku.net/doc/353948150.html,o AND SCG. Grade>85 AND https://www.wendangku.net/doc/353948150.html,ame='网络数据库技术' (6)查询每门课程的课程名及选修人数: SELECT CNo,Cname, COUNT(SNo) FROM SCG,Course WHERE https://www.wendangku.net/doc/353948150.html,o= https://www.wendangku.net/doc/353948150.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','观澜站光缆抢修

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