SQL--练习题

练习1:

查询全部一年级的学生信息
SELECT * FROM Student WHERE  GradeId=1
查询全部二年级的学生的姓名和电话
SELECT StudentName,Phone FROM Student WHERE  GradeId=2
查询全部一年级女同学的信息
SELECT * FROM Student WHERE  GradeId=1 AND Sex='f'
查询课时超过60的科目信息
SELECT * FROM SUBJECT WHERE ClassHour>=60
查询二年级的科目名称
SELECT SubjectName FROM SUBJECT WHERE GradeId=2
查询二年级男同学的姓名和住址
SELECT StudentName,Address FROM Student WHERE GradeId=2 AND sex='m'
查询无电子邮件的学生e,GradeId,email FROM Student WHERE Email IS NULL OR email ='';
 
查询出生日期在1988年姓名和年级信息
SELECT StudentNam之后的一年级的学生姓名和年级信息
SELECT * FROM stude3-29日的“c语言”科目考试的成绩信息;

SELECT r.`StudentNo` AS 学号 ,su.`SubjectName` AS 科目,r.`StudentResult`, r.`ExamDate` 
FROM result r ,SUBJECT

nt WHERE BornDate>='1988-1-1' AND gradeid=1

查询参加了日期为2017 su
WHERE r.`SubjectId`=su.`SubjectId`
AND su.`SubjectName`='c语言'
AND r.`ExamDate`='2017-3-29'

 

-- 练习2


1、查询河北的男同学
SELECT * FROM Student 
WHERE address LIKE '%河北%' AND sex = 'm';
2、查询高数考试成绩前五名的分数;
SELECT r.`StudentNo`,r.`StudentResult` FROM result r 
WHERE r.`SubjectId`=(SELECT subjectid FROM SUBJECT WHERE subjectname='高数') 
ORDER BY r.`StudentResult` DESC LIMIT 0,5; 

-- 练习3

按照出生日期查询1年级的学生信息
SELECT * FROM Student WHERE GradeId=1 ORDER BY BornDate;
按日期由前到后、成绩由高到低的次序查询参加编号为1的科目考试信息
SELECT * FROM Result WHERE SubjectId=1 ORDER BY ExamDate ,StudentResult DESC;
查询2013年3月29日参加“高数”考试的前5名学员成绩信息;
SELECT st.`StudentName`,r.`StudentResult` FROM result r ,SUBJECT su ,student st
WHERE r.`SubjectId` = su.`SubjectId` AND r.`StudentNo` = st.`StudentNo`
AND su.`SubjectName`='高数' 
AND r.`ExamDate`='2017-3-29' 
ORDER BY r.`StudentResult` DESC LIMIT 5;
查询1年级的课时最多的科目名称及课时
SELECT SubjectName AS 课时最多的科目名称 ,ClassHour AS 课时 FROM SUBJECT
WHERE GradeId=1 ORDER BY ClassHour DESC LIMIT 1 ;
查询年龄最小的学生所在的年级及姓名
SELECT GradeId AS 年龄最小的学生所在年级,StudentName AS 姓名 FROM Student
ORDER BY BornDate DESC LIMIT 1;
查询2017年3月29日参加考试的最低分出现在哪个科目。
SELECT SubjectId ,StudentResult AS 分数 FROM Result
WHERE ExamDate='2017-3-29' ORDER BY StudentResult LIMIT 1;
查询学号为“001”的学生参加过的所有考试信息,并按照时间前后次序显示
SELECT * FROM Result WHERE StudentNo='001' ORDER BY ExamDate
查询学号为“001”的学生参加过的所有考试中最高分及时间、科目
SELECT * FROM Result WHERE StudentNo='001' ORDER BY StudentResult DESC LIMIT 1;


-- 练习1:
 


-- 查询住址为“山东”的学生姓名、电话、住址
;SELECT st.`StudentName`,st.`Phone`,st.`Address` FROM student st 
WHERE st.address LIKE '%山东%';
-- 查询名称中含有“数据库”字样科目信息
SELECT * FROM SUBJECT sj WHERE sj.`SubjectName` LIKE '%数据库%';
-- 查询电话中以“1387”开头的学生信息
;SELECT st.`StudentName`,st.`Phone`,st.`Address` FROM student st WHERE st.`Phone` LIKE '1387%';
-- 查询姓姜的,单名的学生信息
;SELECT st.`StudentName`,st.`Phone`,st.`Address` FROM student st WHERE st.`StudentName` LIKE '姜_';
-- 查询学号为'001'的指定科目考试成绩
SELECT * FROM result re WHERE re.`StudentNo`='001' AND re.`SubjectId` IN ('1','2','3');
-- 查询某出生日期之间学生信息 
SELECT * FROM student st WHERE st.`BornDate` BETWEEN '1988-8-1' AND '1988-10-1';


-- 练习2


创建3张表  ,   
1.供应商表s (供应商编号sno ,供应商名称sname, 地址city)
2.产品表p(产品编号pno,产品名称pname,品级kind)
3.供应关系表sp(供应商编号sno,产品编号pno,供应数量qty)
并增加测试数据若干;
-- 建表和增加测试数据如下:

CREATE TABLE S
(
  sno   VARCHAR(12) NOT NULL,
  sname VARCHAR(18) NOT NULL,
  city  VARCHAR(20) NOT NULL
)
INSERT s VALUES('s1','海南茶叶公司','海口'),('s2','云南茶叶公司','昆明'),
('s3','浙江茶叶公司','杭州'),('s4','北京茶叶公司','北京');
CREATE TABLE P
(
  pno   VARCHAR(12) NOT NULL,
  pname VARCHAR(18) NOT NULL,
  kind  INT NOT NULL
)
INSERT p VALUES('p1','绿茶',1),('p2','绿茶',2),('p3','普洱茶',1),('p4','红茶',1),('p5','花茶',1);

CREATE TABLE SP
(
  sno VARCHAR(12) NOT NULL,
  pno VARCHAR(12) NOT NULL,
  qty INT NOT NULL
)
INSERT sp VALUES('s1','p1',100),('s2','p3',200),('s2','p5',200),
('s3','p1',400),('s3','p2',500),('s4','p4',200)

-- 求供应产品编号为'p1'的供应商名称
SELECT sname FROM s WHERE sno IN (SELECT sp.sno FROM sp WHERE sp.pno='P1');-- sql嵌套查询

SELECT s.`sname` FROM sp ,s WHERE sp.`sno`=s.`sno` AND sp.`pno`='p1';  -- 等值查询
-- 求供应绿茶等级为1的供应商编号
SELECT sp.sno FROM sp WHERE sp.pno IN(SELECT p.pno FROM p WHERE p.pname='绿茶' AND p.kind='1' );

SELECT sp.`sno` FROM p ,sp WHERE p.`pno`=sp.`pno` AND p.`kind`=1 AND p.`pname`='绿茶';
-- 求没有使用'北京茶叶公司'供应商的茶叶,但产品级别是1级茶叶的产品编号
SELECT DISTINCT(p.`pno`) FROM s,p,sp WHERE s.`sno`=sp.`sno` AND p.`pno`=sp.`pno`
AND s.`sname` NOT LIKE '%北京茶叶公司%' AND p.`kind`=1;

猜你喜欢

转载自blog.csdn.net/jianghao233/article/details/82429026