数据库系统应用与开发--实验四
数据库实验四

数据库实验四在学习数据库的过程中,实验是帮助我们深入理解和掌握相关知识的重要环节。
本次数据库实验四主要围绕着数据库的查询、更新以及数据完整性等方面展开。
实验的目的是让我们通过实际操作,更加熟练地运用 SQL 语句来处理数据库中的数据,同时加深对数据库原理和概念的理解。
在实验开始之前,我们首先需要准备好相关的数据库环境。
这包括安装数据库管理系统,如 MySQL 或 SQL Server 等,并创建好实验所需的数据库和数据表。
本次实验中,我们创建了一个名为“students”的数据库表,用于存储学生的基本信息,如学号、姓名、年龄、性别和所在班级等。
同时,还创建了一个名为“courses”的表,用于存储课程的信息,包括课程编号、课程名称和授课教师等。
接下来,就是实验的核心部分——数据查询操作。
通过使用 SQL 的 SELECT 语句,我们可以从数据库中获取所需的数据。
例如,要查询所有年龄大于 20 岁的学生信息,可以使用以下语句:```sqlSELECT FROM students WHERE age > 20;```除了简单的条件查询,我们还学习了如何进行多表连接查询。
比如,要获取同时选修了“数据库原理”和“操作系统”两门课程的学生信息,就需要将“students”表、“courses”表以及选课关系表进行连接查询。
数据更新操作也是实验中的重要内容。
通过使用 UPDATE 语句,我们可以对数据库中的数据进行修改。
但在进行数据更新时,一定要谨慎操作,确保更新的结果符合预期,避免造成数据的错误或丢失。
例如,如果要将某个学生的年龄增加一岁,可以使用以下语句:```sqlUPDATE students SET age = age + 1 WHERE student_id ='_____';```在实验过程中,数据完整性的维护也是至关重要的。
我们通过设置主键、外键以及各种约束条件,来确保数据的准确性和一致性。
数据库实验四

数据库实验四实验项目名称:T-SQL程序设计实验学时: 4同组学生姓名:实验地点: b513实验日期: 2012.11.27 2012.12.04实验成绩:批改教师:批改时间:一、实验目的和要求1、掌握T-SQL中运算符和表达式的使用;2、通过对Select的使用,掌握Select语句的结构及其应用;3、掌握T-SQL中几个常用流程控制语句的使用;4、掌握系统内置函数的概念及其应用;5、通过定义和使用用户自定义函数,掌握自定义函数的概念及其应用。
二、实验设备、环境设备:奔腾Ⅳ或奔腾Ⅳ以上计算机;环境:WINDOWS 2000 SERVER或WINDOWS 2003 SERVER、SQL Server2005中文版。
三、实验步骤1、根据题目要求熟悉SQL Server2005的各种管理工具;2、分析题意,重点分析题目要求并给出解决方法;3、按题目要求完成实际操作任务,并将相关文档资料保存在以自己学号命名的文件夹中;4、提交完成的实验结果。
四、实验内容一、SQL查询(*使用SQL Server样例数据库pubs完成)1、简单查询(1)查询所有作者的姓名和作者号信息,并在每个作者的作者号前面显示字符串“身份证号:”表明显示信息是身份证信息;(authors表)(2)改变显示列名。
显示所有作者的姓名信息和作者号信息,要求用“名”和“姓”来区别fname和lname,“作者编号”来区分作者号;(authors表)(3)查询所有书在价格提高10%后的价格和书名信息;(titles 表)(4)查询所有书的书号和税后价格。
(titles表,royalty列表示税率);(5)查询所有作者的姓和“名的第一个字符”以及作者号;(authors表,SUBSTRING函数)(6)查询邮政编码大于9000的作者姓名和电话信息;(authors表)(7)查询出版日期在1/1/1991到12/31/1991之间的书名(书名限制为38个字符)和出版日期;(titles 表,SUBSTRING函数)(8)查询书的类型是mod_cook或trad_cook的书名和它的类型;(titles表)(9)查询店名中包含Book的店的信息;(stores表);(10)查询书名以T开头或者出版号为0877,且价格大于16美元的书的信息;(titles表)(11)查询所有作者的所在城市和州名,要求没有重复信息;(authors表)(12)按照类型的升序和价格的降序显示书的信息;(titles表)2、生成汇总数据(1)计算多少种书已被定价;(titles表)(2)计算每本书的书号及它的售书总量;(sales表)(3)求销售量大于30的书号及销售数量;(sales表)(4)显示在1994年1月1日到1994年10月31日间,每本书的销售总额;(sales表,titles表)3、连接查询(1)求每本杂志上刊登的文章;(titles, publishers表)(2)求某书店销售某书的数量;(titles, stores, sales表)(3)查询所有合著的书及其作者。
数据库原理与应用实验四报告

数据库系统概论实验报告(四)姓名:田垒班级学号: 2010080405226学院:信息学院专业:计算机科学与技术2010年12月12日实验四、视图和索引一、实验目的(1)掌握建立、维护索引的方法(2)掌握建立、使用视图的方法二、实验平台操作系统:Windows 2000或者Windows XP。
数据库管理系统:Microsoft SQL Server 2000 或Microsoft SQL Server 2005。
三、实验内容1.使用SSMS创建视图向导通过SSMS的Create View Wizard创建新视图1)在SSMS中,展开“数据库”后,在视图处单击鼠标右键。
2)双击菜单“创建视图”3)选择表order4)选择字段Ono, Cno, Pno, Onum5)输入条件语句WHERE Onum >106)输入视图名称v_order8)在SSMS中的“数据库”→OrderMag→视图下查看视图v_order9)在查询窗口中输入并执行语句SELECT * FROM v_order10)结果如何?显示的字段是否为前面自己定义的字段?是11)删除视图v_order。
视图设计视图视图查看视图2.在查询中创建视图1) 建立一个视图,包括订单号、零件名称、顾客名称、订单金额等信息create view 客户信息asSELECT ame, o.Ono, s.pname, o.OsumFROM Orders o,store s,Customer c结果:2)建立一个视图,查询订单金额大于100元的大客户信息。
create view 大客户信息asSELECT *FROM Orderswhere Osum>100结果:3)建立一个视图,查询每个顾客签订订单的总金额create view 顾客签订订单的总金额asSELECT Cno,sum(Osum) 金额总数FROM Orders group by cno结果:3. 察看系统提供的示例数据库pubs上有哪些索引,是什么类型的,列表记录下来。
数据库应用及开发实验报告

课程名:数据库应用与开发时间:2014.9.11实验一安装SQL Server 2008和Visual Studio2010一、实验目的学习和掌握SQL Server 2008 命名实例的安装,启动和连接服务器。
二、实验器材486及以上微机,Windows xp/7/vista操作系统,安装了SQL SERVER。
三、实验容和步骤1、SQL Server 2008的安装(1)将安装盘放入光驱,光盘会自动运行。
在开始界面中选择“服务器组件、工具,联机丛书和示例命令,执行安装程序”(2)接受许可条款和条件,安装必备组件;使用Sql server 安装向导;进行“系统配置检查”;输入相关注册信息;选择需要升级或安装的组件,如图1.1(3)单击下一步按钮,在出现的实例的命令方式为命名示例,并输入实例名称,单击下一步按钮继续进行安装。
(4)根据向导完成SQLServer2008 的安装。
图附1.1“安装中心”对话框图附1.2“支持规则”对话框图附1.3“服务器配置”对话框(5)参考教材安装Microsoft Visual Studio 20102、visual studio2010的安装步骤抄书(课本P22)四、实验结果能够按要求安装SQL Server 2008数据库管理系统软件和visual studio2010软件,并认识和体验SQL Server 2008软件的功能。
五、实验心得课程名:数据库应用与开发时间:2014.9.18实验二创建数据库和修改数据库一、实验目的与要求1、熟悉数据库的创建命令的使用2、学会查看和修改数据库3、学会删除数据库二、实验器材微机+windows操作系统+SQL SERVER2008+SSMS三、实验容1.在D盘根目录下创建一个数据库db_temp,该数据库中有两个数据文件,其中主数据文件db_temp.mdf为10MB,最大大小为100MB,按10MB方式增长,一个数据文件db_temp1.ndf,,初始大小为10MB,最大大小为不限制,按10%增长,db_temp_log1,db_temp_log两个日志文件大小均为5MB,最大限制均为为5MB,增长方式为5MB2给db_temp数据库添加一个数据文件db_temp2,文件的大小为10MB,最大大小为100MB,增长方式按10%增长.到文件组fgroup3.查看和修改数据库选项4.为数据库更名5.删除数据库四、实验步骤1、启动SQL SERVER 2008,选择SSMS组件。
《数据库与信息系统》实验4指导解析_4-8_v2

CREATE TABLE CustomerBuyBook
Select Name, BookName, Amount
注意:该语句运行成功后,需
From Customer Join orders ON Customer.CustomerCode=orders.CustomerCode Join OrderDetail ON orders.OrderCode=OrderDetail.OrderCode Join Book ON OrderDetail.BookCode=Book.BookCode;
Update CustomerEvaluation Set VIPClass='C', EvaluateDate=SYSDATE()
Where VIPClass='D' AND CustomerCode IN (Select CustomerCode From Customer Where Year(LoginDate)<2016);
或
注意插入的值的类型,字符 串类型要加引号,数值不加 引号。
Insert Into OrderDetail (OrderCode, BookCode, Amount) Values('08110801', '0701', 3) ;
如果插入主键(OrderCode, BookCode)重复的记录,会报错如图 4.20 所示。
4.使用 INSERT 语句向表中插入记录。 解析:数据插入语句是 INSERT INTO,一般有两种格式,第一种是直接插入记录;第二种是将 一个查询结果插入到指定的表中。其格式分别为: 语法格式 1:
INSERT INTO 数据表[(字段名 1,字段名 2…)] VALUES(表达式 1,表达式 2…)) 语法格式 2: INSERT INTO 数据表[(字段名 1,字段名 2…)] SELECT 语句 (1)向 publisher 表中添加一条记录:66,群众出版社,0321-76584391。 解析:当插入一个完整的记录时,可以省略字段名,但字段值次序要与表中字段的次序一一对 应;如果只指定部分字段的值,其他字段取空值或默认值,则必须指定字段名,字段名次序可 与表中字段的次序不同,但字段值必须和列出的字段名次序一一对应。注意非空字段必须列出 和有值,字符串常量和日期型常量都使用单引号括起来。另外:插入新记录的主键不能与表中 已有记录的主键相同。
数据库原理及应用实验指导★---实验4_SQL语言——SELECT查询操作[1]
![数据库原理及应用实验指导★---实验4_SQL语言——SELECT查询操作[1]](https://img.taocdn.com/s3/m/3c9fb119fad6195f312ba66a.png)
实验4 SQL 语言——SELECT 查询操作1实实验验44 S S Q Q L L 语语言言————S S E E L L E E C C T T 查查询询操操作作实验示例实验示例中要使用包括如下三个表的“教学管理”数据库JXGL :(1)学生表Student ,由学号(Sno)、姓名(Sname)、性别(Ssex)、年龄(Sage)、所在系(Sdept)五个属性组成,记作:Student(Sno,Sname,Ssex,Sage,Sdept),其中主码为Sno 。
(2)课程表Course ,由课程号(Cno)、课程名(Cname)、先修课号(Cpno)、学分(Ccredit)四个属性组成,记作:Course(Cno,Cname,Cpno,Ccredit),其中主码为Cno 。
(3)学生选课SC ,由学号(Sno)、课程号(Cno)、成绩(Grade)三个属性组成,记作:SC(Sno,Cno,Grade),其中主码为(SNO,CNO)。
1、在SQL SERVER 查询分析器或企业管理器(以具有相应操作权限的某用户登录)的SQL 操作窗口中执行如下命令创建数据库。
需要说明的是不同数据库系统其创建数据库的命令或方式有所不同。
CREATE DATABASE JXGL2、刷新数据库目录后,选择新出现的JXGL 数据库,在SQL 操作窗口中,创建Student 、SC 、Course 三表及表记录插入命令如下:Create Table Student( Sno CHAR(5) NOT NULL PRIMARY KEY(Sno),Sname VARCHAR(20),Sage SMALLINT CHECK(Sage>=15 AND Sage<=45),Ssex CHAR(2) DEFAULT '男' CHECK (Ssex='男' OR Ssex='女'),Sdept CHAR(2));Create Table Course( Cno CHAR(2) NOT NULL PRIMARY KEY(Cno),Cname VARCHAR(20),Cpno CHAR(2),Ccredit SMALLINT);Create Table SC( Sno CHAR(5) NOT NULL CONSTRAINT S_F FOREIGN KEY REFERENCES Student(Sno), Cno CHAR(2) NOT NULL,Grade SMALLINT CHECK ((Grade IS NULL) OR (Grade BETWEEN 0 AND 100)),PRIMARY KEY(Sno,Cno),数据库原理与应用实验指导2FOREIGN KEY(Cno) REFERENCES Course(Cno));INSERT INTO Student VALUES('98001','钱横',18,'男','CS');INSERT INTO Student VALUES('98002','王林',19,'女','CS');INSERT INTO Student VALUES('98003','李民',20,'男','IS');INSERT INTO Student VALUES('98004','赵三',16,'女','MA');INSERT INTO Course VALUES('1','数据库系统', '5',4);INSERT INTO Course VALUES('2','数学分析',null ,2);INSERT INTO Course VALUES('3','信息系统导论','1',3);INSERT INTO Course VALUES('4','操作系统原理','6',3);INSERT INTO Course VALUES('5','数据结构','7',4);INSERT INTO Course VALUES('6','数据处理基础',null,4);INSERT INTO Course VALUES('7','C 语言','6',3);INSERT INTO SC VALUES('98001','1',87);INSERT INTO SC VALUES('98001','2',67);INSERT INTO SC VALUES('98001','3',90);INSERT INTO SC VALUES('98002','2',95);INSERT INTO SC VALUES('98002','3',88);[例1] 查考试成绩大于等于90的学生的学号。
数据库实验四报告

《数据库原理与应用》实验报告实验名称:班级:学号:姓名:一、实验目的(1)了解Oracle数据库中的用户管理,模式,权限管理和角色管理。
(2)掌握为用户分配权限的方法。
(3)了解为不同用户分配不同权限的目的及原因。
二、实验过程1.用系统帐户sys登录数据库,分别创建数据库内部用户user_one和user_two,创建时自己为用户分配帐户口令。
语句:create user user_oneidentified by 123456default tablespace userstemporary tablespace tempquota unlimited on users;create user user_twoidentified by 123456default tablespace userstemporary tablespace tempquota unlimited on users;执行结果:2.为了使两位用户登录数据库请为其授予相应的权限。
语句:grant create session to user_one;grant create session to user_two;执行结果:3.授予用户user_one在自己模式下创建表的权限,在任何模式下删除表的权限,授予用户user_two可以在任何模式下创建表的权限,查询任何模式下表中数据的权限和在任何模式下创建视图的权限。
语句:grant create table,drop any table to user_one;grant create any table,create any view,select any table to user_two;执行结果:4.分别用user_one和user_two登录,写出相应的SQL语句验证为其授予的权限。
(如果建立的表中有主键约束,需要预先授予user_one和user_two用户create any index的权限。
数据库原理与应用实验报告四

计算机工程系实验报告学生信息系别计算机学院专业计算机科学与技术班级17计科2+2 姓名徐浩俊学号2017031601025实验信息课程名称数据库原理与应用实验名称实验4 数据操作实验时间指导教师文琦批改情况成绩评阅教师文琦实验目标:1.掌握各种录入数据至数据库表的方法。
2.掌握修改数据库表中数据的方法。
3.掌握删除数据库表中数据的方法。
4.掌握复制数据库表的方法。
实验结果:利用shiyan4.sql文件中的脚本生成相应的数据库及数据表。
1.根据实验3.1步骤完成从Eecel工作表(非SQL Server数据源数据)导入SQL Server数据库表的方法(注意学生表S结构已存在),回答以下问题。
①请从素材中选择自己班级的Excel表格,若表格不满足数据库中的关系则需要稍加修改,再将表里的数据导入学生表S中。
导入是否会遇到问题?如何解决?无法直接映射,需要修改表格。
只保留一行名称。
②请将最后导入在数据库的数据截图。
③有无更简单的方法?有,直接在编辑表中粘贴数据。
2.将数据库表T的数据交互式录入并截图说明。
(P46)3.请使用SQL语句完成数据库表C的数据录入,将相应的SQL语句及最终存储的数据截图说明。
可否用一条insert into语句一次插入多行数据,如有,请描述相应的SQL语句。
USE jxskGOINSERT INTO C VALUES('C1','程序设计','60')GOUSE jxskGOINSERT INTO C VALUES('C1','课程1','60'),('C1','课程2','80'),('C1','课程3','100')GO4.完成实验3.2后,思考利用SQL语句完成以下问题。
①现将信息系归为计算机系,数据表T中哪些数据需要修改,请使用SQL 语句完成,并将最终修改后的数据截图。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验 JDBC基础(3)一、相关知识点1、JDBC基本概念2、JDBC数据增、删、改,事务控制等二、实验目的:理解Java连接数据库的基本概念。
理解利用Statement对象、PreparedStatement对象进行增、删、改操作,理解事务的概念和JDBC编程方式。
三、实验内容:1、利用Statement对象进行数据添加。
第一步:修改PublisherManager类的createPublisher方法,将其中的insert语言改成用Statement 对象执行;第二步:运行图书管理系统,进行添加出版社测试。
【实验结果与分析】A、写出替换的代码部分。
Connection conn=null;try {conn=DBUtil.getConnection();String sql="select * from BeanPublisher wherepubid='"+p.getPubid()+"'";conn.createStatement();//st.setString(1,p.getPubid());if(rs.next()) throw new BusinessException("出版社编号已经被占用");rs.close();st.close();sql="select * from BeanPublisher wherepublisherName='"+p.getPublisherName()+"'";st=conn.createStatement();// st.setString(1, p.getPublisherName());rs=st.executeQuery(sql);if(rs.next()) throw new BusinessException("出版社名称已经存在");rs.close();st.close();sql="insert into BeanPublisher(pubid,publisherName,address)values('"+p.getPubid()+"','"+p.getPublisherName()+"','"+p.getAddress()+"')";st=conn.createStatement();//st.setString(1, p.getPubid());//st.setString(2, p.getPublisherName());//st.setString(3,p.getAddress());st.execute(sql);st.close();} catch (SQLException e) {e.printStackTrace();throw new DbException(e);}2、利用insert语句添加数据时,未指定字段值处理。
第一步:运行图书管理系统,打开读者类别管理界面,并尝试添加一个读者类别;系统将会报一个错误,请分析说明错误原因。
reader.Typeid 是主码,不能为空第二步:通过数据库表结构的修改,解决上述问题。
并用同样的方式解决图书借阅功能的bug。
打开企业管理器;打开beanreadertype 表;打开设计表;将标识改成是;第三步:如果表结构不修改,应该如何修改程序,使新增读者类别的ID为表中现有数据的最大ID值+1。
public void createReaderType(BeanReaderType rt) throws BaseException{ if(rt.getReaderTypeName()==null|| "".equals(rt.getReaderTypeName()) || rt.getReaderTypeName().length()>20){throw new BusinessException("读者类别名称必须是1-20个字");}if(rt.getLendBookLimitted()<0 || rt.getLendBookLimitted()>100){ throw new BusinessException("借阅图书数量必须在0-100之间");}Connection conn=null;try {conn=DBUtil.getConnection();String sql="select * from BeanReaderType where readerTypeName=?";pst.setString(1, rt.getReaderTypeName());if(rs.next()) throw new BusinessException("读者类别名称已经被占用");rs.close();pst.close();sql="select max(readerTypeId)from BeanReadertype";int i=1;pst=conn.prepareStatement(sql);rs = pst.executeQuery();//id=rs.getint +1;if(!rs.next()){//是否已经有idi=1;}else{i+=rs.getInt(1);}sql="insert intoBeanReaderType(readerTypeId,readerTypeName,lendBookLimitted) values(?,?,?)";pst=conn.prepareStatement(sql);pst.setInt(1,i);pst.setString(2, rt.getReaderTypeName());pst.setInt(3,rt.getLendBookLimitted());pst.execute();rs.close();pst.close();} catch (SQLException e) {e.printStackTrace();throw new DbException(e);}finally{if(conn!=null)try {conn.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}3、利用PreparedStatement对象进行数据修改。
在SystemUserManager类中,新建一个modifyUserName方法,实现用户名称(username字段)的修改功能。
并修改其main函数,将admin用户的名称改为:超级管理员。
【实验结果与分析】A、请提供方法代码和main函数代码。
public void modifyUserName(String username)throws BaseException{ Connection conn=null;try {conn=DBUtil.getConnection();String sql = "update beansystemuser set username = '"+username+"' where userid='admin'";int rs = st.executeUpdate(sql);} catch (SQLException e) {e.printStackTrace();throw new DbException(e);}finally{if(conn!=null)try {conn.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}public static void main(String[] args){BeanSystemUser user=new BeanSystemUser();user.setUserid("admin");user.setUsername("系统管理员");user.setUsertype("管理员");try {new SystemUserManager().modifyUserName("超级管理员");} catch (BaseException e) {// TODO Auto-generated catch blocke.printStackTrace();}}B、思考:如果上述方法的返回值为布尔类型,即如果成功修改了用户名称,则返回true,如果用户不存在或修改失败返回false。
应该如何完善代码。
提示:主要statement或PreparedStatement对象的execute方法和executeUpdate方法的区别。
public static void main(String[] args){BeanSystemUser user=new BeanSystemUser();user.setUserid("admin");user.setUsername("系统管理员");user.setUsertype("管理员");try {new SystemUserManager().modifyUserName("超级管理员1");} catch (BaseException e) {// TODO Auto-generated catch blocke.printStackTrace();}}public void modifyUserName(String username)throws BaseException{Connection conn=null;try {conn=DBUtil.getConnection();String sql = "update beansystemuser set username = '"+username+"' where userid='admin'";boolean rs = st.execute(sql);if(rs == true)System.out.print("ok");elseS ystem.out.print("no");} catch (SQLException e) {e.printStackTrace();throw new DbException(e);}finally{if(conn!=null)try {conn.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}4、Delete语句的执行。