湘潭大学数据库实验1
湘潭大学数据库实验0(sqlplus)
CLEAR BUFFER
CL BUFF 从 SQL 缓冲区中删除所有行
LIST
L
显示 SQL 缓冲区的所有行
LIST n
L
显示 SQL 缓冲区中的一行到 n 行
LIST m n
L
SQL 缓冲区中的从第 m 行显示到第 n 行
RUN
R
显示并运行在缓冲区中的当前 SQL 命令
/
运行在缓冲区中的当前 SQL 命令
示例 A20 99999 09999 $9999 L9999 9999.99 9,999
8) 将显示的内容输出到指定文件 将屏幕上的所有内容都同时输出到该文件中,包括你输入的 sql 语句。 只有关闭 spool 输出,才会在
输出文件中看到输出的内容。 执行以下命令: SQL>spool d:\out.txt --将显示的内容输出到指定文件d:\out.txt SQL>select * from emp; SQL> COL sal FORMAT $999,999 SQL>select * from dept; SQL>spool off
示例:
图 1-3 设置 linesize=100
图 1-4 设置 pagesize=30
6) 查看系统变量值 SQL> show all SQL> show user
--查看所有 68 个系统变量值 --显示当前连接用户
7)格式化列的显示 可以指定字符列显示的宽度,可以指定数值列显示的格式。
元素 描述
SQL> set pagesize 20 --设置每页显示多少行,默认 14。 如果设为 0,则所有的输出内容为一页
并且不显示列标题。
SQL> set autocommit on --设置是否自动提交,默认为 OFF。
数据库实验指导书1
数据库原理及应用实验指导书湖南工程学院计算机科学与通信学院2011年9月实验一一、实验目的:掌握建立一个数据库表结构的方法和步骤,了解数据库表的基本组成。
二、实验内容:基本表的创建和修改。
三、实验要求:(必做)硬件:Intel Pentium 120或以上级别的CPU,大于16MB的内存。
软件:Windows 95/98/2000操作系统,关系数据库管理系统SQL SERVER 2000。
学时:2学时四、实验步骤:1、用create建立教学数据库的五个基本表:(1)学生表(学号,姓名,性别,年龄),student((Sno,sname,ssex,sage) ;(2)课程表(课程号,课程名,学分),Course (Cno, Cname, credit) ;(3)选课表(学号,课程号,成绩),SC (Sno,, Cno, grade ) ;(4) 教师表(教师号,姓名,性别,出生年月,系部,职称,地址),T(Tno,Tname,ssex,birthday,dept,title,address) ;(5) 工资表(教师号,基本工资,职务工资,合计),Salary(Tno,jbgz,zwgz,hj);2、用alter修改基本表(1)在已存在的学生表student中增加一个sdept(系)的新的属性列;(2)将学生表student中sname属性列的数据类型修改为变长字符串varchar(10)。
3、建立一个临时表,然后将其删除数据库原理实验报告实验名称评分实验日期2011 年10 月9 日指导教师姓名朱旭稀专业班级计算机科学与技术0903班学号 2一、实验目的1.掌握建立一个数据库表结构的方法和步骤;2.了解数据库表的基本组成。
二、实验内容与步骤1.建立5个表create table student(Sno int not null primary key,sname varchar(20),ssex varchar(10),sage int)create table Course(Cno int not null primary key,Cname varchar(20),credit varchar(40))create table SC(Sno int not null,Cno int not null,grade float not null,primary key (Sno,Cno),foreign key (Sno) references student(Sno), foreign key (Cno) references Course(Cno),)create table T(Tno int not null primary key,Tname varchar(20),Tsex varchar(10),brithday smalldatetime,dept varchar(20),title varchar(50),adress varchar(100))create table Salay(Tno int not null primary key,jbgz float,zwgz float,hj float,foreign key (Tno) references T(Tno))2.修改基本表alter table student add dept varchar(10)alter table student alter column sname varchar(10)3.建立一个临时表,然后将其删除create table Test(id int not null primary key,name varchar(20))drop table Test三、实验结果四、程序调试及问题分析六、实验收获及体会实验二一、实验目的:了解建立索引的目的,掌握建立索引与删除索引,掌握创建、修改、删除约束。
数据库实验报告
实验(一): 熟练掌握SQL语言实验目的:熟悉上机环境,创建数据库,在数据库上建立关系模式,插入数据,进行相应的查询操作。
实验内容:具体包括如下三部分。
一、熟悉上机环境。
客户/服务器结构,数据库服务器在一台NT服务器上,同学们通过客户机(操作系统为Windows 2000)上安装的SQL Server客户端程序, 使用SQL Server数据库服务器。
具体包括:1.了解SQL Server 环境。
鼠标点击开始,进入“Microsoft SQL Server→企业管理器”,点击SQL Server组下的数据库服务器(服务器名称为NEUC-201S(Windows NT)), 可以看到服务器上的圆形标志变为绿色,说明客户端程序已与服务器连接成功。
点击服务器(NEUC-201S(Windows NT))下的数据库,可以看到服务器上已建立的数据库,你可访问你有权访问的数据库,并进行相应的操作功能。
因为,数据库服务器上建有许多数据库, 每个数据库都有一些合法的用户。
2.鼠标点击开始,进入“Microsoft SQL Server→查询分析器”,输入用户名和口令,进入SQL查询分析器。
如:你登录的客户机为27号,那么请以用户名user27,口令为user27登录,登录后缺省连到数据库user27上,user27/user27是数据库user27的创建者,因此用户user27/ user27具有在数据库user27上创建表等一切权力。
3.在SQL查询分析器环境下,你就可进行SQL命令语句操作了。
二、在数据库useri上创建学生选课有关关系模式,并插入相应的数据,实现有关查询。
1.描述学生、课程情况的E-R图如下,请将其转化为用关系数据模型描述的关系模式CREA TE TABLE Student(Sno CHAR(9) PRIMARY KEY,Sname CHAR(20) UNIQUE,Ssex CHAR(2),Sage SMALLINT,Sdept CHAR(20));CREA TE TABLE Course(Cno CHAR(4) PRIMARY KEY,Cname CHAR(40),Cpno CHAR(4),Ccredit SMALLINT,FOREIGN KEY (Cpno) REFERENCES Course(Cno) );CREA TE TABLE SC(Sno CHAR(9),Cno CHAR(4),Grade SMALLINT,PRIMARY KEY(Sno,Cno),FOREIGN KEY(Sno) REFERENCES Student(Sno), FOREIGN KEY(Cno) REFERENCES Course(Cno) );4在已建立的关系模式之上(已插入一些数据)建立主键约束,参照约束和用户定义的约束(要求学生年龄不小于14岁,不大于35岁),如果约束不能建立,请分析原因,修改后建立上述约束。
(完整版)数据库实验报告
数据库实验报告姓名学号目录一.实验标题:2二.实验目的:2三.实验内容:2四.上机软件:3五.实验步骤:3(一)SQL Server 2016简介3(二)创建数据库 4(三)创建数据库表 7(四)添加数据17六.分析与讨论: 19一.实验标题:创建数据库和数据表二.实验目的:1.理解数据库、数据表、约束等相关概念;2.掌握创建数据库的T-SQL命令;3.掌握创建和修改数据表的T-SQL命令;4.掌握创建数据表中约束的T-SQL命令和方法;5.掌握向数据表中添加数据的T-SQL命令和方法三.实验内容:1.打开“我的电脑”或“资源管理器”,在磁盘空间以自己的姓名或学号建立文件夹;2.在SQL Server Management Studio中,使用create database命令建立“学生-选课”数据库,数据库文件存储在步骤1建立的文件夹下,数据库文件名称自由定义;3.在建立的“学生-选课”数据库中建立学生、课程和选课三张表,其结构及约束条件如表所示,要求为属性选择合适的数据长度;4.添加具体数据;四.上机软件:SQL Server 2016五.实验步骤:(一)SQL Server 2016简介1.SQL Server 2016的界面2.启动和退出SQL Server 20161)双击图标,即出现SQL Server2016的初始界2)选择“文件”菜单中的“退出”命令,或单击控制按钮中的“×”即可注意事项:1.在退出SQL Server 2016之前,应先将已经打开的数据库进行保存,2.如果没有执行保存命令,系统会自动出现保存提示框,根据需要选择相应的操作(二)创建数据库方法一:1.点击“新建查询”,出现如下对话框2.在空白区域输入创建数据库“学生选课”的代码命令,点击“执行”3.消息框中出现“命令已成功完成”即表示数据库创建成功,在“对象资源管理器”中,右击“数据库”,打开快捷菜单,选择“刷新”命令,在“数据库”向下会出现新创建的数据库“学生选课”方法二:1.右击数据库,在弹出的快捷菜单中选择“新建”2.在弹出的对话框中输入“学生选课”3. 在“对象资源管理器”中,右击“数据库”,打开快捷菜单,选择“刷新”命令,在“数据库”向下会出现新创建的数据库“学生选课”注意事项:数据库名称在服务器中必须唯一,并且符合标识符的规则(三)创建数据库表1.左键点击“学生选课”数据库,再点击“新建查询”,在出现的空白对话框中输入如图代码后点击“执行”,消息框中出现“命令已成功执行”即成功建立好学生、课程、选课三张表2.建立成功后的表格如图所示注意事项:1.T-SQL中创建数据库表的指令格式为:Create table 表名(字段名1 数据类型{identify | not null | null},字段名2 数据类型{identify | not null | null},……)null表示该字段的值可以为控制,空值意味着没有任何存储数据,这是默认参数,当所定义的字段允许空值时,参数null可以忽略not null表示该字段的值不能为空值identify称为计数器,表示该字段的值是一组递增的证书数据。
湘潭大学 数据结构实验1 实验报告 源代码 线性表基本操作
“数据结构和算法II”课程实验报告实验名称:线性表的存储结构定义及基本操作班级姓名学号实验日期:实验机时:2 学时实验成绩:-------------------------------------------------------------------------------一.实验目的:1.掌握线性表的逻辑特征2.掌握线性表顺序存储结构的特点,熟练掌握顺序表的基本运算3.熟练掌握线性表的链式存储结构定义及基本操作4.理解循环链表和双链表的特点和基本运算5.加深对栈结构的理解,培养解决实际问题的编程能力。
6.加深对顺序存储数据结构的理解和链式存储数据结构的理解,逐步培养解决实际问题的编程能力二.实验内容:(1)基本实验内容:建立顺序表,完成顺序表的基本操作:初始化、插入、删除、逆转、输出、销毁, 置空表、求表长、查找元素、判线性表是否为空;建立单链表,完成链表(带表头结点)的基本操作:建立链表、插入、删除、查找、输出;其它基本操作还有销毁链表、将链表置为空表、求链表的长度、获取某位置结点的内容、搜索结点。
(2)扩展实验内容:查前驱元素、查后继元素、顺序表合并,两个有序单链表的合并操作等。
三.程序及注释:1.顺序表:#include<stdio.h>#include<stdlib.h>#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define OVERFLOW -2#define LIST_INIT_SIZE 100#define LISTINCREMENT 10typedef int status ;typedef int ElemType ;typedef struct{ElemType *elem;int length,listsize;}SqList;status InitList(SqList &L)//初始化{L.elem=(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));if(!L.elem) exit(OVERFLOW);L.listsize=LIST_INIT_SIZE;L.length=0;return OK;}status Build(SqList &L)//建立表{int i,n;printf("请输入元素个数n和n个元素\n");scanf("%d",&n);if(n>LIST_INIT_SIZE)//如果n大于当前空间{L.elem=(ElemType *)realloc(L.elem,(n+LISTINCREMENT)*sizeof(ElemType));if(!L.elem) exit(OVERFLOW);L.listsize=n+LISTINCREMENT;}for(i=0;i<n;i++)scanf("%d",L.elem+i);L.length=n;return OK;}void Print(SqList &L)//输出表中元素和长度{int i;for(i=0;i<L.length;i++)printf("%d ",*(L.elem+i));printf("\n长度为:%d\n\n",L.length);}void Tips()//提示函数{printf("请选择你的想要的操作:\n");printf("<1> 输出顺序表及顺序表的长度\n");printf("<2> 删除值为x的结点\n");printf("<3> 删除给定位置i的结点\n");printf("<4> 将顺序表逆置\n");printf("<5> 将顺序表按升序排序\n");printf("<6> 将x插入到顺序表的适当位置上\n");printf("<7> 将两个有序表合并\n");printf("<0> 退出\n\n");}status ListDelete1(SqList &L,int x)//删除值为X的元素{int i;for(i=0;i<L.length;i++)if(*(L.elem+i)==x)break;if(i==L.length)return ERROR;for(i++;i<L.length;i++)*(L.elem+i-1)=*(L.elem+i);L.length--;return OK;}status ListDelete2(SqList &L,int x)//删除第X个元素{int i;if(x<0||x>=L.length)return ERROR;for(i=x+1;i<L.length;i++)*(L.elem+i-1)=*(L.elem+i);L.length--;return OK;}void Inverse(SqList &L)//逆置函数{int i,t;for(i=0;i<L.length/2;i++){t=*(L.elem+i);*(L.elem+i)=*(L.elem+L.length-i-1);*(L.elem+L.length-i-1)=t;}}void Sort(SqList &L)//冒泡排序(升序){int i,j,t;for(i=1;i<L.length;i++)for(j=0;j<L.length-i;j++){if(*(L.elem+j)>*(L.elem+j+1)){t=*(L.elem+j);*(L.elem+j)=*(L.elem+j+1);*(L.elem+j+1)=t;}}printf("已按升序排列\n\n");}status ListInsert(SqList &L,int x)//将X插入,使仍然有序{int i,k;if(L.length>=L.listsize){L.elem=(ElemType *)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType)); if(!L.elem) exit(OVERFLOW);L.listsize+=LISTINCREMENT;}for(i=0;i<L.length;i++)if(x<*(L.elem+i))break;k=i;for(i=L.length;i>k;i--)*(L.elem+i)=*(L.elem+i-1);*(L.elem+k)=x;L.length++;return OK;}status Merger(SqList &L,SqList &Lb)//合并两个线性表{int i,j,k;SqList Lc;InitList(Lc);if(Lc.listsize<L.length+Lb.length){Lc.elem=(ElemType *)realloc(Lc.elem,(L.length+Lb.length+LISTINCREMENT)*sizeof(ElemType)); if(!L.elem) exit(OVERFLOW);Lc.listsize=L.length+Lb.length+LISTINCREMENT;}i=j=k=0;while(i<L.length && j<Lb.length){if(*(L.elem+i) < *(Lb.elem+j)){*(Lc.elem+k)=*(L.elem+i);k++;i++;}else{*(Lc.elem+k)=*(Lb.elem+j);k++;j++;}}while(i<L.length){*(Lc.elem+k)=*(L.elem+i);k++;i++;}while(j<Lb.length){*(Lc.elem+k)=*(Lb.elem+j);k++;j++;}Lc.length=L.length+Lb.length;L=Lc;return OK;}int main(){int op,x,flag;SqList L,Lb;InitList(L);Build(L);Tips();scanf("%d",&op);while(op){switch(op){case 1:Print(L);case 2:printf("请输入要删除的数据X:\n");scanf("%d",&x);flag=ListDelete1(L,x);if(flag)printf("删除成功!!\n\n");elseprintf("元素不存在,删除失败!!\n\n");break;case 3:printf("请输入要删除的位置i:\n");scanf("%d",&x);flag=ListDelete2(L,x-1);//第i个元素对应的下标为i-1 if(flag)printf("删除成功!!\n\n");elseprintf("元素不存在,删除失败!!\n\n");break;case 4:Inverse(L);break;case 5:Sort(L);break;case 6:printf("请输入要插入的数据X:\n");scanf("%d",&x);flag=ListInsert(L,x);if(flag)printf("插入成功!!\n\n");elseprintf("插入失败!!\n\n");break;case 7:printf("请输入Lb的内容:\n");InitList(Lb);Build(Lb);flag=Merger(L,Lb);if(flag)printf("合并成功!!\n\n");break;}Tips();scanf("%d",&op);}2.单链表typedef int ElementType;#ifndef _List_H#define _List_Hstruct Node;typedef struct Node *PtrToNode;typedef PtrToNode List;typedef PtrToNode Position;List MakeEmpty( List L );int IsEmpty( List L );int IsLast( Position P, List L );Position Find( ElementType X, List L );void Delete( ElementType X, List L );Position FindPrevious( ElementType X, List L );void Insert( ElementType X, List L, Position P );void DeleteList( List L );Position Header( List L );Position First( List L );Position Advance( Position P );ElementType Retrieve( Position P );#endif#include <stdio.h>#include <stdlib.h>#define Error( Str ) FatalError( Str )#define FatalError( Str ) fprintf( stderr, "%s\n", Str ), exit( 1 ) struct Node{ElementType Element;Position Next;};List MakeEmpty( List L ) //创建空链表{if( L != NULL )DeleteList( L );L = malloc( sizeof( struct Node ) );if( L == NULL )FatalError( "Out of memory!" );L->Next = NULL;return L;}int IsEmpty( List L )//判断链表是否为空{return L->Next == NULL;}int IsLast( Position P, List L ){return P->Next == NULL;}Position Find( ElementType X, List L )//精确查找函数{Position P;P = L->Next;while( P != NULL && P->Element != X ){P = P->Next;n++;}if(P==NULL)printf("查找的成员不存在!!\n\n");elseprintf("查找的成员位于链表第%d位\n\n",n); }void Delete( ElementType X, List L )//精确删除函数{Position P, TmpCell;P = FindPrevious( X, L );if( !IsLast( P, L ) ){TmpCell=P->Next;P->Next=TmpCell->Next;free( TmpCell );}}Position FindPrevious( ElementType X, List L )//前驱查找函数{Position P;P = L;while( P->Next != NULL && P->Next->Element != X )P = P->Next;return P;}void Insert( ElementType X, List L, Position P )//元素插入函数{Position TmpCell;TmpCell = malloc( sizeof( struct Node ) );if( TmpCell == NULL )FatalError( "Out of space" );TmpCell->Element = X;TmpCell->Next = P->Next;P->Next = TmpCell;}void DeleteList( List L )//清空链表函数{Position P, Tmp;P = L->Next;L->Next = NULL;while( P != NULL ){Tmp = P->Next;free( P );P = Tmp;}if(IsEmpty(L))printf("链表清空成功!\n\n");}Position Header( List L )//表头调用函数{return L;}Position First( List L )//首元素调用函数{return L->Next;}Position Advance( Position P )//元素递进函数{return P->Next;}void show(List L)//显示链表函数{if(!IsEmpty(L)){Position p;p=First(L);printf("当前链表成员如下:\n");while(p!=NULL){printf("%d ",p->Element);if(Advance(p))p=Advance(p);else{printf("\n\n");break;}}}elseprintf("当前链表为空!!\n\n"); }void join(List L) //插入函数调用函数{int x,n,i;Position p=Header(L);printf("请输入需要插入的成员:\n");scanf("%d",&x);printf("需要将成员插入到第几位呢?\n");scanf("%d",&n);for(i=1;i<n;i++){p=p->Next;}Insert(x,L,p);show(L);}void find(List L)//查找函数调用函数{printf("请输入需要查找的成员:\n");int x;scanf("%d",&x);Find(x,L);}void count(List L)//链表长度统计函数{Position p;p=First(L);int n=0;while(p!=NULL){n++;if(Advance(p))p=Advance(p);elsebreak;}printf("当前链表长度为:%d\n\n",n);}void direction(List L)//位置访问函数{int n,i;Position p=Header(L);printf("请输入n的值:\n");scanf("%d",&n);for(i=0;i<n;i++){p=p->Next;}printf("第%d位成员为:%d\n\n",n,p->Element);}void change(List L)//修改元素函数{printf("请输入n的值:\n");int x,n,i;scanf("%d",&n);printf("请输入修改后的值:\n");scanf("%d",&x);Position p=Header(L);for(i=0;i<n;i++){p=p->Next;}p->Element=x;show(L);}void deletion(List L)//删除函数调用函数{printf("你要删除的成员是:\n");int x;scanf("%d",&x);Delete(x,L);show(L);}void main(){ List L;L=MakeEmpty(NULL);printf("请输入需要插入的成员个数:\n");int n;scanf("%d",&n);printf("请输入需要插入的成员以空格隔开:\n");int i;Position p;p=Header(L);for(i=0;i<n;i++){int x;scanf("%d",&x);Insert(x,L,p);p=Advance(p);}show(L);printf("请选择需要进行的操作:\n 1.计算链表长度\n 2.取第n个位置成员\n 3.修改第n个位置成员\n 4.在第n位插入新成员\n 5.删除成员\n 6.搜索成员\n 7.销毁链表\n 8.退出\n你输入的选项是:");scanf("%d",&n);while(n!=8){switch(n){case 1:count(L);break;case 2:direction(L);break;case 3:change(L);break;case 4:join(L);break;case 5:deletion(L);break;case 6:find(L);break;case 7:DeleteList(L);break;}printf("请选择需要进行的操作:\n 1.计算链表长度\n 2.取第n个位置成员\n 3.修改第n个位置成员\n 4.在第n位插入新成员\n 5.删除成员\n 6.搜索成员\n 7.销毁链表\n 8.退出\n你输入的选项是:");scanf("%d",&n);}}四.运行结果:1.顺序表:3.单链表:五.实验心得:通过这次写实验报告,我深切的理解了这门课的本质。
《数据库原理及应用》实验报告带答案
实验课程:数据库原理及应用学号:学生姓名:班级:年月日实验1 创建和维护数据库一、实验目的(1)掌握在Windows 平台下安装与配置MySQL 5.5 的方法。
(2)掌握启动服务并登录MySQL 5.5 数据库的方法和步骤。
(3)了解手工配置MySQL 5.5 的方法。
(4)掌握MySQL 数据库的相关概念。
(5)掌握使用Navicat 工具和SQL 语句创建数据库的方法。
(6)掌握使用Navicat 工具和SQL 语句删除数据库的方法。
二、实验要求(1)学生提前准备好实验报告,预习并熟悉实验步骤;(2)遵守实验室纪律,在规定的时间内完成要求的内容;(3)1~2人为1小组,实验过程中独立操作、相互学习。
三、实验内容及步骤(1)在Windows 平台下安装与配置MySQL 5.5.36 版。
(2)在服务对话框中,手动启动或者关闭MySQL 服务。
(3)使用Net 命令启动或关闭MySQL 服务。
开始--运行--cmd--输入“net start mysql”回车,启动成功;输入“net--stop--mysql”回车,停止。
(4)分别用Navicat 工具和命令行方式登录MySQL。
①打开Navicat for MySQL,文件--新建连接--确定。
②开始--运行--cmd,输入mysql -h hostname(如果服务器在本机,可以输入localhost或127.0.0.1)user -p 回车后,系统会提示“Enter password”,输入配置的密码就可以登录上了。
(5)创建数据库。
①使用Navicat 创建学生信息管理数据库gradem。
②使用SQL 语句创建数据库MyDB。
①打开Navicat for MySQL,文件--新建连接--常规(设置连接名MySQL,主机名localhost)。
②使用Windows命令行方式登录MySQL,然后输入CREATE DATABASE mydb;回车,显示Query OK, 1 row affected (0.00 sec)创建成功。
数据库原理与应用(实验一)
《数据库原理与应用》实验报告(一)----认识Oracle及使用SQL*Plus一、实验目的1、认识Oracle数据库管理系统;2、了解并会使用SQL*Plus工具。
二、实验内容1、启动Oracle数据库【开始】->【控制面板】->【管理工具】-【服务】将服务名称以“Oracle”开头的四个服务启动:OracleDBConsoleorcl、OracleOraDb10g_home1iSQL*Plus、OracleServiceORCL、OracleOraDb10g_home1TNSListener。
启动方式:右键鼠标->【启动】。
2、启动SQL*Plus【开始】->【程序】->Oracle目录->【SQL Plus】用户名:system口令:xg1233、设置SQL*Plus环境选项4、CREATE TABLE语句创建表studentCREATE TABLE reader(cardid V ARCHAR2(10) PRIMARY KEY,name V ARCHAR2(8),sex V ARCHAR2(2) CHECK(sex IN(‘男’,’女’)),dept V ARCHAR2(20),class NUMBER(1)) ;5、在SQL*Plus中执行SQL语句(1)向表reader添加数据SQL>INSERT INTO readerV ALUES('S0002','张伟', '男','数学系',1);按照此方法依次添加5条记录。
(2)查询表reader所有记录SQL>SELECT * FROM reader;(3)查询表reader中男性读者的姓名、工作单位、读者类型。
SQL>SELECT name,dept,class FROM reader WHERE sex='男';6、常用SQL*Plus命令(DESC、LIST、RUN、EDIT、SA VE、START、@、SHOW、HELP)(1)DESC、LIST、RUN语句查询(2)SHOW语句查询(3)SHOW EEROR、HELP 、SPOOL语句查询三、三、实验总结刚接触到SQL*Plus时,因为用惯了Windows图形界面,感到很难接受,很麻烦,命令要一条条语句的输入,而且也容易出错,一不小心就会打错字母。
湘潭大学数据库实验1
《数据库原理》实验教学指导书实验一数据模型设计与实现撰写人:郭云飞湘潭大学信息工程学院二○一六年四月实验一数据模型设计与实现一.上机目的1.了解并掌握数据模型的设计。
2.了解并掌握Oracle中的用Create命令定义表的方法,以及表的完整性定义。
3.了解并掌握Oracle中的用Alter命令和Drop命令对表的修改和删除。
二.预备知识1.E-R图图例图例一(教材第5版)矩形,表示实体集菱形,表示联系集线段椭圆,表示属性下划线标识主键属性图例二(教材第6版)矩形,表示实体集菱形,表示联系集线段属性在实体矩形内列出下划线标识主键属性2.Oracle数据类型3.CREATE TABLE命令1)CREATE TABLE table_name( column_name type(size), column_name type(size), …);2)CREATE TABLE table_name [(column_name,…)] AS SELECT statement;新建一张表,用于保存查询结果。
4.完整性约束Oracle允许用户为表和列定义完整性约束来增强一定的规则。
可分为:表约束和属性约束1)NOT NULL约束NOT NULL约束保证属性值不能为NULL。
没有NOT NULL约束的属性,值可以为NULL。
2)UNIQUE约束指定一个属性或者属性的集合为唯一键。
在表中没有两行具有相同的值。
如果唯一键是基于单条记录的,NULL是允许的。
表约束命令格式:,[CONSTRAINT constraint_name] UNIQUE (Column, Column, …)属性约束命令格式:[CONSTRAINT constraint_name] UNIQUE3)主键约束(Primary Key Constraint)主键约束强制属性和属性集合的唯一性,并且用一个唯一索引来管理它。
每个表中只能用一个主键,这样可以通过主键来标识表中的每条记录。
湘潭大学j2ee实验报告(绝对完整)
实验一、应用服务器集成1.整合apache和tomcat 安装apache到c:\j2ee\Apache中解压tomcat到c:\j2ee\Tomcat中输入测试http://localhost/输入测试http://localhost:8080/接着关掉Apache和tomcat然后打开C:\j2ee\Apache\conf\httpd.conf去掉如下图红线框中的#符号在文件最后添加文件名为host,host里面新建一个test.jsp接着,在浏览器中输入http://localhost:8080/host/test.jsp得到如下页面在浏览器中输入http://localhost/host/test.jsp同样得到如下页面到此,Apache和tomecat整合成功!2.Tomcat+ActiveMQ实现消息服务在jsm-test项目中需要在tomcat的lib中导入一共导入6个包:commons-logging-1.1.jaractivemq-core-5.5.0.jaractivemq-web-5.11.1.jargeronimo-j2ee-management_1.1_spec-1.0.jargeronimo-jms_1.1_spec-1.1.1.jargeronimo-jta_1.0.1B_spec-1.0.1.jar修改文件:Tomcat conf下的context.xml<!-- The contents of this file will be loaded for each web application --><Context><!-- Default set of monitored resources --><WatchedResource>WEB-INF/web.xml</WatchedResource><!-- Uncomment this to disable session persistence across Tomcat restarts --> <!--<Manager pathname="" />--><!-- Uncomment this to enable Comet connection tacking (provides events on session expiration as well as webapp lifecycle) --><!--<Valve className="etConnectionManagerValve" />--><Resourcename="jms/FailoverConnectionFactory"auth="Container"type="org.apache.activemq.ActiveMQConnectionFactory"description="JMS Connection Factory"factory="org.apache.activemq.jndi.JNDIReferenceFactory"brokerURL="failover:(tcp://localhost:61616)?initialReconnectDelay=100&maxReconnectAtte mpts=5"brokerName="localhost"useEmbeddedBroker="false"/><Resourcename="jms/NormalConnectionFactory"auth="Container"type="org.apache.activemq.ActiveMQConnectionFactory"description="JMS Connection Factory"factory="org.apache.activemq.jndi.JNDIReferenceFactory"brokerURL="tcp://localhost:61616"brokerName="localhost"useEmbeddedBroker="false"/><Resource name="jms/topic/MyTopic"auth="Container"type="mand.ActiveMQTopic"factory="org.apache.activemq.jndi.JNDIReferenceFactory"physicalName="MY.TEST.FOO"/><Resource name="jms/queue/MyQueue"auth="Container"type="mand.ActiveMQQueue"factory="org.apache.activemq.jndi.JNDIReferenceFactory"physicalName="MY.TEST.FOO.QUEUE"/></Context>Activemq conf下的activemq.xml文件<!--Licensed to the Apache Software Foundation (ASF) under one or morecontributor license agreements. See the NOTICE file distributed withthis work for additional information regarding copyright ownership.The ASF licenses this file to You under the Apache License, Version 2.0(the "License"); you may not use this file except in compliance withthe License. You may obtain a copy of the License at/licenses/LICENSE-2.0Unless required by applicable law or agreed to in writing, softwaredistributed under the License is distributed on an "AS IS" BASIS,WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.See the License for the specific language governing permissions andlimitations under the License.--><!-- START SNIPPET: example --><beansxmlns="/schema/beans"xmlns:amq="/schema/core"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/schema/beans/schema/beans/spring-beans-2.0.xsd/schema/core/schema/core/activemq-core.xsd/camel/schema/spring/camel/schema/spring/camel-spring.xsd"><!-- Allows us to use system properties as variables in this configuration file --><bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"/><broker xmlns="/schema/core" brokerName="localhost" persistent="true" useShutdownHook="false"><!-- Destination specific policies using destination names or wildcards --><destinationPolicy><policyMap><policyEntries><policyEntry queue=">" memoryLimit="5mb"/><policyEntry topic=">" memoryLimit="5mb"><dispatchPolicy><strictOrderDispatchPolicy/></dispatchPolicy><subscriptionRecoveryPolicy><lastImageSubscriptionRecoveryPolicy/></subscriptionRecoveryPolicy></policyEntry></policyEntries></policyMap></destinationPolicy><!-- Use the following to configure how ActiveMQ is exposed in JMX --><managementContext><managementContext createConnector="false"/></managementContext><!-- The store and forward broker networks ActiveMQ will listen to --><networkConnectors><!-- by default just auto discover the other brokers --><networkConnector name="default-nc" uri="multicast://default"/><!-- Example of a static configuration:<networkConnector name="host1 and host2" uri="static://(tcp://host1:61616,tcp://host2:61616)"/>--></networkConnectors><persistenceAdapter><amqPersistenceAdapter directory="activemq-data" maxFileLength="32mb"/></persistenceAdapter><!-- Use the following if you wish to configure the journal with JDBC --><!--<persistenceAdapter><journaledJDBC dataDirectory="${activemq.base}/data" dataSource="#postgres-ds"/></persistenceAdapter>--><!-- Or if you want to use pure JDBC without a journal --><!--<persistenceAdapter><jdbcPersistenceAdapter dataSource="#postgres-ds"/></persistenceAdapter>--><!-- The maximum about of space the broker will use before slowing down producers --><systemUsage><systemUsage><memoryUsage><memoryUsage limit="20 mb"/></memoryUsage><storeUsage><storeUsage limit="1 gb" name="foo"/></storeUsage><tempUsage><tempUsage limit="100 mb"/></tempUsage></systemUsage></systemUsage><!-- The transport connectors ActiveMQ will listen to --><transportConnectors><transportConnector name="openwire" uri="tcp://localhost:61616" discoveryUri="multicast://default"/><transportConnector name="ssl" uri="ssl://localhost:61617"/><transportConnector name="stomp" uri="stomp://localhost:61613"/><transportConnector name="xmpp" uri="xmpp://localhost:61222"/> </transportConnectors></broker><!--** Lets deploy some Enterprise Integration Patterns inside the ActiveMQ Message Broker ** For more details see**** /enterprise-integration-patterns.html--><camelContext id="camel" xmlns="/camel/schema/spring"><!-- You can use a <package> element for each root package to search for Java routes --><package>org.foo.bar</package><!-- You can use Spring XML syntax to define the routes here using the <route> element --><route><from uri="activemq:example.A"/><to uri="activemq:example.B"/></route></camelContext><!-- Uncomment to create a command agent to respond to message based admin commands on the ActiveMQ.Agent topic --><!--<commandAgent xmlns="/schema/core" brokerUrl="vm://localhost"/>--><!-- An embedded servlet engine for serving up the Admin console --><jetty xmlns="/schemas/jetty/1.0"><connectors><nioConnector port="8161"/></connectors><handlers><webAppContext contextPath="/admin" resourceBase="${activemq.base}/webapps/admin" logUrlOnStart="true"/><webAppContext contextPath="/demo" resourceBase="${activemq.base}/webapps/demo" logUrlOnStart="true"/><webAppContext contextPath="/fileserver" resourceBase="${activemq.base}/webapps/fileserver" logUrlOnStart="true"/></handlers></jetty><!-- This xbean configuration file supports all the standard spring xml configuration options --><!-- Postgres DataSource Sample Setup --><!--<bean id="postgres-ds" class="org.postgresql.ds.PGPoolingDataSource"><property name="serverName" value="localhost"/><property name="databaseName" value="activemq"/><property name="portNumber" value="0"/><property name="user" value="activemq"/><property name="password" value="activemq"/><property name="dataSourceName" value="postgres"/><property name="initialConnections" value="1"/><property name="maxConnections" value="10"/></bean>--><!-- MySql DataSource Sample Setup --><!--<bean id="mysql-ds" class="mons.dbcp.BasicDataSource" destroy-method="close"><property name="driverClassName" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost/activemq?relaxAutoCommit=true"/> <property name="username" value="activemq"/><property name="password" value="activemq"/><property name="maxActive" value="200"/><property name="poolPreparedStatements" value="true"/></bean>--><!-- Oracle DataSource Sample Setup --><!--<bean id="oracle-ds" class="mons.dbcp.BasicDataSource" destroy-method="close"><property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/><property name="url" value="jdbc:oracle:thin:@localhost:1521:AMQDB"/><property name="username" value="scott"/><property name="password" value="tiger"/><property name="maxActive" value="200"/><property name="poolPreparedStatements" value="true"/></bean>--><!-- Embedded Derby DataSource Sample Setup --><!--<bean id="derby-ds" class="org.apache.derby.jdbc.EmbeddedDataSource"> <property name="databaseName" value="derbydb"/><property name="createDatabase" value="create"/></bean>--></beans><!-- END SNIPPET: example -->Tomcat下webapps\aa项目的web.xml<?xml version="1.0" encoding="UTF-8"?><web-app version="2.4"xmlns="/xml/ns/j2ee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/j2ee/xml/ns/j2ee/web-app_2_4.xsd"><servlet><servlet-name>jms-listener</servlet-name><servlet-class>com.flvcd.servlet.JMSListener</servlet-class><load-on-startup>1</load-on-startup></servlet><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list></web-app>编译java命令:编译JMSListener.java至classes目录:javac-cp .;C:\j2ee\Tomcat\apache-tomcat-6.0.44\lib\servlet-api.jar;C:\j2ee\Tomcat\apache-t omcat-6.0.44\lib\geronimo-jms_1.1_spec-1.1.1.jar;C:\j2ee\Tomcat\apache-tomcat-6.0. 44\lib\activemq-core-5.5.0.jar -d . JMSListener.java运行Demo:启动ActiveMQ服务器启动Tomcat服务器:JMSListener将自动连接ActiveMQ broker,日志信息: Successfully connected to tcp://localhost:61616注意:JMSListener已经自动连接ActiveMQ broker日志信息:Successfully connected to tcp://localhost:61616访问http://localhost:8080/jms-test/publish.jsp Tomcat服务器日志将提示:接收刷新文章消息,开始刷新文章ID=2046接收刷新论坛帖子消息,开始刷新帖子ID=331访问http://localhost:8161/admin/topics.jsp查看MY.TEST.FOO的消息日志,分别发送和接收2条。
实验1 数据库创建-实验报告
实验一创建数据库和表一、实验目的和要求熟悉上机环境和查询分析器界面;掌握如何启动、停止服务管理器和企业管理器的方法;掌握如何用企业管理器定义数据库、表、约束,如何向表中添加、修改、输出记录,如何查看表的内容等操作;掌握如何在查询分析器中,执行SQL语句、分析语句的执行结果;掌握如何在查询分析器中,用DDL语言定义数据库、表、约束,并用最简单的INSERT语句向表中添加记录。
二、实验内容及指导1.○1启动服务管理器○2使用企业管理器,创建StudentInfo数据库○3在该数据库里定义Students、Courses、Enrollment3个表,问题是开始的时候不清楚如何添加约束,后来知道是在默认值或绑定处添加,也可以右击列名,选择CHECK约束添加○4向3个表中添加若干记录,因为有约束存在,所以如果输入不在约束范围内就会报错。
○5查看已创建的数据库和3个表的内容2.实验2的“提高操作”,具体内容如下:表3- 1图书表结构表3- 2读者表结构表3- 3借阅表结构用SQL语句创建的数据库不知道放在了哪里,创建的3个表也不知道放在了哪里,而且那三个表建完后不在图书馆数据库里面,后来找到了图书馆数据库在安装盘D盘底下的DA TA文件中,3个表在master数据库里,于是又在每个表的前面加了一句话“USE 图书馆 GO”重新保存之后这三个表就在图书馆数据库里面了。
还有一个办法是这样建数据库,如创建一个名为scd3的数据库:create database scd3on primary(name='scd3',filename='g:\scd2\scd3.mdf')log on(name='scd3_log',filename='g:\scd2\scd3_log.ldf')这样所创建的数据库就放在了g盘底下scd2文件夹中。
USE scd3CREATE TABLE用户(ID CHAR(8)PRIMARY KEY,NAME NVARCHAR(20)NOT NULL,PWD NVARCHAR(20)NOT NULL)GO新建的用户表即在scd3数据库中。
湘潭大学 计算机组成与原理 存储器实验(ram)实验报告
clock; data;
input [31:0] input wren;
output [31:0]
q;
`ifndef ALTERA_RESERVED_QIS `endif tri1 clock;
`ifndef ALTERA_RESERVED_QIS `endif
endmodule module ext8to32(a,s); input [7:0] a; output [31:0] s; assign s={4{a}}; endmodule
ቤተ መጻሕፍቲ ባይዱ
altsyncram_component.address_aclr_a = "NONE", altsyncram_component.indata_aclr_a = "NONE", altsyncram_component.init_file = "scdatamem.mif", altsyncram_component.intended_device_family = "Cyclone", altsyncram_component.lpm_hint = "ENABLE_RUNTIME_MOD=YES,INSTANCE_NAME=ram2", altsyncram_component.lpm_type = "altsyncram", altsyncram_component.numwords_a = 32, altsyncram_component.operation_mode = "SINGLE_PORT", altsyncram_component.outdata_aclr_a = "NONE", altsyncram_component.outdata_reg_a = "UNREGISTERED", altsyncram_component.power_up_uninitialized = "FALSE", altsyncram_component.widthad_a = 5, altsyncram_component.width_a = 32, altsyncram_component.width_byteena_a = 1, altsyncram_component.wrcontrol_aclr_a = "NONE"; endmodule module data_mem ( address, clock, data, wren, q); input [4:0] input address;
数据库原理实验报告
计算机与信息学院数据库原理实验报告专业:计算机科学与技术班级:2012级本科班学号:*****姓名:指导教师:2014年06月18 日实验项目列表计算机与信息学院实验报告纸实验一数据库创建与管理一、实验目的与要求1、熟练掌握SSMS中界面方式创建和管理数据库。
2、熟练掌握SSMS查询编辑器T-SQL语句创建和管理数据库。
3、熟练掌握备份和还原数据库。
二、实验内容1、界面方式创建和管理数据库(1)创建数据库(2)修改数据库(3)删除数据库2、利用企业管理器备份和还原数据库(1)备份数据库(2)还原数据库3、T-SQL语句方式创建和管理数据库(1)创建SPJ数据库:在SSMS中“新建查询”,输入以下语句并运行CREATE DATABASE SPJON(NAME=’SPJ_Data’,FELENAME='C:\Program Files\Microsoft SQL Server\MSSQL\data\SPJ_Data.MDF' ,SIZE = 3,MAXSIZE = 10,FILEGROWTH = 10%)LOG ON(NAME = 'SPJ_Log', FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL\data\SPJ_Log.LDF' ,SIZE = 1,FILEGROWTH = 10%)(2)修改SPJ数据库:在查询分析器中输入以下语句并运行ALTER DATABASE SPJMODIFY FILE(NAME='SPJ_Data',SIZE=4,ALTER DATABASE SPJADD FILE(NAME='SPJ_Data_2', FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL\Data\SPJ_Date_2.ndf',SIZE=1,MAXSIZE=10,FILEGROWTH=10%)(3)删除SPJ数据库:DROP DATABASE SPJ4、界面方式创建数据库XSBOOK,写出操作过程。
数据库原理实训实验报告
一、实验背景随着信息技术的飞速发展,数据库技术在各行各业的应用越来越广泛。
为了让学生更好地理解和掌握数据库原理,提高数据库应用能力,我们开展了数据库原理实训实验。
本次实验旨在通过实际操作,让学生熟悉数据库的基本概念、结构、操作方法以及应用技巧,培养学生的实践能力和创新意识。
二、实验目的1. 熟悉数据库的基本概念、结构、操作方法以及应用技巧。
2. 掌握数据库设计、创建、操作、查询、维护和安全性管理的基本操作方法和技巧。
3. 提高学生的实践能力和创新意识。
三、实验内容本次实验主要分为以下几个部分:1. 数据库设计2. 数据库创建3. 数据表操作4. 数据查询5. 数据库维护6. 数据库安全性管理四、实验步骤1. 数据库设计首先,我们需要设计一个数据库。
根据实验要求,我们设计了一个学生信息管理系统数据库,包含学生表、课程表、成绩表和教师表。
以下是数据库设计的基本步骤:(1)确定数据库主题:学生信息管理系统(2)分析数据需求:根据需求分析,确定学生信息管理系统需要存储的数据,包括学生基本信息、课程信息、成绩信息和教师信息。
(3)设计数据结构:根据数据需求,设计学生表、课程表、成绩表和教师表的结构,包括字段名、字段类型、字段长度、约束等。
2. 数据库创建完成数据库设计后,我们需要创建数据库。
以下是创建数据库的基本步骤:(1)打开数据库管理工具,如MySQL、SQL Server等。
(2)在工具中创建一个新的数据库,命名为“学生信息管理系统”。
(3)根据数据库设计,在新建的数据库中创建相应的数据表。
3. 数据表操作创建数据表后,我们需要对数据表进行操作,包括插入、修改、删除和查询数据。
(1)插入数据:使用INSERT语句插入数据。
(2)修改数据:使用UPDATE语句修改数据。
(3)删除数据:使用DELETE语句删除数据。
(4)查询数据:使用SELECT语句查询数据。
4. 数据查询数据查询是数据库操作中非常重要的一环。
数据库实验报告(完整版)
数据库实验报告班级:07111103学号:**********姓名:***实验一:[实验内容1 创建和修改数据库]分别使用SQL Server Management Studio和Transact-SQL语句,按下列要求创建和修改用户数据库。
1.创建一个数据库,要求如下:(1)数据库名"testDB"。
(2)数据库中包含一个数据文件,逻辑文件名为testDB_data,磁盘文件名为testDB_data.mdf,文件初始容量为5MB,最大容量为15MB,文件容量递增值为1MB。
(3)事务日志文件,逻辑文件名为TestDB_log, 磁盘文件名为TestDB_log.ldf,文件初始容量为5MB, 最大容量为10MB,文件容量递增值为1MB。
2.对该数据库做如下修改:(1)添加一个数据文件,逻辑文件名为TestDB2_data,实际文件为TestDB2_data.ndf,文件初始容量为1MB,最大容量为6MB,文件容量递增值为1MB。
(2)将日志文件的最大容量增加为15MB,递增值改为2MB。
方法一:使用SQL Server Management Studio创建和修改数据库TestDB方法二:使用Transact-SQL语句创建和修改数据库TestDB方法一过于简单,暂不做讨论。
下面学习方法二。
首先,在sql sever 2008中单击新建查询。
然后键入下面的代码。
建立新的数据库。
1. 创建一个数据库,要求如下:2.对该数据库做如下修改:对刚刚的操作进行验证数据均已更新完毕。
[实验内容2 数据表的创建、修改和查询]1.熟悉有关数据表的创建和修改等工作,并了解主键、外键以及约束的创建和应用,熟练掌握使用SQL Server Management Studio和CREATE TABLE、ALTER TABLE等Transact-SQL语句对数据表的操作方法字段名数据类型字段长度注释项目编码char 10 主键名称varchar负责人编码char 10客户int开始日期datetime结束日期datetime员工数据表(Employee)字段名数据类型字段长度注释方法一:使用SQL Server Management Studio创建数据表并添加约束方法二:使用Transact-SQL语句创建数据表并添加约束2.向数据库TestDB中的两个数据表"项目数据表"和"员工数据表"中添加记录3.在查询分析器中书写Transact-SQL语句完成数据查询。
数据库原理实验报告
数据库原理实验报告实验⼀数据库管理系统软件的使⽤⼀、实验⽬的(1)认识⼏种常见的数据库管理系统,熟悉它们的使⽤界⾯;(2)熟练掌握建⽴数据库和表,向数据库输⼊数据、修改数据和删除数据的操作。
⼆、实验内容分别在Access 和SQL SERVER2000 中建⽴数据库并设计各表,输⼊多条实际数据,并实现数据的增、删、改操作。
三、实验步骤:分别在ACCESS数据库管理系统和SQL SERVR 2005环境下利⽤图形操作界⾯(⾮SQL语句)实现以下操作:1、创建⽤于学⽣管理数据库,数据库名为对表中的记录进⾏浏览、修改、删除操作。
本信息,课程信息和选课信息。
数据库XSGL包含下列3 个表:(l) student:学⽣基本信息。
(2)course:课程信息表。
(3)sc:学⽣选课表。
各表的结构分别如表1、表2和表3 所⽰。
表1 学⽣信息表:student表2 课程信息表:course表3 学⽣选课表:sc提⽰:在不使⽤SQL语句创建表的情况下,可通过ACCESS中的关系(菜单—⼯具—关系)和SQL SERVER 2005中的数据库关系图(数据库节点展开—数据库关系图)实现外键的创建。
外键字段和参照字段之间的数据类型以及长度要保持⼀致。
2、输⼊表中的记录分别在student表、course表和sc表中输⼊如下表中的记录:观察输⼊时有⽆提⽰错误,如果有如何修改,体会参照完整性的作⽤,弄清楚先输⼊那些表中记录,为什么?3、对表中的记录进⾏浏览、修改、删除操作。
实验⼆SQL语⾔(⼀) SQL定义语⾔⽬的:会⽤SQL语⾔进⾏基本表的结构的定义、修改、删除,会建⽴与删除索引;内容:⽤SQL语⾔进⾏基本表结构的定义、修改、删除,索引的建⽴和删除步骤:1、在SQL SERVER 2005中新建查询,建⽴到服务器的连接2、⽤SQL语⾔CREATE TABLE语句创建实验⼀中学⽣表student、课程表course 和选课表sc及其相应约束,具体约束如下:表1 学⽣信息表:student表2 课程信息表:course表3 学⽣选课表:sc3、向创建的表中输⼊数据,测试所创建的完整性约束是否起作⽤4、⽤SQL语⾔ALTER语句修改表结构;1) STUDENT表中增加⼀个字段⼊学时间scome,2)删除STUDENT表中sdept字段;3)删除创建的SC表中CNO字段和COURSE表CNO字段之间的外键约束;4)重建3)中删除的约束5、重新定义⼀个简单表,然后⽤SQL语⾔DROP语句删除该表结构;6、⽤SQL语⾔CREATE INDEX语句定义表STUDENT的SNAME字段的降序唯⼀索引;7、⽤SQL语⾔DROP语句删除索引;实验三SQL(⼆) SQL语⾔进⾏简单查询⽬的:掌握简单数据查询操作。
2022年湘潭大学软件工程专业《数据库原理》科目期末试卷A(有答案)
2022年湘潭大学软件工程专业《数据库原理》科目期末试卷A(有答案)一、填空题1、关系数据库中基于数学的两类运算是______________和______________。
2、“为哪些表,在哪些字段上,建立什么样的索引”这一设计内容应该属于数据库设计中的______阶段。
3、某事务从账户A转出资金并向账户B转入资金,此操作要么全做,要么全不做,为了保证该操作的完整,需要利用到事务性质中的_____性。
4、数据库内的数据是______的,只要有业务发生,数据就会更新,而数据仓库则是______的历史数据,只能定期添加和刷新。
5、在SELECT命令中进行查询,若希望查询的结果不出现重复元组,应在SEL ECT语句中使用______保留字。
6、已知系(系编号,系名称,系主任,电话,地点)和学生(学号,姓名,性别,入学日期,专业,系编号)两个关系,系关系的主码是______________,系关系的外码是______________,学生关系的主码是______________,外码是______________。
7、设某数据库中有作者表(作者号,城市)和出版商表(出版商号,城市),请补全如下查询语句,使该查询语句能查询作者和出版商所在的全部不重复的城市。
SELECT城市FROM作者表_____SELECT城市FROM出版商表;8、某在SQL Server 2000数据库中有两张表:商品表(商品号,商品名,商品类别,成本价)和销售表(商品号,销售时间,销售数量,销售单价)。
用户需统计指定年份每类商品的销售总数量和销售总利润,要求只列出销售总利润最多的前三类商品的商品类别、销售总数量和销售总利润。
为了完成该统计操作,请按要求将下面的存储过程补充完整。
9、在数据库系统封锁协议中,一级协议:“事务在修改数据A前必须先对其加X锁,直到事务结束才释放X锁”,该协议可以防止______;二级协议是在一级协议的基础上加上“事务T在读数据R之前必须先对其加S锁,读完后即可释放S锁”,该协议可以防止______;三级协议是在一级协议的基础上加上“事务T在读数据R之前必须先对其加S锁,直到事务结束后才释放S 锁”,该协议可以防止______。
数据库原理实验报告实验
数据库原理实验报告实验摘要数据库作为一种重要的数据存储和管理工具,在计算机科学领域中起着至关重要的作用。
本实验旨在通过实践操作和理论知识学习,加深对数据库原理的理解与掌握。
在本实验中,我们将简要介绍实验的目的、实验环境、实验过程和实验结果,并对实验的意义进行总结。
一、实验目的1.加深对数据库管理系统的理解,熟悉数据库的基本操作和管理方法;2.学习如何进行数据库设计和规范化;3.学习使用SQL语言进行数据库查询和管理;4.掌握常用数据库操作和管理工具的使用。
二、实验环境1.硬件环境:一台配置较高的个人计算机;2.软件环境:数据库管理系统(如MySQL、Oracle等);3.实验工具:SQL语言编辑器。
三、实验过程1.数据库设计和规范化首先,我们需要根据实验需求,进行数据库的设计和规范化。
这包括确定数据库的实体、属性和关系,并建立表的结构和关系。
在设计和规范化过程中,需要考虑实体之间的关系、主键和外键的定义、规范化的程度等。
2.创建数据库和数据表根据设计好的数据库结构,我们需要创建数据库和数据表。
使用数据库管理系统提供的命令或图形界面工具,创建数据库,然后在数据库中创建对应的数据表。
在创建数据表时,需要指定每个字段的数据类型、约束和默认值等。
3.插入数据创建完数据库和数据表后,我们需要向数据表中插入数据。
可以通过手动添加数据或者导入外部数据文件的方式,将数据插入到对应的数据表中。
4.查询和管理数据使用SQL语言进行数据库的查询和管理是数据库操作的重要部分。
根据实验需求,编写相应的SQL语句,执行数据查询、删除、修改和更新等操作,对数据进行管理和操作。
可以通过SQL语言编辑器执行SQL语句,获得查询结果。
5.性能优化和数据保护为了提高数据库系统的性能和数据的安全性,我们还需要对数据库进行性能优化和数据保护。
可以通过索引、视图、事务、备份和恢复等技术手段,提高数据库的查询和操作效率,并保证数据的完整性和安全性。
湘潭大学计算机原理 实验一 算术逻辑单元ALU实验报告
计算机原理与设计实验报告实验一算术逻辑单元ALU姓名: XXX学号: 2013551728班级: 13级软件工程2班实验日期: 2014年 10 月22 日一.实验目的1.理解算术逻辑单元ALU的工作原理。
2.掌握算术逻辑单元ALU的设计方法。
3.验证32位算术逻辑单元ALU的加、减、与、移位功能。
4.按给定数据,完成几种指定的算术和逻辑运算。
二.实验内容算术逻辑单元ALU的设计如图1-1所示。
其中运算器addsub32能实现32位的加减运算。
参加运算的两个32位数据分别为A[31..0]和B[31..0],运算模式由aluc[3..0]的16种组合决定,而aluc[3..0]的值由4位2进制计数器LPM_COUNTER产生,计数时钟是Sclk(图1-1);r[31..0]为输出结果,Z为运算后的零标志位。
ALU功能如表1-1所示。
表1-1 ALU的运算功能注1、* 表示每一位都移至下一更高有效位, “+”是逻辑或,“加”是算术加三.实验步骤(1)设计ALU元件ALU元件设计代码:module alu (a,b,aluc,r,z);input [31:0] a,b;input [3:0] aluc;output [31:0] r;output z;assign r = cal(a,b,aluc);assign z = ~|r;function [31:0] cal;input [31:0] a,b;input [3:0] aluc;casex (aluc)4'bx000: cal=a+b;4'bx100: cal=a-b;4'bx001: cal=a&b;4'bx101: cal=a|b;4'bx010: cal=a^b;4'bx110: cal={b[15:0],16'h0};4'bx011: cal=b<<a[4:0];4'b0111: cal=b>>a[4:0];4'b1111: cal=$signed(b)>>>a[4:0];endcaseendfunctionendmodule(2)以原理图方式建立顶层文件工程原理图如下:(3)查看波形图波形图如下:(4)分配引脚结构图如下:引脚分配表如下:四.实验任务(1)按图1-1所示,在本验证性示例中用数据选择开关(键3控制)的高/低电平选择总线通道上的8位数据进入对应的数据锁存器lpm_latch中;即首先将键3输入高电平,用键2、键1分别向DA[7..0] 置数01010101(55H),这时在数码管4/3上显示输入的数据(55H);然后用键3输入低电平,再用键2、键1分别向DB[7..0]置数10101010(AAH),这时在数码管2/1上显示输入的数据(AAH);这时表示在图1-1中的两个锁存器中分别被锁入了加数55H和被加数AAH。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一 数据模型设计与实现
撰写人:郭云飞
湘潭大学 信息工程学院 二○一五年三月
实验一 数据模型设计与实现
一.上机目的
1.了解并掌握数据模型的设计。 2.了解并掌握 Oracle 中的用 Create 命令定义表的方法,以及表的完整性定义。 3.了解并掌握 Oracle 中的用 Alter 命令和 Drop 命令对表的修改和删除。
其类型为 char,长度为 1。取值 0,1,2,3,默认值为 0(在校学习)。 每一个开课在选课前都有人数限制,选课后有选课人数统计。在 section 中将属性用 rs 表示。 将 takes 中 grade 由等级制改成百分制。 课程有公共基础课(1,2)与专业课,专业课有必修(3)与选修(4)。课程在第几学期开设都有规定。在
如:给 EMP1 增加一个属性 ALTER TABLE EMP1 ADD (SPOUSES_NAME CHAR(10));
MODIFY 关键字可以用来修改已存在的数据表定义。 如:把 EMP 中 ENAME 长度改为 25 个字符 ALTER TABLE EMP1 MODIFY (ENAM CHAR(25));
3. CREATE TABLE 命令 1)、CREATE TABLE table_name( column_name type(size), column_name type(size), …);
例如: CREATE TABLE student(
id VARCHAR2(10), name VARCHAR2(12), age NUMBER(2));
DROP 关键字可以用来删除已存在数据表的约束。 如:把 EMP 中主键删除 ALTER TABLE EMP1 DROP PRIMARY KEY;
6. DROP TABLE 命令 用 DROP TABLE 命令删除 Oracle 数据表的定义。 命令格式: DROP TABLE table_name [CASCADE CONSTRAINT][PURGE] 例如: DROP TABLE EMP1; CASCADE CONSTRAINT 选项说明了也把完整性约束一起删除。 注意: DROP TABLE 也把数据表中的数据删除。 数据表的 VIEWS 和 SYNOMNYMS 保留下来,但它们变成了不合法的。 任何悬而未决的事务将被提交。 只有数据表的生成者或 DBA 才有权删除它。
2.创建教材中的大学数据库,E-R 模型见教材,共 11 张表:department,instructor,student,course,prereq, classroom,section,time_slot,teaches,takes,advisor。
思考:①本模型中一个开课号只能有一个时间段(一周一次),同时也只能在一个教室里上课。如果允许 一个开课号一周上多次课且在不同教室里上课,应该怎样修改上述模型?②根据本校排课的实际情况,又 该怎样修改上述模型? 3.修改大学数据库中的表
COMM NUMBER(7,2),
DEPTNO NUMBER(2) NOT NULL);
用 DESCRIBE 命令来看生成的 EMP2 表的列明细清单:
输入命令:DESCRIBE EMP2
EMP 生成的数据表结构显示如下:
Name EMPNO ENAME JOB MGR HIREDATE SAL
Null? NOT NULL
Type NUMBER(4) VARCHAR2(12) VARCHAR2(10) NUMBER(4) DATE NUMBER(7,2) NUMBER(7,2) NUMBER(2) CHAR(10)
6. 用 ALTER 的 ADD 命令给 EMP2 表添加外键。 ALTER TABLE EMP2 ADD CONSTRAINT fk_emp2 FOREIGN KEY(DEPTNO) REFERENCES DEPT22(DEPTNO);
4. 完整性约束 Oracle 允许用户为表和列定义完整性约束来增强一定的规则。 可分为:表约束和属性约束
1)、NOT NULL 约束 NOT NULL 约束保证属性值不能为 NULL。没有 NOT NULL 约束的属性,值可以为 NULL。
2)、UNIQUE 约束 指定一个属性或者属性的集合为唯一键。在表中没有两行具有相同的值。如果唯一键是基于单条记录
COMM DEPTNO SPOUSES_NAME
NOT NULL
NUMBER(7,2) NUMBER(2) CHAR(10)
4. 用 ALTER 的 MODIFY 命令修改已存在的属性的定义 ALTER TABLE EMP2 MODIFY (ENAME VARCHAR2(12));
输入命令:DESCRIBE EMP2
三.上机内容
1. 创建表 EMP2
CREATE TABLE EMP2
(EMPNO NUMBER(4) PRIMARY KEY NOT NULL,
ENAME VARCHAR2R2(10),
MGR
NUMBER(4),
HIREDATE DATE,
SAL
NUMBER(7,2),
column, …)
属性约束命令格式: [CONSTRAINT constraint_name] FOREIGN KEY table (column) 例如: CREATE TABLE EMP1 (…
CONSTRAINT FK_DEPTNO FOREIGN KEY (DEPTNO) REFERENCES DEPT(DEPTNO));
输入命令:DESCRIBE EMP2
EMP 生成的数据表结构显示如下:
Name EMPNO ENAME JOB MGR HIREDATE SAL
Null? NOT NULL
Type NUMBER(4) VARCHAR2(10) VARCHAR2(10) NUMBER(4) DATE NUMBER(7,2)
4)、外键约束 外键提供表内或表间的完整性规则。外键必须依赖于一个 primary 或 unique key。
表约束命令格式: ,[CONSTRAINT constraint_name] FOREIGN KEY (Column, Column, …) REFERENCES table (column,
7. 用 ALTER 的 ADD 命令给 EMP2 表添加检查约束条件:工资大于 1000。 ALTER TABLE EMP2 ADD CONSTRAINT chk_emp2_sal CHECK(SAL>1000);
8. 用 ALTER 的 DROP 命令删除数据表 EMP2 中已存在的外键约束 fk_emp2。 ALTER TABLE EMP2 DROP CONSTRAINT fk_emp2;
二.预备知识
1. E-R 图图例 图例一(教材第 5 版) 矩形,表示实体集 菱形,表示联系集 线段 椭圆,表示属性 下划线标识主键属性
图例二(教材第 6 版) 矩形,表示实体集 菱形,表示联系集 线段 属性在实体矩形内列出 下划线标识主键属性
2. Oracle 数据类型
的,NULL 是允许的。 表约束命令格式: ,[CONSTRAINT constraint_name] UNIQUE (Column, Column, …) 属性约束命令格式: [CONSTRAINT constraint_name] UNIQUE
例如: CREATE TABLE DEPT3(
DEPTNO NUMBER, DNAME VARCHAR2(9), LOC VARCHAR2(10), CONSTRAINT unq_dept_loc UNIQUE(DNAME,LOC)); unq_dept_loc 是一个表约束。
输入命令:DESCRIBE DEPT22
EMP_Part 生成的数据表结构结果显示如下:
Name
Null?
DEPTNO
NOT NULL
DNAME
LOC
Type NUMBER(2) VARCHAR2(14) VARCHAR2(13)
3. 给数据表 EMP2 增加一个属性 SPOUSES_NAME ALTER TABLE EMP2 ADD (SPOUSES_NAME CHAR(10));
EMP 生成的数据表结构显示如下:
Name EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO SPOUSES_NAME
Null? NOT NULL
NOT NULL
5. 用 ALTER 的 ADD 命令给 DEPT22 表添加主键。 ALTER TABLE DEPT22 ADD PRIMARY KEY(deptno);
3)、主键约束(Primary Key Constraint) 主键约束强制属性和属性集合的唯一性,并且用一个唯一索引来管理它。每个表中只能用一个主键,
这样可以通过主键来标识表中的每条记录。NULL 值不允许在主键属性出现。 表约束命令格式: ,[CONSTRAINT constraint_name] PRIMARY KEY (Column, Column, …) 属性约束命令格式: [CONSTRAINT constraint_name] PRIMARY KEY 例如:用属性约束定义 DEPTNO 为主键 CREATE TABLE DEPT4( DEPTNO NUMBER(2)PRIMARY KEY, …);
Type NUMBER(4) VARCHAR2(10) VARCHAR2(10) NUMBER(4) DATE NUMBER(7,2)
COMM
NUMBER(7,2)
DEPTNO
NOT NULL NUMBER(2)
2. 从其他表中抽取属性生成数据表 CREATE TABLE DEPT22 AS SELECT DEPTNO,DNAME,LOC FROM DEPT WHERE 1=2;