当前位置:文档之家› Web数据库学生实验报告2015版

Web数据库学生实验报告2015版

Web数据库学生实验报告2015版
Web数据库学生实验报告2015版

Web数据库技术教师实验指导手册及评分标准

院系:信息科学与技术学院

专业:信息管理与信息系统

班级:信A1321/22

任课教师:张海

实验报告(一)

1、请设计一个工程类通过配置文件如下db.properties来获得数据库连接的相关信息,并通过

该配置文件获得数据库连接对象。(20分)

db.properties

driver=org.gjt.mm.mysql.Driver

url=jdbc\:mysql\://127.0.0.1/\u5B66\u751F\u5E93

userName=admin

pwd=admin

public class connectionFactory {

public static Connection getConnection() throws SQLException{

}

}

请把getConnection()方法补全。要求设计合理规范,必须有截图。

答案:

}

2、已知学生定义如下:

public class student {

private int id;

private String stuId;

private String name;

private String domCard;//楼栋宿舍号“31-507”

private String bedNo;//床铺号

public student(String stuId, String name, String domCard, String bedNo) {

super();

this.stuId = stuId;

https://www.doczj.com/doc/a010851415.html, = name;

this.domCard = domCard;

this.bedNo = bedNo;

}

public String toString(){

return "id="+id+";学号="+stuId+”;姓名=”+name+”;宿舍号=”+domCard+”;床铺号=”+bedNo;

}

//相应get、set方法省略

}

有一

class studentDatas{

public static ArrayList students=new

ArrayList();

static{

student stu=new student("会计A001121","张三","31栋908",1);

students.add(stu);

stu=new student("会计A001166","李四","31栋908",2);

students.add(stu);

stu=new student("会计A001177","王五","31栋807",4);

students.add(stu);

}

}

现要求

(1)根据student类建立一个学生表用来保存student类的相关属性。

(2)通过jdbc,将studentDatas的students集合中的所有学生保持到学生表中;(3)通过jdbc,将学生表中所有的宿舍是” 31栋908”学生全部调整到“20栋371”宿舍;

(4)通过jdbc,删除"31栋807"床铺号是4的学生。

20分

3、ResultSet对象操作

请将上题中宿舍号最后一位是”8”的学生信息全部显示出来。

4、请用perparedStatement对象保存如下:

student stu=new student("信息A110099","刘六","31栋818",8);

student对象的实例stu到数据中。

兴趣题:

1、分页功能的实现原理

方法一:JDBC实现

用JDBC从ResultSet中取出一个指定范围(offset, span)的数据,可以采用这样的方法。

PrepareStatement ps = con.prepareStatement(sql,

ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);

ps.setMaxRows(offset span);//最终读到第几条

rs = ps.executeQuery();

rs.absolute(offset);//定位到每页的开始记录处

while(rs.next())

// conn.prepareStatement(sql,游标类型,能否更新记录);

// 游标类型:

// ResultSet.TYPE_FORWORD_ONLY:只进游标

// ResultSet.TYPE_SCROLL_INSENSITIVE:可滚动。但是不受其他用户对数据库更改的影响。

// ResultSet.TYPE_SCROLL_SENSITIVE:可滚动。当其他用户更改数据库时这个记录也会改变。

// 能否更新记录:

// ResultSet.CONCUR_READ_ONLY,只读

// ResultSet.CONCUR_UPDATABLE,可更新

方法二:数据库的sql语言实现

Mysql 的limit SQL为

Select * from message where forum_id = ? and created_time > ? order by created_time desc limit ?, ?

后面的两个limit ?, ? 分别为 offset, span。

Oracle的limit SQL为

select * from ( select row_.*, rownum rownum_ from (Select * from message where forum_id = ? and created_time > ? order by created_time desc) row_ where rownum <= ?) where rownum_ > ?后面的两个limit ?, ? 分别为 offset span, offset。

2、请执行在mysql中执行insert into 宿舍表(学号,姓名,宿舍,床铺) values(‘会计A001121’,’张三’,’24栋908’,1)两次。

请通过JDBC将宿舍表中学号重复的记录去掉,只保留其中的一条。

5、事务处理

请先在mysql中运行如下语句:

CREATE TABLE `账户表` (

`账户名` varchar(10) NOT NULL DEFAULT '',

`金额` double DEFAULT NULL,

PRIMARY KEY (`账户名`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------

-- Records of 账户表

-- ----------------------------

INSERT INTO 账户表 VALUES ('张三', '100');

INSERT INTO 账户表 VALUES ('李四', '200');

INSERT INTO 账户表 VALUES ('王五', '50');

请运行如下程序查看结果

(1)程序1:

public class trans1 {

/**

* @param args

*/

public static void main(String[] args) {

Connection conn1=null;

Statement stmn1=null;

try {

conn1=connectionFactory.getConnection();

conn1.setAutoCommit(true);

stmn1=conn1.createStatement();

stmn1.executeUpdate("update 账户表 set 金额=金额+5 where 账户名='张三'");

System.out.println("update语句执行");

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}finally{

if(stmn1!=null)

try {

stmn1.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

if(conn1!=null)

try {

conn1.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

(2)程序2:

public class trans2 {

/**

* @param args

*/

public static void main(String[] args) {

Connection conn1=null;

Statement stmn1=null;

try {

conn1=connectionFactory.getConnection();

conn1.setAutoCommit(false);

stmn1=conn1.createStatement();

stmn1.executeUpdate("update 账户表 set 金额=金额+5 where 账户名='张三'");

System.out.println("update语句执行");

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}finally{

if(stmn1!=null)

try {

stmn1.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

if(conn1!=null)

try {

conn1.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

请查询数据库记录内容。

(3)完整事务程序3:

public class trans2 {

/**

* @param args

*/

public static void main(String[] args) {

Connection conn1=null;

Statement stmn1=null;

try {

conn1=connectionFactory.getConnection();

conn1.setAutoCommit(false);

stmn1=conn1.createStatement();

stmn1.executeUpdate("update 账户表 set 金额=金额+5 where 账户名='张三'");

https://www.doczj.com/doc/a010851415.html,mit();

System.out.println("insert语句执行");

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

try {

conn1.rollback();

} catch (SQLException e1) {

// TODO Auto-generated catch block

e1.printStackTrace();

}finally{

if(stmn1!=null)

try {

stmn1.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

if(conn1!=null)

try {

conn1.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

如果需要将下面"update"及"insert"作为一个事务来整体提交,请问下面代码如果改?

public class trans3 {

/**

* @param args

*/

public static void main(String[] args) {

Connection conn1=null;

Connection conn2=null;

Statement stmn1=null;

Statement stmn2=null;

try {

conn1=connectionFactory.getConnection();

conn2=connectionFactory.getConnection();

stmn1=conn1.createStatement();

stmn1.executeUpdate("update 账户表 set 金额=金额+5 where 账户名='张三'");

System.out.println("update语句执行");

stmn2=conn2.createStatement();

stmn2.executeUpdate("INSERT INTO 账户表 VALUES ('张三',

'500')");

System.out.println("insert语句执行");

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}finally{

if(stmn1!=null)

try {

stmn1.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

if(stmn2!=null)

try {

stmn1.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

if(conn1!=null)

try {

conn1.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

已知有线程类定义如下:

import java.sql.Connection;

import java.sql.SQLException;

import java.sql.Statement;

import java.util.Date;

public class clientThread extends Thread{ private String sql=null;

private int wait=4000;

public String getSql() {

return sql;

}

public void setSql(String sql) {

this.sql = sql;

}

public int getWait() {

return wait;

}

public void setWait(int wait) {

this.wait = wait;

}

public void run(){

Connection conn= connectionFactory.getConnection();

try {

conn.setAutoCommit(false);

Statement stmn=conn.createStatement();

stmn.executeUpdate(sql);

System.out.println((new Date()).toString()+" 执行 "+sql);

this.sleep(wait);

https://www.doczj.com/doc/a010851415.html,mit();

System.out.println("线程结束"+(new Date()).toString());

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

有两个测试类client1.java

public class client1 {

/**

* @param args

*/

public static void main(String[] args) {

clientThread client=new clientThread();

client.setWait(10000);

client.setSql("update 宿舍表 set 姓名=姓名+'1' where 床铺=1");

client.start();

}

}

public class client2 {

/**

* @param args

*/

public static void main(String[] args) {

clientThread client=new clientThread();

client.setWait(6000);

client.setSql("update 宿舍表 set 姓名=姓名+'A' where 床铺=1");

client.start();

}

}

请先执行client1然后马上执行client2,等所有程序,数据库中床铺=1的记录内容是什么?为什么会这样?

实验报告(二)

答案:

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

response.setContentType("text/html");

PrintWriter out = response.getWriter();

out.println("");

out.println("");

out.println(" A</p><p>Servlet");

out.println("

");

out.println("

");

Date date = new Date() ;

out.print(date.toLocaleString()) ;

out.println("

");

out.println("

");

out.println("");

out.flush();

out.close();

}

url配置写法:生成servlt时将工程名去掉,只保留文件名,便于访问

2、领会多用户并发访问的机制,请建立一个HttpServlet——“servletUsers”类,在该类的成员代码如下:

public class serveltUsers extends HttpServlet{

private Integer x=1;

public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{

this.doPost(request,response);

}

public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{

response.setContentType("text/html");

response.setCharacterEncoding("utf-8");

PrintWriter out=response.getWriter();

out.println("

Transitional//EN\">");

out.println("");

out.println(" A Servlet");

out.println(" ");

out.println("当前x的值是"+x);

out.flush();

synchronized(x){

x++;

Thread thread=Thread.currentThread();

try{

thread.sleep(1000*5);

}catch(InterruptedException e){

// TODO Auto-generated catch block

e.printStackTrace();

}

out.println("当前serlvet实例阻塞5秒后,当前x的值是"+x);

out.println(" ");

out.println("");

out.flush();

out.close();

}

}

请在5秒内用两个浏览器窗口浏览该HttpServlet类,看看效果如何。为什么是这个效果!20分。

答:效果是当第一个界面还未刷新,第二个界面无法看到效果。

原因是:在全局变量x上加了锁,保证了同一时间,只有一个浏览器才能获得x当前值

3、请设计一个servlet,当连续三次访问该servlet是分别向客户输出:

第1次:用户浏览器中显示:蓝色颜色的“联系访问中的第1次”

第2次:用户浏览器中显示:红色颜色的“联系访问中的第2次”

第3次:用户浏览器中显示:黑色颜色的“联系访问中的第3次”

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

this.doPost(request, response) ;

}

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

request.setCharacterEncoding("utf-8") ;

response.setCharacterEncoding("utf-8") ;

response.setContentType("text/html");

PrintWriter out = response.getWriter();

out.println("

Transitional//EN\">");

out.println("");

out.println(" A Servlet");

out.println("

");

out.print("

");

x++ ;

//蓝色 0,0,255 红色:rgb(255,0,0) 黑色:rgb(0,0,0)

if (x==1) {

out.print("

");

}else if (x==2) {

out.print("

");

}else if (x==3) {

out.print("

");

x = 0 ;

}

out.print("第"+x+"次:");

out.print("“连续访问中的第"+x+"次”");

out.print("

");

out.print("

");

out.print("

");

out.println("");

out.flush();

out.close();

}

4、请将提供的servelt.rar工程解压后添加到myeclipse工作区中,打开mysql将工程中的db目录下的”学生库.sql”导入到mysql数据库中。

在工程的serviceDao包中有一个studentServicesDao,请根据代码中注释的功能结合jdbc 中dao模式的设计要求将

public student login(String stuId,String name)throws myException{

student stu = new student() ;

if(stuId!=null&&!"".equals(stuId)&&name!=null&&!"".equals(name)) {

return null ;

}else {

Connection conn=null;

try {

conn=connectionFactory.getConnection();

String sql="select * from 学生基本情况表 where 学号 ='"+stuId+"' and 姓名='"+name+"'";

Statement stat=conn.createStatement();

ResultSet rs=stat.executeQuery(sql);

stu.setName(name) ;

https://www.doczj.com/doc/a010851415.html,mit();

connectionFactory.closeAll(rs, stat, conn);

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return stu ;

}

} }补充完整。20分。

5、现在在webroot下有index.jsp用来展现学生的登录,现在要求学生输入学号、姓名后交给login这个servlet去处理,login的功能要求如下:

(1)判断用户输入的学号和姓名在学生基本表中是否存在,如果存在提前该学生信息,并将这个学生信息交给另外一个servlet---“dispStudent”去显示。

(2)如果用户输入的学号和姓名在学生基本表中不存在,就直接给用户反馈”找不到输入姓名的学生”。

DispStudent这个servlet的功能:

显示请求转发过来的学生所有信息。

1)

public class login extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

doPost(request, response) ;

}

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

request.setCharacterEncoding("utf-8") ;

response.setCharacterEncoding("utf-8") ;

response.setContentType("text/html;charset=utf-8");

PrintWriter out = response.getWriter();

boolean isOk = false;

String name=request.getParameter("name");

String stuId=request.getParameter("stuId");

if(name==null||"".equals(name)||stuId==null||"".equals(stuId)){

out.print("用户名或者密码为空") ;

}else{

Connection conn = null ;

try {

conn = connectionFactory.getConnection() ;

String sql = "select * from 学生基本情况表 where 姓名 ='"+name+"' and 学号='"+stuId+"'" ;

Statement stat = conn.createStatement() ;

ResultSet rs = stat.executeQuery(sql) ;

if (rs.next()) {

isOk = true ;

}

https://www.doczj.com/doc/a010851415.html,mit() ;

connectionFactory.closeAll(rs, stat, conn ,null) ;

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

if(isOk==true){

request.setAttribute("stuname",name);

r equest.getRequestDispatcher("/DispStudent").forward(request, response); }else{

out.print("用户名或者密码错误") ;

// response.sendRedirect("index.jsp");

}

}

}

2)

public class DispStudent extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

this.doPost(request, response);

}

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

response.setContentType("text/html;charset=utf-8");

//String className=request.getParameter("stuId").substring(0,5);

String stuname=(String)request.getAttribute("stuname");

student stu=null;

Connection conn=null;

try {

conn=connectionFactory.getConnection();

String sql="select * from 学生基本情况表 where 姓名 like '"+stuname+"'";

Statement stat=conn.createStatement();

ResultSet rs=stat.executeQuery(sql);

System.out.println(rs.toString());

while(rs.next()){

stu=new student();

stu.setId(rs.getInt("id"));

stu.setStuId(rs.getString("学号"));

stu.setPro(rs.getString("专业名称"));

stu.setName(rs.getString("姓名"));

stu.setSex(rs.getString("性别"));

}

https://www.doczj.com/doc/a010851415.html,mit();

connectionFactory.closeAll(rs, null, conn, null);

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

PrintWriter out = response.getWriter();

out.println("

Transitional//EN\">");

out.println("");

out.println(" A Servlet");

out.println("

width='400'>

");

out.print("

");

out.println("

id学号姓名专业名称性别

"+stu.getId()+""+stu.getStuId()+""+st u.getName()+""+stu.getPro()+""+stu.getSex()+"
");

out.println("");

out.flush();

out.close();

}

}

6、用户访问统计,当用户首次访问某个servlet时,该servlet的访问总次数加1,如果该用户已经访问了该servlet,再访问时不加1,要求该统计次数能在其他servlet中被调用。

//统计访问次数

public int cisu(HttpServletRequest request, HttpServletResponse response,String name) throws Exception {

//判断是否是同一个用户

Cookie[] cookies = request.getCookies() ;

for (int i = 0; cookies!=null&&i < cookies.length; i++) {

if (cookies[i].getName().equals("name")) {

if (!URLDecoder.decode(cookies[i].getValue(),

"UTF-8").equals(name)) {

x++ ;

}

}

}

//用户再次访问

Cookie cookie = new Cookie("name",URLEncoder.encode(name, "UTF-8")) ;

cookie.setMaxAge(24*3600) ;

cookie.setPath("/servelt") ;

response.addCookie(cookie) ;

return x ;

}

7、cookie使用,当用户输入用户名是张三,密码是1234时,请在servlet中创建一个有效时间是300秒的cookie对象,并回传到用户浏览器,浏览器再访问另外一个servlet,查看该cookie 是否存在。

保存用户名和密码

if (name.equals("张三")&& stuId.equals("1234")) {

String name1 = URLEncoder.encode(name, "UTF-8");

Cookie cookie = new Cookie("name", name1) ;

cookie.setMaxAge(300) ;

cookie.setPath("/servelt") ;

response.addCookie(cookie) ;

String stuId1 = URLEncoder.encode(stuId, "UTF-8");

Cookie cookie2 = new Cookie("stuId", stuId1) ;

cookie2.setMaxAge(300) ;

cookie2.setPath("/servelt") ;

response.addCookie(cookie2) ;

}

获取用户名和密码

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

request.setCharacterEncoding("utf-8");

response.setCharacterEncoding("utf-8");

response.setContentType("text/html");

PrintWriter out = response.getWriter() ;

Cookie cookie [] = request.getCookies() ;

for (int i = 0;cookie!=null&& i < cookie.length; i++) {

if (cookie[i].getName().equals("name")) {

String name = URLDecoder.decode(cookie[i].getValue(), "UTF-8");

out.println("用户名:"+name) ;

}

if (cookie[i].getName().equals("stuId")) {

String stuId = URLDecoder.decode(cookie[i].getValue(), "UTF-8");

out.println("密码:"+stuId) ;

}

}

}

8、请设计一种过滤器实现权限控制机制。如果用户进入web应用没有登入时,要求用户必须进入登入页面。20分

public class loginFiler implements Filter {

public void init(FilterConfig filterConfig) throws ServletException {

// TODO Auto-generated method stub

}

public void doFilter(ServletRequest request, ServletResponse response,

FilterChain chain) throws IOException, ServletException {

// 获得在下面代码中要用的request,response,session对象

HttpServletRequest servletRequest = (HttpServletRequest) request;

HttpServletResponse servletResponse = (HttpServletResponse) response;

HttpSession session = servletRequest.getSession();

// 获得用户请求的URI

String path = servletRequest.getRequestURI();

//System.out.println(path);

String username = (String) session.getAttribute("username");

// 登陆页面无需过滤

if(path.indexOf("/login.jsp") > -1) {

chain.doFilter(servletRequest, servletResponse);

return;

西北工业大学数据库实验报告

1.利用图形用户界面创建,备份,删除和还原数据库和数据表(50分,每小题5分) ●数据库和表的要求(第五版教材第二章习题 6 要求的数据库) 数据库名:SPJ,其中包含四张表:S表, P表, J表, SPJ表 ●完成以下具体操作: (1)创建SPJ数据库,初始大小为 10MB,最大为50MB,数据库自动增长,增长方 式是按5%比例增长;日志文件初始为2MB,最大可增长到5MB,按1MB增长。 数据库的逻辑文件名和物理文件名均采用默认值。 (2)在SPJ数据库中创建如图2.1-图2.4的四张表(只输入一部分数据示意即可)。 S表: P表: J表: SPJ表:

(3)备份数据库SPJ(第一种方法):备份成一个扩展名为bak的文件。(提示: 最好先删除系统默认的备份文件名,然后添加自己指定的备份文件名) (4)备份数据库SPJ(第二种方法):将SPJ数据库定义时使用的文件(扩展名为 mdf,ldf的数据文件、日志文件等)复制到其他文件夹进行备份。 原位置: 新的位置: (5)删除已经创建的工程项目表(J表)。 (6)删除SPJ数据库。(可以在系统默认的数据存储文件夹下查看此时SPJ数据 库对应的mdf,ldf文件是否存在) 删除过后文件不存在 (7)利用备份过的bak备份文件还原刚才删除的SPJ数据库。(还原数据库)

(8)利用备份过的mdf,ldf的备份文件还原刚才删除的SPJ数据库。(附加) (9)将SPJ数据库的文件大小修改为100MB。 (10)修改S表,增加一个联系电话的字段sPhoneNo,数据类型为字符串类 型。 2.利用SQL语言创建和删除数据库和数据表(50分,每小题5分) ●数据库和表的要求 数据库名:Student,其中包含三个表:S:学生基本信息表;C:课程基本信息表;SC:学生选课信息表。 ●完成以下具体操作: (1)用SQL语句创建如图2.5-图2.7要求的数据库Student,初始大小为20MB, 最大为100MB,数据库自动增长,增长方式是按10M兆字节增长;日志文件初

数据库原理实验报告(数据查询)

数据库原理实验报告 实验三数据查询 班级:××× 姓名:××× 学号:××× 数据查询 一、[实验目的] 1.掌握SQL的单表查询操作

2.掌握SQL的连接查询操作 3.掌握SQL的嵌套查询操作 4.掌握SQL的集合查询操作 二、[实验内容] 本实验的主要内容是: 1.简单查询操作。包括投影、选择条件表达,数据排序,使用临时表等。 2.连接查询操作。包括等值连接、自然连接、求笛卡儿积、一般连接、外连接、内连接、左连接、右连接和自连接等。 3.在SQL Server查询分析器中,使用IN、比较符、ANY或ALL和EXISTS操作符进行嵌套查询操作。 4.组合查询与统计查询。 (1)分组查询实验。该实验包括分组条件表达、选择组条件的表达方法。 (2)使用函数查询的实验。该实验包括统计函数和分组统计函数的使用方法。 (3)组合查询实验。 (4)计算和分组计算查询的实验。 三、[实验方法] 1.将查询需求用Transact-SQL语言表示。 2.在SQL Server查询分析器的输入区中输入Transact-SQL查询语句。 3.设置查询分析器结果区为Standard Execute(标准执行)或Execute to Grid方式。 4.发布执行命令,查看查询结果;如果结果不正确,进行修改,直到正确为止。 5 查询分析器的主要作用是编辑Transact-SQL,将其发送到服务器,并将执行结果及分析显示出来(或进行存储)。查询分析功能主要是通过测试查询成本,判断该查询是否需要增加索引以提高查询速度,并可以实现自动建立索引的功能。 图5- 错误!未定义书签。SQL Server 2000查询分析器 查询分析器的界面如图5- 错误!未定义书签。所示。在查询生成器中的左边窗口是对象浏览器,其中按树结构列出了数据库对象;右上方是SQL代码区域,用于输入SQL的查

数据库综合实验报告(学生成绩管理系统)

数据库综合实验报告 班级: 学号: 姓名: 2013年5月

数据库应用系统的初步开发 一、实验目的 1.掌握数据库设计的基本技术,熟悉数据库设计的每个步骤中的任务和实施方案,并加深对数据库系统系统概念和特点的理解。 2.初步掌握基于C/S的数据库应用系统分析、设计和实现方法。 3.进一步提高学生的知识综合运用能力。 二、实验内容 在SQL Server2000数据库管理系统上,利用 Microsoft Visual C++ 6.0开发工具开发一个学生成绩管理系统的数据库应用系统。 三、实验过程 (一.)系统需求说明 1系统功能要求设计:此系统实现如下系统功能: (1)使得学生的成绩管理工作更加清晰、条理化、自动化。 (2)通过用户名和密码登录系统,查询课程基本资料,学生所选课程成绩,修改用户密码等功能。容易地完成学生信息的查询操作。 (3) 设计人机友好界面,功能安排合理,操作使用方便,并且进一步考虑系统 在安全性,完整性,并发控制,备份和恢复等方面的功能要求。 2系统模块设计 成绩管理系统大体可以分成二大模块如,一是学生的基本信息模块,里面应 该包含学生的各方面的基本信息;再者便是课程管理模块,在该模块中应该包 含有对学生成绩信息的查询和处理,;再其次还有教师、课程等相关信息的模块; 可以得到系统流程图: 登陆失败 学生管课 程 管 退出系统用户 验证 成 绩 查 登 陆 成 功

3 数据字典 数据项是数据库的关系中不可再分的数据单位,下表分别列出了数据的名称、数据类型、长度、取值能否为空。利用SQL Server 2000建立“学生选课”数据库,其基本表清单及表结构描述如下: 数据库中用到的表: 数据库表名关系模式名称备注 Student 学生学生学籍信息表 Course 课程课程基本信息表 Score 成绩选课成绩信息表 Student基本情况数据表,结构如下: 字段名字段类型Not Null 说明 Student _sno Char Primary key 学号 Student _sn char Not Null 学生姓名 Student _sex char ‘男’或‘女’性别 Student _dept char 系别 Student_age char 年龄 Student_address char 地址 course数据表,结构如下: 字段名字段类型约束控制说明 course_cno char 主键(primary key)课程号 char not null 课程名称course_cnam e course_hour int not null 课时 course_score numeric(2,1) not null 学分 score情况数据表,结构如下: 字段名字段类型约束控制说明 score_id int not null 成绩记录号 course_cno char 外部键课程号 student_sno char 外部键学号 score int 成绩 (二)数据库结构设计 1.概念结构设计 由需求分析的结果可知,本系统设计的实体包括: (1)学生基本信息:学号,姓名,性别。 (2)课程基本信息:课程名,课程号,分数。 2.逻辑结构设计 这些实体间的关系模式如下:

数据库实验报告完整

华北电力大学 实验报告 | | 实验名称数据库实验 课程名称数据库 | | 专业班级:学生姓名: 学号:成绩: 指导教师:实验日期:2015/7/9

《数据库原理课程设计》课程设计 任务书 一、目的与要求 1.本实验是为计算机各专业的学生在学习数据库原理后,为培养更好的解决问题和实际动手能力 而设置的实践环节。通过这个环节,使学生具备应用数据库原理对数据库系统进行设计的能力。 为后继课程和毕业设计打下良好基础。 2.通过该实验,培养学生在建立数据库系统过程中使用关系数据理论的能力。 3.通过对一个数据库系统的设计,培养学生对数据库需求分析、数据库方案设计、系统编码、界 面设计和软件调试等各方面的能力。是一门考查学生数据库原理、面向对象设计方法、软件工程和信息系统分析与设计等课程的综合实验。 二、主要内容 针对一个具有实际应用场景的中小型系统(见题目附录)进行数据库设计,重点分析系统涉及的实体、实体之间的联系,实现增加、删除、更新、查询数据记录等基本操作。大致分为如下步骤: 1. 理解系统的数据库需求,分析实体及实体间联系,画出E-R图: 1)分析确定实体的属性和码,完成对该实体的实体完整性、用户自定义完整性的定义。 2)设计实体之间的联系,包括联系类型和联系的属性。最后画出完整的E-R图。 2.根据设计好的E-R图及关系数据库理论知识设计数据库模式: 1)把E-R图转换为逻辑模式; 2)规范化设计。使用关系范式理论证明所设计的关系至少属于3NF并写出证明过程;如果不属于3NF则进行模式分解,直到该关系满足3NF为止,要求写出分解过程。 3)设计关系模式间的参照完整性,要求实现级联删除和级联更新。 4)用SQL语言完成数据库内模式的设计。 3.数据库权限的设计: 1)根据系统分析,完成授权操作; 2)了解学习收回权限的操作。 4.完成用户界面的设计,对重要数据进行加密。

数据库数据查询实验报告

师学院数学与计算机科学学院 《数据库》实验报告 实验序号:07 实验项目名称:数据查询 学号2014210758 姓名邹业安专业、班级14信科 实验地点222 指导教师褚万军时间2017.6.07 一、实验目的及要求 ?掌握从简单到复杂的各种数据查询。包括:单表查询、多表连接查询、嵌套查询、集合查询。 ?掌握用条件表达式表示检索条件。 ?掌握用聚合函数计算统计检索结果。 二、实验设备(环境)及要求 1、环境要求: 硬件:PC(PII以上,128M以上存)、因特网接入; 软件:在SQL Server 2000中 三、实验容与步骤 1、一般简单查询 (1)不带条件的查询指定字段(考虑去掉和不去掉重复值两种情况)。select distinct 学号 from 选课 select 学号 from 选课

(2)查询某个表中的所有记录查询教师表中的所有记录 (3)使用单个条件的简单查询查询成绩大于50的学生的学号select 学号 from 选课where 成绩>50

(4)使用多个条件(AND关系)的查询 select工资 from教师 where工资>200 and工资<500 (5)使用多个条件(OR关系)的查询 select工资 from教师 where工资<200 or工资>500 (6)使用多个条件(混合AND和OR关系)的查询 select*from学生 where (院系='2'and生源='')or(院系='6'and生源='') (7)使用带NOT运算的查询

where not (生源='') (8)使用BETWEEN???AND???的查询 select * from 选课 where 成绩 between 86 and 93 (9)使用NOT???BETWEEN???AND???的查询select * from 选课 where 成绩 not between 76 and 93 (10)使用LIKE运算符的字符串匹配查询。

数据库实验报告

数据库实验报告

武汉理工大学 学 生 实 验 报 告 书 实验课程名称 数据库系统概论 开 课 学 院 计算机科学与技术学院 指导老师姓名 学 生 姓 名 学生专业班级 学生学号 实验课成绩

2013 — 2014 学年第二学期实验课程名称:数据库系统概论 实验项目名称SQL SEVER 2000的系 统工具及用户管理 实验 成绩 实验者专业班 级 组别 同组者实验 日期 2014年4 月24日

第一部分:实验分析与设计(可加页) 一、实验内容描述(问题域描述) 实验目的和要求:了解SQL SEVER 2000的功能及组成,熟练掌握利用SQL SEVER 2000工具创建数据库、表、索引和修改表结构及向数据库输入数据、修改数据和删除数据的操作方法和步骤,掌握定义数据约束条件的操作。 二、实验基本原理与设计(包括实验方案设计,实 验手段的确定,试验步骤等,用硬件逻辑或者算法描述) 实验内容和步骤: (1)熟悉SQL SEVER 2000的界面和操作。 (2)创建数据库和查看数据库属性。 (3)创建表、确定表的主码和约束条件。 (4)查看和修改表的结构。 (5)向数据库输入数据,观察违反列级约束时出现的情况。 (6)修改数据。 (7)删除数据,观察违反表级约束时出现的情况。 三、主要仪器设备及耗材 Windows XP SQL SERVER 2000

第二部分:实验调试与结果分析(可加页) 一、调试过程(包括调试方法描述、实验数据记录, 实验现象记录,实验过程发现的问题等) 没有错误 错误:未能建立与WORKEPLACE\XUMENGXING的链接SQL Server 不存在或访问被拒绝 原因:未启动数据库服务 二、实验结果及分析(包括结果描述、实验现象分 析、影响因素讨论、综合分析和结论等) 实验结果部分截图:

sqlserver数据库综合实验报告格式

华北科技学院计算机系综合性实验 实验报告 课程名称数据库原理与应用 实验学期 2009 至 2010 学年第一学期学生所在系部管理系 年级三年级专业班级商务B071班 学生姓名李荣妹学号 4121 任课教师郭红 实验成绩 计算机系制

《数据库原理与应用》课程综合性实验报告

(3)建表如下图: 图书表的结构 读者表的结构罚款表的结构 借阅表的结构密码表的结构 输入数据:图书 读者 S只学生,t指老师,1指没有超期,0表示超期 借阅 罚款

密码: (4)、创建视图。以sa的身份登录数据库,创建视图V1,V2,V3 create VIEW V1 create VIEW V2 create VIEW V3 AS AS AS select * from 图书 select * from 借阅 select * from 罚款 建立视图V5,查看在库的图书:create view V5 as select *from 图书 where 借阅状态=‘在库’ 建立已被借出去的图书视图 create view V6 as

select * from 图书 where 借阅状态='出库' 建立逾期未还的图书的学生视图: create view V7 as select * from 借阅 where datediff(day,convert(smalldatetime,借出日期),getdate())>’30’ and 借书证号 in(select 借书证号 from 读者,借阅 Where 借阅.借书证号=读者.借书证号 and 读者类别=‘s’ 四、物理设计和自定义完整性 建立索引:为了提高在表中搜索元组的速度,在实际实现的时候应该基于键码建立索引是表中建立索引的表项: 图书表(图书编号,条形码号)读者(借书证号)借阅(借书证号,条形码号)罚款表(借书证号,条形码号)密码(借书证号) (2)建立触发器 a.对已有借书证的读者进行查询借书是否超期(这里归定30天): create trigger T1 on 读者 for insert as select 借阅.借书证号,读者.读者姓名,图书.图书编号,图书.书名,借阅.借出日期 from 读者,借阅,图书 where 读者.借书证号=借阅.借书证号 and 图书.条形码号=借阅.条形码号 and 读者类别='s' and Datediff(day,convert(smalldatetime,借出日期),getdate())>=30 b.建立触发器T2(还书时): create trigger T2 on 借阅 for insert as begin update 图书 set 借阅状态='在库' where 条形码号=(select 条形码号 from inserted) update 借阅 set 归还日期=getdate(); update 读者 set 书数=书数-1 where 借书证号=(select 借书证号 from inserted) end c.建立触发器T3(借书书时): create trigger T3 on 借阅 for insert as begin update 图书 set 借阅状态='入库' where 条形码号=(select 条形码号 from inserted) update 借阅 set 借出日期=getdate(); update 读者 set 书数=书数+1 where 借书证号=(select 借书证号 from inserted) end d.建立触发器T4,实现超出借书数目时禁借(针对老师的): create trigger T4 on 读者 for insert

数据库实验报告大全 广工 蔡延光版

自动化学院自动化专业班学号 姓名实验时间2011.3.14 教师评定 实验题目数据定义 实验报告一 一、实验目的与要求 目的:使用SQL语言实现数据库的创建、删除;基本表的创建、删除、更新工作;以及索引的创建、删除工作。 要求:1、在SQL SERVER 2000查询分析器中,利用SQL语言中CREATE、DROP 命令实现数据库的创建及删除工作。 2、在SQL SERVER 2000查询分析器中,利用SQL语言中CREATE、ALTER及DROP命令进行基本表的创建、更新、删除工作,并实现基本表中各类完整性约束条件的限定。 3、在SQL SERVER 2000查询分析器中,利用SQL语言中CREATE、ALTER及DROP命令进行基本表中索引的创建、更新、删除工作。 4、完成上述工作后,在SQL SERVER 2000企业管理器中,查看是否成功创建实验所要求数据库、基本表、各类完整性约束条件及索引等内容。 二、实验方案 所有实验内容必须在SQL Server 2000的查询分析器中完成,设置查询分析器的结果区为Standard Execute(标准执行)或Executed Grid(网格执行)方式.发布执行命令.并在结果区中查看查询结果,如果结果不正确则需要进行修改,直到正确为止。要求完成如下内容: 1.定义数据库 定义一个借阅数据库,要求所定义的数据库大小为1M,且数据库名称为Labery_学号。 2.定义下列数据库基本表 在所定义的借阅数据库Labery_学号中,按要求定义如下数据库表: 1)书(book)

列名别名类型及长度是否可为空书号bno char(8)否 类别category varchar(10)否 书名title varchar(40)否 出版社press varchar(30)是 年份book_year Int否 作者author char(20)是 价格price decimal(7,2)否 总藏书量book_total Int否 2)借书证(card) 列名别名类型及长度是否可为空卡号cno char(7)否 姓名name char(8)否 单位department varchar(40)是 类别type char(1)否 3)借书记录(borrow) 列名别名类型及长度是否可为空卡号cno char(7)否 书号bno char(8)否 借书日期borrow_date smalldatetime否 还书日期return_date smalldatetime是 3.完整性约束条件: 主要内容为: 1)确定各基本表的主码; 2)确定各基本表的外码; 3)要求在定义各基本表的同时,确定如下完整性约束条件 1、定义各基本表主码,并且要求主属性不能为空; 2、如果有外码,定义各基本表外码; 3、要求检查借书证中属性Type的值是否为('T','G','U','F')); 4、借书记录borrow基本表中borrow_date默认日期为当前时间。4)确定各基本表哪些字段需要建立索引。

SQL查询—— 简单查询实验报告书

实验题目:SQL查询——简单查询 【实验目的与要求】 一、实验目的 1. 熟练掌握单表查询的SELECT语法结构; 2. 通过观察查询结果, 体会SELECT语句的实际应用。 二、实验要求 1.实验前做好上机实验的准备,针对实验内容,认真复习与本次实验有关的知识,完成实验 内容的预习准备工作。 2.能认真独立完成实验内容。 3.实验后做好实验总结,根据实验情况完成实验报告。 【实验环境】 PC机、Windows XP系统+SQL Server 2005 【实验内容】 基于实验一建立的EDUC 数据库,用Transact-SQL 语句实现如下查询: 1.选修了课程的学生学号; 2.计算机系的学生; 3.计算机系学生的学号和姓名; 4.计算机系和信息系的男生信息;(提示:逻辑运算符的优先级顺序) 5.选修上课编号为1且成绩在80-90 之间的学生学号和成绩,并将成绩乘以系数0.75 输出; (提示:新输出项要命名列标题) 6.没有成绩的学生的学号和上课编号; 7.选修上课编号为1或4的学生的学号和成绩,并要求对查询结果按成绩的降序 排列,如果成绩相同则按学号的升序排列;(提示:查询输出哪几项) 8.1995年1月1日(含)以后出生的学生信息,并按姓氏拼音字母顺序从前往后排列(注: 默认排序规则通常是Chinese_PRC_CI_AS,汉字按照汉语拼音的字典顺序来排序:首先按拼音,拼音相同按声调,声调相同按笔画数。)

9.姓李和刘的学生的信息; 10.不姓张王李刘的学生的学号、姓名和性别; 11.选修课程的学生人数; 12.选修上课编号为1的学生的最高分; 13.每位学生所修课程的平均分; 14.选修两门以上课程的学生; 15.总成绩大于200 分的学生的学号和总成绩。(提示:group by分组统计)【实验方法和步骤】 1.新建查询,在查询编辑器中依次按照如上实验内容编写SELECT语句完成查询。

黑大数据库实验报告

黑龙江大学 “数据库系统原理课程设计”总结报告 学院软件学院 年级2014级 专业软件工程 学号20143983 姓名陆芝浩 报告日期2016.11.9 成绩 黑龙江大学软件学院

1、开发环境 操作系统:Windows7 编程语言环境:VC++6.0 2、DBMS系统架构 3、DBMS主要功能模块 1、实现SQL语句中的Create Table建表语句,建立相应的数据库表,并生成相应的数据字典文件和数据文件。 2、实现alter table表模式的修改功能: ①能够为已建立的表添加属性。 ②能够从已建立的表中删除属性。

3、实现drop table删除表功能。 4、实现create index创建索引的功能。 5、实现drop index删除索引的功能。 6、实现insert可以向已经创建的表插入元组。 7、实现delete从已经创建的表中删除元组。 8、实现update修改表中的数据。 9、实现SELECT语句,包括: 实现单表全属性查询。 实现单表单属性查询。 实现多表的连接全属性查询。 实现多表的连接和选择条件的全属性查询。 实现多表的连接的单属性查询。 实现多表的连接和选择的单属性查询。 实现单表的选择的单属性查询。 实现单表的选择的全属性查询。 10、利用启发式关系代数优化算法进行查询优化。 11、建立访问权限,根据数据字典(DD)实现对数据库的安全性检查和完整性约束的机制。 3.1 SQL语言的词法和语法分析 (1)功能介绍 通过编译原理的知识对输入的SQL语句进行词法分析,将SQL语句拆分为若干个单词,对其进行语法分析,确定输入的SQL语句的含义. (2)相关理论 利用编译原理的相关知识,对输入的SQL语句进行模仿SQL语言的词法及语法结构的分析。

数据库实验报告

数据库实验报告 集团文件版本号:(M928-T898-M248-WU2669-I2896-DQ586-M1988)

课程名称:数据库原理与应用 实验内容:数据库安全性管理 作者所在系部:网络工程系 作者所在专业:网络工程 作者所在班级: B13521 作者姓名:李文阳 作者学号: 指导教师姓名:王振夺 北华航天工业学院教务处制 实验四数据库安全性管理 一、实验目的 1、理解数据库的安全性机制; 2、掌握SQL Server 2005的验证模式、登录管理、用户管理、角色 管理以及权限管理; 二、实验内容 (一)附加上次实验所创建的数据库“db_Library”,并回顾该库的数据表信息。 (二)设置SQL Server的安全验证模式,并以两种方式尝试登录。

(三)登录账户管理 1、以管理员身份登录SQL Server,修改sa的密码。 2、使用SQL语句创建一个SQL Server登录账户,账户名为你的名字拼音,密码自定义。创建完成后,以该账户来进行登录。 3、使用SQL语句来修改上述登录账户的密码。 4、禁用上述登录账户连接SQL Server,并进行验证。 (四)数据库用户管理 1、使用SQL语句添加db_Library数据库用户User2,其登录账户为上题所创建的SQL Server登录账户,使用默认dbo架构,并赋予该用户能够运行Select语句的权限。 (五)权限管理 1、使用SSMS将创建数据表和创建视图的权限授予User2。 2、使用SQL语句将对db_Library数据库中图书信息表的查询、插入、以及对书名和作者列的修改权限授予用户User2。 3、使用SSMS收回User2创建数据表和创建视图的权限。 4、使用SQL语句收回User2修改书名和作者列的权限。 (六)删除上述所建立的数据库用户以及登录账户。 三、实验步骤 主要实现的SQL语句。 使用T-SQL语句创建一个SQL Server登录账户,账户名为你的名字拼音,密码自定义。创建完成后,以该账户来进行登录。

实验报告 数据库的基本查询'

一、实验目的: 通过该实验掌握应用SQL 查询数据库的基本方法,包括单表、多表查询。 二、实验原理 数据库查询是数据库的核心操作。SQL语言提供了SELECT语句进行数据库的查询。 SELECT[ALL|DISTINCT] <目标列表达式〉[,<目标列表达式〉]... FROM<表名或视图名〉[,<表名或视图名〉]... [WHERE<条件表达式>] [GROUP BY<列名1〉[HA VING<条件表达式>]] [ORDERBY<列名2〉[ASC|DESC]] 三、实验内容和方法 实验用的数据库:用实验二建立的数据库:School 1. 投影查询 (1) 查询SC表的sno的不重复记录。 使用SQL语句:“select distinct Sno from SC”,得出结果如下图所示: (2) 改变查询结果的标题名:sno为学号,sname为姓名,ssex 为性别,sdept 为系名。 使用SQL语句:“select Sno 学号,Sname 姓名,Ssex 性别,Sdept 系名from Student”,得出结果如下图所示:

(3) 查询STUDENT表的前3条记录(top 3)。 使用SQL语句:“select top 3 * from Student”,得出结果如下图所示: 3. 选择查询 (1) 查询成绩在60-80之间的姓名、系名和成绩。 使用SQL语句:“select Sname,Sdept,Grade from Student,SC where Grade>60 and Grade<80 and Student.Sno=SC.Sno”,结果如下图所示: 若使用SQL语句:“select Sname,Sdept,Grade from Student,SC where Grade between 60 and 80 and Student.Sno=SC.Sno”,则结果如下图所示: (2) 查询信息系和计算机系的姓名和成绩。 使用SQL语句:“select Sname,Grade from Student,SC where Sdept='IS' and Student.Sno=SC.Sno or Sdept='CS' and Student.Sno=SC.Sno”,结果如下图所示:

数据库实验报告

武汉轻工大学 数学与计算机学院 《数据库系统概论》 实验报告 题目:SQL操作 专业:信息管理与信息系统 班级:信息管理1201班 学号:1205020113 姓名:丁兵兵 指导老师:欧阳铮铮 2014年 6 月13 日

实验一注册服务器、建立数据库 一、实验目的 1.学会注册、连接服务器 2.学会创建登录、建立数据库 3.学会为数据库创建和设置用户 二、实验内容 1.使用企业管理器注册、连接SQL数据库服务器 2.使用企业管理器建立数据库 3.使用企业管理器创建登录 4.使用企业管理器为数据库创建用户并设置其权限 三、实验准备 1.复习与本次实验内容相关知识 2.预习有关登录的建立等相关内容 四、实验步骤 1.启动SQL Server Management Studio 启动过程为:开始菜单-->程序-->Microsoft SQL Server-2005->SQL Server Mangement Stadio。

2.注册服务器 3连接SQL服务器 4.建立登录帐号 5.建立数据库 6.账户权限 五、实验结果

通过这次实验了解关于SQL最基本的操作,注册、连接服务器、创建登录、建立数据库、为数据库创建和设置用户等。虽然中途出现过一点小问题,但通过耐心比照实验步骤,还是解决了。 实验二表的创建与修改 一、实验目的 1.学会创建和修改表结构 o学会使用数据库引擎查询 2.学会使用SQL语句创建和修改表结构 二、实验内容 1.利用窗口建立和修改班级表、成绩表 2.利用命令建立和修改课程表、学生表

1.复习与本次实验内容相关知识 2.对本次实验中要求自己完成的部分做好准备 四、实验步骤 1.创建表 o打开SQL Server Management Studio,数据库服务器连接以后,展开该服务器项目,其下有子项目"数据库",选择该项目后,右击 该项目,或者在右面的子窗口中右击,在弹出菜单中有"新建数据 库"(数据库名为学生自己的学号)。 o打开新数据库的树型列表,在"表"上右击,在快捷菜单中单击"新建表..."。 o在表结构窗口内建立如下图所示的班级表(CID含义为"班号 ",CLASS含义为"班名",DEPARTMENT含义为所在系,各字段类型 及是否允许为空按图中设置),如下图所示,左侧三角形标志为当 前列,下方的列属性即为该列的。

《数据库及其应用》实验报告(新)

《数据库及其应用》 (课程编号:B0901000) 实验报告 (2014-2015学年第2学期) 实验成绩: 学号: 姓名: 专业班级: 课堂号: 任课教师: 完成日期:

一、实验目的及要求 能熟练掌握 Access2010的启动、退出,以及操作界面和操作方法。 能够理解关系模型的基本概念。 能够完成简单的数据库概念设计、逻辑设计和物理设计。 能够熟练建立数据库文件、表对象和关系。 能够熟练掌握基本SQL语言,能够在Access中进行一般的SQL 查询。 能够运用SQL对数据库进行更新。 能够熟练掌握不同软件之间的数据交换。 二、实验设备(环境)及要求 PC机,Windows 7,Office 2010(主要是Access 2010) 实验参考教材: 《数据库及其应用(Access及Excel)学习与实验实训教程》(第二版)。 (以下简称《实验教程》) 三、实验内容及记录 实验项目1:熟悉Access的启动和退出,熟悉Access的界面 1.启动Access 练习不同的Access的启动方法。。 2.退出Access 练习不同的Access的启动方法。 3.观察并了解 Access用户界面 不同方式启动进入Access,其界面有所差异。 通过“开始”按钮或桌面Access快捷方式启动进入Backstage视图;通过Access数据库文件关联则直接进入Access数据库窗口。 Access用户界面主要由三个组件组成: 功能区。 Backstage 视图。 导航窗格。 (1)观察Backstage视图:不同方式进入Backstage视图,注意其差别。 (2)观察功能区:了解组成功能区的选项卡。 (3)观察导航窗格。各种对象的显示组合。 4.Access选项及其设置 在Backstage视图中选择“选项”命令单击,进入Access选项对话框窗口。在该窗口可设置默认文件夹等。可设置文档窗口显示方式、定制导航窗格、定制工具栏的项目等。

数据库原理实验报告四(有答案)

南京晓庄学院 《数据库原理与应用》课程实验报告 实验四查询设计实验 所在院(系):数学与信息技术学院 班级: 学号: 姓名:

1.实验目的 (1)了解查询的目的,掌握SELECT语句的基本语法和查询条件的表示方法。 (2)掌握数据排序和数据联接查询的方法。 (3)掌握SQL Server查询分析器的使用方法。 2.实验要求 (1)针对“TM”数据库,在SQL Server查询分析器中,用T-SQL语句实现以下单表查询 操作,并将将调试成功的T-SQL命令,填入实验报告中。 a)查询所有课程的详细情况。 b)查询来自江苏或山东的学生学号和姓名,并以中文名称显示输出的列名。 c)查询选修了课程的学生学号(一人选了多门课程的话,学号只显示一次)。 d)查询选修课程号为07253001的学号和成绩,并要求对查询结果按成绩降 序排列,如果成绩相同则按学号升序排列。 e)查询所有学生的学号、姓名和年龄。 f)查询选修课程号为07253001的成绩在85-95之间的学生学号和成绩,并 将成绩乘以0.7输出。 g)查询数学与信息技术学院(DEPT_ID为07)或物理与电子工程学院 (DEPT_ID为09)姓张的学生的信息。。 h)查询所有核心课程(课程名中带*的)的情况。 i)查询缺少了成绩的学生的学号和课程号,查询结果按课程号升序排列。 (2)在SQL Server查询分析器中,用T-SQL语句实现下列数据联接查询操作: a)查询每个学生的情况以及他(她)所选修的课程。 b)查询学生的学号、姓名、选修的课程名及成绩。 c)查询选修C语言程序设计且成绩为85分以上的学生学号、姓名及成绩。 d)查询和学生柏文楠是同一个民族的学生(用自身联接实现)。 e)分别用等值联接和内联接查询有授课记录的老师的姓名。 f)用外联接查询所有老师的授课情况,输出老师的工号、姓名、职称、院 系、担任的课程号和授课的学期,结果按院系和职称升序排列。如果该 老师没有授课历史,在课程号和授课的学期中显示空值 (3)在SQL Server Management Studio中新建查询,完成以上查询命令的同时,熟悉SQL编 辑器工具栏中各快捷按钮的作用。 (4)按要求完成实验报告。

(完整word版)数据库实验报告8

. 西安科技大学 《数据库原理及应用》课程设计报告 题目:寄宿学校管理信息系统的设计与实现 学院:计算机科学与技术学院 专业及班级:软件工程1202及1203班 学号:1208010206 1208010207 1208010303 姓名:李倩魏楠楠王青枝 日期:2014年7月9日

目录 1课程设计目的及意义 (2) 2设计内容及人员分工 (2) 3 需求分析 (2) 3.1 需求陈述 (2) 3.2 功能需求 (2) 3.3 数据需求 (3) 3.4 其它需求 (3) 4 数据库设计 (3) 4.1概念结构设计 (3) 4.2逻辑结构设计 (4) 4.3数据表结构设计 (4) 5 系统功能设计 (6) 6 系统实现 6.1 开发环境 (7) 6.2 数据库的创建与连接技术 (7) 4.3 主要功能的运行结果及代码 (9)

7 总结 (13) 参考文献 (13) 1、课程设计的目的和意义 课程设计目的:通过本课程设计,培养学生具有C/S模式的数据库应用软件系统的 设计和开发能力;熟练掌握SQL Server数据库的使用,熟练掌握使用VC、VB或其它开发工具开发数据库应用的能力;为毕业设计打下坚实的基础。学生根据所学的数据库原理与程序设计的知识, 通过对一个实际问题的分析,设计与实现,将原理与应用相结合,使学生学会如何把书本上学到的知识用于解决实际问题,培养学生的动手能力;另一方面,使学生能深入理解和灵活掌握教学内容。 课程设计的意义:通过对这个系统的设计,让我们更加熟悉SQL Sever 2008的相关操 作,也巩固了这学期学习的数据库的一些知识,让我们更懂得数据库的重要性无论是在生活中,还是在软件的设计和制作过程中。让我们学会了数据库的设计,经历了数据库设计的几个阶段,比如需求分析,概念结构设计,逻辑结构的设计,都让我们努力的去想,去做,懂得数据库的优化,想想怎么做才是最好的。做出一个比较满意的数据库设计。 2、设计内容及人员分工 魏楠楠:数据库的需求分析,概念设计 王青枝:数据库逻辑设计,表结构设计 李倩:数据库触发器创建实现 3、需求分析 3.1 需求陈述: 某寄宿学校需要开发一个信息管理系统,通过该管理系统可以对学生的日常事务进行管理: 校长助理:可以对学生的档案进行管理,可以进行新增、删除、查询、修改等操作。 财务人员:进行每月的收费和退费工作,每个学生的每月费用包括住宿费,伙食费220,在6-8月收取空调费20,在11-2月收取取暖费20,每个学期的开学初(3月、9月)收取书本费(不定)。住宿费分三种情况:双职工的子女为60,单职工的子女80元,父母均不在本单位工作为100元。每个班的老师在每天要申报本班学生的出勤表,由校长助理完成

数据库系统原理实验报告_SQL查询语句

数据库系统原理 实验报告 :xxx 学号:xxxxxxxx 专业:xxxxx 日期:xxxxx

Lab2 一、实验目的 进一步熟悉关系数据库标准语言SQL。 二、实验环境 1)Windows 10 2)SQL Server 2017 三、实验容 给定如学生表、课程表和学生作业表所示的信息。 表1 学生表 表2 课程表 表3 学生作业表

K001 0433 60 75 75 K001 0529 70 70 60 K001 0531 70 80 80 K001 0591 80 90 90 K002 0496 80 80 90 K002 0529 70 70 85 K002 0531 80 80 80 K002 0538 65 75 85 K002 0592 75 85 85 K006 0531 80 80 90 K006 0591 80 80 80 M001 0496 70 70 80 M001 0591 65 75 75 S001 0531 80 80 80 S001 0538 60 80 写出如下SQL语句: 1.查询数据库中有哪些专业班级。(5分) Sql语句: SELECT专业班级 FROM学生表; 查询结果截图: 2.查询在1986年出生的学生的学号、和出生日期。(5分) Sql语句: SELECT学号,,出生日期 FROM学生表 WHERE出生日期LIKE'1986%'; 查询结果截图:

3.查询05级的男生信息。(5分) Sql语句: SELECT* FROM学生表 WHERE学号LIKE'05%'AND性别='男'; 查询结果截图: 4.查询没有作业成绩的学号和课程号。(5分) Sql语句: SELECT学号,课程号 FROM学生作业表 WHERE作业1成绩IS NULL OR作业2成绩IS NULL OR作业3成绩IS NULL; 查询结果截图: 5.查询选修了K001课程的学生人数。(5分) Sql语句: SELECT COUNT(DISTINCT学号) FROM学生作业表 WHERE课程号='K001'; 查询结果截图:

数据库实验报告资料

《数据库系统概论》 实验报告 学院:数学与计算机科学/软件学院专业:软件工程(3) 小组成员: 姓名:学号: 姓名:学号: 姓名:学号:

题目:《SQL语言参考大全》实验4 姓名:陈建儿学号:221200305 日期:2014年4月25号 实验目的:学会创建数据库,以及对表的插入,删除,修改等操作。实验内容完成情况: 04.01题目:create database mrgwh--使用create database 命令创建一个名称是“mrgwh”的数据库 执行结果: 04.05题目:alter database db_mrsql add filegroup happy 执行结果: 04.13题目:use db_mrsql --使用db_mrsql数据库 create table teacher --创建“teacher”信息表 (教师编号int, 教师姓名varchar(10), 教师年龄int, 所教课程varchar(30) )

04.14题目:use db_mrsql create table shopping ( 商品编号int primary key, --使用primary key将“商品编号”字段设置为主键列 商品类别varchar(10), 商品数量int, 商品备注text ) 执行结果: 04.15:use db_mrsql --使用db_mrsql数据库 create table pupil --创建tb_pupil04数据表 ( 学生学号varchar(8), 学生姓名varchar(10) unique,--定义了具有唯一值(unique)的“学生姓名”列 --创建一个检验约束(check)检验“学生年龄”列的值是否在8到15之间 学生年龄int check(学生年龄>=8 and 学生年龄<=15), 学生性别int, 备注text ) 执行结果: 04.16题目:use db_mrsql --使用db_mrsql数据库

实验三--数据库中的数据查询及视图操作实验报告

实验三--数据库中的数据查询及视图操作实验报告

长春大学计算机学院科学与技术专业 数据库原理实验报告 实验 名称: 实验三数据库中的数据查询及视图操作(1) 班级: 姓 名: 学 号: 实验地点: 日期: 一、实验目的: 1.继续熟练SQL SERVER 2005/2008系统或KingBase ES V7.0的使用; 2.掌握SELECT语句的使用。 3.掌握单表查询,多表查询以及嵌套查询。 二、实验内容、要求和环境: 【实验要求】 注:将完成的实验报告重命名为:班级+学号+姓名+(实验三),(如:041540538张三(实验三)),提交到SPOC学堂。 1.实验课要携带教材、学习辅导、老师下发的实验报告文档等。 2.课前要对实验内容和步骤部分进行预习。 【实验环境】 1.SQL SERVER 2005/2008; 2.KingBase ES V7.0 ,人大金仓。 【实验内容和步骤】

针对实验一建立的数据库的表,用select语句完成如下查询操作,写出select语句,并给出操作结果。 1.针对SPJ数据库中的四个表,实现如下查询: (1)求供应工程J1零件的供应商号码SNO; (2)求供应工程J1零件P1的供应商号码SNO; (3)求供应工程J1零件的供应商名SNAME; (4)求供应工程J1零件P1的供应商名SNAME; (5)求供应工程J1零件为红色的供应商号码 SNO; (6)求没有使用天津供应商生产的红色零件的 工程号JNO; (7)求至少用了供应商S1所供应的全部零件的 工程号JNO; (8)找出使用上海产的零件的工程名称; 2.针对学生-课程数据库中的三个表,用嵌套方法查询实现如下查询: (1)查询选修了数据库的学生姓名。 (2)查询比计算机系CS所有学生年龄都大的学生信息。 (3)列出“李勇”选修的所有课程的课名和成绩。(4)查询数据库的先行课的课程名。 3.针对实验一建立的SPXS数据库中的三个表,实现如下查询: (1)查询与商品“电视”颜色相同的商品名; (2)查询不销售商品P2的商店名; (3)查询至少销售商品P1、P2两种商品的商店名; (4)所有商店都销售的商品号。 (5)只销售一种商品P4的商店名。 三、实验结果与分析: 写出操作语句,粘贴查询结果(粘贴结果要求粘贴SQL Server Managemet Studio整个窗口):

相关主题
文本预览
相关文档 最新文档