之前找工作参加了几个面试,发现软件测试的笔试都有一道关于SQL的简答题,今天就把必考的题型及参考答案汇总一下。
基础SQL例子
1、创建表,如创建学生表Student,要求有学生姓名name,年龄age,班级class
大致写法是:
字段名 类型 是否为空 主键
CREATE TABLE Student (
name VARCHAR ( 255 ) not null primary key,
age INT NOT NULL,
class VARCHAR ( 255 ) NOT NULL
)
创建后表如下
2、修改字段名,基本语法是:
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新数据类型;
如把上表的name改为name1
ALTER TABLE Student CHANGE name name1 VARCHAR (255);
3、向Student表插入一条数据“小红,11,3年(2)班”
INSERT INTO student VALUES( '小红',12, '3年(2)班');
4、删除Student表中name为“小红”的记录
delete from Student where name="小红";
5、将Student表中name为小红,改为小小丽
UPDATE Student1 SET `name` = '小小丽' WHERE `name` = '小红'
6、求出每个年龄层的人数
SELECT age,COUNT(*) FROM `Student` GROUP BY age
如果将上面的要求改成求出11岁的学生人数有几个,那么SQL语句就是
SELECT age,COUNT(*) FROM `Student` GROUP BY age having age=11
7、简单去重,求出去除重复名字后的名字列
SELECT DISTINCT `NAME` FROM Student1
创建有默认值且限定字段值的表
例子:创建一个员工表,要求有sex字段,且sex仅限男女两种值,默认是男
(1)如果是以下创建方式,sex字段插入非男或者非女值,是不会报错的,原因未知
CREATE TABLE employee (
id INT ( 255 ) NOT NULL PRIMARY KEY,
NAME VARCHAR ( 10 ) NOT NULL,
sex CHAR ( 1 ) DEFAULT '男' CHECK (sex IN ( '男', '女' )),
phone INT ( 13 ) NOT NULL
)
(2)如果是以下这种创建方式,sex字段插入非男或者非女值,是会报错的
CREATE TABLE employee (
id INT ( 255 ) NOT NULL PRIMARY KEY,
NAME VARCHAR ( 10 ) NOT NULL,
`sex` enum('男','女') default '男',
phone INT ( 13 ) NOT NULL
)
求出最大id的男女两条数据
employee表如下:
select * from `employee` a where a.id in
(SELECT MAX(id) FROM `employee` GROUP BY employee.sex)
多表联合查询
这是学生表student,其中sex字段的1代表男生,0代表女生
这是班级表class
这是学生班级表student_class
1、求出“1年1班”的学生名字和对应分数
SELECT a.s_name,a.score FROM student a WHERE a.s_id IN (SELECT s_id FROM student_class WHERE c_id IN (SELECT c_id FROM class WHERE c_name="1年1班"))
2、求出c_id为201的平均分
SELECT AVG(a.score) FROM student a JOIN student_class b on a.s_id=b.s_id AND b.c_id=201