数据库实验五截图
- 格式:doc
- 大小:964.00 KB
- 文档页数:4
实验四视图(1学时)1.实验目的(1)掌握使用SQL Server管理平台和Transact-SQL语句CREATE VIEW创建视图的用法。
(2)掌握使用Transact-SQL语句ALTER VIEW修改视图的方法。
(3)了解删除视图的Transact-SQL语句DROP VIEW的用法。
2.实验内容1)使用管理平台管理视图(1)以student_info表为基础,使用SQL Server管理平台建立名为v_stu_i 的视图,使视图显示学生姓名、性别、家庭住址。
(2)删除视图v_stu_i。
2)使用T-SQL语句管理视图(1)使用Transact-SQL语句CREATE VIEW建立一个名为v_stu_c的视图,显示学生的学号、姓名、所学课程的课程编号,并利用视图查询学号为0003的学生情况。
(2)基于student_info表、curriculum表和grade表,建立一个名为v_stu_g 的视图,视图中具有所有学生的学号、姓名、课程名称、分数。
使用视图v_stu_g 查询学号为0001的学生的所有课程与成绩。
(3)使用Transact-SQL语句修改视图v_stu_c,使之显示学号、姓名、每个学生所学课程数目。
(4)使用Transact-SQL语句ALTER VIEW修改视图v_stu_i,使其具有列名学号、姓名、性别。
(5)利用视图v_stu_info为student_info表添加一行数据:学号为0015、姓名为陈婷、性别为女。
(6)利用视图v_stu_info删除学号为0015的学生记录。
(7)使用Transact-SQL语句DROP VIEW删除视图v_stu_c和v_stu_info。
3.实验思考(1)是否可以通过视图v_stu_g修改grade表中学号列数据?(2)比较视图和基表操作表中数据的异同。
(3)可更新视图必须满足哪些条件?。
数据库原理上机实验报告数据库实验报告2.1 实验目的通过实习了解掌握数据库和数据表的两种创建方式: 1)通过数据库管理系统软件提供的管理界面完成数据库和数据表的创建;2)通过SQL 语言完成数据库和数据表的创建。
2.2 实验平台1. 操作系统:Windows 7、WindowsXP、Windows Server2003/2008。
2. 数据库管理系统:根据实际情况,自己选择Oracle 或SQL Server 或MySQL 中的一种数据管理管理系统软件。
2.3 实验内容1.采用SQL Server 的Management Studio,或者Oracle 的控制台,或者MySQL 的Workbench 建立一个数据库University,其中包括6 个数据表:a)系的信息表Department(Dno,Dname,Daddress);b) 学生信息表Student(Sno, Sname, Ssex, Sage, Dno);c) 教师信息表Teacher (Tno, Tname, Ttitle, Dno);d) 课程信息表Course (Cno, Cname, Cpno, Ccredit);e) 学生选课表SC(Sno,Cno,Grade);f) 教师授课表TC(Tno,Cno,Site)。
上面加有下划线的为该表的关键码,Dno 表示系的编号,Dname 表示系名,Daddress 表示系所在的办公地址;Sno 表示学号,Sname 为学生姓名,Ssex 为学生性别,Sage 学生年龄;Tno 表示教师编号,也即职工号,Tname 表示教师姓名,Ttitle 表示教师职称;Cno 表示课程编号,Cname 表示课程名称,Cpno 先导课程编号,Ccredit 课程学分;Grade 表示每个学生的每一门课的成绩;Site 表示授课地点。
代码:/*系的信息表Department(Dno,Dname,Daddress)*/create table Department(Dno number(10),Dname varchar2(50),Daddress varchar2(50),primary key (Dno));/*学生信息表Student(Sno, Sname, Ssex, Sage, Dno)*/create table Student(Sno char(11) ,Sname varchar2 (50),Ssex char(2),Sage number(10) ,Dno number(10),primary key (Sno),foreign key (Dno) references Department(Dno));/*教师信息表Teacher (Tno, Tname, Ttitle, Dno)*/create table Teacher(Tno number(10) primary key,Tname varchar2 (50),Ttitle varchar2 (50),Dno number(10) ,foreign key (Dno) references Department(Dno));/*课程信息表Course (Cno, Cname, Cpno, Ccredit)*/ create table Course(Cno number(10) primary key ,Cname varchar2 (50),Cpno number(10) ,CCredit number(10),foreign key(Cpno) references Course(Cno));/*学生选课表SC(Sno,Cno,Grade)*/create table SC(Sno char(11),Cno number(10),Grade number(10),primary key(Sno, Cno),foreign key(Sno) references Student(Sno),foreign key (Cno) references Course(Cno) );/*教师授课表TC(Tno,Cno,Site)*/ create table TC(Tno number(10) ,Cno number(10),Site varchar2(50),primary key (Tno,Cno),foreign key(Tno) references Teacher(Tno), foreign key (Cno) references Course(Cno) );2.采用SQL 语言删除步骤1 中建立的数据表和数据库;代码:drop table SC;drop table TC;drop table Course;drop table Teacher;drop table Student;drop table Department;3.采用SQL 语言建立数据库DB 和其中的6 个数据4.采用SQL 语句为Student 表的Sname 建立唯一索引。
数据库基础与实践实验报告实验五存储过程和触发器班级:惠普测试142学号:**********姓名:***日期:2016-11-141 实验目的:1)掌握SQL进行存储过程创建和调用的方法;2)掌握SQL进行触发器定义的方法,理解触发器的工作原理;3)掌握触发器禁用和重新启用的方法。
2 实验平台:操作系统:Windows xp。
实验环境:SQL Server 2000以上版本。
3 实验内容与步骤利用实验一创建的sch_id数据库完成下列实验内容。
1.创建存储过程JSXX_PROC,调用该存储过程时可显示各任课教师姓名及其所教课程名称。
存储过程定义代码:CREATE PROCEDURE JSXX_PROCASSELECT tn 教师姓名,cn 所教课程FROM T,TC,C WHERE T.tno=TC.tno AND o=o存储过程执行语句与执行结果截图:EXECUTE JSXX_PROC2.创建存储过程XM_PROC,该存储过程可根据输入参数(学生姓名)查询并显示该学生的学号、所学课程名称和成绩;如果没有该姓名学生,则提示“无该姓名的同学”。
存储过程定义代码:CREATE PROCEDURE XM_PROC @sname VARCHAR(100)ASBEGINIF EXISTS(SELECT NULL FROM S WHERE sn=@sname)SELECT S.sno 学号,cn 课程,score 成绩FROM S,SC,C WHERE o=o AND SC.sno=S.sno ANDS.sn=@snameELSEPRINT'无该姓名的同学。
'END运行截图:3.创建存储过程XBNL_PROC,该存储过程可根据输入参数(专业名词,默认值为计算机专业),统计并显示该专业各年龄段男、女生人数。
如果没有该专业,则显示“无此专业”。
存储过程定义代码:CREATE PROCEDURE XBNL_PROC@departName VARCHAR(30)='计算机',@begin INT,@end INTASDECLARE @numOfBoys INTDECLARE @numOfGirls INTDECLARE @d# VARCHAR(3)DECLARE @result VARCHAR(50)BEGINSELECT @d# = dno FROM D WHERE dn=@departNameIF @d# IS NOT NULLBEGINSELECT @numOfBoys =COUNT(sno)FROM S WHERE age BETWEEN @begin AND @end AND dno=@d# AND sex='男'SELECT@numOfGirls =COUNT(sno)FROM S WHERE age BETWEEN@begin AND@end AND dno=@d# AND sex='女'SET @result = @departName+'专业年龄在'+CAST(@begin AS VARCHAR(3))+'-'+CAST(@end AS VARCHAR(3))+'之间的男生有'+CAST(@numOfBoys AS VARCHAR(3))+'人,'+'女生有'+CAST(@numOfGirls AS VARCHAR(3))+'人'ENDELSESET @result='无此专业。
设有一学籍管理系统,其数据库名为“EDUC”。
初始大小为 10MB,最大为50MB,数据库自动增长,增长方式是按5%比例增长;日志文件初始为2MB,最大可增长到5MB,按1MB增长。
数据库的逻辑文件名为“student_data”, 物理文件名为“student_data.mdf,存放路径为“E:\sql_data”(注意:此文件名必须已经建立的前提下才可以此操作)。
日志文件的逻辑文件名为“student_log”, 物理文件名为“student_log.ldf”,存放路径为“E:\sql_data”。
四.实验步骤1.使用SQL Server Management Studio(简称SSMS)创建数据库。
(1)启动SSMS在开始菜单中:所有程序-SQL Server 2005 -SQL Server Management Studio单击“连接”按钮,便可以进入【SQL Server Management Studio】窗口。
如果身份验证选择的是“混合模式”,则要输入sa的密码。
(2)建立数据库在“对象资源管理器”窗口,建立上述数据库EDUC。
在数据库节点上右击选择新建。
同时建立一个同样属性的数据库EDUC1。
2. 使用向导删除上面建立的数据库。
用SSMS删除建立的数据库EDUC。
3、数据库的分离将刚建好的数据库分离出来,即点击新建的EDUC——任务——分离,将删除连接和更新打一个钩,然后点击确定。
如图所示:4、数据分离出来之后可以附加进去。
即右击数据库——附加——点击添加按钮,找到数据库文件.mdf所存放的路径,然后点击确定,即可以将我们刚所创建的文件添加回去。
五.实验总结通过本次实验,我熟悉了SQL Server 中SQL Server Management Studio的环境,了解了SQL Server 数据库的逻辑结构和物理结构,掌握使用向导创建和删除数据库的方法。
加深了对数据库的认识和理解。
实验五索引和数据完整性1、目的与要求(1)掌握索引的使用方法。
(2)掌握数据完整性的实现方法。
2、实验准备(1)了解索引的作用与分类。
(2)掌握索引的创建方法。
(3)理解数据完整性的概念及分类。
(4)掌握各种数据完整性的实现方法。
3、实验容(1)建立索引。
①使用CREATE INDEX语句创建索引。
A、对YGGL数据库的Employees表中的DepartmentID列建立索引。
在“查询分析器”窗口中输入如下程序并执行。
B、在Employees表的Name列和Address列上建立复合索引。
C、对Department表上的DepartmentName列建立唯一非聚集索引。
【思考与练习】A、索引创建后在对象资源管理器中查看表的索引。
上面分别创建了Employees表和Department表的索引,在对象资源管理器中的表中将相应的表打开,在“索引”中显示该表中建立的索引。
详细结果如上面截图中显示。
B、了解索引的分类情况。
按索引的组织方式能够将索引分为聚集索引和非聚集索引两种类型。
聚集索引将数据行的键值在表排序并存储对应的数据记录,使得数据表物理顺序与索引顺序一致。
非聚集索引完全独立于数据行的结构。
C、使用CREATE INDEX语句能够创建主键吗?D、在什么情况下能够看到建立索引的好处?数据库索引是为了增加查询速度而对表字段附加的一种标识。
数据库的索引并不是只有好处或者只有坏处的。
当我们的数据库足够大,恰当的建立索引就会大大的提高查询搜索的速度;在这里举个反例,像查询性别这种大量重复的字段时候,是否建立索引是没有多大区别的;还有当表数据不是很多的时候建立索引也是没有多大意义的,因为索引也是要占用资源的。
但是当我们数据库非常大时候,经常进行GROUP BY查询时候,若将GROUP BY字段上建立索引就会很大程度上面较少查询搜索所花费的时间。
②使用界面方式创建索引。
使用界面方式在Employees表的PhoneNumber列上创建索引。
大连海事大学数据库原理课程实验大纲实验名称:实验五视图实验学时: 2适用专业:实验环境: SQL.serve2008执笔者:编写日期:1实验目的(1)掌握SQL视图语句的基本使用方法,如CREATE VIEW、DROP VIEW。
(2)掌握视图更新、WITH CHECK OPTION等高级功能的使用。
2实验内容2.1 掌握SQL视图语句的基本使用方法(1)创建视图(省略视图列名)。
(2)创建视图(不能省略列名的情况)。
(3)删除视图(RESTRICT / CASCADE)。
2.2 掌握视图更新和WITH CHECK OPTION的高级使用方法(1)创建视图(WITH CHECK OPTION),并利用INSERT、DELETE和UPDATE语句加以验证。
(2)创建一个行列子集可更新视图,并利用INSERT、DELETE和UPDATE语句加以验证。
(3)创建一个不可能更新的视图,并利用更新语句验证该视图不可更新。
3实验要求(1)深入复习教材第三章SQL有关视图语句。
(2)根据书上的例子,针对TPCH数据库模式设计各种视图语句,每种类型视图语句至少要设计一个,描述清楚视图要求,运行你所设计的视图语句,并截图相应的实验结果,每幅截图并要有较为详细的描述。
也可以按照附1所列示例做实验。
(3)实验步骤和实验总结中要详细描述实验过程中出现的问题、原因和解决方法。
(4)思考题:KingbaseES把视图的定义存储在那个系统表中?如何查看某个视图的定义?4实验步骤4.1 掌握SQL视图语句的基本使用方法(1)创建视图(省略视图列名)。
创建一个“海大汽配”供应商供应的零件视图V_DLMU_PartSupp1,要求列出供应零件的编号、零件名称、可用数量、零售价格、供应价格和备注等信息。
CREATE VIEWV_DLMU_PartSupp1(PARTKEY,NAME,A VAILQTY,RETAILPRICE,SUPPLYCOST,COMMENT)ASSELECT P.PARTKEY,,PS.A VAILQTY,P.RETAILPRICE,PS.SUPPLYCOST,MENTFROM PART P,PARTSUPP PSWHERE P.PARTKEY=PS.PARTKEY AND PS.SUPPKEY IN(SELECT SUPPKEYFROM SUPPLIER SWHERE ='海事大学')(2)创建视图(不能省略列名的情况)。
计算机与信息学院数据库原理实验报告专业:计算机科学与技术班级:2012级本科班学号:07173姓名:指导教师: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)掌握Oracle数据库编程语言PL/SQL的基础知识。
(2)掌握游标、存储过程和触发器的创建,使用方法。
(3)了解使用高级语言连接数据库的技术、基本方法,了解ODBC、ADO和JDBC 的技术。
二、实验过程在实验一、实验二创建的表中用PL/SQL语言完成以下内容:1.创建存储过程,根据调用时提供的学生姓名查询该学生所修课程的课程信息,在过程体中将课程号、课程名和成绩输出到输出窗口,在SQL窗口中给出过程调用语句块。
存储过程:create or replace procedure P1(v_name student.sname%type)is v_cno o%type;v_cname ame%type;v_grade sc.grade%type;cursor c1 isselect o,cname,gradefrom student ,course,scwhere student.sno=sc.sno ando=o andstudent.sname=v_name;beginopen c1;loopfetch c1 into v_cno,v_cname,v_grade;exit when c1%notfound;dbms_output.put_line(v_cno||' '||v_cname||' '||v_grade);end loop;close c1;end P1;SQL窗口:DECLAREv_sno student.sno%type;v_cno o%type;v_grade sc.grade%type;BEGINP1('刘敏江');COMMIT;END;2.(1)删除SPJ关系中所有数据。
(2)在插入和修改SPJ表中QTY属性列的值时用触发器实现约束:如果是北京的供应商,供应任何零件的数量不能少于300,如果少于则自动改为300。
实验报告学院(系)名称:计算机与通信工程学院using System.Threading.Tasks;using System.Windows.Forms;using System.Data.SqlClient;namespace doc3{public partial class MainForm : Form{public MainForm(){InitializeComponent();}private void MainForm_Load(object sender, EventArgs e){DataTable dataTable = DBUtil.QueryData("select sno '学号', sname '', sage '年龄', sdept '学院' from Student");studentDataGridView.DataSource = dataTable;}private void studentDataGridView_CellClick(object sender, DataGridViewCellEventArgs e){int index = studentDataGridView.CurrentCell.RowIndex;// vs2012的写法snoTextBox.Text = studentDataGridView.Rows[index].Cells["学号"].Value.ToString();snameTextBox.Text = studentDataGridView.Rows[index].Cells[""].Value.ToString();sageTextBox.Text = studentDataGridView.Rows[index].Cells["年龄"].Value.ToString();sdeptTextBox.Text = studentDataGridView.Rows[index].Cells["学院"].Value.ToString();}private void createStudentButton_Click(object sender, EventArgs e){string sno = snoTextBox.Text.Trim();string sname = snameTextBox.Text.Trim();string sage = sageTextBox.Text.Trim();string sdept = sdeptTextBox.Text.Trim();if ("".Equals(sno) || "".Equals(sname) || "".Equals(sage) || "".Equals(sdept)){MessageBox.Show("数据必须全不能为空", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);}else{string sql = "insert into Student(sno,sname,sage,sdept) values('" + sno + "', '" + sname+ "', '" + sage + "', '" + sdept + "')";if (DBUtil.CUDData(sql)){MessageBox.Show("创建操作成功!", "提示", MessageBoxButtons.OK, rmation);}}}private void readStudentButton_Click(object sender, EventArgs e){DataTable dataTable = DBUtil.QueryData("select sno '学号', sname '', sage '年龄', sdept '学院' from Student");studentDataGridView.DataSource = dataTable;}private void updateStudentButton_Click(object sender, EventArgs e){string sno = snoTextBox.Text.Trim();string sname = snameTextBox.Text.Trim();string sage = sageTextBox.Text.Trim();string sdept = sdeptTextBox.Text.Trim();if ("".Equals(sno) || "".Equals(sname) || "".Equals(sage) || "".Equals(sdept)){MessageBox.Show("数据必须全不能为空", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);}else{string sql = "update Student set sname='" + sname + "', sage='" + sage + "', sdept='" + sdept + "' where sno=" + sno;if (DBUtil.CUDData(sql)){MessageBox.Show("更新操作成功!", "提示", MessageBoxButtons.OK, rmation);}}}private void deleteStudetnButton_Click(object sender, EventArgs e){int index = studentDataGridView.CurrentCell.RowIndex;string sno = studentDataGridView.Rows[index].Cells["学号"].Value.ToString();string sql = "delete from Student where sno = '" + sno + "'";if (DBUtil.CUDData(sql)){MessageBox.Show("删除操作成功!", "提示", MessageBoxButtons.OK,rmation);}}private void readScoreButton_Click(object sender, EventArgs e){string sql = "select * from Score";DataTable dataTable = DBUtil.QueryData(sql);scoreListView.GridLines = true;scoreListView.FullRowSelect = true;// 初始化scoreListView的列scoreListView.View = View.Details;scoreListView.Columns.Clear();scoreListView.Columns.Add("学号", 268, HorizontalAlignment.Left);scoreListView.Columns.Add("成绩", 266, HorizontalAlignment.Left);scoreListView.Items.Clear();// 将DataTable转换为DataTableReaderDataTableReader dr = dataTable.CreateDataReader();while (dr.Read()){ListViewItem lvi = new ListViewItem(dr[0].ToString());lvi.SubItems.Add(dr[1].ToString());scoreListView.Items.Add(lvi);}}private void createScoreButton_Click(object sender, EventArgs e){string sno = ssnoTextbox.Text.Trim();string sscore = sscoreTextBox.Text.Trim();if ("".Equals(sno) || "".Equals(sscore)){MessageBox.Show("数据必须全不能为空", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);}else{string sql = "insert into Score(sno,sscore) values('" + sno + "', '" + sscore + "')";if (DBUtil.CUDData(sql)){MessageBox.Show("创建操作成功!", "提示", MessageBoxButtons.OK, rmation);}}}private void ssnoTextbox_TextChanged(object sender, EventArgs e){}private void snoTextBox_TextChanged(object sender, EventArgs e){}}}运行结果:【实验过程记录(源程序、测试用例、测试结果及心得体会等)】【心得体会】:上机的学习中也了解到数据库的视图和查询。
实验五数据库的安全性(2学时)
1.实验目的
(1)掌握通过SQL Server管理平台创建、修改、删除、查看等管理用户账户的方法。
(2)掌握通过SQL Server管理平台添加、修改、删除、查看等管理角色的方法。
(3)掌握通过SQL Server管理平台创建、修改、删除、查看等管理用户权限的方法。
2.实验内容
(1)利用SQL Server管理平台和创建登录账户login_user1和login_user2。
(2)利用SQL Server管理平台和删除登录账户login_user1和login_user2。
(3)利用SQL Server管理平台创建用户定义数据库角色member1和member1并添加到sales数据库中。
(4)利用SQL Server管理平台删除用户定义数据库角色member1和member1。
(5)利用SQL Server管理平台创建数据库用户database_user1和database_user2。
(6)利用SQL Server管理平台赋予数据库用户database_user1和database_user2查询和修改sales数据库的权限。
(7)利用SQL Server管理平台撤销数据库用户database_user1和database_user2查询和修改sales数据库的权限。
(8)利用SQL Server管理平台删除数据库用户database_user1和database_user2。
sale。