中南大学数据库实验报告1

合集下载

中南大学数据库实验报告

中南大学数据库实验报告

中南大学数据库实验实验题目班级姓名学号一、实验内容实验一:创建表、更新表和实施数据完整性1.运行给定的SQL Script,建立数据库GlobalToyz。

2.创建所有表的关系图。

3.列出所有表中出现的约束(包括Primary key, Foreign key, check constraint, default, unique)4.对Recipient表和Country表中的cCountryId属性定义一个用户自定义数据类型,并将该属性的类型定义为这个自定义数据类型。

5.把价格在$20以上的所有玩具的材料拷贝到称为PremiumToys 的新表中。

6.对表Toys实施下面数据完整性规则:(1)玩具的现有数量应在0到200之间;(2)玩具适宜的最低年龄缺省为1。

7.不修改已创建的Toys表,利用规则实现以下数据完整性:(1)玩具的价格应大于0;(2)玩具的重量应缺省为1。

8.给id为‘000001’玩具的价格增加$1。

实验二:查询数据库1.显示属于California和Illinoi州的顾客的名、姓和emailID。

2.显示定单号码、商店ID,定单的总价值,并以定单的总价值的升序排列。

3.显示在orderDetail表中vMessage为空值的行。

4.显示玩具名字中有“Racer”字样的所有玩具的材料。

5.根据2000年的玩具销售总数,显示“Pick of the Month”玩具的前五名玩具的ID。

6.根据OrderDetail表,显示玩具总价值大于¥50的定单的号码和玩具总价值。

7.显示一份包含所有装运信息的报表,包括:Order Number,Shipment Date, Actual Delivery Date, Days in Transit. (提示:Days in Transit = Actual Delivery Date –Shipment Date)8.显示所有玩具的名称、商标和种类(Toy Name, Brand, Category)。

数据库实验实验报告

数据库实验实验报告

一、实验目的1. 熟悉数据库的基本概念和结构。

2. 掌握数据库的创建、修改和删除操作。

3. 熟练运用SQL语言进行数据的查询、插入、更新和删除操作。

4. 了解数据库的安全性和备份与恢复。

二、实验环境1. 操作系统:Windows 102. 数据库管理系统:MySQL 5.73. 开发工具:MySQL Workbench三、实验内容1. 创建数据库2. 创建表3. 插入数据4. 查询数据5. 更新数据6. 删除数据7. 修改表结构8. 删除表9. 数据库备份与恢复四、实验步骤1. 创建数据库(1)打开MySQL Workbench,连接到本地MySQL服务器。

(2)在“查询”窗口中输入以下SQL语句创建数据库:```sqlCREATE DATABASE student;```(3)执行SQL语句,创建名为student的数据库。

2. 创建表(1)在“查询”窗口中输入以下SQL语句创建学生表:```sqlCREATE TABLE student (id INT PRIMARY KEY,name VARCHAR(50),age INT,gender VARCHAR(10));```(2)执行SQL语句,创建名为student的表。

3. 插入数据(1)在“查询”窗口中输入以下SQL语句插入数据:```sqlINSERT INTO student (id, name, age, gender) VALUES (1, '张三', 20, '男'); INSERT INTO student (id, name, age, gender) VALUES (2, '李四', 21, '男'); INSERT INTO student (id, name, age, gender) VALUES (3, '王五', 22, '女'); ```(2)执行SQL语句,向student表中插入三条数据。

数据库实训报告实验总结

数据库实训报告实验总结

一、实验背景随着信息化时代的到来,数据库技术已成为当今社会的重要技术之一。

为了提高我国高校学生的实践能力,培养适应社会发展需求的数据库技术人才,我校组织了数据库实训课程。

通过本次实训,使学生们能够掌握数据库的基本原理、设计方法和应用技术,提高解决实际问题的能力。

二、实验目的1. 理解数据库的基本概念和原理;2. 掌握数据库的设计方法和步骤;3. 学会使用数据库管理系统进行数据库的创建、修改和查询;4. 培养学生分析问题、解决问题的能力;5. 提高学生的团队合作意识和沟通能力。

三、实验内容本次数据库实训主要包括以下内容:1. 数据库基本概念:数据库、数据库系统、数据库管理系统等;2. 关系数据库:关系模型、关系代数、关系运算等;3. SQL语言:数据定义语言(DDL)、数据操纵语言(DML)、数据控制语言(DCL)等;4. 数据库设计:需求分析、概念结构设计、逻辑结构设计、物理结构设计等;5. 数据库实现:使用数据库管理系统进行数据库的创建、修改和查询;6. 数据库应用:使用数据库技术解决实际问题。

四、实验过程1. 需求分析:根据实训要求,分析数据库所需解决的问题,确定数据库的功能和性能指标;2. 概念结构设计:根据需求分析,设计数据库的概念结构,包括实体、属性和实体间的关系;3. 逻辑结构设计:将概念结构转换为逻辑结构,包括确定表结构、字段类型、约束条件等;4. 物理结构设计:根据逻辑结构设计,确定数据库的物理存储方式,包括数据文件、索引文件等;5. 数据库创建:使用数据库管理系统创建数据库,包括创建表、索引、视图等;6. 数据操作:使用SQL语言进行数据插入、删除、更新和查询等操作;7. 数据库应用:使用数据库技术解决实际问题,如数据备份、恢复、安全等。

五、实验总结1. 理论与实践相结合:本次实训使我深刻认识到,数据库技术不仅包括理论知识,还需要将理论应用于实践,解决实际问题;2. 数据库设计的重要性:数据库设计是数据库应用的基础,一个良好的数据库设计可以提高数据库的性能和可用性;3. SQL语言的应用:SQL语言是数据库操作的核心,熟练掌握SQL语言可以提高数据库操作效率;4. 团队合作与沟通:在实训过程中,与团队成员密切配合,共同完成任务,提高了我的团队合作意识和沟通能力;5. 实验心得:通过本次实训,我对数据库技术有了更深入的了解,掌握了数据库的基本原理、设计方法和应用技术,为今后的学习和工作打下了坚实的基础。

数据库实验报告(通用3篇)

数据库实验报告(通用3篇)

数据库实验报告(通用3篇)数据库试验报告篇1一、实训时间:20_年5月13日至5月24日二、实训地点:三、实训目的与意义:1,这次实习可以使我们在课本上学到的学问用于实践增加了我对电脑技巧的一些认知。

2,通过这次实习也可以让我体验到上班族的生活为我将来毕业后找工作打下了基础。

3,并且这次实习可以非常好的关心我完成将来的毕业论文。

四、实训感悟:还依旧记得来的第一天对这里很茫然,不知道实习要做些什么。

然后经过老师的急躁讲解,熟悉了自己实习要做些什么,得到了许多心理熟悉,对许多问题都有了一些更深的了解。

同时,我熟识了河北玛世电子商务有限公司,总部位于国家命名的“中国丝网之乡”、“中国丝网产业基地”、中国丝网产销基地“、”中国丝网出口基地“—河北省安平县。

使我们队公司有了更进一步的了解实习,就是在实践中学习。

经过这半个月的实习训练,我了解到自己所学的如何在实践中运用。

当然学的更多的是如何在更新网站内容和添加商品,每天不厌其烦的更新添加,观察自己的胜利更多的是兴奋。

还有发布了一些关于公司产品的博客,比如新浪,网易。

而后又尝试在百度知道上提问与回答,在回答问题的过程中,通过网站搜寻相关内容来回答各种丝网问题,通过百度知道这个平台,我对公司又了更一步的了解。

经过半个月的实训我学到了许多之前没有学过没有接触到的东西,熟悉到自己的不足,需要更加努力,才能尽快的学会在社会上生活,敢于面对社会的压力,使自己可以在社会上成长进展。

数据库试验报告篇2由于平常接触的都是一些私人项目,这些项目大都是一些类库,其他人的沟通相对可以忽视不计,因此也就不考虑规范化的文档。

实际上从学习的经受来看,我们接触的学问体系都是属于比较老或比较传统的,与现在进展快速的IT行业相比许多状况已不再适用,尤其是当开源模式渐渐走近开发者后更是如此。

虽然这次是一个数据库课程设计,由于本人在选择项目的时候是本着对自己有实际应用价值的角度考虑的,所以其中也涉及到一些数据库以外的设计。

数据库实验一实验报告总结

数据库实验一实验报告总结

数据库实验一实验报告总结【实验目的】该实验的主要目的是让学生通过实际的操作和实践,了解并掌握数据库的基本操作,熟悉数据库的设计原理和方法,学会使用SQL语言进行数据查询和管理,并能够根据实际需求对数据库进行优化和改进。

本次实验主要分为三个部分:1. 熟悉SQL语言通过实验的学习,大家学习了SQL语言的基础操作,如SELECT、FROM、WHERE、GROUP BY、ORDER BY等关键字,了解了SQL语言的执行顺序和语法结构,掌握了数据的添加、删除、修改和查询操作。

2. 数据库设计与应用在本次实验中,我们使用MySQL数据库,并通过实际操作学习了数据库的设计与应用,掌握了数据库的设计过程,包括数据结构的设计、表的分类和关系的建立等。

通过数据的导入和导出,我们能够实现数据的备份和恢复,确保数据的安全和完整性。

3. 数据库优化与管理在实验的最后一部分,我们学习了数据库的优化与管理,了解了索引的作用和创建方法,以及优化查询语句的技巧,提升了数据库的性能和效率。

1. 掌握了SQL语言的基本语法和常见操作,能够熟练使用SQL语言进行数据查询、添加、修改和删除等操作。

2. 学习了数据库的设计原理和方法,了解了数据结构的设计和表的关系建立,能够根据实际需求设计出适合的数据库。

4. 加深了对数据库的理解,提高了数据管理和处理的能力,为以后的学习和工作打下了坚实的基础。

1. 建议增加实验的复杂度,让学生面对更加综合的应用场景,更好地锻炼他们的独立思考和实际操作能力。

2. 建议增加操作的实践环节,引导学生自己动手操作,更好地理解和掌握知识点。

3. 建议加强实验的理论讲解,让学生更好地理解和掌握理论知识,为以后的工作和研究打下坚实的基础。

【总结】本次实验内容丰富,实践性强,让我深刻地体会到了数据库的重要性和实用性。

通过实际操作,我掌握了SQL语言的基本语法和常用操作,并了解了数据库的设计原理和方法,能够根据实际需求设计和维护数据库。

数据库实验报告(实验一)

数据库实验报告(实验一)

实验一PowerDesigner 的CDM 应用
一、实验内容
学会运行PowerDesigner创建实体联系图,熟悉PowerDesinger的CDM模块的使用,熟悉CDM 的工作区,使用工具选项板进行CDM对象设计。

启动PowerDesigner,并按照试验步骤创建实体,运用toolbox中的相关工具修改实体的属性。

在定义完之后,运用toolbox中的相关工具接下来创建实体间的关系。

例如,此时创建的student与选课之间的联系如下
紧接着,按照相同方式创建course和选课之间的关系,如下。

根据实验任务,建立一个“实验一练习”命名的Conceptual Data Model(CDM)文件,其中应包括的实体、实体的属性及实体之间的联系。

利用之前的练习,类似的创建好该联系,其过程中截图如下:
1.对相关实体属性的修改如下:
2.最后的结果图如下:
二、遇到的问题及解决
在做实验任务时,由于对PowerDesigner软件运用的不熟悉,在过程中遗忘了一些步骤。

例如,在设置属性时,忘了设置主属性;在创建实体间联系时,对其中关系不是很清楚的找出它们的关系。

在发现这些问题后,都及时的解决,才未对后面的实验造成影响。

三、心得体会
我对于PowerDesigner还不熟悉,要多找几道练习题实际操作一下,多熟悉软件才可以运
行的很好。

在这之前我应该多注意书本上的知识,也要多熟悉,然后才能在实验课中运用。

中南大学数据结构实验报告1(线性表)

中南大学数据结构实验报告1(线性表)

实验一线性表的操作算法一、实验目的:1了解线性表的逻辑结构和存储结构,以及定义在逻辑结构上的各种基本运算2分别以数组和链表为存储结构,实现线性表的插入,删除,查找,排序,合并等操作二、实验内容:用C/C++语言编写程序,分别以数组和链表为存储结构,完成以下功能:1输入数据,创建一个线性表2可在线性表的任意位置插入新结点3可删除线性表的任意一个结点4可在线性表中查找结点5将线性表从小至大排序6将两个线性表合并三、详细设计:顺序表#include<iostream>using namespace std;#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define OVERFLOW -2typedef int Status;typedef int ElemType;#define LIST_INIT_SIZE 100#define LISTINCREMENT 10typedef struct { //结构体ElemType *elem;int length;int listsize;}SqList;SqList Lx;Status InitList_Sq(SqList &L) //分配空间{ L.elem=new ElemType[LIST_INIT_SIZE];if(!L.elem)exit(OVERFLOW);L.length =0;L.listsize=LIST_INIT_SIZE;return OK;}Status ListInsert(SqList &L,int i,ElemType e) //插入新元素{ int *q,*p;ElemType *newbase;if(i<1 || i>L.length+1) return ERROR;if(L.length>=L.listsize){ newbase=new ElemType[L.listsize+LISTINCREMENT];if(!newbase) exit(OVERFLOW);L.elem=newbase;L.listsize+=LISTINCREMENT;}q=&(L.elem[i-1]);for (p=&(L.elem[L.length-1]);p>=q;--p)*(p+1)=*p;*q=e;++L.length;return OK;}Status Listlength(SqList L) //长度{ int *p=L.elem; //判断线形表是否存在while(p){ return (L.length); }}Status GetElem(SqList L, int i,ElemType &e) //取元素{ if(i<1 || i>L.length)return ERROR;else{ e=L.elem[i-1];return e;}}void MergeList(SqList La,SqList Lb,SqList &Lc) //合并{ ElemType ai,bj;InitList_Sq(Lc);int i=1,j=1,k=0;int La_len,Lb_len;La_len=Listlength(La);Lb_len=Listlength(Lb);while((i<=La_len)&&(j<=Lb_len)){ GetElem(La,i,ai);GetElem(Lb,j,bj);if(ai<=bj){ ListInsert(Lc,++k,ai);++i; }else{ ListInsert(Lc,++k,bj);++j; }}while(i<=La_len){ GetElem(La,i++,ai);ListInsert(Lc,++k,ai);}while(j<=Lb_len){ GetElem(Lb,j++,bj);ListInsert(Lc,++k,bj);}}void show(SqList L,int i) //显示{ int j;ElemType k;cout<<"顺序表显示如下:"<<endl;for(j=0;j<i-1;j++){ k=L.elem[j];cout<<k<<"->"; }if(j==i-1 && i>0){ k=L.elem[j]; cout<<k; }cout<<endl;}void create(SqList &L,int n) //输入元素{ int e;for(int i=0;i<n;i++){ cin>>e;L.elem[i]=e;L.length=i+1; }}Status ListDelete_Sq(SqList &L,int i,ElemType &e) //删除{ ElemType *p, *q;if(i<1 || i>L.length) return ERROR;p=&(L.elem[i-1]);e=*p;q=L.elem+L.length-1;for(++p;p<=q;++p) *(p-1)=*p;--L.length;return OK;}Status Listxiugei(SqList &L,int i,ElemType &e) //修改{ if(i<1 || i>L.length)return ERROR;else{ L.elem[i-1]=e;return OK; }}void shuru(SqList &L1) //顺序表的创建{ int a;InitList_Sq(L1);cout<<"请输入顺序表的长度:";cin>>a;cout<<"请输入顺序表的元素(共"<<a<<"个)"<<endl;create(L1,a);show(L1,a);}void shanchu(SqList &L1) //删除顺序表里的元素{ int a;int j; ElemType e1;a=L1.length;cout<<"请选择所要删除元素的位置:";cin>>j;while(j<0||j>Listlength(L1)){ cout<<"输入有误,请重新输入"<<endl;cout<<"请选择所要删除元素的位置:";cin>>j; }ListDelete_Sq(L1,j,e1);cout<<"修改后的顺序表数据:"<<endl;show(L1,a-1);}void charu(SqList &L1) //插入元素到顺序表里{ int a; int j; ElemType e1;a=L1.length;cout<<"请选择所要插入元素的位置:";cin>>j;while(j<0||j>Listlength(L1)){ cout<<"输入有误,请重新输入"<<endl;cout<<"请选择所要插入元素的位置:";cin>>j; }cout<<"要插入的元素:";cin>>e1;ListInsert(L1,j,e1);cout<<"修改后的顺序表数据:"<<endl;show(L1,a+1);}void hebing(SqList &L3) //合并两个顺序表{ SqList L1,L2;int a,b;InitList_Sq(L1); InitList_Sq(L2);cout<<"请输入第一个有序表的长度:"; cin>>a;cout<<"请输入第一个有序表的元素(共"<<a<<"个)"<<endl;create(L1,a);show(L1,a);cout<<"请输入第二个有序表的长度:"; cin>>b;cout<<"请输入第二个有序表的元素(共"<<b<<"个)"<<endl;create(L2,b);show(L2,b);MergeList(L1,L2,L3);cout<<"合并后的有序表如下:"; show(L3,a+b);}void main() //主菜单{ int choice;for(;;){ cout<<"顺序表的基本操作"<<endl;cout<<"1.顺序表的创建"<<endl;cout<<"2.顺序表的显示"<<endl;cout<<"3.顺序表的长度"<<endl;cout<<"4.插入元素到顺序表里"<<endl;cout<<"5.删除顺序表里的元素"<<endl;cout<<"6.合并两个顺序表"<<endl;cout<<"7.退出系统"<<endl;cout<<"请选择:";cin>>choice;switch(choice){ case 1: shuru(Lx);break;case 2: show(Lx,Lx.length);break;case 3: cout<<"顺序表的长度:"<<Listlength(Lx)<<endl;break;case 4: charu(Lx);break;case 5: shanchu(Lx);break;case 6: hebing(Lx);break;case 7: cout<<"退出系统!"<<endl;exit(0);break;default : cout<<"输入有误,请重新选择"<<endl;break; }}}链表#include<iostream>using namespace std;#define true 1#define false 0#define ok 1#define error 0#define overflow -2typedef int Status;typedef int ElemType;typedef struct LNode //存储结构{ ElemType data;struct LNode *next;}LNode,*LinkList;void CreateList(LinkList &L,int n) //尾插法创建单链表{ LinkList p;L=new LNode;L->next=NULL; //建立一个带头结点的单链表LinkList q=L; //使q指向表尾for(int i=1;i<=n;i++){ p=new LNode;cin>>p->data;p->next=NULL;q->next=p;q=p; }}Status GetElem(LinkList L,int i,ElemType &e)//取第i个元素{ LinkList p=L->next;int j=1;while(p&&j<i){ p=p->next;++j; }if(!p||j>i) return error; //第i个元素不存在e=p->data;return ok;}Status LinkInsert(LinkList &L,int i,ElemType e) //插入{ LinkList p=L;int j=0;while(p&&j<i-1){ p=p->next;++j; } //寻找第i-1个结点 if(!p||j>i-1)return error; //i小于1或者大于表长加1 LinkList s=new LNode; //生成新结点s->data=e;s->next=p->next; //插入L中p->next=s;return ok;}Status ListDelete(LinkList &L,int i,ElemType &e) // 删除{ LinkList p=L;LinkList q;int j=0;while(p->next&&j<i-1){ //寻找第i个结点,并令p指向其前驱 p=p->next;++j; }if(!(p->next)||j>i-1) return error; //删除位置不合理q=p->next;p->next=q->next; //删除并释放结点e=q->data;delete(q);return ok;}void MergeList(LinkList &La,LinkList &Lb,LinkList &Lc) { //合并两个顺序链表LinkList pa,pc,pb;pa=La->next;pb=Lb->next;Lc=pc=La;while(pa&&pb){ if(pa->data<=pb->data){ pc->next=pa;pc=pa;pa=pa->next; }else{ pc->next=pb;pc=pb;pb=pb->next; }}pc->next=pa?pa:pb;delete(Lb);}void show(LinkList L) //显示{ LinkList p;p=L->next;while(p){ cout<<p->data<<"-->";p=p->next; }cout<<endl;}int Length(LinkList L,int i) //表长{ i=0;LinkList p=L->next;while(p){ ++i;p=p->next; }return i;}void xiugai(LinkList L) //修改{ int i,j=1;ElemType k;ElemType e,m;LinkList p=L->next;cout<<"请输入要修改的元素位置(0<i<length):";cin>>i;GetElem(L,i,e);cout<<"该位置的元素:"<<e<<endl;cout<<"修改后的元素值:";cin>>k;while(p&&j<i){ p=p->next;++j; }m=p->data;p->data=k;cout<<"修改后的单链表显示如下:"<<endl;show(L);}void hebing() //合并两个单链表{ int a,b;LinkList La,Lb,Lc;cout<<"请输入第一个有序链表的长度:"<<endl;cin>>a;cout<<"请输入第一个有序链表的元素共("<<a<<"个):"<<endl;CreateList(La,a);show(La);cout<<"请输入第二个有序链表的长度:"<<endl;cin>>b;cout<<"请输入第二个有序链表的元素共("<<b<<"个):"<<endl;CreateList(Lb,b);show (Lb);MergeList(La,Lb,Lc);cout<<"合并后的有序链表如下:"<<endl;show(Lc);}void main() //主函数{ int select;int x;ElemType y;LinkList list;for(;;){ cout<<"单链表的基本操作"<<endl;cout<<"1.单链表的创建"<<endl;cout<<"2.单链表的显示"<<endl;cout<<"3.单链表的长度"<<endl;cout<<"4.插入元素到单链表里"<<endl;cout<<"5.删除单链表里的元素"<<endl;cout<<"6.合并两个单链表"<<endl;cout<<"7.退出系统"<<endl;cout<<"请选择:";cin>>select;switch(select){ case 1:cout<<"请输入单链表的长度:"<<endl;cin>>x;cout<<"请输入"<<x<<"个元素"<<endl;CreateList(list,x);break;case 2: cout<<"单链表显示如下:"<<endl;show(list);break;case 3: int s;cout<<"单链表的长度为:"<<Length(list,s)<<endl;break;case 4: cout<<"请选择要插入的位置:"; cin>>x;while(x<0||x>Length(list,s)){ cout<<"输入有误,请重新输入"<<endl;cout<<"请选择所要插入元素的位置:";cin>>x; }cout<<"要插入的元素值:";cin>>y;LinkInsert( list,x,y);cout<<"插入后单链表显示如下:"<<endl;show(list);break;case 5: cout<<"请选择要删除的位置:"; cin>>x;while(x<0||x>Length(list,s)){ cout<<"输入有误,请重新输入"<<endl;cout<<"请选择所要删除元素的位置:";cin>>x; }ListDelete(list,x,y);cout<<"要删除的元素值:"<<y<<endl;cout<<"删除后的单链表显示如下:"<<endl;show(list);break;case 6: hebing();break;case 7: exit(0);break;default : cout<<"输入有误,请重新输入"<<endl;break;}}}四、实验结果:顺序表链表。

中南大学数据库实验报告1

中南大学数据库实验报告1

数据库实验报告实验2数据库与表的操作【实验目的与要求】1.熟悉SQLSERVER2005或以上版本的安装,以及基本操作;2.熟练掌握数据库的创建方法,以及相关参数的设置;3.掌握数据表的创建、编辑、删除操作;4.掌握数据表数据的操作;5.数据导入导出。

【实验内容与步骤】在地籍空间数据库中,存在界址点(点号、X、Y)、宗地(宗地号、权属人、地点、面积)、街坊(编号、名称、负责人、联系电话)、宗地图纸(图号、图名、测量员、测量日期)、测量单位(单位编号、单位名称、负责人、联系电话)、测量员(工号、姓名、职称)实体,实体关系如下:一个界址点可以属于多个宗地,一个宗地由多个界址点构成,一个宗地只能属于一个街坊,一个街坊有多个宗地,一个宗地有一张宗地图,一张宗地图由一个测量员测量并制图,一个测量员属于一个测量单位,一个测量单位由多个测量人员组织。

1.给Management Studio创建新连接对象,使用2种以上方法停止、开启MSSQLSERVER服务;2.使用Management Studio界面创建数据库Cadastre;3.使用SQL语句创建数据库Cadastre;CREATE DATABASE[Cadastre]ON PRIMARY(NAME='Cadastre',FILENAME='D:\Cadastre.mdf',SIZE=5MB ,MAXSIZE=50MB, FILEGROWTH= 10% )LOG ON(NAME='Cadastre_log',FILENAME='D:\Cadastre_log.ldf',SIZE=2MB,MAXSIZE= 5MB ,FILEGROWTH=1MB)4.利用ManagementStudio界面创建界址点、宗地两个数据表;找到新建的数据库Cadastre-表-右键-新建表,设置相关信息,最后保存,为表起个名字。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
alter procedure orderSure1 @ccartid char(6), @cshopperid char(6)
as declare @ctoyid char(6) declare @siqty smallint declare @createId char(6) declare @mtoyrate money declare @mtoycost money begin exec prcGenOrder @createId output
中南大学 数据库实验报告
指导老师: 学生姓名:
班级: 学号:
一、实验代码:
实验 2:存储过程与触发器
1. 编写一段程序,将每种玩具的价格提高¥0.5,直到玩具的平均价格接近$24.5 为止。此外,任何玩具的最大价格不应超过$53ter procedure countNum @Num int output as begin select @Num = count(*) from toys return @Num end
3. 名为 prcGenOrder 的存储过程产生存在于数据库中的定单号: CREATE PROCEDURE prcGenOrder @OrderNo char(6) OUTPUT as SELECT @OrderNo=Max(cOrderNo) FROM Orders SELECT @OrderNo= CASE WHEN @OrderNo>=0 and @OrderNo<9 Then ‘00000’+Convert(char,@OrderNo+1) WHEN @OrderNo>=9 and @OrderNo<99 Then ‘0000’+Convert(char,@OrderNo+1) WHEN @OrderNo>=99 and @OrderNo<999 Then ‘000’+Convert(char,@OrderNo+1) WHEN @OrderNo>=999 and @OrderNo<9999 Then ‘00’+Convert(char,@OrderNo+1) WHEN @OrderNo>=9999 and @OrderNo<99999 Then ‘0’+Convert(char,@OrderNo+1) WHEN @OrderNo>=99999 Then Convert(char,@OrderNo+1) END RETURN
begin set @i = @i+1 update toys set mtoyrate = mtoyrate+0.5 where ctoyid = @i and mtoyrate <= 53
end
exec example
select avg(mtoyrate) from toys
select count(*) from toys
当购物者确认定单时,应该出现下面的步骤: (1)用上面的过程产生定单号。
(2)定单号,当前日期,购物车 ID,和购物者 ID 应该加到 Orders 表中。 (3)定单号,玩具 ID,和数量应加到 OrderDetail 表中。 (4)在 OrderDetail 表中更新玩具成本。(提示:Toy cost = Quantity * Toy Rate). 将上述步骤定义为一个事务。编写一个过程以购物车 ID 和购物者 ID 为参数, 实现这个事务。
OPEN curDepartment
FETCH curDepartment into @ctoyid, @siqty
While (@@fetch_status = 0) BEGIN
select @mtoyrate=mtoyrate from toys where ctoyid = @ctoyid
select @mtoycost = @mtoyrate*@siqty
select * from buyerview
2. 基于(1)中定义的视图,查询显示所有 California 州的购买者的姓名和他们 所订购玩具的名称及数量。
use globaltoyz
select "姓名"=vlastname+' '+vfirstname,"玩具名称"=vtoyname,"数量"=siqty from buyerview
select @mRate = mtoyrate from toys where ctoyid = @ctoyid
select @mToyCost=@siQty*@mRate
print @mToyCost
update OrderDetail set mtoycost = @mToyCost where ctoyid = @ctoyid end
exec prcCharge @corderno, @mshippingcharges output, @mgiftwrapcharges output
print 'id号:'+convert(char(10),@corderno) print '装运费:'+convert(char(10),@mshippingcharges) print '包装费:'+ convert(char(10),@mgiftwrapcharges) select @PrchandlingCharge = @mshippingcharges+@mgiftwrapcharges print '经营成本'+convert(char(10),@PrchandlingCharge) end
insert into orders (corderno,dorderdate,ccartid,cshopperid) values (@createId,getdate(),@ccartid,@cshopperid)
DECLARE curDepartment cursor for select ctoyid ,siqty from shoppingcart where ccartid = @ccartid
alter procedure countSum @Sum int output as begin select @Sum = sum(mtoyrate) from toys return @Sum end
alter procedure example as declare @Num int,
@Sum int, @i int set @i=0 exec @Num = countNum 0 exec @Sum = countSum 0 print @Num print @Sum while(@Sum+@i*0.5<24.5*@Num)
select @mshippingcharges = mshippingcharges, @mgiftwrapcharges = mgiftwrapcharges
from orders where corderno =@corderno end
exec prcCharge '000001',0,0
3. 创建一个称为 prcHandlingCharges 的过程,它接收定单号并显示经营费用。 PrchandlingCharges 过程应使用 prcCharges 过程来得到装运费和礼品包装费。 提示:经营费用=装运费+礼品包装费
WHEN @OrderNo>=0 and @OrderNo<9 Then '00000'+Convert(char,@OrderNo+1) WHEN @OrderNo>=9 and @OrderNo<99 Then '0000'+Convert(char,@OrderNo+1) WHEN @OrderNo>=99 and @OrderNo<999 Then '000'+Convert(char,@OrderNo+1) WHEN @OrderNo>=999 and @OrderNo<9999 Then '00'+Convert(char,@OrderNo+1) WHEN @OrderNo>=9999 and @OrderNo<99999 Then '0'+Convert(char,@OrderNo+1) WHEN @OrderNo>=99999 Then Convert(char,@OrderNo+1) END RETURN
alter procedure prcHandlingCharges @corderno char(6) as begin
declare @mshippingcharges money declare @mgiftwrapcharges money declare @PrchandlingCharge money
alter view buyerView("vlastname,vfirstname,cstate,vtoyname,mtoyrate,siqty) as select shopper.vlastname,shopper.vfirstname,
shopper.cstate,toys.vtoyname,toys.mtoyrate,orderdetail.siqty from shopper join orders on orders.cshopperid = shopper.cshopperid join orderdetail on orders.corderno = orderdetail.corderno join toys on orderdetail.ctoyid = toys.ctoyid
相关文档
最新文档