数据库相关习题2
新建一个学生表S,有包含如下信息
学号 id,
学生姓名 name,
性别 gender,
年龄 age,
专业 dept并插入10条数据。
create table S(
id int primary key auto_increment,
name varchar(20),
gender varchar(10),
age int,
department varchar(100)
);
drop table S;
desc S;
select * from S;
学号格式为 201801 201802 201803…
性别只有 ‘male’ & ‘female’
院系包含(信息系、数学系,计算机科学系 等)
然后做如下查询:
alter database mysql character set utf8 collate utf8_bin;
-- 否则 Incorrect string value: '\xE9\xAB\x98\xE6\xBA\x90' for column 'name' at row 1
show create database mysql;
insert into S (id,name,gender,age,department) value (null,'正派雪茄','male',18,'信息系');
insert into S (id,name,gender,age,department) value (null,'迪迦','male',19,'数学系');
insert into S (id,name,gender,age,department) value (null,'佐菲','male',20,'计算机科学系');
insert into S (id,name,gender,age,department) value (null,'雷欧','female',21,'信息系');
insert into S (id,name,gender,age,department) value (null,'杰克','male',22,'信息系');
insert into S (id,name,gender,age,department) value (null,'泰罗','male',23,'信息系');
insert into S (id,name,gender,age,department) value (null,'高斯','male',24,'计算机科学系');
insert into S (id,name,gender,age,department) value (null,'赛文','male',25,'数学系');
insert into S (id,name,gender,age,department) value (null,'宇宙英雄','male',26,'信息系');
insert into S (id,name,gender,age,department) value (null,'奥特之母','female',27,'计算机科学系');
-
查询全体学生的学号与姓名。
-
查询全体学生的姓名、学号。
select name,id from S;
-
查询全体学生的详细记录。
select * from S;
-
查询全体学生的姓名、出生年份和所有系[补] 使用列别名改变查询结果的列标题
select name as N,age as A,department as D from S;
-
查询所有年龄在20岁以下的学生姓名及其年龄。
select name,age from S where age<20;
-
查询年龄在20~23岁(包括20岁和23岁)之间的学生的姓名、系别和年龄。
select name,department,age from S where age between 20 and 23;
-
查询年龄不在20~23岁之间的学生姓名、系别和年龄。
select name,department,age from S where age not in(20,21,22,23);

-
查询信息系、数学系和计算机系学生的姓名和性别。
select name,gender from S where department='信息系' and department='数学系' and department='计算机科学系';
-
查询既不是信息系、数学系,也不是计算机科学系的学生的姓名和性别。
select name,gender from S where department!='信息系' and department!='数学系' and department!='计算机科学系';
-
查询学号为200518的学生的详细情况。
select * from S where id=8;
-
查询所有姓雷学生的姓名、学号和性别。
select * from S where name like '雷%';
-
查询姓“高”且全名为两个汉字的学生的姓名。
select * from S where name like '高_';
-
查询名字中第2个字为“迦"字的学生的姓名和学号。
select * from S where name like '%迦';
-
查询所有不姓雷的学生姓名。
select * from S where name not like '雷%';
-
查询学号在201801~201809之间的学生姓名。
select * from S where id between 1 and 9;
-
查询不同院系学生的人数。
select count(*) as 信息系人数 from S where department='信息系';
select count(*) as 数学系人数 from S where department='数学系';
select count(*) as 计算机科学系人数 from S where department='计算机科学系';

-
查询计算机系年龄在20岁以下的学生姓名。
select name,age,department from S where department='计算机科学系' and age<20 group by name;