MySQL习题及答案.docx

上传人:b****4 文档编号:3922981 上传时间:2023-05-06 格式:DOCX 页数:17 大小:21.33KB
下载 相关 举报
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是automit模式的,所有的数据库更新操作都会即时提交,所以在缺省情况下,mysql是不支持事务的。

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

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

  STARTTRANSACTION;

  SELECT@A:

=SUM(salary)FROMtable1WHEREtype=1;

  UPDATEtable2SETsummmary=@AWHEREtype=1;

  MIT;

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

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

  2、支持常见的SQL语句标准

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

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

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

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

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

mysql>SELECTsomethingFROMtblname

  WHERETODAYS(NOW)–TODAYS(datecol)<=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

  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

  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

  PERIODADD(P,N)

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

以YYYYMM格式返回值。

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

  mysql>SELECTPERIODADD(9801,2);

  ->199803

  PERIODDIFF(P1,P2)

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

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

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

  mysql>SELECTPERIODDIFF(9802,199703);

  ->11

  DATEADD(date,INTERVALexprtype)

  DATESUB(date,INTERVALexprtype)

  ADDDATE(date,INTERVALexprtype)

  SUBDATE(date,INTERVALexprtype)

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

ADDDATE和SUBDATE分别是DATEADD和DATESUB的同义词。

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

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

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

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

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

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

type值expr期望的格式

  SECONDSECONDS

  MINUTEMINUTES

  HOURHOURS

  DAYDAYS

  MONTHMONTHS

  YEARYEARS

  MINUTESECOND“MINUTES:

SECONDS”

  HOURMINUTE“HOURS:

MINUTES”

  DAYHOUR“DAYSHOURS”

  YEARMONTH“YEARS-MONTHS”

  HOURSECOND“HOURS:

MINUTES:

SECONDS”

  DAYMINUTE“DAYSHOURS:

MINUTES”

  DAYSECOND“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>SELECTDATEADD(”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.设计【选课视图】,要求显示【学生姓名,课程名称,课程学分,成绩】字段

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

  As

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

  From学生,课程,选课

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

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

  Createtriggert1afteron课程

  Foreachrow

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

  end

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

  CREATEFUNCTIONT23(XYVARCHAR(20))

  RETURNSFLOAT

  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

  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.事务回滚使用mit命令

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.startmysql

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.MIT

  C.MEMORY

  D.SAVEPOINT

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

  A.mysqldump

  B.mysql

  C.backup

  (2分)

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

  A.tablepriv

  B.procspriv

  (2分)

  C.columnspriv

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,

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

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

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

AroundBWeekDayCCurdateDDayofMonth

22、mysql中的约束有(BCD)

  A.检查约束

  B.默认约束(4分)

C.非空约束

  D.唯一约束

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

(6分)

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

写出步骤和指令(6分)

  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)查询出xx-8-8顾客的订单信息

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

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

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

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