SQL 基礎語句練習題(查詢)
查詢語句練習題
1.建表
create table student(
id int(10) primary key not null auto_increment,
name varchar(20) not null,
sex varchar(4),
birth year,
department varchar(20) not null,
address varchar(50)
)default charset=utf8;
create table score(
id int(10) primary key not null auto_increment,
stu_id int(10) not null,
c_name varchar(20),
grade int(10)
)default charset=utf8;
2.插入數據
insert into student values(901,‘張老大’,‘男’,1990,‘計算機系’,‘北京市海淀區’);
insert into student (name,sex,birth,department,address) values
(‘張老二’,‘男’,1991,‘中文系’,‘北京市昌平區’),
(‘張三’,‘女’,1995,‘中文系’,‘湖南省永州市’),
(‘李四’,‘男’,1995,‘英語系’,‘遼寧省阜新市’),
(‘王五’,‘女’,1996,‘英語系’,‘福建省廈門市’),
(‘王六’,‘男’,1993,‘計算機系’,‘湖南省衡陽市’);
insert into score values(NULL,901,‘計算機’,98);
insert into score (stu_id,c_name,grade) values
(901,‘英語’,80),
(902,‘計算機’,65),
(902,‘中文’,88),
(903,‘中文’,95),
(904,‘計算機’,70),
(904,‘英語’,92),
(905,‘英語’,94),
(906,‘計算機’,90),
(906,‘英語’,85);
3.查詢student表的所有記錄
select * from student;
4.查詢student表的第2條到第4條記錄
select * from student limit 1,3;
5.從student表查詢所有學生的學號、姓名和院系信息
select id,name,department from student;
6.從student表中查詢計算機系和英語系的學生的信息
select *
from student
where department in (‘計算機系’,‘英語系’);
7.從student表中查詢年齡18~22歲的學生信息
select *
from student
where 2018-birth between 18 and 22;
8.從student表中查詢每個院系有多少人
select department,count(department)
from student
group by department;
9.從score表中查詢每個科目的最高分
select c_name,max(grade)
from score
group by c_name;
10.查詢李四的考試科目和考試成績
select c_name,grade
from score
where stu_id in (select id from student where name=‘李四’);
11.用連接的方式查詢所有學生的信息和考試信息
select a.*,b.c_name,b.grade
from student a,score b
where a.id=b.stu_id
order by a.id;
12.計算每個學生的總成績
select stu_id,count(c_name),sum(grade)
from score
group by stu_id;
13.計算每個考試科目的平均成績
select c_name,avg(grade)
from score
group by c_name;
14.查詢計算機成績低於95的學生信息
select *
from student
where id in (select stu_id from score where c_name=‘計算機’ and grade<95);
15.查詢同時參加計算機和英語考試的學生的信息
select *
from student
where id in (select a.stu_id from score a,score b where a.stu_id=b.stu_id and a.c_name=‘計算機’ and b.c_name=‘英語’);
16.將計算機考試成績按從高到低排序
select stu_id,grade
from score
where c_name=‘計算機’
order by grade desc;
17.從student表和score表中查詢出學生的學號,然後合併查詢結果
select id from student
union
select stu_id from score;
18.查詢姓張或者姓王的同學的姓名、院系和考試科目及成績
select a.name,a.department,b.c_name,b.grade
from student a,score b
where a.id=b.stu_id and a.name regexp ‘1’;
題意 張、王必須爲姓,即以其中之一開頭
19.查詢都是湖南的學生的姓名、年齡、院系和考試科目及成績
select a.name,2018-a.birth as age,a.department,b.c_name,b.grade
張王 ↩︎