数据库第一次课外作业 - 图文

更新时间:2023-10-20 01:15:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

上机实验1 SQL Server 2000单表查询练习

一、 实验目的

1. 提高应用查询分析器管理SQL Server 2000数据库的能力。 2. 提高SQL语句的编写能力。

二、 实验要求

1. 创建一个数据库及数据库中对象。

2. 记录所使用的SQL语句和实验结果。

三、 实验步骤

1. 打开查询分析器,以SQL语句完成后续操作。

2. 以默认方式创建数据库school。

在查询分析器中输入创建数据库school的SQL代码如下所示: CREATE DATABASE school

3. 创建school数据库中表students、courses和enrollment(注意添加列和表的约束)。 在查询分析器中输入以下SQL代码以分别创建数据表students、courses和enrollment

及其相应的约束。 USE school CREATE TABLE students ( )

s_no VARCHAR(20) PRIMARY KEY, s_name VARCHAR(20), s_sex CHAR(2), s_birth DATETIME, s_address VARCHAR(50), s_account MONEY, s_password VARCHAR(20)

GO CREATE TABLE courses ( ) GO

CREATE TABLE enrollment (

c_no CHAR(10) PRIMARY KEY, c_name VARCHAR(30), c_date DATETIME, c_credit INT,

c_information VARCHAR(50)

) GO

s_no VARCHAR(20), c_no CHAR(10), e_score INT, e_date DATETIME,

e_register_state CHAR(1), e_check_state CHAR(1), e_test_state CHAR(1)

PRIMARY KEY(s_no, c_no, e_date),

FOREIGN KEY(s_no) REFERENCES students(s_no), FOREIGN KEY(c_no) REFERENCES courses(c_no)

注:e_register_state 为 1 表示已注册,0 表示未注册

e_check_state为 1 表示确认,0 表示未确认 e_test_state为 1 表示已考试,0 表示未考试

4. 往各表中添加样例数据。

在查询分析器中输入以下SQL代码以分别往数据表students、courses和enrollment中添加样例数据,SQL代码如下所示:

USE school

INSERT INTO students VALUES('200920001', '张三', '女', '1982-03-24', '北京市', 8200.0, '200920001')

INSERT INTO students VALUES('200920003', '王五', '男', '1976-10-21', '天津市', 4500.0, '2009200030826')

INSERT INTO students VALUES('200920002', '李四', '男', '1976-07-23', '天津市', 3500.0, '200920002')

INSERT INTO students VALUES('200920004', '赵六', '女', '1974-08-26', '长春市', 4000.0, '2009200040806')

INSERT INTO students VALUES('200920005', '钱七', '男', '1975-07-23', '天津市', 4300.0, '200920005')

INSERT INTO students VALUES('200920006', '吴八', '男', '1972-12-14', '天津市', 5500.0, '200920006')

INSERT INTO courses VALUES('22010401', '高等数学', '2009-03-01', 2, '基础课') INSERT INTO courses VALUES('22010402', '高等代数', '2009-03-01', 3, '基础课') INSERT INTO courses VALUES('22010403', '大学物理', '2009-03-01', 3, '基础课') INSERT INTO courses VALUES('22010404', '计算机基础', '2009-03-01', 2, '基础课') INSERT INTO courses VALUES('22010405', '程序设计', '2009-03-01', 2, '专业课') INSERT INTO courses VALUES('22010406', '操作系统', '2009-03-01', 2, '专业课') INSERT INTO courses VALUES('22010407', '数据库应用', '2009-03-01', 3, '专业课') INSERT INTO courses VALUES('22010408', '数据结构', '2009-03-01', 2, '专业课') INSERT INTO courses VALUES('22010409', '计算机网络', '2009-03-01', 2, '专业课')

INSERT INTO courses VALUES('22010410', '人工智能', '2009-03-01', 3, '专业课')

INSERT INTO enrollment VALUES('200920001', '22010410', 90, '2009-3-12', '1', '0', '0') INSERT INTO enrollment VALUES('200920001', '22010410', 88, '2009-3-10', '1', '1', '1') INSERT INTO enrollment VALUES('200920003', '22010407', 85, '2009-3-10', '0', '0', '0') INSERT INTO enrollment VALUES('200920003', '22010410', 60, '2009-3-12', '1', '1', '1') INSERT INTO enrollment VALUES('200920003', '22010408', 55, '2009-3-10', '1', '1', '1') INSERT INTO enrollment VALUES('200920002', '22010406', 70, '2009-3-9', '0', '0', '0') INSERT INTO enrollment VALUES('200920002', '22010407', 95, '2009-3-9', '1', '1', '0') INSERT INTO enrollment VALUES('200920002', '22010410', 92, '2009-3-9', '1', '1', '0') INSERT INTO enrollment VALUES('200920004', '22010407', 87, '2009-3-10', '1', '0', '0') INSERT INTO enrollment VALUES('200920006', '22010406', 93, '2009-3-12', '1', '1', '0')

5. 查询courses表中c_credit(课程学分)在2和3之间的课程编号、课程名称和课程

学分,写出SQL语句,并对查询结果截图: Select c_no,c_name, c_credit From courses

Where c_credit in ('2', '3')

6. 查询enrollment表中各学生选修课程的情况,并以汉字标题输出学生帐号,课程成

绩,写出SQL语句,并对查询结果截图: Select s_no '学生账号',

c_no ,

e_score ’学生成绩’, e_date,

e_register_state , e_check_state , e_test_state

from enrollment

7. 查询students表中家庭地址为“北京”的学生详细信息,写出SQL语句,并对查询

结果截图: Select *

From students

Where s_address like '北京%'

8. 查询students表中年龄大于30且性别为“男”的学生详细信息,写出SQL语句,

并对查询结果截图: Select *

From students

Where datediff(yy,s_birth,getdate())>30 and s_sex ='男'

9. 查询enrollment表中选修过课程的学生帐号,要求去掉重复行,写出SQL语句,并

对查询结果截图: Select distinct s_no From enrollment Where e_check_state=’1’

四、 实验要点

1. 本实验作为综合练习,要相对连续的完成本实验各步骤。

2. 要求熟练记忆和操作本实验中所涉及到的SQL语句。

五、 实验心得

数据库操作是一个对准确性要求很高的过程,所以在操作过程中必须注意细节。但数据库操作很实用。

本文来源:https://www.bwwdw.com/article/m0bf.html

Top