第一篇:实验2,数据库表的创建与维护
《数据库原理》实验报告
实验名称 数据库表/视图的创建与维护实验
班 级
2011211309
组 号
组员姓名 浦倩 杨洋
实验目的
1. 掌握将E-R图转换为数据库逻辑模式(关系表)的方法。
2. 通过进行数据库表的建立操作,熟悉并掌握在Microsoft SQL Server数据库中建立表的方法,理解关系数据库表的结构,巩固SQL标准中关于数据库表的建立语句。
3. 通过对Microsoft SQL Server数据库中建立、维护视图的实验,熟悉Microsoft SQL Server数据库中建立和维护视图的方法,理解和掌握视图的概念。
4. 掌握从Excel表向Microsoft SQL Server关系数据库导入数据的方法,利用实际数据建立GSM网络配置数据库。实验环境
采用Microsoft SQL Server数据库管理系统作为实验平台。实验内容与步骤
1.阅读《GSM移动通信网络配置数据库》课程实验背景资料-11-v4.doc,将其中数据需求转化为E-R图。具体的E-R物理模型图如下:(主键和外键关联已在图中显示)
2.写好SQL脚本文件(包括多个create table、create view等命令),一次性生成表和视图,在Microsoft SQL Server中打开SQL脚本文件并执行。写好的SQL脚本见附录。
3.数据导入
选择要导入的数据源,原始数据要进行去空行,删除中文行等操作。
选择要导入的数据库名。
选择复制整个表
将数据源和数据库中的表对应起来。
在映射数据属性的时候,相同的名字系统会自动对应。如果要导入的数据源和关系中属性名字不相同的情况下,可以编辑映射将他们联系起来。
成功导入数据。(因为导入数据可能出现一些小问题,所以本次实验的所有实体数据是分开导入的。)
4.创建视图(脚本见附录)
A.在表“小区基本信息”上创建“LAC号为14121的小区基本位置信息”视图CellInfo,属性包括(CellID、所属地区、LAC号、经度、纬度)。
B.在表“20个小区一周分钟级话务数据”上创建“全速率话务量平均值大于23的小区话务量数据信息”视图CellCallInfo,属性包括(CellID、平均半速率话务量率、平均拥塞率)。
C.创建“MscID = 5214的MSC管辖的BTS的基本信息,及其BTS对应的天线基本信息。
附录:(SQL脚本)
create view CellInfo as select CellID,AreaName,LAC,Longitude,Latitude from CELL where LAC=14121 go create view CellCallInfo as(select CELLID,avg(rate)as avg_r,avg(callcongs)as avg_c from HuaWu group by HuaWu.CELLID having avg(traff)>23)Go create view ParMscInfo as select BTS.*,Antenna.* from MSC,BSC,BTS,CELL,Antenna where MSC.MscId=5214 and MSC.MscId=BSC.MscId and BSC.BscId=BTS.BscId and BTS.BtsName=CELL.BtsName and CELL.CellId=Antenna.CellId go
use [victory] Go create table MSC(MscID int not null, MscName char(256)null, MscCompany char(256)null, MscLongitude float null, MscLatitude float null, MscAltitude float null, primary key(MscID))go
/*================*/ /* Table: BSC */ /*================*/ create table BSC(BscId int not null, BscName char(256)null, BscCompany char(256)null, Latitude float null, Longitude float null, MscID int null, primary key(BscId), foreign key(MscID)references MSC)go
/*================*/ /* Table: BTS */ /*================*/ create table BTS(Btsname char(256)not null, BscId int null, Latitude float null, Longitude float null, Altitude float null, BtsCompany char(256)null, BtsPower int null, primary key(Btsname), foreign key(BscId)references BSC)go
/*================*/ /* Table: MS */ /*================*/ create table MS(IMEI char(256)not null, MSISDN char(256)null, UserName char(256)null, MSCompany char(256)null, gsmMspSense float null, gsmMsHeight float null, gsmMspFout float null, MZONE char(256)null, primary key(IMEI))go
/*================*/ /* Table: “CELL” */ /*================*/ create table “CELL”(CellID int not null, LAC int not null, BtsName char(256)null, AreaName char(256)null, Longitude float null, Latitude float null, Direction float null, Bcch int null, primary key(CellID), foreign key(BtsName)references BTS)go create table Antenna(CellID int not null, AntennaHeight float null, HalfPAngle float null, MaxAttenuation float null, Gain float null, AntTilt float null, Pt float null, MsPwt float null, primary key(CellID), foreign key(CellID)references CELL)go
/*================*/ /* Table: PinDian */ /*================*/ create table PinDian(CellID int not null, Freq char(256)not null, primary key(CellID,Freq), foreign key(CellID)references CELL)go
/*================*/ /* Table: LinQu */ /*================*/ create table LinQu(CellID int not null, AdjCellId int null, CellLac float null, AdjCellLac float null, foreign key(CellID)references CELL)go
/*================*/ /* Table: LuCe */ /*================*/ create table LuCe(KeyNum int not null, CellID int null, Latitude float null, Longitude float null, RxLev float null, primary key(KeyNum), foreign key(CellID)references CELL)go
/*================*/ /* Table: HuaWu */ /*================*/ create table HuaWu(CellID int not null, DATA datetime not null, TIME datetime not null, nTCH float null, traff float null, rate float null, thtraff float null, callnum float null, congsnum float null, callcongs float null, primary key(DATA,TIME,CellID), foreign key(CellID)references CELL)go
实验要求 本实验内容比较繁多,要求同学一定要进行完全的实验,并做出详尽的记录。
实验总结
通过本次实验,掌握了如何使用SQL语言创建新的关系,以及设置主键和外键。在创建外键的时候,要注意其引用的主键要在其之前创建,也就是说,在实验开始的时候,我们没有注意到创建不同的关系的顺序问题,导致不能够成功执行脚本。在导入数据的过程中,一周内的话务信息不能够成功导入,问题是话务信息的主键DATA和TIME,仅由这两个属性不能够唯一确定一次话务信息,所以我们只能删除主键,将话务数据导入。另外的问题是,数据源的属性名称可能与数据库中的属性名称不同,这时导入数据时系统不能够自动映射出他们之间的关系,所以要在导入数据时手动编辑映射。编辑脚本语言时,要注意视图必须在最前面。总之,虽然在实验之前已经较熟悉SQL语言的相应应用,但是在实验的过程中仍然会出现很多问题,这让我们收获了耐心严谨的学习态度。
第二篇:数据库及表的创建与修改
实验一
数据库及表的创建与修改
一、实验目的
1.熟悉掌握利用SSMS中的设计工具来创建表。修改表结构以及查看表属性等操作。
2.熟悉T-SQL的数据定义语言,能够熟练地使用SQL语句创建和更改基本表。
二、实验内容
1.完成实验教材中,实验1.1的全部内容。熟悉SQL SERVER的工作环境。
2、依照实验1.2中的二维表,完成如下内容。
1.利用SSMS中的设计工具为数据库LibraryLib创建表表1-5所示的BookClass(图书类别表)、1-6所示的Publish(出版社信息表)、表1-7所示的Book(图书信息表)。
2.利用T-SQL创建新表1-
8、1-9与1-10。
3.修改表1-10 ExtraDateFee(超期罚款信息表):将FineMoney字段数据类型更改为:numeric(15,2);删除Remarks字段;增加新字段Descript(varchar,70)。
4.利用T-SQL语句:删除BookClass(图书类别表),并重新创建该表。5.在SSMS中查看Book(图书信息表)的属性。
三、实验步骤
1.利用SSMS中的设计工具为数据库LibraryLib创建表。
表创建后的截图如下: 表1-5:
表1-6:
表1-7:
2.T-SQL语句创建表:
创建表1-8: CREATE TABLE [Borrow]([BorrowID] [int] NOT NULL , [UserID] [varchar](20)COLLATE Chinese_PRC_CI_AS NOT NULL , [BookID] [int] NOT NULL , [BorrowBeginDate] [datetime] NOT NULL , [BorrowEndDate] [datetime] NOT NULL , [ManagerID] [varchar](20)COLLATE Chinese_PRC_CI_AS NOT NULL , CONSTRAINT [PK_Borrow] PRIMARY KEY CLUSTERED([BorrowID])ON [PRIMARY])ON [PRIMARY]
创建表1-9:
CREATE TABLE [BorrowHistory]([BorrowID] [int] IDENTITY(1, 1)NOT NULL , [UserID] [varchar](20)COLLATE Chinese_PRC_CI_AS NOT NULL , [BookID] [int] NOT NULL , [BorrowBeginDate] [datetime] NOT NULL , [BorrowEndDate] [datetime] NOT NULL , [BorrowReturnDate] [datetime] NOT NULL , [ManagerID] [varchar](20)COLLATE Chinese_PRC_CI_AS NOT NULL , [ManagerReturnID] [varchar](20)COLLATE Chinese_PRC_CI_AS NOT NULL , CONSTRAINT [PK_BorrowHistory] PRIMARY KEY CLUSTERED([BorrowID])ON [PRIMARY])ON [PRIMARY] 创建表1-10: CREATE TABLE [ExtraDateFee]([BorrowID] [int] NOT NULL , [UserID] [varchar](20)COLLATE Chinese_PRC_CI_AS NOT NULL , [BookID] [int] NOT NULL , [BorrowBeginDate] [datetime] NOT NULL , [BorrowEndDate] [datetime] NULL , [BorrowReturnDate] [datetime] NOT NULL , [ManagerID] [varchar](20)COLLATE Chinese_PRC_CI_AS NOT NULL , [ManagerReturnID] [varchar](20)COLLATE Chinese_PRC_CI_AS NOT NULL , [FineMoney] [money] NOT NULL , [TurnIn] [bit] NOT NULL , [ManagerFineID] [varchar](20)COLLATE Chinese_PRC_CI_AS NOT NULL , [Remarks] [char](10)COLLATE Chinese_PRC_CI_AS NOT NULL , CONSTRAINT [PK_ExtraDateFee] PRIMARY KEY CLUSTERED([BorrowID])ON [PRIMARY])ON [PRIMARY]
3.修改表1-10 ExtraDateFee(超期罚款信息表):将FineMoney字段数据类型更改为:numeric(15,2);删除Remarks字段;增加新字段Descript(varchar,70)。
修改前:
修改后:
4.利用T-SQL语句:删除BookClass(图书类别表),并重新创建该表。删除BookClass: Delete book: DELETE FROM [LibraryLib1].[dbo].[BookClass]
创建BookClass: Create book: CREATE TABLE [BookClass]([BookClassID] [int] IDENTITY(1, 1)NOT NULL , [BookClassName] [varchar](30)COLLATE Chinese_PRC_CI_AS NOT NULL , [BookBorrowDays]
[int]
NOT
NULL
CONSTRAINT [DF_BookClass_BookBorrowDays] DEFAULT(60), [BookFee] [money] NOT NULL , CONSTRAINT [PK_BookClass] PRIMARY KEY CLUSTERED
([BookClassID])ON [PRIMARY])ON [PRIMARY]
5.在SSMS中查看Book(图书信息表)的属性。
四、实验心得
1.刚刚开始使用SQL servers进行数据库的建立及其操作,对这个平台的功能还不大熟悉。在寻找功能键这一步就话了很多的时间。
2.实验室安装的平台是SQL SERVERS 2005,但是实验书上用的平台是SQL SERVERS 2008,两者使用的语句以及两个平台之间的功能都有一下差异,导致理解上有些困难。
3.虽然理论课上已经学了很多SQL的操作语句,像表的建立,表的修改插入删除等,但是由于平时没有及时进行实际的上机操作,感觉对SQL的语句掌握得不太好,以后会多实践改进。
第三篇:VFP讲稿(创建数据库和表)
第二部分
数据库的创建与单命令
创建数据库和表
一、Visual FoxPro 6.0的配置
P28
二、项目及其管理器
P31
1.项目的概念
项目:是文件、数据、文档和Visual FoxPro对象的集合,被保存为扩展名为PJX的文件。
建立项目可以对相关的内容(项目的各组成部分)进行统一组织、统一管理。
项目管理器:是Visual FoxPro中处理数据和对象的主要组织工具,是Visual FoxPro的“控制中心”。
项目管理器为其各个组成部分提供了一个组织良好的分层结构视图。利用项目管理器,用户可以创建、修改、移出或删除文件。只要简单地单击鼠标,就可以跟踪表和查询,组织表单、报表、标签、代码、位图和其它文件。
2.项目的创建
3.一个项目产生两个文件.PJX和.PJT。4.打开/关闭项目 5.选项卡
三、Visual FoxPro 数据库的基本操作
P93 1.建立数据库
(1)在项目管理器中建立 *(2)从“新建”对话框中建立 *(3)用命令建立
P94(4)新建立的数据库有三个文件
三个文件的扩展名分别是:dbc
dct
dcx dbc数据库文件的扩展名 dct数据库备注文件的扩展名 dcx数据库索引文件的扩展名 2.打开和关闭数据库(1)打开数据库 有三种打开方法: 在项目管理器中打开 *从“打开”对话框中打开 *用命令打开
OPEN DATABASE命令
P95(2)关闭数据库 CLOSE DATABASE 3.数据库设计器
有三种打开方法: 在项目管理器中打开 *从“打开”对话框中打开 *用命令打开
MODIFY DATABASE命令
P98 4删除数据库
有两种删除方法: 在项目管理器中删除 *用命令删除
DELETE DATABASE命令
P99
四、数据库表
1.建立数据库表
P99(1)表设计器
(2)字段名:命名规则与内存变量的命名规则相同。可与内存变量同名。(3)字段类型和宽度(4)建立数据库表产生的文件(5)字段有效性组框(6)用命令建立表
使用命令CREATE <表名> 有打开的数据库时,建立的是数据库表,否则建立的是自由表。2.修改表结构
P102(1)插入字段(2)删除字段(3)修改字段
(4)用命令MODIFY STRUCTURE打开表设计器进行修改
五、自由表
如果当前没有打开数据库,创建的表是自由表。1.创建自由表。
2.自由表和数据库表的异同。
自由表和数据库表的设计器不同。*数据库表有很多附加信息。3.将自由表添加到数据库。4.从数据库中移出表。
第四篇:实验2:使用向导创建并管理数据库
序号:31 云南大学软件学院 实验报告
课程:数据库原理与实用技术实验学期: 2015-2016学年第二学期任课教师: 专业:软件工程学号:20141120188姓名:王定欢成绩:
实验2 使用向导创建并管理数据库
做删除或修改操作时,请注意备份数据库
1、使用MSSM创建教科书中的数据库CAP,该数据库的主数据文件的逻辑名称是capbin,操作系统文件是cap.mdf,大小是4MB,最大是30MB,以10%的速度增长;该数据库的日志文件的逻辑名称是caplog,操作系统文件名是cap.ldf,大小是5MB,最大是25MB,以1MB的速度增加。数据库CAP创建成功的截图为:
2.创建表
使用MSSM创建表
步骤:1)展开CAP数据库目录树
2)选择“表”,鼠标右键单击,并选择“新建表” 创建CAP数据库中的四张表,创建成功的截图为:
3、由已经存在的数据库生成创建数据库对象的SQL脚本
步骤:
1)鼠标右键单击已经存在的数据库CAP,选择“任务”; 2)选择“生成脚本”,选择编写脚本的数据库对象为dbo.Customers 3)选择输出类型为“保存到新建查询窗口” 生成脚本截图为:
4.管理表
使用MSSM对数据表列进行添加、修改和删除操作 步骤:
1)选择已经建立好的表Customers 2)右键单击,选择“设计表”,进入与创建表相同的界面 3)增加一列,字段名:age(年龄),字段类型:int,允许为空;添加成功的截图为:
添加后再删除,成功删除的截图为:
向CAP数据库中的表Customers添加数据,添加成功的截图为:
第五篇:重庆邮电大学数据库实验2
二叉树操作 实验日志
指导教师: 黎贵友 实验时间: 2010 年 某 月 某 日 学院 : 计算机科学与技术学院 专业: 计算机科学与技术 班级: 3110903 学号 : 2009214458 姓名: 骆潇龙 实验室: S331-b 实验目的:掌握二叉树的定义、性质及存储方式,各种遍历算法。
实验要求:采用二叉树链表作为存储结构,完成二叉树的建立,先序、中序和后序以及按层次遍历的操作,求所有叶子及结点总数的操作。
实验主要步骤:
1、分析、理解程序 #include“stdio.h” #include“string.h” #include“stdlib.h” #include“ctype.h” #define Max 20
//结点的最大个数 typedef struct node { char data;
struct node *lchild,*rchild;}BinTNode;
//自定义二叉树的结点类型 typedef BinTNode *BinTree;
//定义二叉树的指针
int NodeNum,leaf;
//NodeNum为结点数,leaf为叶子数
//==========基于先序遍历算法创建二叉树============== //=====要求输入先序序列,其中加入虚结点“#”以示空指针的位置===== BinTree CreatBinTree(void){
BinTree T;
char ch;
if((ch=getchar())=='#')return(NULL);
//读入#,返回空指针
else {
T=(BinTNode *)malloc(sizeof(BinTNode));
//生成结点
T->data=ch;
T->lchild=CreatBinTree();
//构造左子树
T->rchild=CreatBinTree();
//构造右子树
{
int hl,hr,max;
if(T){
hl=TreeDepth(T->lchild);
//求左深度
hr=TreeDepth(T->rchild);
//求右深度
max=hl>hr? hl:hr;
//取左右深度的最大值
NodeNum=NodeNum+1;
//求结点数
if(hl==0&&hr==0)
leaf=leaf+1;//若左右深度为0,即为叶子。
return(max+1);
} else return(0);}
//====利用“先进先出”(FIFO)队列,按层次遍历二叉树========== void Levelorder(BinTree T){
int front=0,rear=1;
BinTNode *cq[Max],*p;
//定义结点的指针数组cq
cq[1]=T;
//根入队
while(front!=rear)
{
front=(front+1)%NodeNum;
p=cq[front];
//出队
printf(“%c”,p->data);
//出队,输出结点的值
if(p->lchild!=NULL)
{
rear=(rear+1)%NodeNum;
cq[rear]=p->lchild;
//左子树入队
}
if(p->rchild!=NULL)
{
rear=(rear+1)%NodeNum;
cq[rear]=p->rchild;
//右子树入队
} } }
default: exit(1);
}
printf(“n”);} while(i!=0);}
2、调试程序,设计一棵二叉树,输入完全二叉树的先序序列,用#代表虚结点(空指针),如ABD###CE##F##,建立二叉树,求出先序、中序和后序以及按层次遍历序列,求所有叶子及结点总数.实验结果:
1.当输入测试数据(输入完全二叉树的先序序列,用#代表虚结点,如ABD###CE##F##)时(如图1-1),回车运行时,结果如图1-2所示;
图1-1
图1-2
2.按层次遍历之前,输入数字4(如图2-1,);回车运行时,求出测试数据的深度、结点数及叶子数分别为3,6,3(如图2-2);
图2-1
789-