版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
国家开放大学《MySQL数据库应用》实验训练1-4参考答案实验训练1在MySQL中创建数据库和表参考答案:步骤:使用show语句找出在服务器上当前存在什么数据库:mysql>showdatabases;创建一个数据库test:mysql>createdatabasetest;选择你所创建的数据库: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;显示表结构:mysql>describestudents;在表中添加记录:首先用select命令来查看表中的数据:mysql>select*fromstudents;(说明刚才创建的数据库表中还没有任何记录)接着加入一条新纪录:mysql>insertintostudentsvalue(‘01’,’Tom’,’F’,’18’);再用select命令来查看表中的数据的变化:mysql>select*fromstudents;用文本方式将数据装入一个数据库表:创建一个文本文件“student.sql”,每行包括一个记录,用TAB键把值分开,并且以在createtable语句中列出的次序,例如:02 Tony F 1803 Amy M 1804 Lisa M 18将文本文件“student.sql”装载到students表中:mysql>loaddatalocalinfile”e:\\student.sql”intotablestudents;再使用select命令来查看表中的数据的变化:mysql>select*fromstudents;实验训练2:数据查询操作实验内容:单表查询【实验2.1】字段查询(1)查询商品名称为“挡风玻璃”的商品信息。(2)查询ID为1的订单。【实验2.2】多条件查询查询所有促销的价格小于1000的商品信息。【实验2.3】DISTINCT查询所有对商品ID为1的商品发表过评论的用户ID。(2)查询此汽车用品网上商城会员的创建时间段,1年为一段。【实验2.4】ORDERBY(1)查询类别ID为1的所有商品,结果按照商品ID降序排列。查询今年新增的所有会员,结果按照用户名字排序。【实验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()函数。查询所有用户按字母排序中名字最靠前者。分析: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
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 内科门诊日间诊疗管理制度
- 养老院地震避险方案
- 镀锌钢管消防管道布置方案
- 2025版高考历史一轮复习必修三第十一单元中国传统文化主流思想的演变第39讲“百家争鸣”和儒家思想的形成练习含解析新人教版
- 2025届高考化学一轮复习第四章非金属及其重要化合物第10讲氯及其化合物练习含解析新人教版
- 2024高考物理二轮复习专题6物理实验第2讲电学实验及创新作业含解析
- 液化石油气储存及安全管理制度
- 【22秋】大学计算机学习通超星期末考试答案章节答案2024年
- 智能财税与财务数字化学习通超星期末考试答案章节答案2024年
- 四史教育Ⅰ学习通超星期末考试答案章节答案2024年
- 校车使用(许可)申请表
- 月度质量例会PPT模板
- 煤矿皮带智能化集控系统PPT教学讲授课件
- 分数乘除法整理复习(课堂PPT)
- 故乡雨正普五线谱(正谱)
- YD_T 3956-2021 电信网和互联网数据安全评估规范_(高清版)
- 2022年物业管理师《物业管理实务》考试题库大全-下(多选题、简答)
- 大班科学活动教案《豆豆家族》含PPT课件
- 压力管道检验员在线考试习题与答案
- 【精品试卷】部编人教版(统编)一年级上册语文第一单元测试卷含答案
- 金属有机化学ppt课件
评论
0/150
提交评论