建立表和定义完整性约束、数据操作 实验报告[合集]

时间:2019-05-12 01:35:56下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《建立表和定义完整性约束、数据操作 实验报告》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《建立表和定义完整性约束、数据操作 实验报告》。

第一篇:建立表和定义完整性约束、数据操作 实验报告

经济管理学院

财务管理

专业

协作者______________

教师评定 _____________ 实验题目

建立表和定义完整性约束、数据操作

一、实验目的与实验方法

本实验课程的目的:

本实验课程的实验方法:

二、实验要求

1.用CREATE DATABSE命令建立数据库

2.用CREATE SCHEMA命令创建模式(自己命名模式名称)

3.在定义的模式下,参照教材内容,使用SQL语言创建教材P43—P44面的样本数据库及定义完整性约束

4.使用Insert命令完成记录的插入操作,要求分别设计若干违反实体完整性、参照完整性和用户自定义完整性的插入操作,并分析原因。

三、实验结果和数据

1.用CREATE DATABSE命令建立数据库

2.用CREATE SCHEMA命令创建模式(自己命名模式名称)

3.在定义的模式下,参照教材内容,使用SQL语言创建教材P43—P44面的样本数据库及定义完整性约束

4.使用Insert命令完成记录的插入操作,要求分别设计若干违反实体完整性、参照完整性和用户自定义完整性的插入操作,并分析原因。

违反实体完整性:

违背了primary key 约束,所以执行不成功。违反参照完整性:

在执行插入操作时,系统会自动计算院系系列值是7,而院系列参照院系表的编号值,此时在院系表中找不到编号为7的院系。所以插入操作失败。违反用户自定义完整性:

结果是违反了unique约束,因为院系表名称不允许重复,而名称为“经济管理学院”的院系已经存在,所以不成功。

四、问题与讨论

在创建的过程中没有注意括号是用英文括号还是中文括号,所以出现了错误。应该使用英文括号的。

在同一个数据库中是不能同时创建两个相同的对象的。

心得体会:

数据库是一门很难学的课程,而且,我在平时比较少关注这方面的东西,所以,我在做这个实验的时候就觉得十分的困难。很多的时候我都需要别人的帮助。

我是一个比较粗心的人,因此,我在做这个实验的时候没有留意输入的时候要用英文符号,要加空格。所以,我总是出现错误,让我觉得很烦恼。

但是,在做这个实验的时候,我觉得一点快乐。因为我又接触了以前我从未接触过的东西,我又学了一点新的知识。

过程是最重要的,在这个实验过程中我学会了新知识,这是最重要的。

第二篇:Oracle05表操作和约束(范文模版)

一、DDL数据定义语言 1.创建表:create table 表名要求:

1.必须以字母开头

2.必须在1-30个字符之间

3.必须只能包含A-Z,a-z,0-9,$,_,# 4.必须不能和用户定义的其他对象重名 5.必须不能是Oracle的保留字 例如: 方式一:

create table student(stu_no number(11), name varchar(32), gender char(5), age number(3)default 19//为字段设置默认值);Create table test1(ID char(11), Name carchar2(24), Age number(3)default 19);方式二:子查询建表

Create table user_info As

select first_name,salary,dept_id From s_emp;2.删除表:drop table 例如,drop table studentzxf;3.修改表:alter table Create table tal(Stu_no number(11), Name varchar2(32));1.增加一列

Alter table tal add age number(3);2.增加多列

Alter table tal add(address varchar2(32),birthday date);3.删除一列

Alter table tal drop column address(列名);4.删除多列

Alter table tal drop(age,birthday);5.逻辑删除列

Alter table tal set unused column name;Alter talbe tal drop unused columns;//在数据库不繁忙的时候用 Oracle在设计的时候,没有考虑可逆性 6.修改一列

Alter table tal modify stu_no number(20);//将原来的长度为11 修改为长度为20 修改列时注意:

考虑现有数据的安全性(包括数据的类型,长度),修改长度是 只能往大改 如果表中有数据,不可以修改类型,只有当表中没数据了才能修改类型 修改多列

Alter tabale tal modify(stu_no number(11)not null,name char(20));7.重命名列

Alter table tal rename column stu_no to s_no;8.更改约束

Alter table tal add constraint tal_pk primary key(s_no);9.删掉约束

Alter table test4 drop constraint tal_pk;10.重命名表名

Rename tal to 新表名 11.添加外键约束

ALTER TABLE tal ADD CONSTRAINT STUDENT_FK FOREIGN KEY(dept_no)REFERENCES dept(dept_no);

二、DML数据操纵语言

1.插入数据:insert 例如: insert into Student values(1,’Jack’);//按表中的自然顺序逐个插入数据

insert into student(stu_no,name)values(1,’Jack’);//指定字段插入值 2.删除数据:delete from[tablename]where… 例如: delete from testdefault where age = 19;3.修改数据:update[tablename]set a = exp1 where b = exp2 如果没有限定条件,则会修改整张表中的数据,即修改整列。例如: update Student set age = 24 where name = ‘jack’;也可一次性写入多条insert语句一次执行完毕。也可加载脚本(.sql文件)命令@+路径/...sql 4.truncate截断表

delete删除时会产生日志信息的。

truncate删除数据时不生成日志信息,所以效率快,但也不可逆。truncate截断后会释放表空间,而delete并不释放表空间。

三、约束

考虑数据库的完整性约束 三方面:1.实体完整性

2.参照完整性

3.用户自定义完整性 5种约束:

Not null 非空约束

(nk)例:Create table stu_info(S_no char(11)not null, S_name varchar2(24)not null, S_age number(3));Unique 唯一约束(uk)(只保证唯一,不保证不为空,多条记录的值都可以为空,因为Null和null是不相等的,不会提示违反了唯一性)方式一:(列级约束)例:Create table stu_info(S_no char(11)unique not null, S_name varchar2(24)not null, S_age number(3));方式二:(表级约束)例:Create table stu_info(S_no char(11)not null, S_name varchar2(24)not null, S_age number(3), Constraint stu_info_uk unique(S_no,S_name));//约束名为stu_info_uk Primary key 主键约束(pk)唯一且非空 方式一:(列级约束)例:create table test2(C1 number(3)constraint test2_pk primary key, C2 number(3));方式二:(表级约束)例:create table test2(C1 number(3), C2 number(3), Primary key(c1,c2));c1 , c2 组合起来是唯一的,c1,c2单独看不一定是唯一的 Atler table tablename add constraint 主键名称primay key

表级约束可以约束很多列,可以定义联合主键,而列级约束是做不到的。

Foreign key 外键约束(fk)

要求引用另一张表中已存在的值(主键、唯一键)

例:create table parent(C1 number(3)primary key, C2 number(3));Create table child(C1 number(3)primary key, C2 number(3)references parent(c1));先建父表再建子表。

不能随便删除,删除时只能先删子表记录再删父表;删除表时同理。插入数据时先给父表插,再给子表插。

Drop table parent cascade cinstraint;//删除表时,如果想先删除父表,子表不变 例:create table parent(C1 number(3)primary key, C2 number(3));Create table child(C1 number(3)primary key, C2 number(3)references parent(c1)on delete cascade);//删除记录时切断关系,删除了子表中的记录再删除父表

级联删除:世纪是先删除子表的记录,再删除父表的记录。表都存在。学生表:学号 姓名 性别

成绩表:成绩编号 学号 成绩 课程编号 课程表:课程编号 课程名称

外键:

成绩表里面学号应该是学生表

成绩表里面的课程编号应该是课程表里面的课程编号

Create table student(sno number primary key, name varchar2(10),sex varchar2(2))Create table score(scno number primary key,sno number not null,sco number(5,2),cno number not null references course(cno))Create table course(cno number primary key,name varchar2(20));Alter table score add constrain fk_stuandscore foreign key(sno)references student(sno);Check 检查约束(ck)方式一:(列级约束)

例:create table test3(C1 number(3)check(c1<150), C2 number(3)check(c2 is not null));方式二:(表级约束)

例:Create table test3(C1 number(3), C2 number(3), Check(c1 = c2));

第三篇:SQL数据的定义实验报告

实验1、数据定义

班级:计自班

姓名:

学号:

1、实验目的熟悉SQL的数据定义语言,能够熟练地使用SQL语句来创建和更改基本表,创建和取消索引。

2、实验内容

l

用SSMS创建数据库University_Mis

l

使用CREATE语句创建基本表。

l

更改基本表的定义:

增加列,删除列,修改列的数据类型。

l

创建表的升、降序索引。

l

删除基本表的约束、基本表的索引或基本表。

3、实验步骤

(1)

用SSMS创建数据库University_Mis

通过菜单[Microsoft

SQL

Server]→[启动SSMS]。

利用SSMS工具新建数据库University_Mis

数据库名称:University_Mis

数据库相关参数设置:采用系统默认设置

(2)

在SSMS中用SQL语句创建关系数据库基本表:

n

学生表Students(Sno,Sname,Semail,Scredit,Sroom);

字段名

说明

允许空

字段类型

描述

Sno

主键

N

Char(3)

学号

Sname

不允许为空

N

Char(8)

姓名

Semail

Y

Char(30)

邮箱

Scredit

大于等于0

Y

Float

学分

Sroom

Y

Char(30)

寝室名

n

教师表Teachers(Tno,Tname,Temail,Tsalary);

字段名

说明

允许空

字段类型

描述

Tno

主键

N

Char(3)

职工号

Tname

不允许为空

N

Char(8)

姓名

Temail

Y

Char(30)

邮箱

Tsalary

Y

Float

工资

n

课程表Courses(Cno,Cname,Ccredit);

字段名

说明

允许空

字段类型

描述

Cno

主键

N

Char(3)

课程号

Cname

不允许为空

N

Char(20)

课程名称

Ccredit

Y

Float

学分

n

成绩表Reports(Sno,Tno,Cno,Score);

字段名

说明

允许空

字段类型

描述

Sno

主键

N

Char(3)

学号

Tno

主键

N

Char(3)

职工号

Cno

主键

N

Char(3)

课程号

Score

Y

Float

分数

其中:Sno、Tno、Cno分别是表Students、表Teachers、表Courses的主键,具有唯一性约束,Scredit具有约束“大于等于0”;

Reports中的Sno,Tno,Cno是外键,它们共同组成Reports的主键。

(3)

更改表Students:增加属性Ssex(类型是CHAR,长度为2),取消Scredit“大于等于0”约束。把表Courses中的属性Cname的数据类型改成长度为30。

(4)

删除表Students的一个属性Sroom。

(5)

删除表Reports。

(6)

为Courses表创建按Cno降序排列的索引。

(7)

为Students表创建按Sno升序排列的索引。

(8)

创建表Students的按Sname升序排列的唯一性索引。

(9)

删除Students表Sno的升序索引。

4、实验要求

实验之前请细细阅读实验总体要求与说明指导书,在SQL

Server

2005或2008的SSMS环境中,完成以上实验(2)-(9)步所有SQL数据定义操作,并将操作窗口剪贴到实验报告中,按顺序标号,做必要的说明。

在实验步骤1完成之后,查看创建的数据库文件名及事务日志文件名,填入下表中。

项目

内容

数据库所有者

数据库大小

可用空间

数据文件名

数据文件物理存放位置

日志文件名

日志文件物理存放位置

5、实验过程

一、创建基本表

(1)学生表Students

(2)教师表Teachers

(3)课程表Courses

(4)成绩表Reports

二、表的删除与修改

(1)更改表Students:

l

增加属性Ssex(类型是CHAR,长度为2)

l

取消Scredit“大于等于0”约束

l

删除表Students的一个属性Sroom

(2)更改表Courses:

把属性Cname的数据类型改成长度为30

(3)删除表Reports

三、建立索引

(1)

为Courses表创建按Cno降序排列的索引

(2)

为Students表创建按Sno升序排列的索引

(3)

创建表Students的按Sname升序排列的唯一性索引

(4)

删除Students表Sno的升序索引

四、项目

内容

数据库所有者

SHOZA7OKW8JOEQW\Administrator

数据库大小

4.00

MB

可用空间

1.86

MB

数据文件名

Chends_University_Mis

数据文件物理存放位置

C:\Program

Files\Microsoft

SQL

Server\MSSQL.1\MSSQL\DATA

日志文件名

Chends_University_Mis_log.ldf

日志文件物理存放位置

C:\Program

Files\Microsoft

SQL

Server\MSSQL.1\MSSQL\DATA

第四篇:顺序表的操作实验报告

顺序表的基本操作

一、实验目的

1、复习C++语言程序设计中的知识。

2、熟悉线性表的逻辑结构。

3、熟悉线性表的基本运算在两种存储结构上的实现。

4、掌握顺序表的存储结构形式及其描述和基本运算的实现。

5、熟练掌握动态链表结构及有关算法的设计

二、实验内容

实现顺序表的建立、取元素、修改元素、插入、删除等顺序表的基本操作。[基本要求](1).依次从键盘读入数据,建立带头结点的顺序表;(2).输出顺序表中的数据元素

(3).根据指定条件能够取元素和修改元素;(4).实现在指定位置插入和删除元素的功能。

三、实验步骤、调试及输出结果

(—).数据结构与核心算法的设计描述: #include #include /*顺序表的定义:*/ #define ListSize 100 typedef struct {int elem[ListSize];/*向量elem用于存放表结点*/ int length;}SeqList;/*顺序表的建立:*/ void CreateList(SeqList *L,int n){int i;printf(“please input n numbers:n”);for(i=1;i<=n;i++)scanf(“%d”,&L->elem[i]);L->length=n;}

/*当前的表长度*/ /*顺序表的打印:*/ void PrintList(SeqList *L,int n){int i;printf(“the sqlist isn”);for(i=1;i<=n;i++)printf(“%d ”,L->elem[i]);printf(“n”);}

/*顺序表的查找:*/ int LocateList(SeqList *L,int x){int i;i=1;while(((L->elem[i])!=x)&&(i<=10))++i;if((L->elem[i])==x)return(i);else return(0);}

/*顺序表的插入:*/ void InsertList(SeqList *L,int x,int i){int j;if(i<1 ||i>L->length+1)printf(“no insert position!n”);else {for(j=L->length;j>=i;j--)L->elem[j+1]=L->elem[j];L->elem[i]=x;L->length++;} } /*顺序表的删除:*/ void DeleteList(SeqList *L,int i){int j;if(i<1 ||i>L->length)printf(“no delete position!n”);else {for(j=i;j<=(L->length)-1;j++)L->elem[j]=L->elem[j+1];L->length--;} } void main(){

SeqList L;int i,x;int n=10;

/*当前顺序表的长度*/ L.length=0;CreateList(&L,n);

/*建立顺序表*/ PrintList(&L,L.length);

/*输出顺序表*/ printf(“input the research element:”);scanf(“%d”,&x);i=LocateList(&L,x);/*顺序表查找*/ printf(“the research position is %dn”,i);printf(“input the position of insert:”);scanf(“%d”,&i);printf(“input the value of insert:”);scanf(“%d”,&x);InsertList(&L,x,i);/*顺序表插入*/ PrintList(&L,L.length);

/*输出顺序表*/ printf(“input the position of delete:”);scanf(“%d”,&i);DeleteList(&L,i);/*顺序表删除*/ PrintList(&L,L.length);/*输出顺序表*/ }(二).调试及输出结果 测试数据:

1、输入n个数;

2、输出顺序列表;

3、顺序表的查找;4.顺序表的插入;

5、顺序表的删除;

数据测试如下截图:

四、实验讨论与总结:

通过这次写实验报告,我深切的理解了这门课的本质。刚开始学这门课时,当时还不清楚这门课程的目的,现在,我真正的理解了:数据结构像是身体的骨骼。数据结构是个框架,模型,抽象数据类型中列举了各种操作,而所用的C++语言,将各种操作描述出来构成算法。

在这次设计的过程中,我知道了顺序表是按顺序存储的,用了一维数组来存储,但是,在执行时出现了问题。后来问同学,指出我的错误,不过获益不少。我又重新整理思路,把顺序表的基本操作写好了。虽然走了很多弯路,但是让我认识到,一定要创新,大胆,不能按照旧的思路去干新的事情。

单链表写起来简单多了,这个很快就搞定了。但是细节上出了问题。比如说,有些变量的重复定义,有些变量又没有定义,在调用函数,就直接复制过来,没有改参数……通过修改,我深刻理解到:细节决定成败,在以后,不管做任何事情都要认真,细心。

这次的实验报告,让我受益匪浅,不仅有知识方面的,还有生活和精神上的。总之,我会继续我的兴趣编程,相信在编程的过程中,能不断的提高自己。

第五篇:网络数据库讲稿(表数据操作)

网络数据库讲稿

一、插入数据

P131 1.INSERT … VALUES …

(1)VALUES所提供的值的个数、顺序、数据类型,必须与字段名列表中的相一致。(2)关于NULL 和 DEFAULT

P133 CREATE TABLE NULLDEFAULT(ID SMALLINT IDENTITY(1,2), XM CHAR(8)NOT NULL, XB CHAR(2)DEFAULT '男', NL TINYINT, MZ CHAR(10)NOT NULL DEFAULT '汉族')INSERT NULLDEFAULT values('张三','女',30,'回族')

①如果省略了列名表和值表中的一列,那么当该列有默认值存在时,将使用默认值;如果默认值不存在,SQL会尝试使用NULL值。

INSERT NULLDEFAULT(XM,MZ)values('张三','回族')INSERT NULLDEFAULT(XM)values('张三')

如果列已声明了NOT NULL,尝试的NULL值会失败。

INSERT NULLDEFAULT(XM,MZ)values(NULL,'回族')INSERT NULLDEFAULT(MZ)values('回族')②如果在值表中明确指定了NULL,那么即使该列默认值存在,也仍会插入NULL值(假设该列允许NULL)。

③当在一个允许NULL且没有声明默认值的列中使用DEFAULT,会在该列插入NULL值。

INSERT NULLDEFAULT values('张三',NULL,default,'蒙古族')④如果在一个声明NOT NULL且没有声明默认值的列中指定NULL或DEFAULT、或者省略了该值,会导致错误。

INSERT NULLDEFAULT values(NULL,NULL,default,'蒙古族')INSERT NULLDEFAULT values(DEFAULT,NULL,default,'蒙古族')INSERT NULLDEFAULT(MZ)values('回族')⑤可以把NULL插入到允许NULL且没有默认值的列中。

INSERT NULLDEFAULT(XM,NL)values('张三',NULL)⑥具有标识属性的列中不能使用关键字DEFAULT,不能在列名表中和值表中列出具有标识属性的列和值。

INSERT NULLDEFAULT values(DEFAULT,DEFAULT,NULL,default,'蒙古族')2.INSERT … SELECT … 3.SELECT … INTO …

二、更新数据

P137

三、删除数据

P141 1.DELETE 2.TRUNCATE TABLE

四、OUTPUT子句

P307 内存逻辑表INSERTED和DELETED。

网络数据库讲稿

INSERT NULLDEFAULT(XM)OUTPUT INSERTED.ID,INSERTED.XM,INSERTED.XB,INSERTED.NL,INSERTED.MZ values('赵一')INSERT NULLDEFAULT OUTPUT INSERTED.ID values('钱二','女',30,'回族')INSERT NULLDEFAULT OUTPUT INSERTED.ID,INSERTED.XM,INSERTED.XB,INSERTED.NL values('孙三',NULL,default,'蒙古族')UPDATE NULLDEFAULT SET MZ='维吾尔族' OUTPUT DELETED.ID,DELETED.XM,DELETED.XB,DELETED.MZ, INSERTED.ID,INSERTED.XM,INSERTED.XB,INSERTED.NL,INSERTED.MZ WHERE XM='赵一'

如果使用INTO子句,INTO子句中的表必须已存在。

CREATE TABLE ABC(ID SMALLINT, XM CHAR(8)NOT NULL, XB CHAR(2)DEFAULT '男', NL TINYINT, MZ CHAR(10)NOT NULL DEFAULT '汉族')

UPDATE NULLDEFAULT SET MZ='维吾尔族' OUTPUT DELETED.ID,DELETED.XM,DELETED.XB,DELETED.NL,DELETED.MZ INTO ABC WHERE XM='张三' OR XM='李四'

下载建立表和定义完整性约束、数据操作 实验报告[合集]word格式文档
下载建立表和定义完整性约束、数据操作 实验报告[合集].doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐