数据库、数据表和数据的操作

本文介绍了一个具体的SQL数据库操作实例,包括创建数据库、表结构、数据插入及修改等基本操作,并详细展示了如何设置表间关系、定义索引以及创建视图等进阶技巧。

数据库、数据库表和数据的操作

一、实验目的

掌握创建数据库和数据表,以及对表结构进行修改,创建索引和视图,并对视图中的数据进行增删改操作。

二、实验知识要点

了解和掌握实验相关知识点:
数据操作、录入数据至数据表、插入数据SQL语句语法、修改数据SQL语句语法、删除数据SQL语句语法。

三、实验内容

创建一个名为:jiaoxue的数据库,在该库下创建如下的各表以及视图等数据库对象。
STUDENT表

学 号姓 名性 别年 龄所 在 系
SnoSnameSsexSageSdept
200215121李勇20CS
200215122刘晨19CS
200215123王敏18MA
200515125张立19IS
COURSE表
课程号课程名先行课学分
--------------------------------------------------------------------
CnoCnameCpnoCcredit
1数据库54
2数学12
3信息系统64
4操作系统73
5数据结构64
6数据处理2
7PASCAL语言4
SC表
学号课程号成绩
--------------------------------------------------------
SnoCnoGrade
200215121192
200215121285
200215121388
200215122290
200215122380

四、实验操作及过程

--创建jioaxue数据库
create database jiaoxue  
use jiaoxue

--创建student表
create table student (sno char(9) primary key,sname char(20) unique,ssex char(2),sage smallint,sdept char(20))
alter table student drop column s_score
select * from student

--创建course表
create table course (cno char(9) primary key,cname char(20),cpno char(9),ccredit smallint,foreign key (cpno) references course(cno))
--alter table course alter column ccreait  ccredit
--alter table course change ccreait  ccredit char
select * from course

--创建SC表
create table sc (sno char(9) ,cno char(9),grade smallint,primary key(sno,cno),foreign key (sno) references student(sno),foreign key (cno) references course(cno))
select * from sc

--插入student表中相应数据
insert into student values('201215121','李勇','男',20,'CS')
insert into student values('201215122','刘晨','女',19,'CS')
insert into student values('201215123','王敏','女',18,'MA')
insert into student values('201215125','张立','男',19,'IS')
select * from student

--插入course表中相应数据
insert into course values('1','数据库',5,4)
insert into course values('2','数学',null,2)
insert into course values('3','信息系统',1,4)
insert into course values('4','操作系统',6,3)
insert into course values('5','数据结构',7,2)
insert into course values('6','数据处理',null,2)
insert into course values('7','PASCAL语言',6,4)
select * from course

--插入SC表中相应数据
insert into sc(sno,cno,grade) values('201215121','1',92)
insert into sc(sno,cno,grade) values('201215121','2',85)
insert into sc(sno,cno,grade) values('201215121','3',88)
insert into sc(sno,cno,grade) values('201215122','2',90)
insert into sc(sno,cno,grade) values('201215122','3',80)

补充

  1. 向STUDENT表增加“入学成绩列”
    在这里插入图片描述在这里插入图片描述
  2. 定义三张表的主码
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  3. 定义SC表中的参照完整性(删除、更新级联)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  4. STUDENT表的SSEX只允许取“男”或“女”,年龄小于30
    在这里插入图片描述
    在这里插入图片描述
  5. SC表的GRADE的值应该在0-100之间
    在这里插入图片描述
    在这里插入图片描述
  6. 去掉第6题中的性别的限制

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
7. 修改表STUDENT的约束条件,年龄由小于30改为14——40之间
在这里插入图片描述
在这里插入图片描述
8. 为STUDNT表按学号升序建立唯一索引,为COURSE表按课程号升序建立唯一索引,为SC表按学号升序和课程号降序建立唯一索引
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
9. 建立信息系学生的视图
在这里插入图片描述
在这里插入图片描述
10. 建立信息系选修了1号课程的学生的视图
在这里插入图片描述
在这里插入图片描述
11. 建立信息系选修1号课程且成绩在90分以上的学生的视图
在这里插入图片描述
在这里插入图片描述
12. 所有女生记录定义为一个视图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

五、实验小结

实验中遇到的问题:第四题中单独第一主码的时候
没指定表中的列名唯一时老是报错,之后发现必须要加以下语句指定表中该列名唯一。在STUDENT表SC表中也是同样的道理

alter table course alter column cno char(9) not null

从第九道题建视图的时候,总是会出现CREATE VIEW 必须是批处理中仅有的语句的报错,经过上网查询,发现CREATE VIEW 语句执行时有一个条件,即该语句必须是第一个被执行的但在其前方有多个语句因此在CREATE VIEW 语句的上方和下方加一个GO指令即可。
实验心得:做完此次实验后明确了在SQL server怎样创建表,插入数据,以及加相应的约束和相关的简单查询等。

此为吉林大学数据库实验报告,实验内容为: 实验一 熟悉MySQL环境及SQL定义语言 一、实验目的: 1. 了解MySQL程序构成、安装、管理方法。 2. 了解MySQL数据库及表结构。 3. 熟练掌握SQL语言进行基本表结构的创建。 4. 熟练应用SQL语言进行表结构的修改。 5. 掌握SQL语言进行基本表的删除。 6. 掌握SQL语言进行索引的建立删除。 二、实验内容主要步骤: 1. 参考“MYSQL简体中文参考文档.chm”,熟悉MySQL构成功能特性。 2. 打开Windows服务管理器,实验启动、停止MySQL服务,了解MySQL的服务管理方法; 3. 打开“MySQL管理控制台.bat”,熟悉控制台中操作数据库; 4. 利用控制台创建“Student数据库”。 5. 打开“Student”数据库,创建如下三个表,按下面的列表中的字段名(英文)、类型宽度建立: 7. 用SQL语言CREATE TABLE语句创建学生表student、课程表course选课表SC;(字段类型及长度参照实验一) 8. 用SQL语言ALTER语句修改表结构; a) STUDENT表中SNO设为非空唯一; b) STUDENT表中增加一个字段SBIRTH,类型设置为日期时间类型,增加一个ADDRESS字段,类型为文本(字符); c) 删除STUDENT表中ADDRESS字段; d) COURSE表中CNO字段设为非空唯一; 9. 重新定义一个简单表,然后用SQL语言DROP语句删除该表结构; 10. 用SQL语言CREATE INDEX语句定义表STUDENT的SNAME字段的降序索引; 11. 用SQL语言CREATE INDEX语句定义表SC的GRADE字段的升序索引; 12. 用SQL语言DROP语句删除索引; 13. 输入部分数据,并试着修改其中的错误; 注: 实验二 SQL语言进行简单查询 一、实验目的: 1. 掌握SQL查询语句的一般格式 2. 掌握简单数据查询操作。 3. 熟练掌握各种查询条件的表示。 4. 掌握排序分组操作在SQL语句中的实现。 5. 掌握集函数的使用。 二、实验内容主要步骤: 1. 创建学生表student、课程表course选课表SC,并输入数据(注意数据的完整性。);(可以使用实验一中已经建立的表数据) 2. 对各表中的数据进行不同条件的查询; 1) 查询全体学生的学号姓名 2) 查询全体学生的详细记录 3) 查询所有选修过课程的学生学号 4) 查询考试有不及格的学生学号 5) 查询不是信息系(IS)、计算机系(CS)的学生性别、年龄、系别 6) 查询选修了4号课的学生学号成绩,结果按成绩降序排列 7) 查询每个课程号相应的选课人数 8) 查询计算机系(CS)的学生姓名、年龄、系别 9) 查询年龄18-20岁的学生学号、姓名、系别、年龄; 10) 查询姓刘的学生情况 11) 查询既选修1号课程,又选修2号课程的学生学号 12) 查询学生的姓名出生年份(今年2003年) 13) 查询没有成绩的学生学号课程号 14) 查询总成绩大于200分的学生学号 15) 查询每门课程不及格学生人数 16) 查询不及格课程超过3门的学生学号 17) 查询年龄在10到19岁之间的学生信息 18) 查询全体学生情况,按所在系升序排列,同一个系的学生按年龄降序排列 19) 查询选了1号课程的学生平均成绩 20) 查询选了3号课程的学生的最高分 21) 查询每个同学的总成绩 实验三 SQL进行复杂查询 一、实验目的: 1. 熟练掌握各种连接查询及其连接条件。 2. 掌握各种嵌套查询的使用。 3. 掌握复杂的集合查询。 二、内容主要步骤: 1.实验一中的数据为基础 2.对各表中的数据进行不同条件的连接查询嵌套查询; 1) 查询每个学生及其选课情况; 2) 查询每门课的间接先修课 3) 将STUDENT,SC进行右连接 4) 查询有不及格的学生姓名所在系 5) 查询所有成绩为优秀(大于90分)的学生姓名 6) 查询既选修了2号课程又选修了3号课程的学生姓名、学号; 7) 查询刘晨同一年龄的学生 8) 选修了课程名为“数据库”的学生姓名年龄 9) 查询其他系比IS系任一学生年龄小的学生名单 10) 查询其他系中比IS系所有学生年龄都小的学生名单 11) 查询选修了全部课程的学生姓名 12) 查询计算机系学生及其性别是男的学生 13) 查询选修课程1的学生集合选修2号课程学生集合的差集 14) 查询李丽同学不学的课程的课程号 15) 查询选修了3号课程的学生平均年龄 16) 求每门课程学生的平均成绩 17) 统计每门课程的学生选修人数(超过3人的才统计)。要求输出课程号选修人数,结果按人数降序排列,若人数相同,按课程号升序排列 18) 查询学号比刘晨大,而年龄比他小的学生姓名。 19) 求年龄大于女同学平均年龄的男同学姓名年龄 20) 求年龄大于所有女同学年龄的男同学姓名年龄 21) 查询至少选修了95002选修的全部课程的学生号码 22) 查询9500195002两个学生都选修的课程的信息 实验四 SQL的常用数据更新操作 一、实验目的: 1. 熟练掌握SQL的常用数据更新操作。 2. 熟练应用INSERT,UPDATE,DELETE语句。 3. 掌握更新操作的各种格式。 二、实验内容主要步骤 1. 应用INSERT,UPDATE,DELETE语句进行更新操作; 1) 插入如下学生记录(学号:95030,姓名:李莉,年龄:18) 2) 插入如下选课记录(95030,1) 3) 计算机系学生年龄改成20 4) 数学系所有学生成绩改成0 5) 把低于总平均成绩的女同学成绩提高5分 6) 修改2号课程的成绩,若成绩小于75分提高5%,成绩大于75时提高 7) 4%(两个语句实现,注意顺序) 8) 删除95030学生信息 9) 删除SC表中无成绩的记录 10) 删除张娜的选课记录 11) 删除数学系所有学生选课记录 12) 删除不及格的学生选课记录 13) 查询每一门课程成绩都大于等于80分的学生学号、姓名性别,把值送往另一个已经存在的基本表STU(SNO,SNAME,SSEX)中 14) 把所有学生学号课程号连接追加到新表中 15) 所有学生年龄增1 16) 统计3门以上课程不及格的学生把相应的学生姓名、系别追加到另外一个表中 2.熟练掌握INSERT,UPDATE,DELETE语句并能综合应用;
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三毛是she

感谢打赏,我会继续努力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值