标题 | MySQL习题及答案 |
范文 | MySQL习题及答案 第一篇:《MySQL最新最全面试题和答案》在缺省模式下,MYSQL是autocommit模式的,所有的数据库更新操作都会即时提交,所以在缺省情况下,mysql是不支持事务的。 但是如果你的MYSQL表类型是使用InnoDB Tables 或 BDB tables的话,你的MYSQL就可以使用事务处理,使用SET AUTOCOMMIT=0就可以使MYSQL允许在非autocommit模式, 在非autocommit模式下,你必须使用COMMIT来提交你的更改,或者用ROLLBACK来回滚你的更改。 示例如下: START TRANSACTION; SELECT @A:=SUM(salary) FROM table1 WHERE type=1; UPDATE table2 SET summmary=@A WHERE type=1; COMMIT; MYSQL相比于其他数据库有哪些特点? MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司,现在已经 被Sun公司收购,支持FreeBSD、Linux、MAC、Windows等多种操作系统 与其他的大型数据库例如Oracle、DB2、SQL Server等相比功能稍弱一些 1、可以处理拥有上千万条记录的大型数据 2、支持常见的SQL语句规范 3、可移植行高,安装简单小巧 4、良好的运行效率,有丰富信息的网络支持 5、调试、管理,优化简单(相对其他大型数据库) 介绍一下mysql的日期和时间函数 这里是一个使用日期函数的例子。下面的查询选择所有 date_col 值在最后 30 天内的记录。 mysql> SELECT something FROM tbl_name WHERE TO_DAYS(NOW) – TO_DAYS(date_col) <= 30; DAYOFWEEK(date) 返回 date 的星期索引(1 = Sunday, 2 = Monday, ... 7 = Saturday)。索引值符合 ODBC 的标准。 mysql> SELECT DAYOFWEEK(’1998-02-03′); -> 3 WEEKDAY(date) 返回 date 的星期索引(0 = Monday, 1 = Tuesday, ? 6 = Sunday): mysql> SELECT WEEKDAY(’1998-02-03 22:23:00′); -> 1 mysql> SELECT WEEKDAY(’1997-11-05′); -> 2 DAYOFMONTH(date) 返回 date 是一月中的第几天,范围为 1 到 31: mysql> SELECT DAYOFMONTH(’1998-02-03′); -> 3 DAYOFYEAR(date) 返回 date 是一年中的第几天,范围为 1 到 366: mysql> SELECT DAYOFYEAR(’1998-02-03′); -> 34 MONTH(date) 返回 date 中的月份,范围为 1 到 12: mysql> SELECT MONTH(’1998-02-03′); -> 2 DAYNAME(date) 返回 date 的星期名: mysql> SELECT DAYNAME(”1998-02-05″); -> ?Thursday? MONTHNAME(date) 返回 date 的月份名: mysql> SELECT MONTHNAME(”1998-02-05″); -> ?February? QUARTER(date) 返回 date 在一年中的季度,范围为 1 到 4: mysql> SELECT QUARTER(’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 (ISO 8601) mysql> SELECT WEEK(’1998-02-20′); -> 7 mysql> SELECT WEEK(’1998-02-20′,0); -> 7 mysql> SELECT WEEK(’1998-02-20′,1); -> 8 mysql> SELECT WEEK(’1998-12-31′,1); -> 53 注意,在版本 4.0 中,WEEK(#,0) 被更改为匹配 USA 历法。 注意,如果一周是上一年的最后一周,当你没有使用 2 或 3 做为可选参数时,MySQL 将返回 0: mysql> SELECT YEAR(’2000-01-01′), WEEK(’2000-01-01′,0); -> 2000, 0 mysql> SELECT WEEK(’2000-01-01′,2); -> 52 你可能会争辩说,当给定的日期值实际上是 1999 年的第 52 周的一部分时,MySQL 对 WEEK 函数应该返回 52。我们决定返回 0 ,是因为我们希望该函数返回“在指定年份中是第几周”。当与其它的提取日期值中的月日值的函数结合使用时,这使得 WEEK 函数的用法可靠。如果你更希望能得到恰当的年-周值,那么你应该使用参数 2 或 3 做为可选参数,或者使用函数 YEARWEEK : mysql> SELECT YEARWEEK(’2000-01-01′); -> 199952 mysql> SELECT MID(YEARWEEK(’2000-01-01′),5,2); -> 52 YEAR(date) 返回 date 的年份,范围为 1000 到 9999: mysql> SELECT YEAR(’98-02-03′); -> 1998 YEARWEEK(date) YEARWEEK(date,first) 返回一个日期值是的哪一年的哪一周。第二个参数的形式与作用完全与 WEEK 的第二个参数一致。注意,对于给定的日期参数是一年的第一周或最后一周的,返回的年份值可能与日期参数给出的年份不一致: mysql> SELECT YEARWEEK(’1987-01-01′); -> 198653 注意,对于可选参数 0 或 1,周值的返回值不同于 WEEK 函数所返回值(0), WEEK 根据给定的年语境返回周值。 HOUR(time) 返回 time 的小时值,范围为 0 到 23: mysql> SELECT HOUR(’10:05:03′); -> 10 MINUTE(time) 返回 time 的分钟值,范围为 0 到 59: mysql> SELECT MINUTE(’98-02-03 10:05:03′); -> 5 SECOND(time) 返回 time 的秒值,范围为 0 到 59: mysql> SELECT SECOND(’10:05:03′); -> 3 PERIOD_ADD(P,N) 增加 N 个月到时期 P(格式为 YYMM 或 YYYYMM)中。以 YYYYMM 格式返回值。 注意,期间参数 P 不是 一个日期值: mysql> SELECT PERIOD_ADD(9801,2); -> 199803 PERIOD_DIFF(P1,P2) 返回时期 P1 和 P2 之间的月数。P1 和 P2 应该以 YYMM 或 YYYYMM 指定。 注意,时期参数 P1 和 P2 不是 日期值: mysql> SELECT PERIOD_DIFF(9802,199703); -> 11 DATE_ADD(date,INTERVAL expr type) DATE_SUB(date,INTERVAL expr type) ADDDATE(date,INTERVAL expr type) SUBDATE(date,INTERVAL expr type) 这些函数执行日期的算术运算。ADDDATE 和 SUBDATE 分别是 DATE_ADD 和 DATE_SUB 的同义词。 在 MySQL 3.23 中,如果表达式的右边是一个日期值或一个日期时间型字段,你可以使用 + 和 – 代替 DATE_ADD 和 DATE_SUB(示例如下)。 参数 date 是一个 DATETIME 或 DATE 值,指定一个日期的开始。expr 是一个表达式,指定从开始日期上增加还是减去间隔值。expr 是一个字符串;它可以以一个 “-” 领头表示一个负的间隔值。type 是一个关键词,它标志着表达式以何格式被解释。 下表显示 type 和 expr 参数是如何关联的: type 值 expr 期望的格式 SECOND SECONDS MINUTE MINUTES HOUR HOURS DAY DAYS MONTH MONTHS YEAR YEARS MINUTE_SECOND “MINUTES:SECONDS” HOUR_MINUTE “HOURS:MINUTES” DAY_HOUR “DAYS HOURS” YEAR_MONTH “YEARS-MONTHS” HOUR_SECOND “HOURS:MINUTES:SECONDS” DAY_MINUTE “DAYS HOURS:MINUTES” DAY_SECOND “DAYS HOURS:MINUTES:SECONDS” 在 expr 的格式中,MySQL 允许任何字符作为定界符。表中所显示的是建议的定界字符。如果 date 参数是一个 DATE 值,并且计算的间隔仅仅有 YEAR、MONTH 和 DAY 部分(没有时间部分),那么返回值也是一个 DATE 值。否则返回值是一个 DATETIME 值: mysql> SELECT “1997-12-31 23:59:59″ + INTERVAL 1 SECOND; -> 1998-01-01 00:00:00 mysql> SELECT INTERVAL 1 DAY + “1997-12-31″; -> 1998-01-01 mysql> SELECT “1998-01-01″ – INTERVAL 1 SECOND; -> 1997-12-31 23:59:59 mysql> SELECT DATE_ADD(”1997-12-31 23:59:59″, 第二篇:《MYSQL复习题及答案》说明:以下所有问题均假设已经初始登录到MySQL客户端,系统所有数据库命名方式可以采用中文,题目之间前后有相应的顺序,确保命名方式一致,根据问题的描述,写出相应的MySQL语句。 一、 数据库设计 1. 显示当前系统所有数据库,将MySQL设置为默认数据库,并显示MySQL数据库中的所有表 Show databases; Use mysql; Show tables; 2. 创建数据库【选课】,设置数据库的编码字符集为UTF8,并将【选课】设置为默认数据库 Create database选课 Character set UTF8; Use选课; 3. 系统包含以下实体,请创建相应的表,字段描述中并未给出相应的主键和相应的外键关联,请自行设计每个实体的主键和相应的外键关联字段。 提示: 【学院】【学生】之间存在一对多的关系 【学生】【课程】之间存在多对多关系, 它们之间的联系为【选课】。 【学生】,应包含【学号、姓名、出生日期】等属性。 【学院】,应包含【学院名称】等属性。 【课程】,应包含【课程名称,课程学分】等属性。 【选课】,应包含【成绩】等属性。 CREATE TABLE 学院 (学院名称 varCHAR(20) primary key); CREATE TABLE 学生 (学号 CHAR(10) primary key, 姓名 VARCHAR(10), 出生日期 DATE, 学院名称VARCHAR(20) Foreign Key (学院名称) references 学院(学院名称)); CREATE TABLE 课程 (课程名称 varCHAR(20) primary key, 课程学分 int); CREATE TABLE 选课 (课程名称 varCHAR(20), 学号 CHAR(10), 成绩 float, primary key (课程名称,学号), Foreign Key(课程名称) references 课程(课程名称), Foreign Key(学号) references 学生(学号)); 二、 数据库功能 1. 设计【选课视图】,要求显示【学生姓名,课程名称,课程学分,成绩】字段 Create view v_1 (学生姓名,课程名称,课程学分,成绩) As Select学生姓名,课程名称,课程学分,成绩 From 学生,课程,选课 Where 学生.学号=选课.学号 and 课程.课程名称=选课.课程名称 2. 设计触发器,当删除【课程】时,相应的触发器触发,从【选课】实体中删除相应的【选课】记录 Create trigger t_1 after on 课程 For each row Beginmysql试题及答案。 Delete from 选课 where 课程名称=old.课程名称;mysql试题及答案。 end 3. 设计一个函数,根据相应的.【学院】返回学生的平均成绩 CREATE FUNCTION T23(XY VARCHAR(20) ) RETURNS FLOAT BEGINmysql试题及答案。 DECLARE CJ FLOAT; SELECT AVG(成绩) INTO CJ FROM 选课,学生 WHERE 选课.学号=学生.学号 and学院名称=XY; RETURN(CJ); END 4. 设计一个存储过程,根据【学号】返回学生的学分,注意,成绩在60分以上才能 获得相应的学分。 CREATE PROCEDURE T24(IN XH CHAR(10),OUT XF INT) BEGIN SELECT SUM(课程学分) INTO XF FROM 选课,课程 WHERE 选课.课程名称=课程.课程名称 AND 学号=XH AND 成绩>=60; END 三、 数据库查询与管理 1、 查询没有选过任何课程的学生 SELECT * FROM 学生 WHERE 学号 NOT IN(SELECT DISTINCT 学号 FROM 选课); 2、 按照某一课程的成绩高低显示学生名单 SELECT * FROM 学生,选课 where 学生.学号=选课.学号 and 课程名称=’XXX’ order by 成绩 desc; 3、 查询某个学生的平均成绩 Select学号,avg(成绩) from 选课 where 学号=’XXX’; 4、 创建test用户,并将【选课】数据库的所有权限赋予test用户,并设定test用户可以在任何主机上登录。 GRANT ALL PRIVILEGES ON选课.* TO ‘test’@’%’ IDENTIFIED BY ’something’ ; 5、数据库备份 MYSQLDUMP –UTEST -P something 选课>xx.SQL 第三篇:《MYSQL测试题 (2)》一、单选题(共34分) 1、mysql中唯一索引的关键字是( C ) (1分) A. fulltext index B.only index C.unique index D.index 2、下面关于索引描述中错误的一项是( C ) A.索引可以提高数据查询的速度 (1分) B.索引可以降低数据的插入速度 C.innodb存储引擎支持全文索引 D.删除索引的命令是drop index (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. join user (2分) B.create user C.create root D.mysql user (2分) 8、 修改自己的mysql服务器密码的命令是( C ) A.mysql B.grant C.set password D.change password 9、 找回mysql服务器root密码的很重要的一步是跳过权限表的检查启动mysql,该命令是 ( D) (2分) A. mysql -u root –proot B. mysqladmin -uroot -proot C. net start mysql 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. select productid from orders where count(productid)>1 B. select productid from orders where max(productid)>1 C. select productid from orders where having count(productid)>1 group by productid D. select productid from orders group by productid having count(productid)>1 12、子查询中可以使用运算符ANY, 它表示的意思是( B ) (2分) A. 满足所有的条件 C. 一个都不用满足 B. 满足至少一个条件 D. 满足至少5个条件 13、一种存储引擎,其将数据存储在内存当中,数据的访问速度快, 电脑关机后数据丢失,具有临时存储数据的特点,该存储引擎是( C ) (2分) A. MYISAM B.INNODB C.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. drop user B. user C.drop root D.truncate user 18、给名字是zhangsan的用户分配对数据库studb中的stuinfo表的查询和插入数据权限的语句是( B ) (2分) A.grant select, on studb.stuinfo for‘zhangsan’@’localhost’ B.grant select, on studb.stuinfo to ‘zhangsan’@’localhost’ C.grant‘zhangsan’@’localhost’ to select, for studb.stuinfo D.grant ‘zhangsan’@’localhost’ to studb.stuinfo on select, 二、多项选择题(共12分) 20、事务具有下面的特性( ABC ) (4分) A 稳定性 B原子性 C隔离性 D 再生性 21、下列的函数中可以处理日期和时间的函数有( BCD )(4分) A round B WeekDay C Curdate D DayofMonth 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分) 第四篇:《2016年计算机二级MySQL数据库试题及答案》一、选择题 1.在MySQL中,通常使用________语句来进行数据的检索、输出操作。 A.SELECT B.INSERT C.DELETE D.UPDATE 2.在SELECT语句中,可以使用________子句,将结果集中的数据行根据选择列的值进行逻辑分组,以便能汇总表内容的子集,即实现对每个组的聚集计算。 A.LIMIT B.GROUP BY C.WHERE D.ORDER BY 二、填空题 1.SELECT语句的执行过程是从数据库中选取匹配的特定________和________,并将这些数据组织成一个结果集,然后以一张________的形式返回。2016年计算机二级MySQL数据库试题及答案2016年计算机二级MySQL数据库试题及答案。 2.当使用SELECT语句返回的结果集中行数很多时,为了便于用户对结果数据的浏览和操作,可以使用子句来限制被SELECT语句返回的行数。 三、编程题 请使用SELECT语句将数据库db_test的表content中留言人姓名为“MySQL初学者”的所有留言信息检索出来。 四、简答题 1.请简述什么是子查询? 2.请简述UNION语句的作用。 2016年计算机二级MySQL数据库试题及答案一、选择题 1.A2.B 二、填空题 1.行列临时表2.LIMIT 三、编程题 在MySQL命令行客户端输入如下SQL语句即可实现: mysql>USE db—test; Database changed mysql>SELECT*FROM content 一>WHERE username=’MySQL初学者’; 四、简答题 1.略。可参考第5章5.4节内容。 2.略。2016年计算机二级MySQL数据库试题及答案计算机等级考试题库。可参考第5章5.9节内容。 |
随便看 |
|
范文网提供海量优质实用美文,包含随笔、日记、古诗文、实用文、总结、计划、祝福语、句子、职场文档等范文,为您写作提供指导和优质素材。