企业数据库面试题解析
- 单表查询
库表student.report,有3个字段, 姓名、 学科、 成绩, 记录如下, 根据要求
完成SQL语句
Name | Subject | Result |
张三 | Math | 95 |
李四 | English | 83 |
王五 | Math | 79 |
赵六 | Math | 98 |
张飞 | English | 85 |
李逵 | Math | 74 |
- 查询姓李的同学的个数
SELECT COUNT(*) FROM student.report
WHERE Name LIKE '李%';
2. 查询表中数学成绩大于80的前2名同学的名字, 并按分数从
大到小的顺序排列
select name from student
where math>80
order by Result DESC limit 2;
- 多表查询
假设一个出版社的数据库中有Books和Authors两个表,分别存储书籍信息和作者信息。
两个表的结构如下:
/* 书籍表 */
create table Books
( ID_ int, /* 书籍编号 */
Author int, /* 作者编号 */
Title Varchar(100) /* 书名 */)
/* 作者表 */
create table Authors
( ID_ int, /* 作者编号 */
Name_ Varchar(100) /* 姓名 */)
CREATE TABLE `Books` (
`ID_` int(11) DEFAULT NULL,
`Author` int(11) DEFAULT NULL,
`Title` varchar(100) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `Authors` (
`ID_` int(11) DEFAULT NULL,
`Name_` varchar(100) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
1)请写一句SQL,列出所有作者姓名和其所写书籍名称。
select a.Name_,b.Title from Authors a, Books b where a.ID_ = b.Author;
2)请写一句SQL,列出写过两本以上(包括两本)书籍的作者姓名
select a.Name_
from Authors a, Books b
where a.ID_ = b.Author
group by b.Author
having count(*) >=2;
- 用户授权
1.MySQL如何对用户smart授权访问,密码为123456。
GRANT ALL ON *.* TO smart@'%' IDENTIFIED BY '123456';
2.授权用户tom可以在网络中的192.168.4.254主机登录,仅对对userdb库下的user表有查看记录、更新name字段的权限 , 登录密码userweb888。
GRANT SELECT,UPDATE(name) ON userdb.user TO tom@'192.168.4.254' IDENTIFIED BY 'userweb888';
- 备份恢复
1.现在有一个MySQL数据库,库名test,要求使用mysqldump对数据库进行备份。
mysqldmp -uroot -p -B test > test.sql
2.如何对MySQL进行增量备份和恢复?
- 逻辑备份+二进制日志
- mysqldmp -uroot -p -B test > test.sql
3.如何对binlog进行备份
- 使用cp命令离线备份
- 使用mysqlbinlog在线备份