MySQL习题及答案.docx

上传人:b****2 文档编号:17733702 上传时间:2023-08-03 格式:DOCX 页数:17 大小:21.24KB
下载 相关 举报
MySQL习题及答案.docx_第1页
第1页 / 共17页
MySQL习题及答案.docx_第2页
第2页 / 共17页
MySQL习题及答案.docx_第3页
第3页 / 共17页
MySQL习题及答案.docx_第4页
第4页 / 共17页
MySQL习题及答案.docx_第5页
第5页 / 共17页
MySQL习题及答案.docx_第6页
第6页 / 共17页
MySQL习题及答案.docx_第7页
第7页 / 共17页
MySQL习题及答案.docx_第8页
第8页 / 共17页
MySQL习题及答案.docx_第9页
第9页 / 共17页
MySQL习题及答案.docx_第10页
第10页 / 共17页
MySQL习题及答案.docx_第11页
第11页 / 共17页
MySQL习题及答案.docx_第12页
第12页 / 共17页
MySQL习题及答案.docx_第13页
第13页 / 共17页
MySQL习题及答案.docx_第14页
第14页 / 共17页
MySQL习题及答案.docx_第15页
第15页 / 共17页
MySQL习题及答案.docx_第16页
第16页 / 共17页
MySQL习题及答案.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

MySQL习题及答案.docx

《MySQL习题及答案.docx》由会员分享,可在线阅读,更多相关《MySQL习题及答案.docx(17页珍藏版)》请在冰点文库上搜索。

MySQL习题及答案.docx

MySQL习题及答案

MySQL习题及答案

MySQL习题及答案

在缺省模式下,MYSQL是autocommit模式的,所有的数据库更新操作都会即时提交,所以在缺省情况下,mysql是不支持事务的。

但是如果你的MYSQL表类型是使用InnoDBTables或BDBtables的话,你的MYSQL就可以使用事务处理,使用SETAUTOCOMMIT=0就可以使MYSQL允许在非autocommit模式,

在非autocommit模式下,你必须使用COMMIT来提交你的更改,或者用ROLLBACK来回滚你的更改。

示例如下:

STARTTRANSACTION;

SELECT@A:

=SUM(salary)FROMtable1WHEREtype=1;

UPDATEtable2SETsummmary=@AWHEREtype=1;

COMMIT;

MYSQL相比于其他数据库有哪些特点?

MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQLAB公司,现在已经被Sun公司收购,支持FreeBSD、Linux、MAC、Windows等多种操作系统

与其他的大型数据库例如Oracle、DB2、SQLServer等相比功能稍弱一些

1、可以处理拥有上千万条记录的大型数据

2、支持常见的SQL语句规范

3、可移植行高,安装简单小巧

4、良好的运行效率,有丰富信息的网络支持

5、调试、管理,优化简单(相对其他大型数据库)

介绍一下mysql的日期和时间函数

这里是一个使用日期函数的例子。

下面的查询选择所有date_col值在最后30天内的记录。

mysql>SELECTsomethingFROMtbl_name

WHERETO_DAYS(NOW)–TO_DAYS(date_col)<=30;

DAYOFWEEK(date)

返回date的星期索引(1=Sunday,2=Monday,...7=Saturday)。

索引值符合ODBC的标准。

mysql>SELECTDAYOFWEEK(’1998-02-03′);

->3

WEEKDAY(date)

返回date的星期索引(0=Monday,1=Tuesday,?

6=Sunday):

mysql>SELECTWEEKDAY(’1998-02-0322:

23:

00′);

->1

mysql>SELECTWEEKDAY(’1997-11-05′);

->2

DAYOFMONTH(date)

返回date是一月中的第几天,范围为1到31:

mysql>SELECTDAYOFMONTH(’1998-02-03′);

->3

DAYOFYEAR(date)

返回date是一年中的第几天,范围为1到366:

mysql>SELECTDAYOFYEAR(’1998-02-03′);

->34

MONTH(date)

返回date中的月份,范围为1到12:

mysql>SELECTMONTH(’1998-02-03′);

->2

DAYNAME(date)

返回date的星期名:

mysql>SELECTDAYNAME(”1998-02-05″);

->?

Thursday?

MONTHNAME(date)

返回date的月份名:

mysql>SELECTMONTHNAME(”1998-02-05″);

->?

February?

QUARTER(date)

返回date在一年中的季度,范围为1到4:

mysql>SELECTQUARTER(’98-04-01′);

->2

WEEK(date)

WEEK(date,first)

对于星期日是一周中的第一天的场合,如果函数只有一个参数调用,返回date为一年的第几周,返回值范围为0到53(是的,可能有第53周的开始)。

两个参数形式的WEEK允许你指定一周是否以星期日或星期一开始,以及返回值为0-53还是1-52。

这里的一个表显示第二个参数是如何工作的:

0一周以星期日开始,返回值范围为0-53

1一周以星期一开始,返回值范围为0-53

2一周以星期日开始,返回值范围为1-53

3一周以星期一开始,返回值范围为1-53(ISO8601)

mysql>SELECTWEEK(’1998-02-20′);

->7

mysql>SELECTWEEK(’1998-02-20′,0);

->7

mysql>SELECTWEEK(’1998-02-20′,1);

->8

mysql>SELECTWEEK(’1998-12-31′,1);

->53

注意,在版本4.0中,WEEK(#,0)被更改为匹配USA历法。

注意,如果一周是上一年的最后一周,当你没有使用2或3做为可选参数时,MySQL将返回0:

mysql>SELECTYEAR(’2000-01-01′),WEEK(’2000-01-01′,0);

->2000,0

mysql>SELECTWEEK(’2000-01-01′,2);

->52

你可能会争辩说,当给定的日期值实际上是1999年的第52周的一部分时,MySQL对WEEK函数应该返回52。

我们决定返回0,是因为我们希望该函数返回“在指定年份中是第几周”。

当与其它的提取日期值中的月日值的函数结合使用时,这使得WEEK函数的用法可靠。

如果你更希望能得到恰当的年-周值,那么你应该使用参数2或3做为可选参数,或者使用函数YEARWEEK:

mysql>SELECTYEARWEEK(’2000-01-01′);

->199952

mysql>SELECTMID(YEARWEEK(’2000-01-01′),5,2);

->52

YEAR(date)

返回date的年份,范围为1000到9999:

mysql>SELECTYEAR(’98-02-03′);

->1998

YEARWEEK(date)

YEARWEEK(date,first)

返回一个日期值是的哪一年的哪一周。

第二个参数的形式与作用完全与WEEK的第二个参数一致。

注意,对于给定的日期参数是一年的第一周或最后一周的,返回的年份值可能与日期参数给出的年份不一致:

mysql>SELECTYEARWEEK(’1987-01-01′);

->198653

注意,对于可选参数0或1,周值的返回值不同于WEEK函数所返回值(0),WEEK根据给定的年语境返回周值。

HOUR(time)

返回time的小时值,范围为0到23:

mysql>SELECTHOUR(’10:

05:

03′);

->10

MINUTE(time)

返回time的分钟值,范围为0到59:

mysql>SELECTMINUTE(’98-02-0310:

05:

03′);

->5

SECOND(time)

返回time的秒值,范围为0到59:

mysql>SELECTSECOND(’10:

05:

03′);

->3

PERIOD_ADD(P,N)

增加N个月到时期P(格式为YYMM或YYYYMM)中。

以YYYYMM格式返回值。

注意,期间参数P不是一个日期值:

mysql>SELECTPERIOD_ADD(9801,2);

->199803

PERIOD_DIFF(P1,P2)

返回时期P1和P2之间的月数。

P1和P2应该以YYMM或YYYYMM指定。

注意,时期参数P1和P2不是日期值:

mysql>SELECTPERIOD_DIFF(9802,199703);

->11

DATE_ADD(date,INTERVALexprtype)

DATE_SUB(date,INTERVALexprtype)

ADDDATE(date,INTERVALexprtype)

SUBDATE(date,INTERVALexprtype)

这些函数执行日期的算术运算。

ADDDATE和SUBDATE分别是DATE_ADD和DATE_SUB的同义词。

在MySQL3.23中,如果表达式的右边是一个日期值或一个日期时间型字段,你可以使用+和–代替DATE_ADD和DATE_SUB(示例如下)。

参数date是一个DATETIME或DATE值,指定一个日期的开始。

expr是一个表达式,指定从开始日期上增加还是减去间隔值。

expr是一个字符串;它可以以一个“-”领头表示一个负的间隔值。

type是一个关键词,它标志着表达式以何格式被解释。

下表显示type和expr参数是如何关联的:

type值expr期望的格式

SECONDSECONDS

MINUTEMINUTES

HOURHOURS

DAYDAYS

MONTHMONTHS

YEARYEARS

MINUTE_SECOND“MINUTES:

SECONDS”

HOUR_MINUTE“HOURS:

MINUTES”

DAY_HOUR“DAYSHOURS”

YEAR_MONTH“YEARS-MONTHS”

HOUR_SECOND“HOURS:

MINUTES:

SECONDS”

DAY_MINUTE“DAYSHOURS:

MINUTES”

DAY_SECOND“DAYSHOURS:

MINUTES:

SECONDS”

在expr的格式中,MySQL允许任何字符作为定界符。

表中所显示的是建议的定界字符。

如果date参数是一个DATE值,并且计算的间隔仅仅有YEAR、MONTH和DAY部分(没有时间部分),那么返回值也是一个DATE值。

否则返回值是一个DATETIME值:

mysql>SELECT“1997-12-3123:

59:

59″+INTERVAL1SECOND;

->1998-01-0100:

00:

00

mysql>SELECTINTERVAL1DAY+“1997-12-31″;

->1998-01-01

mysql>SELECT“1998-01-01″–INTERVAL1SECOND;

->1997-12-3123:

59:

59

mysql>SELECTDATE_ADD(”1997-12-3123:

59:

59″,

说明:

以下所有问题均假设已经初始登录到MySQL客户端,系统所有数据库命名方式可以采用中文,题目之间前后有相应的顺序,确保命名方式一致,根据问题的描述,写出相应的MySQL语句。

一、数据库设计

1.显示当前系统所有数据库,将MySQL设置为默认数据库,并显示MySQL数据库中的所有表

Showdatabases;

Usemysql;

Showtables;

2.创建数据库【选课】,设置数据库的编码字符集为UTF8,并将【选课】设置为默认数据库

Createdatabase选课

CharactersetUTF8;

Use选课;

3.系统包含以下实体,请创建相应的表,字段描述中并未给出相应的主键和相应的外键关联,请自行设计每个实体的主键和相应的外键关联字段。

提示:

【学院】【学生】之间存在一对多的关系

【学生】【课程】之间存在多对多关系,

它们之间的联系为【选课】。

【学生】,应包含【学号、姓名、出生日期】等属性。

【学院】,应包含【学院名称】等属性。

【课程】,应包含【课程名称,课程学分】等属性。

【选课】,应包含【成绩】等属性。

CREATETABLE学院

(学院名称varCHAR(20)primarykey);

CREATETABLE学生

(学号CHAR(10)primarykey,

姓名VARCHAR(10),

出生日期DATE,

学院名称VARCHAR(20)

ForeignKey(学院名称)references学院(学院名称));

CREATETABLE课程

(课程名称varCHAR(20)primarykey,

课程学分int);

CREATETABLE选课

(课程名称varCHAR(20),

学号CHAR(10),

成绩float,

primarykey(课程名称,学号),

ForeignKey(课程名称)references课程(课程名称),

ForeignKey(学号)references学生(学号));

二、数据库功能

1.设计【选课视图】,要求显示【学生姓名,课程名称,课程学分,成绩】字段

Createviewv_1(学生姓名,课程名称,课程学分,成绩)

As

Select学生姓名,课程名称,课程学分,成绩

From学生,课程,选课

Where学生.学号=选课.学号and课程.课程名称=选课.课程名称

2.设计触发器,当删除【课程】时,相应的触发器触发,从【选课】实体中删除相应的【选课】记录

Createtriggert_1afteron课程

Foreachrow

Beginmysql试题及答案。

Deletefrom选课where课程名称=old.课程名称;mysql试题及答案。

end

3.设计一个函数,根据相应的【学院】返回学生的平均成绩

CREATEFUNCTIONT23(XYVARCHAR(20))

RETURNSFLOAT

BEGINmysql试题及答案。

DECLARECJFLOAT;

SELECTAVG(成绩)INTOCJFROM选课,学生

WHERE选课.学号=学生.学号and学院名称=XY;

RETURN(CJ);

END

4.设计一个存储过程,根据【学号】返回学生的学分,注意,成绩在60分以上才能

获得相应的学分。

CREATEPROCEDURET24(INXHCHAR(10),OUTXFINT)

BEGIN

SELECTSUM(课程学分)INTOXFFROM选课,课程

WHERE选课.课程名称=课程.课程名称AND学号=XH

AND成绩>=60;

END

三、数据库查询与管理

1、查询没有选过任何课程的学生

SELECT*FROM学生WHERE学号NOTIN(SELECTDISTINCT学号FROM选课);

2、按照某一课程的成绩高低显示学生名单

SELECT*FROM学生,选课where学生.学号=选课.学号

and课程名称=’XXX’

orderby成绩desc;

3、查询某个学生的平均成绩

Select学号,avg(成绩)from选课where学号=’XXX’;

4、创建test用户,并将【选课】数据库的所有权限赋予test用户,并设定test用户可以在任何主机上登录。

GRANTALLPRIVILEGESON选课.*TO‘test’@’%’IDENTIFIEDBY’something’;

5、数据库备份

MYSQLDUMP–UTEST-Psomething选课>xx.SQL

一、单选题(共34分)

1、mysql中唯一索引的关键字是(C)

(1分)

A.fulltextindex

B.onlyindex

C.uniqueindex

D.index

2、下面关于索引描述中错误的一项是(C)

A.索引可以提高数据查询的速度

(1分)

B.索引可以降低数据的插入速度

C.innodb存储引擎支持全文索引

D.删除索引的命令是dropindex

(2分)

3、支持主外键,索引及事务的存储引擎为是(B)

A.MYISAM

B.INNODB

C.MEMORY

4、对事务的`描述中不正确的是(C)(2分)

A.事务具有原子性

B.事务具有隔离性

C.事务回滚使用commit命令

5、mysql中,备份数据库的命令是(A)

A.mysqldump

B.mysql

D.copy

C.backup

(2分)

6、实现批量数据导入的命令是(B)

A.mysqldump

B.mysql

C.backup

D.return

7、创建用户的命令是(

A.joinuser

(2分)

B.createuser

C.createroot

D.mysqluser

(2分)

8、修改自己的mysql服务器密码的命令是(C)

A.mysql

B.grant

C.setpassword

D.changepassword

9、找回mysql服务器root密码的很重要的一步是跳过权限表的检查启动mysql,该命令是(D)

(2分)

A.mysql-uroot–proot

B.mysqladmin-uroot-proot

C.netstartmysql

D.mysqld-nt--skip-grant-tables

10、联合查询使用的关键字是(B)

A.UNION

B.JOIN

(2分)

C.ALL

D.FULL

11、有订单表orders,包含用户信息userid,产品信息productid,以下(D)语句能够返回至少被订购过两回的productid?

(2分)

A.selectproductidfromorderswherecount(productid)>1

B.selectproductidfromorderswheremax(productid)>1

C.selectproductidfromorderswherehavingcount(productid)>1groupbyproductid

D.selectproductidfromordersgroupbyproductidhavingcount(productid)>1

12、子查询中可以使用运算符ANY,它表示的意思是(B)(2分)

A.满足所有的条件C.一个都不用满足

B.满足至少一个条件D.满足至少5个条件

13、一种存储引擎,其将数据存储在内存当中,数据的访问速度快,电脑关机后数据丢失,具有临时存储数据的特点,该存储引擎是(C)(2分)

A.MYISAMB.INNODBC.ROLLBACK(2分)D.return

14、事务中能实现回滚的命令是(B)

A.TRANSACTION

B.COMMIT

C.MEMORY

D.SAVEPOINT

15、mysql中,还原数据库的命令是(C)

A.mysqldump

B.mysql

C.backup

(2分)

16、ysql中存储用户全局权限的表是(D)

A.table_priv

B.procs_priv

(2分)

C.columns_priv

D.user

17、删除用户的命令是(A)

A.dropuserB.userC.droprootD.truncateuser

18、给名字是zhangsan的用户分配对数据库studb中的stuinfo表的查询和插入数据权限的语句是(B)(2分)

A.grantselect,onstudb.stuinfofor‘zhangsan’@’localhost’B.grantselect,onstudb.stuinfoto‘zhangsan’@’localhost’

C.grant‘zhangsan’@’localhost’toselect,forstudb.stuinfo

D.grant‘zhangsan’@’localhost’tostudb.stuinfoonselect,

二、多项选择题(共12分)

20、事务具有下面的特性(ABC)(4分)

A稳定性B原子性C隔离性D再生性

21、下列的函数中可以处理日期和时间的函数有(BCD)(4分)

AroundBWeekDayCCurdateDDayofMonth

22、mysql中的约束有(BCD)

A.检查约束

B.默认约束(4分)

C.非空约束

D.唯一约束

三、简答题(共12分)

24、在mysql中常用存储引擎有哪几种(最少三种),每个引擎特点区别?

(6分)

25忘记MySQL管理员root的密码如何解决?

写出步骤和指令(6分)

四、编程题(共42分)

1.有一个关于商品供应及顾客订单的数据库。

其中包括四个表,表中信息如下:

供应表apply(id、name、sid、price)

说明:

id供应厂家编号name供应厂家名称sid商品编号price商品价格

顾客表customers(gid、name、address、balance)说明:

gid顾客编号address地址balance余额

订单表orders(sid、gid、date)

说明:

sid商品编号gid顾客编号date订单日期

商品表goods(sid、name、count)

说明:

sid商品编号name商品名称count商品数量1)分析各个表之间的关系(主外键引用关系),创建四个表(4分)

2)从供应表中查询全体供应厂商的基本信息(3分)

3)从顾客表中查询地址在长春的顾客的顾客编号、顾客姓名及余额(3分)

4)从商品表中查询以?

可乐?

两个字结尾的商品名称及数量,并按数量降序排序(4分)

5)从订单表中查询购买商品编号为?

101?

商品的顾客编号及订单日期(3分)

6)从商品表中查询最多商品数量、最少商品数量及商品总数量的记录信息(4分)

7)查询出2008-8-8顾客的订单信息,要求包括顾客姓名、商品名称及订单日期(4分)

8)向商品表中追加一条纪录?

204?

?

可口可乐?

?

900?

)(3分)

9)将商品表中商品编号为204的商品名称更改为?

百事可乐?

(3分)

10)将顾客表上余额不足1000元的,将其订单日期延后10天(4分)

11)删除订单表中商品编号为?

102?

的订单记录(3分)

12)将商品表中没有顾客订购的商品信息删除(4分)

一、选择题

1.在MySQL中,通常使用________语句来进行数据的检索、输出操作。

A.SELECT

B.INSERT

C.DELETE

D.UPDATE

2.在SELECT语句中,可以使用________子句,将结果集中的数据行根据选择列的值进行逻辑分组,以便能汇总表内容的子集,即实现对每个组的聚集计算。

A.LIMIT

B.GROUPBY

C.WHERE

D.ORDERBY

二、填空题

1.SELECT语句的执行过程是从数据库中选取匹配的特定________和________,并将这些数据组织成一个结果集,然后以一张________的形式返回。

2016年计算机二级MySQL数据库试题及答案2016年计算机二级MySQL数据库试题及答案。

2.当使用SELECT语句返回的结果集中行数很多时,为了便于用户对结果数据的浏览和操作,可以使用子句来限制被SELECT语句返回的行数。

三、编程题

请使用SELECT语句将数据库db_test的表content中留言人姓名为“MySQL初学者”的所有留言信息检索出来。

四、简答题

1.请简述什么是子查询?

2.请简述UNION语句的作用。

一、选择题

1.A2.B

二、填空题

1.行列临时表2.LIMIT

三、编程题

在MySQL命令行客户端输入如下SQL语句即可实现:

mysql>USEdb—test;

Databasechanged

mysql>SELECT*FROMcontent

一>WHEREusername=’MySQL初学者’;

四、简答题

1.略。

可参考第5章5.4节内容。

2.略。

2016年计算机二级MySQL数据库试题及答案计算机等级考试题库。

可参考第5章5.9节内容。

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

当前位置:首页 > 自然科学 > 物理

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

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