数据库上机实验报告三(建立 修改表)

 

实验内容

1、 数据表的建立

基本表《简单的》带有主键

     带有外码约束的(外码来自其他表或者本表)

2、 数据表的修改

               添加删除列

               修改列属性类型

               添加删除约束(约束名)

                           元组的添加,修改,删除    

删除数据表

 

实验过程

1create table Student

(

    Sno char(9) primary key ,     /*Sno是主码 列级完整性约束条件*/

    Sname char(20) unique,      /*Sname取唯一值*/

  Ssex char(2),

    Sage smallint,            /*类型为smallint*/

    Sdept char(20)              /*所在系*/

);    

create table Course

(

Cno char(4) primary key,   /*列级完整性约束条件,Cno是主码*/

Cname char(40),

Cpno char(4),                   /*Cpno的含义是先行课*/

Ccredit smallint,

foreign key (Cpno) references Course(Cno)

/*表级完整性约束条件,Cpno是外码,被参照表是Course,被参照列是Cno*/

 

);

create table SC

(

Sno char(9),

Cno char(4),

Grade smallint,

primary key (Sno,Cno),

       /*主码有两个属性构成,必须作为表级完整性进行定义*/

foreign key (Sno) references Student(Sno),

       /*表级完整性约束条件,Sno是外码,被参照表是Student*/

foreign key (Cno) references Course(Cno),

       /*表级完整性约束条件,Cno是外码,被参照表示Course*/

);

1create table S

(

Cno varchar(3), /*变长的字符串,输入2个字符就是两个字符不会补空格*/

Sname varchar(20),

Status int,

city varchar(20),

constraint pk_sno Primary key(Sno),       /*约束条件的名字为pk_sno*/

);

create table P

(

Pno varchar(3),

Pname varchar(20),

Color varchar(3),

Weight int,

constraint pk_Pno Primary key (Pno),      /*约束条件的名字是pk_Pno*/

);

create table J

(

Jno varchar(3),

Jname varchar(20),

City varchar(20),

constraint pk_Jno primary key(Jno) /*约束条件的名字为pk_Jno*/

);

2create table SPJ

(

Sno varchar(3), /*第一个表中的主码*/

Pno varchar(3),

Jno varchar(3),

QTY int,            /*数量*/

Constraint pk_SPJ primary key(Sno,Pno,Jno), /*主码由3个属性组成*/

foreign key(Sno) references S(Sno),

       /*表级完整性约束条件,Sno是外码,被参照表是S*/

foreign key(Pno) references P(Pno),

       /*表级完整性约束条件,Pno是外码,被参照表是P*/

foreign key(Jno) references J(Jno),

       /*表级完整性约束条件,Jno是外码,被参照表是J*/

 

);

2、数据表的更改

S表中添加一个concat

alter table s add concat varchar(20)

S表中删除concat

alter table s drop column concat

更改s concat列的属性 把长度由20改为30

alter table s alter column concat varchar(30)

联系方式 名字为concat 修改属性为唯一的 属性名为Con_concat

alter table s add constraint Con_concat Unique(concat)     

删除约束关系con_concat

alter table s drop Constraint Con_Concat

 

/*插入一个元组*/

 

insert into s Valus(‘S1’,’精益’,20,’天津’) /*20不能写成’20’*/

实验中的问题的排除与总结:

1、在创建SPJ时

有三个实体所以从3个实体中取主码,还有一个数量属性也要写上

主码由那3个主码确定

 

 

2、更改一个数据库中数据表时一定要先使该数据库处于正在使用状态

 

3、CONSTRAINT

是可选关键字,表示 PRIMARY KEY、NOT NULL、UNIQUE、FOREIGN KEY 或 CHECK 约束定义的开始。约束是特殊属性,用于强制数据完整性并可以为表及其列创建索引。

4、--go可以不加但是要注意顺序 注:go --注释           提示错误

5、注意添加一个空元素用 null

 

 

 

 

 

 

 

 

附 sql备份

--=========================================================================================================
--创建一个数据库 Student
--=========================================================================================================
create database Student

go
--=========================================================================================================
--在数据库Student中创建表Student Course SC 注意顺序
--=========================================================================================================
use Student
----------------------------------------------------------------
create table Student
(
Sno char(9) primary key, /*Sno是主码 列级完整性约束条件*/
Sname char(10) unique, /*Sname取唯一值*/
Ssex char(2),
Sage smallint,   /*类型为smallint*/
Sdept char(20)   /*所在系*/
);     /*;要加*/
----------------------------------------------------------------
create table Course
(
Cno char(4) primary key, /*列级完整性约束条件,Cno是主码*/
Cname char(20),
Cpno char(4),    /*Cpno的含义是先行课*/
Ccredit smallint,
foreign key (Cpno) references Course(Cno)
/*表级完整性约束条件,Cpno是外码,被参照表是Course,被参照列是Cno*/

);
----------------------------------------------------------------
create table SC
(
Sno char(9),
Cno char(4),
Grade smallint,
primary key (Sno,Cno),
/*主码有两个属性构成,必须作为表级完整性进行定义*/
foreign key (Sno) references Student(Sno),
/*表级完整性约束条件,Sno是外码,被参照表是Student*/
foreign key (Cno) references Course(Cno),
/*表级完整性约束条件,Cno是外码,被参照表示Course*/
);
-------------------------------------------------------------------
go
--=========================================================================================================
--创建一个数据库SPJ 习题2-5
--=========================================================================================================
create database SPJ

go
--=========================================================================================================
--在数据库SPJ中创建表 S P J SPJ
--=========================================================================================================
use SPJ

go
--------------------------------------------------------------------------
create table S
(
Sno varchar(3), /*变长的字符串,输入2个字符就是两个字符不会补空格*/
Sname varchar(20),
Status int,
city varchar(20),
constraint pk_sno Primary key(Sno), /*约束条件的名字为pk_sno*/
);
--------------------------------------------------------------------------
create table P
(
Pno varchar(3),
Pname varchar(20),
Color varchar(3),
Weight int,
constraint pk_Pno Primary key (Pno), /*约束条件的名字是pk_Pno*/
);
--------------------------------------------------------------------------
create table J
(
Jno varchar(3),
Jname varchar(20),
City varchar(20),
constraint pk_Jno primary key(Jno) /*约束条件的名字为pk_Jno*/
);
--------------------------------------------------------------------------
create table SPJ
(
Sno varchar(3), /*第一个表中的主码*/
Pno varchar(3),
Jno varchar(3),
QTY int,   /*数量*/
constraint pk_SPJ primary key(Sno,Pno,Jno), /*主码由3个属性组成*/
foreign key(Sno) references S(Sno),
/*表级完整性约束条件,Sno是外码,被参照表是S*/
foreign key(Pno) references P(Pno),
/*表级完整性约束条件,Pno是外码,被参照表是P*/
foreign key(Jno) references J(Jno),
/*表级完整性约束条件,Jno是外码,被参照表是J*/

);
--------------------------------------------------------------------------
go
--=========================================================================================================
--数据表的修改 添加一个列 删除一个列 更改列的属性 建立约束 删除约束 元组的添加删除和修改
--=========================================================================================================
--和还是在数据库SPJ中 不用重新use SPJ
alter table s add concat varchar(20) /*在S表中添加一个concat 列*/
go  
--go可以不加但是要注意顺序 注:go --注释   提示错误
alter table s drop column concat /*在S表中删除concat 列*/
go
alter table s add concat varchar(20) /*在S表中添加一个concat 列*/
go
alter table s alter column concat varchar(30) /*更改s表concat列的属性 把长度由20改为30*/
go
alter table s add constraint con_concat unique(concat) /*建立一个约束关系 关系名为con_cat(删除时用到)使concat列具有唯一性*/
go
alter table s drop constraint con_concat /*删除约束关系con_concat*/
go

alter table s drop column concat /*在S表中删除concat 列*/

go


------------------------------------------------------------------------------
---插入数据
insert into s values('s1','精益',20,'天津') /*向表s中插入一个元组*/

insert into s values('s2','盛锡',10,'北京') /*向表s中插入一个元组*/
insert into s values('s3','东方红',30,'北京') /*向表s中插入一个元组*/
insert into s values('s4','丰泰盛',20,'天津') /*向表s中插入一个元组*/
insert into s values('s5','为民',30,'上海') /*向表s中插入一个元组*/
---------------------
insert into p values('p1','螺母','红',12) /*向表p中插入一个元组*/
insert into p values('p2','螺栓','绿',17) /*向表p中插入一个元组*/
insert into p values('p3','螺丝刀','蓝',14) /*向表p中插入一个元组*/
insert into p values('p4','螺丝刀','红',14) /*向表p中插入一个元组*/
insert into p values('p5','凸轮','蓝',40) /*向表p中插入一个元组*/
insert into p values('p6','齿轮','红',30) /*向表p中插入一个元组*/
---------------------
insert into j values('j1','三建','北京') /*向表j中插入一个元组*/
insert into j values('j2','一汽','长春') /*向表j中插入一个元组*/
insert into j values('j3','弹簧厂','天津') /*向表j中插入一个元组*/
insert into j values('j4','造船厂','天津') /*向表j中插入一个元组*/
insert into j values('j5','机车厂','唐山') /*向表j中插入一个元组*/
insert into j values('j6','无线电厂','常州') /*向表j中插入一个元组*/
insert into j values('j7','半导体厂','南京') /*向表j中插入一个元组*/
---------------------
--go

insert into spj values('S1','P1','J1',200) /*向表spj中插入一个元组*/
insert into spj values('S1','P1','J3',100) /*向表spj中插入一个元组*/
insert into spj values('S1','P1','J4',700) /*向表spj中插入一个元组*/
insert into spj values('S1','P2','J2',100) /*向表spj中插入一个元组*/
insert into spj values('S2','P3','J1',400) /*向表spj中插入一个元组*/
insert into spj values('S2','P3','J2',200) /*向表spj中插入一个元组*/
insert into spj values('S2','P3','J4',500) /*向表spj中插入一个元组*/
insert into spj values('S2','P3','J5',400) /*向表spj中插入一个元组*/
insert into spj values('S2','P5','J1',400) /*向表spj中插入一个元组*/
insert into spj values('S2','P5','J2',100) /*向表spj中插入一个元组*/
insert into spj values('S3','P1','J1',200) /*向表spj中插入一个元组*/
insert into spj values('S3','P3','J1',200) /*向表spj中插入一个元组*/
insert into spj values('S4','P5','J1',100) /*向表spj中插入一个元组*/
insert into spj values('S4','P6','J3',300) /*向表spj中插入一个元组*/
insert into spj values('S4','P6','J4',200) /*向表spj中插入一个元组*/
insert into spj values('S5','P2','J4',100) /*向表spj中插入一个元组*/
insert into spj values('S5','P3','J1',200) /*向表spj中插入一个元组*/
insert into spj values('S5','P6','J2',200) /*向表spj中插入一个元组*/
insert into spj values('S5','P6','J4',500) /*向表spj中插入一个元组*/
---插入数据
-----------------------------------------------------------------------------
use Student
go
--go 不加出现错误
-----------------------------------------------------------------------------
---插入数据 注意顺序 Student Course SC
--------------------------------------
insert into Student values('95001','李勇','男',20,'CS') /*向表Student中插入一个元组*/
insert into Student values('95002','刘晨','女',19,'IS') /*向表Student中插入一个元组*/
insert into Student values('95003','王敏','女',18,'MA') /*向表Student中插入一个元组*/
insert into Student values('95004','张立','男',19,'IS') /*向表Student中插入一个元组*/
--------------------------------------
-----注意顺序(先行课问题) 注意添加一个空元素用 null
insert into Course values('2','数学',null,2)/*向表Course中插入一个元组*/
insert into Course values('6','数据处理',null,2)/*向表Course中插入一个元组*/
insert into Course values('4','操作系统','6',3)/*向表Course中插入一个元组*/
insert into Course values('7','PASCAL语言','6',4)/*向表Course中插入一个元组*/
insert into Course values('5','数据结构','7',4)/*向表Course中插入一个元组*/
insert into Course values('1','数据库','5',4)/*向表Course中插入一个元组*/
insert into Course values('3','信息系统','1',4)/*向表Course中插入一个元组*/
--------------------------------------
insert into SC values('95001','1',92)/*向表SC中插入一个元组*/
insert into SC values('95001','2',85)/*向表SC中插入一个元组*/
insert into SC values('95001','3',88)/*向表SC中插入一个元组*/
insert into SC values('95002','2',90)/*向表SC中插入一个元组*/
insert into SC values('95002','3',80)/*向表SC中插入一个元组*/
---插入数据

本文档为数据库上机实验报告,是自己认认真真一步一步写的,报告包含试验中的具体步骤,过程以及代码和实验结果截图,和实验总结。 实验一 实验题目: 数据库管理系统的使用 实验目的: 掌握SQL SERVER2005的使用和数据库设计的一般方法。 实验内容: (1)SQL SERVER2005的使用 (2)数据库的设计过程并利用SQL SERVER2005建立数据库。 实验二 实验题目: 数据库的定义 实验目的:掌握数据建立修改、删除、索引的SQL语句。 实验内容: (1)数据建立 (2)数据修改 (3)数据的删除 (4)数据的索引建立 为S的DEPT建立唯一索引 (5)视图的建立与删除 建立一个计算机系学生基本信息视图CSV(SNO,SNAME,SEX,AGE) 查询1983年以后出生的计算机系学生基本信息。 建立一个计算机系学生成绩视图JSGV(SNO,CNO,GRADE)。 查询计算机系学生选课多于3门的学生学号。 查询计算机系学生2号课不及格的学生学号和成绩。 实验 实验题目: 数据的操作 实验目的: 掌握数据数据操作的SQL语句。 实验内容: SQL语句插入数据操作 SQL语句修改数据操作 SQL语句删除数据操作 SQL语句查询数据操作 维护数据SQL语句: (1)在学生中插入一新生信息(‘200213808’,’HUJING’,’女’,22,’计算机’) (2)删除数据库中学号为’200213801’的退学学生有关信息。 (3)将计算机系学生2号课成绩全部提高5%。 查询数据SQL语句: (4)统计有学生选修的课程门数。 (5)统计HU老师所授每门课程的学生平均成绩。 (6)统计所有选修人数多于20的课程号和选课人数,并按人数降序排列,若人数相等,则按课程号升序排列。 (7)检索所有缓考即成绩为NULL的同学学号、姓名和缓考课程号。 (8)检索‘OS’课成绩高于该课平均成绩的同学学号。 (1) 检索计算机系女生的学号和姓名。 (2) 检索全体学生姓名、出生年份和所在系。 (3) 检索未选修任何课程的学生学号。 (4) 检索WANG老师所授课程号、课程名。 (5) 检索所有姓LI同学的基本信息。 (6) 检索选修‘DATABASE’课程的学生学号。 (7) 检索年龄介于LIPING同学年龄和28岁之间的学生基本信息。 (8) 检索选修TIAN老师所授全部课程的学生学号。 实验四 实验题目: T-SQL编程 实验目的: 掌握T-SQL语句的使用。 实验内容: 1.定义一个变量,用来存储两名学生的学号,姓名,所在系。 2.编写一个自定义的函数,该函数接受一个学生姓名,返回其学生中基本信息及选课情况。 3.试用CASE语句输出学生中各年龄段的学生人数。 4.编写存储过程,以系别作为参数,统计指定系别的人数,并作为存储过程的输出。 实验题目: 数据库的完整性 实验目的: 掌握数据库的完整性约束定义,完整性检查及违约处理方式。 掌握触发器的定义及使用。 实验内容: 1. 定义S, C的完整性约束 2. 定义SC的完整性约束,要求当其被参照发生删除操作时,违约处理的方式为级联,当其被参照发生修改操作时,违约处理的方式为拒绝。 3. 触发器 ☆ 建立一DML触发器,每当学生的成绩发生更新时,将更新的学号,成绩存入g-log内 ☆ 建立一个INSTEAD OF触发器,每当修改课程中记录时,利用触发器动作替代修改操作。 ☆ 建立一个DDL 触发器,不允许删除数据库,并作出响应。 实验六 实验题目: 数据库的安全性 实验目的: 掌握SQL SERVER 2005的安全控制机制 实验内容: 1. 创建登录 创建lg1,lg2,并设定口令 2. 定义用户 定义user1,user2,user1以lg1登录,user2以lg2登录,user1定义角色ddl_admin,datareader,datawriter 3. 掌握SQL SERVER 2005架构和用户分离的概念 为user1创建架构u1,并建立test,通过授权模式的方法,授权给user2访问test的权限 4. 数据库的授权、收权语句 ☆ 将查询SC修改GRADE属性的权限授予用户user1。 ☆ 将对S的插入权限授予用户user2,并允许他将此权限授予其他用户。 ☆ 收回所有用户对S的插入权限。 实验七 实验题目: 数据库的设计 实验目的: 掌握数据库的概念结构设计和逻辑结构与设计,掌握ER图的示方法即如何将ER模型转化为关系模型 1.学校有若干系,每个系有若干班级和教研室,每个教研室有若干教师,其中有教授和副教授每人各带若干研究生,每个班有若干学生,每个学生选修若干课程,每门课有若干学生选修。 2.某工厂生产若干产品,每种产品由不同的零件组成,有的零件可用在不同的产品上。这些零件由不同的原材料组成,不同零件所用的材料可以相同。有些零件按所属的不同产品分别放在仓库中,原材料按照类别放在若干仓库中。
数据库随课实验 《数据库原理及应用》 实验类别: 课内实验 实验课程名称: 数据库原理及应用 实验室名称:软件工程实验室 实验课程编号: 02060007 总学时: 56 学 分: 3.5 适用专业: 计算机科学与技术、网络工程、软件工程 先修课程: 离散数学、计算机导论及操作、数据结构 实验在教学培养计划中地位、作用: 数据库原理及应用是一门理论与实践相结合的课程,上机实验环节是本课程的重要组成部分。实验的目的是为了配合课堂教学,进一步强化对数据库原理的理解。实验的任务是要结合数据库原理和 SQL Server 2000数据库系统,熟练掌握和深入理解课堂教学内容,实现从理论到实践的统一。 实验一 SQL的数据定义(2学时) 1、实验目的 掌握DBMS的数据定义功能 掌握SQL语言的数据定义语句 2、实验内容 创建、删除 查看、修改的定义 理解索引的特点 创建和删除索引 3、实验要求 熟练掌握SQL的数据定义语句CREATE、ALTER、DROP 写出实验报告 4、实验步骤 设有一个学生-课程数据库,包括学生关系Student、课程关系Course和选修关系SC: 学生:Student(Sno,Sname,Ssex,Sage,Sdept) 课程Course(Cno,Cname,Cpno,Ccredit) 学生选课:SC(Sno,Cno,Grade) 创建、删除,例如: CREATE TABLE Student (Sno CHAR(5) NOT NULL UNIQUE, Sname CHAR(20) UNIQUE, Ssex CHAR(1) , Sage INT, Sdept CHAR(15))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值