数据库系统实现实验报告1
数据库实验报告1

数据库实验报告1一、实验目的熟悉sql数据定义语言,能够熟练使用sql语句来创建和更改基本表,创建和取消索引。
二、实验内容1、创建数据库表CUSTOMERS(CID,CNAME,CITY,DISCNT)数据库表AGENTS(AID,ANAME,CITY,PERCENT)、数据库表PRODUCTS(PID,PNAME),其中,CID,AID,PID 分别是各表的主键,具有唯一性约束。
createtable CUSTOMERS(CID char(8)notnull primarykey,CNAME char(16),CITY char(16),DISCNT int)createtable AGENTS(AID char(8)notnull primarykey,ANAME char(16),CTIY char(16),PERCENTS float,)createtable PRODUCTS(PID char(8)notnull primarykey,PNAME char(16),)2、创建数据库表ORDERS(ORDNA,MONTH,CID,AID,PID,QTY,DOLLARS)。
其中ORDNA是主键,具有唯一性约束。
CID,AID,PID分别是外键引用自表CUSTOMERS、AGENTS、PRODUCTS。
createtable ORDERS( ORDNA char(8)notnull primarykey,MONTHS int,CID char(8)notnull unique,AID char(8)notnull unique,PID char(8)notnull unique,foreignkey(CID)references CUSTOMERS ondeletecascade,foreignkey(AID)references AGENTS,foreignkey(PID)references PRODUCTS,)3、增加数据库表PRODUCTS三个属性列,CITY,QUANTITY,PRICE。
数据库实验实验报告

一、实验目的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、操作系统:Windows 102、数据库管理系统:MySQL 803、开发工具:Navicat Premium 12三、实验内容及步骤(一)数据库的创建1、打开 Navicat Premium 12 工具,连接到本地 MySQL 服务器。
2、在连接成功后,右键点击“连接”,选择“新建数据库”。
3、在弹出的“新建数据库”对话框中,输入数据库名称(例如:student_management),选择字符集和排序规则,点击“确定”按钮创建数据库。
(二)表的创建1、展开新建的数据库,右键点击“表”,选择“新建表”。
2、在“表设计器”中,依次添加表的字段,包括字段名、数据类型、长度、是否允许为空等属性。
以学生表(students)为例,字段包括:student_id(INT 主键,自增)、student_name(VARCHAR(50))、student_age(INT)、student_gender(VARCHAR(10))。
课程表(courses)字段:course_id(INT 主键,自增)、course_name(VARCHAR(50))、course_credit(INT)。
成绩表(scores)字段:score_id(INT 主键,自增)、student_id (INT 外键,关联 students 表的 student_id)、course_id(INT 外键,关联 courses 表的 course_id)、score(FLOAT)。
3、设置完字段属性后,点击“保存”按钮,输入表名(如 students、courses、scores)创建表。
(三)数据的插入1、打开创建好的表,点击“插入”按钮。
2、在弹出的“插入行”对话框中,按照字段顺序输入相应的数据。
数据库系统原理实验报告

数据库系统原理实验报告一、实验目的1.熟悉数据库系统的基本概念和原理;2.掌握数据库系统的基本操作;3.学会使用数据库系统进行数据管理和查询。
二、实验设备1.计算机;2.数据库管理系统软件。
三、实验过程1.创建数据库通过数据库管理系统软件,我们首先需要创建一个新的数据库。
在数据库管理系统软件的界面上,点击“新建数据库”按钮,输入数据库名称、用户名、密码等信息,并确定创建。
2.设计数据表在创建完数据库后,我们需要设计数据表结构。
点击数据库管理系统软件界面上的“表设计”按钮,弹出数据表设计界面。
根据实验需求,在数据表设计界面上添加字段、设置字段类型、设置主键等,最后确定设计。
3.插入数据数据表设计好后,我们需要将数据插入到数据表中。
通过数据库管理系统软件,点击“插入数据”按钮,弹出插入数据界面。
在插入数据界面上,输入要插入的数据信息,点击确定插入。
4.查询数据将数据插入到数据表中后,我们需要查询特定的数据。
通过数据库管理系统软件,点击“查询数据”按钮,弹出查询数据界面。
在查询数据界面上,输入查询条件,点击确定查询。
系统将会返回符合条件的数据。
五、实验结果通过以上实验步骤,我们成功地创建了一个新的数据库,设计了数据表结构,并将数据插入到数据库中。
同时,我们还可以通过数据库管理系统软件查询数据并获取到结果。
这些实验结果表明我们对数据库系统的基本操作具有熟练掌握的能力。
六、实验总结通过本次实验,我们深入了解了数据库系统的基本概念和原理,掌握了数据库系统的基本操作方法,并成功地应用到实际数据管理和查询中。
通过实验,我们意识到数据库系统在现代信息管理中的重要性,并且清楚地了解到数据库系统的优势和应用场景。
通过进一步的学习和实践,我们相信我们可以更加熟练地应用数据库系统,并将其应用到实际工作中。
数据库系统概论实验报告1

实验一认识DBMS【实验目的】1.通过对某个商用数据管理系统的安装使用,初步了解DBMS的工作环境和系统构架。
2.熟悉对SQL Server的安装。
【实验环境】1.操作系统:Windows XP。
2.数据库管理系统:Microsoft SQL Server 2005。
【实验内容及步骤】1.安装Microsoft SQL Server 2005。
①运行Microsoft SQL Server 2005安装程序,选中“我接受许可条款和协议”,单击“下一步”,点击“安装”。
随后继续单击“下一步”即可。
②待出现“服务账户”窗口时,选择“使用内置系统账户”,单击“下一步”。
③选择“混合模式”,输入密码,单击“下一步”。
④最后单击“安装”,等待完成即可。
2.启动和停止数据库服务。
①启动SQL Server Management Studio后,数据库服务自动启动。
右击对象资源管理器窗口中的数据库引擎,选择“停止”,即可停止数据库服务。
②“Microsoft SQL Server 2005”→“配置工具”→“SQL Server外围应用配置器”,单击“服务和连接的外围应用配置器”,可启动和停止数据库服务。
3.SQL Server的登录。
“开始”→“程序”→“Microsoft SQL Server 2005”→“SQL Server Management Studio”。
①Windows身份验证登录。
②SQL Server身份验证登录。
【出现的问题及解决方案】1.在安装IIS服务时要求选择安装源,否则无法继续安装。
解决方法:单独下载IIS的组件并安装那可。
2.在登录时选择“SQL Server身份验证”,输入密码后无法登录。
解决方法:在“SQL Server Configuration Manager”中,检查SQL Server服务是否正在运行,并确定密码的大小写,重新登录即可。
数据库实验报告(通用3篇)

数据库实验报告(通用3篇)数据库试验报告篇1一、实训时间:20_年5月13日至5月24日二、实训地点:三、实训目的与意义:1,这次实习可以使我们在课本上学到的学问用于实践增加了我对电脑技巧的一些认知。
2,通过这次实习也可以让我体验到上班族的生活为我将来毕业后找工作打下了基础。
3,并且这次实习可以非常好的关心我完成将来的毕业论文。
四、实训感悟:还依旧记得来的第一天对这里很茫然,不知道实习要做些什么。
然后经过老师的急躁讲解,熟悉了自己实习要做些什么,得到了许多心理熟悉,对许多问题都有了一些更深的了解。
同时,我熟识了河北玛世电子商务有限公司,总部位于国家命名的“中国丝网之乡”、“中国丝网产业基地”、中国丝网产销基地“、”中国丝网出口基地“—河北省安平县。
使我们队公司有了更进一步的了解实习,就是在实践中学习。
经过这半个月的实习训练,我了解到自己所学的如何在实践中运用。
当然学的更多的是如何在更新网站内容和添加商品,每天不厌其烦的更新添加,观察自己的胜利更多的是兴奋。
还有发布了一些关于公司产品的博客,比如新浪,网易。
而后又尝试在百度知道上提问与回答,在回答问题的过程中,通过网站搜寻相关内容来回答各种丝网问题,通过百度知道这个平台,我对公司又了更一步的了解。
经过半个月的实训我学到了许多之前没有学过没有接触到的东西,熟悉到自己的不足,需要更加努力,才能尽快的学会在社会上生活,敢于面对社会的压力,使自己可以在社会上成长进展。
数据库试验报告篇2由于平常接触的都是一些私人项目,这些项目大都是一些类库,其他人的沟通相对可以忽视不计,因此也就不考虑规范化的文档。
实际上从学习的经受来看,我们接触的学问体系都是属于比较老或比较传统的,与现在进展快速的IT行业相比许多状况已不再适用,尤其是当开源模式渐渐走近开发者后更是如此。
虽然这次是一个数据库课程设计,由于本人在选择项目的时候是本着对自己有实际应用价值的角度考虑的,所以其中也涉及到一些数据库以外的设计。
数据库实验报告

数据库实验报告一、实验目的本次数据库实验的主要目的是通过实际操作和实践,深入了解数据库的基本概念、原理和技术,掌握数据库的设计、创建、管理和数据操作的方法,提高对数据库系统的应用能力和问题解决能力。
二、实验环境本次实验使用的数据库管理系统是 MySQL,操作系统为 Windows 10。
实验中使用的开发工具包括 MySQL Workbench 和命令行终端。
三、实验内容与步骤(一)数据库设计1、需求分析根据给定的业务场景,确定数据库需要存储的信息和数据之间的关系。
例如,对于一个学生管理系统,需要存储学生的基本信息、课程信息、成绩信息等,并且明确这些信息之间的关联,如学生与课程的选课关系、课程与成绩的对应关系等。
2、概念模型设计使用 ER 图(实体关系图)来描述数据库的概念模型。
确定实体(如学生、课程)、属性(如学生的学号、姓名,课程的课程号、课程名)以及实体之间的关系(如多对多、一对多等)。
3、逻辑模型设计将概念模型转换为关系模型,确定数据表的结构,包括表名、字段名、数据类型、主键、外键等。
例如,学生表(学号、姓名、性别、出生日期),课程表(课程号、课程名、学分),选课表(学号、课程号、成绩)等。
(二)数据库创建1、使用 MySQL Workbench 或命令行创建数据库。
2、创建数据表,按照设计好的逻辑模型定义表结构。
(三)数据插入与操作1、使用 INSERT 语句向数据表中插入数据,以模拟实际的业务数据。
2、进行数据的查询操作,使用 SELECT 语句查询满足特定条件的数据。
3、进行数据的更新和删除操作,使用 UPDATE 和 DELETE 语句修改或删除数据。
(四)数据库索引与优化1、了解索引的概念和作用,为经常用于查询、连接和排序的字段创建索引。
2、分析查询语句的执行计划,通过优化查询语句、调整数据表结构等方式提高数据库的性能。
(五)数据库备份与恢复1、学习数据库备份的方法,使用 mysqldump 工具或 MySQL Workbench 进行数据库的备份。
数据库系统实验课实验报告

数据库系统实验课实验报告一、实验目的数据库系统实验课是一门重要的实践课程,旨在通过实际操作和实验,深入理解数据库系统的原理和应用,提高我们的数据库设计、管理和应用开发能力。
本次实验的具体目的包括:1、熟悉数据库管理系统(DBMS)的操作环境和基本命令。
2、掌握数据库的创建、表的设计、数据的插入、查询、更新和删除等基本操作。
3、学会使用 SQL 语句进行复杂的数据查询和数据处理。
4、理解数据库的完整性约束、索引和存储过程的概念及应用。
5、培养解决实际数据库问题的能力和团队协作精神。
二、实验环境本次实验使用的数据库管理系统是 MySQL 80,实验在 Windows 10 操作系统上进行。
使用的开发工具包括 MySQL Workbench 和命令行终端。
三、实验内容1、数据库的创建使用 CREATE DATABASE 语句创建了一个名为“student_management”的数据库,用于存储学生管理相关的数据。
2、表的设计在“student_management”数据库中,设计了以下几张表:“students”表,包含学生的学号(student_id)、姓名(student_name)、性别(gender)、年龄(age)等字段。
“courses”表,包含课程的课程号(course_id)、课程名称(course_name)、学分(credit)等字段。
“enrolls”表,用于记录学生选课的信息,包含学号(student_id)、课程号(course_id)、成绩(grade)等字段。
在设计表时,为每个字段选择了合适的数据类型,并设置了主键和外键约束,以保证数据的完整性和一致性。
3、数据的插入使用 INSERT INTO 语句向“students”、“courses”和“enrolls”表中插入了一些示例数据,以便进行后续的查询和操作。
4、数据的查询使用简单的 SELECT 语句查询了“students”表中的所有学生信息。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
七、 实验流程图:
Step2:
开始
(nr=read(f0,tr,LS)) >0
N
Y 快速排序 关闭文件 f0
创建新文件 fi
结束
写入新文件拍好的数据
关闭文件
Step3: 开始
i<=20
N
Y 打开 i 文件
打开目标文件
进行基于堆排序的归并算法 读取 BS 个字节 删除 20 个小文 件 进行堆排序上调算法 关闭文件 f1
clock_t a,b,c,d; int step1(const char*, struct btr *);//生成一个 10,000,000 个随机记录的文 件 struct pstr step2(const char*, struct btr *);//将上面的文件分成 20 个小文件 并排序 void step3(struct pstr,struct btr *);//用归并算法将上面的 20 个小文件排好续 重新放入源文件 startT=time(NULL); a=clock(); char * str="f0.txt"; //原始文件的目录 struct btr *tr; tr = (struct btr *)malloc(LS); step1(str,tr); sdT=time(NULL); b=clock(); printf("第一阶段的运行时间为%f\n",difftime( sdT, startT)); printf("%f\n",(double)(b-a)/1000); struct pstr ps= step2(str,tr); sfT=time(NULL); c=clock(); printf("第二阶段的运行时间为%f\n",difftime( sfT, sdT)); printf("%f\n",(double)(c-b)/1000); step3(ps,tr); endT=time(NULL); d=clock(); printf("%f\n",(double)(d-c)/1000); printf("第三阶段的运行时间为%f\n",difftime( endT, sfT)); printf("总运行时间为%f\n",difftime( endT, startT)); free(tr); return 0; } int step1(const char*str,struct btr *tr) { int f0; srand((unsigned)time(NULL)); f0 = open(str,O_WRONLY|O_CREAT|O_TRUNC,S_IRUSR|S_IWUSR); int i=0,j=0,m=L; while(j<D) { i=0; while(i<m) { (tr+i)->record[A]=rand();
20 的,平均次数为1 2 × ������������������2 × n ≈ 3 × n(n=1000000000)但是它的 io 次数太多
������ 20
为 250020 次,即增加了程序中断开销,又增加了磁盘读取和写入的开销。 第二阶段的解决办法,减少递归的次数在数据量小于 16 时用插入排序。 第三阶段用题目要求的 cylinder-based buffers(8255280 bytes)的方法
六、 实验步骤:
1. 生成一个具有 10,000,000 个记录的文本文件 f0.txt,其中每个记录由 100 个字 节组成,其中有一个整数类型属性 A。程序生成一个 int 型随机整数作为每条记 录的属性 A。记录写入 f0.txt 文件中。
2. 根据实验分析,将 f0.txt 文件分为 20 个子文件,并且按照文件中每个记录的 属性对各个子文件进行内部排序(使用快速排序加快时间) ,最终形成 20 个有序 的子文件 3. 对 20 个有序的子文件进行归并排序 (在比较 20 个数大小的时候使用堆排序算 法) ,最终形成一个有序的结果文件 f0.txt,同时删除 20 个中间生成的小文件。
//printf("%d\n",(tr+i)->record[A]); i++; } write(f0,tr,i*sizeof(struct btr)); j++; if((j==(D-1))) m= R-(D-1)*L; } close(f0); return 0; } //将上面的文件分成 20 个小文件并排序 struct pstr step2(const char*str, struct btr *tr) { //快速排序 void kuip(struct btr *,int,int); //int cmp(struct btr* a, struct btr* b) //{ // return (a->record[A]-b->record[A]); //} struct pstr nps; int f0 = open(str,O_RDONLY); int nr,h=0; while((nr=read(f0,tr,LS))>0) { //qsort(tr,L,S,cmp); kuip(tr,0,nr/S-1); sprintf(nps.pt[h],"%s%d","file",h); // printf("%s\n",nps.pt[h]); int fi=open(nps.pt[h],O_WRONLY|O_CREAT|O_TRUNC,S_IRUSR|S_IWUSR); write(fi,tr,nr); close(fi); h++; } close(f0); return nps; } //快速排序 void kuip(struct btr* tr,int low1,int high1) { if(high1-low1>15){ int l1=tr[low1].record[A]-tr[high1].record[A]; int l2=tr[low1].record[A]-tr[(low1+high1)/2].record[A];
十、实验代码
/* ============================================================================ Name : dbt.c Author : sunbo Version : Copyright : Your copyright notice Description : Hello World in C, Ansi-style ============================================================================ */ #include<stdio.h> #include<stdlib.h> #include<time.h> #include<malloc.h> #include<unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #define R 10000000//总记录数 #define L 512000 //内存最大记录数 #define S 100 //单个记录的长度 #define D 20 //R/L+1 #define A 0 //记录中属性 A 的位置 #define B 82252 //一个子文件的内存中的记录数 #define SB 8225200 //S*B #define LS 51200000 //L*S //表示一个记录 struct btr{ int record[25]; }; //表示子文件的路径 struct pstr{ char pt[D][30]; }; int main() { time_t startT,sdT,sfT, endT;
3.改进后的结果(cylinder-based buffers(825280 bytes)的方法)
考虑到一个记录 100 个字节所以去每个子列表的缓冲区为 825200bytes
图6
图7
九、实验总结
改进后的算法明显要好于第一次运行的结果。第三阶段表现最明显, Io 次数减少后时间减少了 60 秒。 如果每个子列表的缓冲区为 cylinder 的整数倍或略小于他的整数倍的话效果 都会非常的好,如果有更大的内存空间它将与第二阶段的时间一样甚至还要少。
五、 实验分析:
一个具有 10,000,000 个记录的文本文件共计 10,000,000*100B=1000MB,而内 存 只 有 50MB , 50MB/4KB=50*1024 KB/4KB=12800 块 , 每 块 可 以 存 放 4*1024B/100B=40 个记录,每块剩余 96KB,内存一共可以存放 12800*40=512000 个记录,一共有 10,000,000 个记录。所以要进行 10,000,000/512000=19.53 次, 即 20 次排序,每次排序的记录数为 10,000,000/20=500,000 个记录。 因此此次实验需要将文本文件分成 20 个子文件。分别对子文件分别进行内 部排序。最后对 20 个排好序的子文件进行归并排序,完成排序。
图4
图5
2.结果分析
从图上可以看出 第一阶段生成一个 10000000 个记录的文件在 13 秒左右, 第 二 阶 段 生 成 20 个 小 文 件 并 排 序 在 37 秒 左 右 , 但 是 其 算 法 复 杂 度 为 o(n × ������������������2 ) ≈ ������(������)(n=512000 比较小所以可以)在考虑到 cup 的运算速度和第一 阶段生成随即数花费 的时间,第二阶段的时间应该和第一阶段的时间差不多。 第三阶段的时间为 80 秒左右,但是其算法复杂度按理来说是是三个阶段中最少