mysql数据库面试题带答案(三)

选择题

【单选题】
SQL中,“AGE IN(20,22)”的语义是( D )。
A: AGE<=22 AND AGE >=20
B: AGE <22 AND AGE >20
C: AGE =20 AND AGE =22
D: AGE =20 OR AGE =22
【单选题】
在SQL语言中,条件“BETWEEN 20 AND 30”表示年龄在20到30之间,且( A )。
A: 包括20岁和30岁
B: 不包括20岁和30岁
C: 包括20岁,不包括30岁
D: 不包括20岁,包括30岁
【单选题】
SQL语言中,删除EMP表中全部数据的命令正确的是(D)。
A: delete * from emp
B: drop table emp
C: truncate table emp
D: 没有正确答案
【单选题】
下面正确表示Employees表中有多少非NULL的Region列的SQL语句是( B )
A: SELECT count(* ) from Employees
B: SELECT count(Region) from Employees
C: SELECT count(Distinct Region) from Employees
D: SELECT sum( Region) from Employees
【单选题】
t_score(stu_id,sub_id,score),即成绩表(学号,科目编号,成绩)。以下能够获取每个学生所有学科的平均成绩的选项是(A)
A: select stu_id,avg(score) from t_score group by stu_id
B: select stu_id,avg(score) from t_score
C: select stu_id,avg(score) from t_score order by stu_id
D: select stu_id,sum(score)/count(score) from t_score
【单选题】
若要求查找S表中,姓名的第一个字为’王’的学生学号和姓名。下面列出的SQL语句中,哪个是正确的(B )
A: SELECT Sno,SNAME FROM S WHERE SNAME=′王%′
B: SELECT Sno,SNAME FROM S WHERE SNAME LIKE ′王%′
C: SELECT Sno,SNAME FROM S WHERE SNAME LIKE ′王_′
D: 全部
【单选题】
若要求“查询选修了3门以上(不包含3门)课程的学生的学生号”,正确的SQL语句是(B )
A: SELECT Sno FROM SC GROUP BY Sno WHERE COUNT()> 3
B: SELECT Sno FROM SC GROUP BY Sno HAVING COUNT(
)> 3
C: SELECT Sno FROM SC ORDER BY Sno WHERE COUNT()> 3
D: SELECT Sno FROM SC ORDER BY Sno HAVING COUNT(
)>= 3
【单选题】
要删除students表中学生平均成绩(avg_grade)小于60分的记录, 下列SQL语句正确的是? B
A: DELETE from students
B: DELETE from students WHERE avg_grade < 60
C: DELETE from students WHERE avg_grade <= 60
D: DELETE * students WHERE avg_grade < 60
【单选题】
请问,以下哪条SQL语句可以查询姓名为”李”开头的所有学员:(C )
A: select * from student where name like ‘%李%’;
B: select * from student where name like ‘李’;
C: select * from student where name like ‘李%’;
D: select * from student where name like ‘李
’;
【单选题】
查找条件为:姓名不是NULL的记录( C)
A: WHERE NAME ! NULL
B: WHERE NAME NOT NULL
C: WHERE NAME IS NOT NULL
D: WHERE NAME!=NULL
【单选题】
以下聚合函数求平均数的是©
A: SUM()
B: MAX()
C: AVG()
D: MIN()
【单选题】
关于MySQL中的group by(分组),以下说法正确的是:A
A: group by语句可以和where语句和having语句同时使用
B: group by语句只能对一个字段进行分组
C: group by语句只能对varchar类型字段进行分组
D: group by语句和order by语句可以同时使用,而且没有顺序关系
【多选题】
按照学生平均成绩(avg_grade) 升序排列将students表中的数据检索出来,下面SQL语句正确的是? AD
A: SELECT * FROM students ORDER BY avg_grade
B: SELECT * FROM students GROUP BY avg_grade ASC
C: SELECT * FROM students ORDER BY avg_grade DESC
D: SELECT * FROM students ORDER by avg_grade asc
【多选题】
假如有数据库:Employee,里面有”性别”字段:sex,”薪水”字段:salary,请补全下面的SQL语句,使其可以查询:男性员工和女性的员工的最高薪水。要求结果显示:性别,最高薪水两列。(请按顺序选择) select sex ‘性别’, _______________ from employee _______________AD
A: max(salary) ‘最高薪水’
B: max(sum(salary)) ‘最高薪水’
C: group by salary;
D: group by sex;
【多选题】
对于关系型数据库来说,表之间存在下面那些关系(ABC)
A: 一对一关系
B: 一对多关系
C: 多对多关系
D: 继承关系
【单选题】
如果一个字段的数据必须来源另一个表的主键,那么要在这个字段上建立(B)。
A: PK(主键)
B: FK(外键)
C: UK(唯一键)
D: 复合主键
【单选题】
关于主键下列说法错误的是:(A)
A: 一个表的主键由一个或多个字段组成。
B: 一个表的主键由只能由一个字段组成。
C: 值具有唯一性,而且不允许取空值(NULL)。
D: 键的作用是唯一地标识表中的每一条记录。

操作题

根据不同条件对表进行查询操作,
1:employee表结构

字段名 字段说明 数据类型 主键 外键 非空 唯一
e_no 员工编号 int(11)
e_name 员工姓名 varchar(50)
e_gender 员工性别 char(2)
dept_no 部门编号 int(11)
e_job 职位 varchar(50)
e_salary 薪水 int(11)
hireDate 入职日期 date

2:dept表结构

字段名 字段说明 数据类型 主键 外键 非空 唯一
dept_no 部门编号 int(11)
d_name 部门名称 varchar(50)
d_location 部门地址 varchar(100)

2:将指定记录分别插入两个表中,执行过程如下:
向dept表中插入数据
INSERT INTO dept
VALUES (10, ‘ACCOUNTING’, ‘ShangHai’),
(20, 'RESEARCH ', 'BeiJing '),
(30, 'SALES ', 'ShenZhen '),
(40, 'OPERATIONS ', 'FuJian ');

向employee表中插入数据
INSERT INTO employee
VALUES (1001, ‘SMITH’, ‘m’,20, ‘CLERK’,800,‘2005-11-12’),
(1002, ‘ALLEN’, ‘f’,30, ‘SALESMAN’, 1600,‘2003-05-12’),
(1003, ‘WARD’, ‘f’,30, ‘SALESMAN’, 1250,‘2003-05-12’),
(1004, ‘JONES’, ‘m’,20, ‘MANAGER’, 2975,‘1998-05-18’),
(1005, ‘MARTIN’, ‘m’,30, ‘SALESMAN’, 1250,‘2001-06-12’),
(1006, ‘BLAKE’, ‘f’,30, ‘MANAGER’, 2850,‘1997-02-15’),
(1007, ‘CLARK’, ‘m’,10, ‘MANAGER’, 2450,‘2002-09-12’),
(1008, ‘SCOTT’, ‘m’,20, ‘ANALYST’, 3000,‘2003-05-12’),
(1009, ‘KING’, ‘f’,10, ‘PRESIDENT’, 5000,‘1995-01-01’),
(1010, ‘TURNER’, ‘f’,30, ‘SALESMAN’, 1500,‘1997-10-12’),
(1011, ‘ADAMS’, ‘m’,20, ‘CLERK’, 1100,‘1999-10-05’),
(1012, ‘JAMES’, ‘m’,30, ‘CLERK’, 950,‘2008-06-15’);
3:在employee表中,查询所有记录的e_no、e_name和e_salary字段值
select e_no,e_name,e_salary from employee;
4:在employee表中,查询dept_no等于10和20的所有记录。
select * from employee where dept_no in (‘10’,’20’) ;
5:在employee表中,查询工资范围在800到2500之间的员工信息。
select * from employee where e_salary between 800 and 2500;
6:在employee表中,查询部门编号为20的部门中的员工信息。
select * from employee where dept_no;
7:在employee表中,查询每个部门最高工资的员工信息。
select * from employee where e_salary=(select max(e_salary) from employee group by dept_no);
8:在employee表中,计算不同类型职工的总工资数。
select sum(e_salary) from employee group by dept_no;
9:在employee表中,查询工资低于1500的员工信息。
select * from employee where e_salary<1500;
10:在employee表中,将查询记录先按部门编号由高到低排列,再按员工工资由高到低排列。
select * from employee order by dept_no desc,e_salary desc;
11:在employee表中,查询员工姓名以字母A或S开头的员工的信息。
select * from employee where e_name like ‘A%’or e_name like‘S%’;

猜你喜欢

转载自blog.csdn.net/yang_yang_heng/article/details/107498498