23秋国家开放大学《MySQL数据库应用》实验训练1-4参考答案.docx

上传人:国**** 文档编号:18938466 上传时间:2024-02-26 格式:DOCX 页数:30 大小:3.37MB
下载 相关 举报
23秋国家开放大学《MySQL数据库应用》实验训练1-4参考答案.docx_第1页
第1页 / 共30页
23秋国家开放大学《MySQL数据库应用》实验训练1-4参考答案.docx_第2页
第2页 / 共30页
亲,该文档总共30页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

23秋国家开放大学《MySQL数据库应用》实验训练1-4参考答案.docx

《23秋国家开放大学《MySQL数据库应用》实验训练1-4参考答案.docx》由会员分享,可在线阅读,更多相关《23秋国家开放大学《MySQL数据库应用》实验训练1-4参考答案.docx(30页珍藏版)》请在冰点文库上搜索。

23秋国家开放大学《MySQL数据库应用》实验训练1-4参考答案.docx

国家开放大学《MySQL数据库应用》实验训练1-4参考答案

实验训练1在MySQL中创建数据库和表

参考答案:

步骤:

1、使用show语句找出在服务器上当前存在什么数据库:

mysql>showdatabases;

2、创建一个数据库test:

mysql>createdatabasetest;

3、选择你所创建的数据库:

mysql>usetest;

4创建一个数据表:

首先查看刚才创建的数据库中存在什么表:

mysql>showtables;

(说明刚才创建的数据库中还没有数据库表)

接着我们创建一个关于students的数据表:

包括学生的学号(id),姓名(name),性别(sex),年龄(age)。

mysql>createtablestudents(idintunsignednotnullauto_incrementprimarykey,namechar(8)notnull,sexchar(4)notnull,agetinyintunsignednotnull,);

解释:

以"idintunsignednotnullauto_incrementprimarykey"行进行介绍:

"id"为列的名称;

"int"指定该列的类型为int(取值范围为-8388608到8388607),在后面我们又用"unsigned"加以修饰,表示该类型为无符号型,此时该列的取值范围为0到16777215;

"notnull"说明该列的值不能为空,必须要填,如果不指定该属性,默认可为空;

"auto_increment"需在整数列中使用,其作用是在插入数据时若该列为NULL,MySQL将自动产生一个比现存值更大的唯一标识符值。

在每张表中仅能有一个这样的值且所在列必须为索引列。

"primarykey"表示该列是表的主键,本列的值必须唯一,MySQL将自动索引该列。

下面的char(8)表示存储的字符长度为8,tinyint的取值范围为-127到128,default属性指定当该列值为空时的默认值。

创建一个表后,用showtables显示数据库中有哪些表:

mysql>showtables;

5、显示表结构:

mysql>describestudents;

6、在表中添加记录:

首先用select命令来查看表中的数据:

mysql>select*fromstudents;

(说明刚才创建的数据库表中还没有任何记录)

接着加入一条新纪录:

mysql>insertintostudentsvalue(‘01’,’Tom’,’F’,’18’);

再用select命令来查看表中的数据的变化:

mysql>select*fromstudents;

7、用文本方式将数据装入一个数据库表:

创建一个文本文件“student.sql”,每行包括一个记录,用TAB键把值分开,并且以在createtable语句中列出的次序,例如:

02 Tony F 18

03 Amy M 18

04 Lisa M 18

将文本文件“student.sql”装载到students表中:

mysql>loaddatalocalinfile”e:

\\student.sql”intotablestudents;

再使用select命令来查看表中的数据的变化:

mysql>select*fromstudents;

实验训练2:

数据查询操作

实验内容:

1.单表查询

【实验2.1】字段查询

(1)查询商品名称为“挡风玻璃”的商品信息。

(2)查询ID为1的订单。

【实验2.2】多条件查询

查询所有促销的价格小于1000的商品信息。

【实验2.3】DISTINCT

(1)查询所有对商品ID为1的商品发表过评论的用户ID。

(2)查询此汽车用品网上商城会员的创建时间段,1年为一段。

【实验2.4】ORDERBY

(1)查询类别ID为1的所有商品,结果按照商品ID降序排列。

(2)查询今年新增的所有会员,结果按照用户名字排序。

【实验2.5】GROUPBY

(1)查询每个用户的消费总金额(所有订单)。

(2)查询类别价格一样的各种商品数量总和。

分析:

此查询中需要对商品进行分类,分类依据是同类别和价格,这是“多列分组”,较上一个例子更为复杂。

2.聚合函数查询

【实验2.6】COUNT()

(1)查询类别的数量。

分析:

此查询利用COUNT()函数,返回指定列中值的数目,此处指定列是类别表中的ID(或者名称均可)。

(2)查询汽车用品网上商城的每天的接单数。

分析:

订单相关,此处使用聚合函数COUNT()和Groupby子句。

【实验2.7】SUM()

查询该商城每天的销售额。

分析:

在订单表中,有一列是订单总价,将所有订单的订单总价求和,按照下单日期分组,使用SUM()函数和Groupby子句。

【实验2.8】AVG()

(1)查询所有订单的平均销售金额。

分析:

同上一个相同,还是在订单表中,依然取用订单总价列,使用AVG()函数,对指定列的值求平均数。

【实验2.9】MAX()

(1)查询所有商品中的数量最大者。

分析:

商品的数量信息存在于商品表中,此处查询应该去商品表,在商品数量指定列中求值最大者。

使用MAX()函数。

(3)查询所有用户按字母排序中名字最靠前者。

分析:

MAX()或者MIN()也可以用在文本列,以获得按字母顺序排列的最高或者最低者。

同上一个实验一样,使用MAX()函数。

【实验2.10】MIN()

(1)查询所有商品中价格最低者。

分析:

同MAX()用法相同,找到表和列,使用MIN()函数。

3.连接查询

【实验2.11】内连接查询

(1)查询所有订单的发出者名字。

分析:

此处订单的信息需要从订单表中得到,订单表中主键是订单号,外键是用户ID,同时查询需要得到订单发出者的姓名,也就是用户名,因此需要将订单表和用户表通过用户ID进行连接。

使用内连接的(INNER)JOIN语句。

(2)查询每个用户购物车中的商品名称。

分析:

购物车中的信息可以从购物车表中得到,购物车表中有用户ID和商品ID两项,通过这两项可以与商品表连接,从而可以获得商品名称。

与上一个实验相似,此查询使用(INNER)JOIN语句。

【实验2.12】外连接查询

(1)查询列出所有用户ID,以及他们的评论,如果有的话。

分析:

此查询首先需列出所有用户ID,如果参与过评论的话,再列出相关的评论。

此处使用外查询中的LEFT(OUTER)JOIN语句,注意需将全部显示的列名写在JOIN语句左边。

(2)查询列出所有用户ID,以及他们的评论,如果有的话。

分析:

依然是上一个实验,还可以使用RIGHT(OUTER)JOIN语句,注意需将全部显示的列名写在JOIN语句右边。

【实验2.13】复合条件连接查询

(1)查询用户ID为1的客户的订单信息和客户名。

分析:

复合条件连接查询是在连接查询的过程中,通过添加过滤条件,限制查询的结果,使查询的结果更加准确。

此查询需在内查询的基础上加上另一个条件,用户iD为1,使用AND语句添加精确条件。

(2)查询每个用户的购物车中的商品价格,并且按照价格顺序排列。

分析:

此查询需要先使用内连接对商品表和购物车表进行连接,得到商品的价格,在使用ORDERBY语句对价格进行顺序排列。

4.嵌套查询

【实验2.14】IN

(1)查询订购商品ID为1的订单ID,并根据订单ID查询发出此订单的用户ID。

分析:

此查询需要使用IN关键字进行子查询,子查询是通过SELECT语句在订单明细表中先确定此订单ID,在通过SELECT在订单表中查询到用户ID。

(2)查询订购商品ID为1的订单ID,并根据订单ID查询未发出此订单的用户ID。

分析:

此查询和前一个实验相似,只是需使用NOTIN语句。

【实验2.15】比较运算符

(1)查询今年新增会员的订单,并且列出所有订单总价小于100的订单ID。

分析:

此查询需要使用嵌套,子查询需先查询用户表得到今年创建的用户信息,在将用户ID匹配找打订单信息,其中使用比较运算符提供订单总价小于100的条件。

(2)查询所有订单商品数量总和小于100的商品ID,并将不在此商品所在类别的其他类别的ID列出来。

分析:

此查询需要进行嵌套查询,子查询过程需要使用到SUM()函数和GROUPBY求出同种商品的所有被订数量,使用比较运算符得到数量总和小于100的商品ID,再使用比较运算符“不等于”得到非此商品所在类的类别ID。

【实验2.16】EXISTS

(1)查询表中是否存在用户ID为100的用户,如果存在,列出此用户的信息。

分析:

EXISTS关键字后面的参数是一个任意的子查询,系统对于查询进行运算以判断它是否返回行,如果至少返回一行,那以EXISTS的结果为TRUE,此时外层查询语句将进行查询。

此查询需要对用户ID进行EXIST操作。

(2)查询表中是否存在类别ID为100的商品类别,如果存在,列出此类别中商品价格小于5的商品ID。

分析:

与上一个实验相似,此实验在外查询过程添加了比较运算符。

【实验2.17】ANY

查询所有商品表中价格比订单表中商品ID对应的价格大的商品ID。

分析:

ANY关键字在一个比较操作符的后面,表示若与子查询返回的任何值比较为TRUE,则返回TRUE。

此处使用ANY来引出内查询。

【实验2.18】ALL

查询所有商品表中价格比订单表中所有商品ID对应的价格大的商品ID。

分析:

使用ALL时需要同时满足所有内层查询的条件。

ALL关键字在一个比较操作符的后面,表示与子查询返回的所有值比较为TRUE,则返回TRUE。

此处使用ALL来引出内查询。

【实验2.19】集合查询

(1)查询所有价格小于5的商品,查询类别ID为1和2的所有商品,使用UNION连接查询结果。

分析:

由前所述,UNION将多个SELECT语句的结果组合成一个结果集合,第1条SELECT语句查询价格小于5的商品,第2条SELECT语句查询类别ID为1和2的商品,使用UNION将两条SELECT语句分隔开,执行完毕之后把输出结果组合为单个的结果集,并删除重复的记录。

(2)查询所有价格小于5的商品,查询类别ID为1和2的所有商品,使用UNIONALL连接查询结果。

分析:

使用UNIONALL包含重复的行,在前面的例子中,分开查询时,两个返回结果中有相同的记录,使用UNION会自动去除重复行。

UNIONALL从查询结果集中自动要返回所有匹配行,而不进行删除。

实验训练3数据增删改操作

一、实验内容与目的

1.使用SQL语言完成数据定义、数据查询、更新,删除。

2.利用SQL语言提供的INSERT语句、UPDATE语句和DELETE语句对所创建的表进行操作;

二、实验方法、步骤

1.运行数据库SQL sever 2008 

2.新建数据库,并且创建新的表

3.利用相关语句进行数据查询,更新,删除,修改

三、实验过程原始记录

1)创建供应商表汽车配件表Autoparts,由以下属性组成:

零件代码PNO(CHAR型),零件名PNAME(CHAR型),颜色COLOR(CHAR型),价格Money(INT型)

CREATE TABLE Autoparts(

PNO CHAR(3),

PNAME CHAR(10),

COLOR CHAR(4),

Money INT); 

2)创建供应商表汽车配件表category,由以下属性组成:

轮胎

Tires(CHAR型),灯Lights(int型)。

CREATETABLEcategory(

TiresCHAR(20),

LightsCHAR(10));

3)创建用户表Client,由以下属性组成:

姓名 NAME(CHAR型),TEL(int型)。

CREATETABLEClient(

NAMECHAR(20),

TELINT(10));

4)创建用户类别表Clientkind,由以下属性组成:

普通Normal(CHAR型),贵宾VIP(CHAR型)。

CREATETABLEClientkind(

NormalCHAR(20),

VIPCHAR(20));

5)创建购物车表shoppingcart,由以下属性组成:

名称 SHOPNAME(CHAR型),Money(int型)

CREATETABLEshoppingcart(

SHOPNAMECHAR(20),

MoneyINT(10));

6)创建订单表Order,由以下属性组成:

订单号Order_ID(INT型),Money(INT型)

CREATETABLEOrder(

Order_IDINT(50),

MoneyINT(10));

7)创建订单明细表order_has_Autoparts,由以下属性组成:

配件名称SHOPNAME(CHAR型),价格Money(INT型),姓名NAME(CHAR型),联系电话TEL(INT型),地址Address(CHAR型)

CREATETABLEorder_has_Autoparts(

SHOPNAMECHAR(50),

NAMECHAR(50),

TELINT(20),

AddressCHAR(50),

MoneyINT(10));

8)创建评论表Comment,由以下属性组成:

订单号Order_ID(INT型),分数Fractions(INT型),内容Content(CHAR型),姓名NAME(CHAR型),联系电话TEL(INT型),地址Address(CHAR型)

CREATETABLEComment(

Order_IDINT(50),

FractionsINT(10)

ContentCHAR(500),

NAMECHAR(50),

TELINT(20),

AddressCHAR(50));

二)数据操作

1.插入数据(以Autoparts表为例,其他表同理)

1)向Autoparts表插入下列数据:

P1,螺母,红,12  P2,螺栓,绿,17 P3,螺丝刀,蓝,14 P4,螺丝刀,红,14 P5,凸轮,蓝,40 P6,齿轮,红,30 

INSERTINTOAutopartsVALUES(‘P1’,’螺母’,’红’,’12’);

INSERTINTOAutopartsVALUES(‘P2’,’螺栓’,’绿’,’17’);

INSERTINTOAutopartsVALUES(‘P3’,’螺丝刀’,’蓝’,’14’);

INSERTINTOAutopartsVALUES(‘P4’,’螺丝刀’,’红’,’14’);

INSERTINTOAutopartsVALUES(‘P5’,’凸轮’,’蓝’,’40’);

INSERTINTOAutopartsVALUES(‘P6’,’齿轮’,’红’,’30’);

2)修改数据:

将全部红色零件的颜色改成蓝色。

  UPDATE Autoparts  SET COLOR =’蓝’WHERE COLOR =’红’;

3)删除数据从Autoparts中删除 P1的纪录DELETE FROM Autoparts WHERE SNO =’P1';

四)、实验结果分析

在本次的试验中,使我对数据库的操作更加熟悉,也锻炼了我对数据表的更新,删除,查询等操作的熟练运用,对数据库有更进一步的了解。

实验训练4:

数据库系统维护

实验过程:

1、数据库安全性

【实验6-1】建立账户:

创建一个用户名为‘Teacher’密码为‘T99999’的用户;创建一个用户名为‘Student’密码为‘S11111’的用户。

找开MySQLWorkbench6.0CE,点击“server”下拉菜单,把鼠标移动到“UserandPrivileges”

单击弹出对话框,如下。

输入密码:

“111”弹出下图。

单击下方的“ADDAccount”,出现下图。

在LoginName处,输入:

Teacher

在Password处,输入:

T99999

在ConfirmPassword处,输入:

T99999,然后单击“Apply”完成“Teacher”用户的创建。

再用同样方法,创建“Student”用户的创建。

【实验6-2】用户授权:

将Shopping数据库上SELECT、INSERT、DELETE、UPDATE的权限授予‘Teacher’用户;将Shopping数据库上SELECT的权限授予‘Student’用户。

给‘Teacher’用户设置权限。

再用同样方法,给‘Student’用户设置权限。

【实验6-3】

以‘Teacher’用户身份连接Shopping数据库,分别执行SELECT、INSERT、DELETE、UPDATE、CREATE操作,查看执行结果;以‘Student’用户身份连接Shopping数据库,执行SELECT、INSERT、DELETE、UPDATE操作,查看执行结果。

以‘Teacher’用户身份连接Shopping数据库,点击下图中的按钮“ConnecttoDatabase”。

弹出对话框,如下图。

Username处,改为“Teacher”,单击OK按钮,弹出下图。

输入密码,单击Ok按钮,可以看到现在的用户就是“Teacher”,如下图。

执行SELECT操作;

执行INSERT操作;

现在有一个空表,名字为commentcopy2,如下图。

把表comment中的数据,批量添加到commentcopy2中。

输入命令:

insertintocommentcopy2select*fromcomment;

执行结果如下。

执行DELETE操作;

“commentcopy2”中有6条记录(如下图),现在把第二条删除了。

输入命令:

deletefromcommentcopy2whereComment_id=2;

执行结果如下,可以看到第二条被删除了。

执行UPDATE操作;

Autoparts表中(如下图),第一条记录中的“price”为90,现在使用UPDATE命令,使它变成150.

输入命令:

UPDATEautopartsSETprice=150whereApid=1;

执行结果如下图。

执行CREATE操作。

创建一个名为“tuser”的表,并包含一列。

输入命令:

createtabletuser(IDINT);

执行结果如下。

以‘Student’用户身份连接Shopping数据库,执行SELECT、INSERT、DELETE、UPDATE操作,查看执行结果。

SELECT命令可以使用。

执行SELECT、INSERT、DELETE、UPDATE操作时出错,提示权限不够。

2.数据库备份与恢复

【实验6-4】使用mysqldump工具对Shopping数据库进行备份,查看备份文件。

打开文件夹,C:

\ProgramFiles\MySQL\MySQLServer5.5\bin,如下。

从上图中,可以看到mysqldump.exe。

在命令提示符下,运行这个软件,结果如下。

对整个Shopping数据库进行备份,备份到d:

\shopping文件夹下,文件名为shopping.sql。

输入如下命令:

mysqldump-hlocalhost-uroot-p111shopping>d:

\shopping\shopping.sql

执行结果如下图

打开文件夹“d:

\shopping”查看结果。

【实验6-5】对Shopping数据库启用二进制日志,并且查看日志。

输入命令:

showvariableslike'%log_bin%';

执行结果

从上图中,看到log_bin状态为OFF,也就是二进制日志没有启用。

找开“C:

\ProgramFiles\MySQL\MySQLServer5.5”文件夹下的文件“my.ini”,如下图。

在datadir="C:

/ProgramData/MySQL/MySQLServer5.5/Data/"下面再添加一行,内容为“log-bin="C:

/ProgramData/MySQL/MySQLServer5.5/Data/"”如下图。

保存文件“my.ini”然后重新启动电脑。

打开MySQLWorkbench6.0CE

输入命令:

showvariableslike'%log_bin%';

执行结果如下。

可以看到“log_bin”的值,变成了“ON”,也就是启用了二进制

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 成人教育 > 电大

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2