logo资料库

MySQL基础练习题及答案.docx

第1页 / 共8页
第2页 / 共8页
第3页 / 共8页
第4页 / 共8页
第5页 / 共8页
第6页 / 共8页
第7页 / 共8页
第8页 / 共8页
资料共8页,全文预览结束
思路:
Mysql练习 (select)
思路: > ,< ,= ,<> , >=, <=,in,between,and,or 1 根据提问或者需求分析想要的结果是什么 Select XXXXX 2 确定想要得到 XXXXX 的话需要涉及到哪些表 Select XXX from YYYY 3 分析是否需要条件 where Select XXX from YYY where ZZZZ 4 是否需要函数,时间函数,数学函数 5 分组,看到(“每个??”)一般情况下都需要 group by. 6 如果想要的结果不能一步到位,需要多个步骤的,那么此时我们使用的就是子查询,子查 询我们可以按照单个步骤进行查询,然后把多个步骤组装起来 7 表连接,关联查询,联合查询。明显特征:结果集中的列涉及到多张表。表连接去除笛卡 尔积中的错误数据 1.需求 2.表格 3.条件 4.函数 5.分组 6.步骤 7.关联 3.查询 student 表的所有记录 4.查询 student 表的第 2 条到 4 条记录 5.从 student 表查询所有学生的学号(id)、姓名(name)和院系(department)的信息 6.从 student 表中查询计算机系和英语系的学生的信息 7.从 student 表中查询年龄 18~35 岁的学生信息 8.查询每个院系有多少人 9.查询每个科目的最高分 10.查询李四的考试科目(c_name)和考试成绩(grade) 11.所有学生的信息和考试信息 12.计算每个学生的总成绩 13.计算每个考试科目的平均成绩 14.查询计算机成绩低于 95 的学生信息 15.查询同时参加计算机和英语考试的学生的信息 16.将计算机考试成绩按从高到低进行排序 17.查询姓张或者姓王的同学的姓名、院系和考试科目及成绩 18.查询都是湖南的学生的姓名、年龄、院系和考试科目及成绩 Mysql 练习 (select) ------学生资料与成绩查询
1.创建 student 和 score 表 DROP TABLE IF EXISTS `student`; CREATE TABLE `student` ( `id` int(10) NOT NULL AUTO_INCREMENT, `name` char(20) NOT NULL, `sex` char(20) DEFAULT NULL, `birth` year(4) DEFAULT NULL, `department` char(10) DEFAULT NULL, `address` char(10) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8; 创建 score 表。SQL 代码如下: DROP TABLE IF EXISTS `score`; CREATE TABLE `score` ( `id` int(10) NOT NULL AUTO_INCREMENT,
`stu_id` int(10) NOT NULL, `c_name` char(20) DEFAULT NULL, `grade` int(10) DEFAULT NULL, PRIMARY KEY (`id`), KEY `score_ibfk_1` (`stu_id`), CONSTRAINT `score_ibfk_1` FOREIGN KEY (`stu_id`) REFERENCES `student` (`id`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8; 2.为 student 表和 score 表增加记录 向 student 表插入记录的 INSERT 语句如下: insert into `student`(`id`,`name`,`sex`,`birth`,`department`,`addre ss`) values (1,'张老大','男',1985,'计算机系','北京市海淀 区'); insert into `student`(`id`,`name`,`sex`,`birth`,`department`,`addre ss`) values (2,'张老二','男',1986,'中文系','北京市昌平区 '); insert into `student`(`id`,`name`,`sex`,`birth`,`department`,`addre ss`) values (3,'张三','女',1990,'中文系','湖南省永州市 ');
insert into `student`(`id`,`name`,`sex`,`birth`,`department`,`addre ss`) values (4,'李四','男',1990,'英语系','辽宁省阜新市 '); insert into `student`(`id`,`name`,`sex`,`birth`,`department`,`addre ss`) values (5,'王五','女',1991,'英语系','福建省厦门市 '); insert into `student`(`id`,`name`,`sex`,`birth`,`department`,`addre ss`) values (6,'王六','男',1988,'计算机系','湖南省衡阳市 '); 向 score 表插入记录的 INSERT 语句如下: insert into `score`(`id`,`stu_id`,`c_name`,`grade`) values (1,1,'计算机',98); insert into `score`(`id`,`stu_id`,`c_name`,`grade`) values (2,1,'英语',80); insert into `score`(`id`,`stu_id`,`c_name`,`grade`) values (3,2,'计算机',65); insert into `score`(`id`,`stu_id`,`c_name`,`grade`) values (4,2,'中文',88); insert into `score`(`id`,`stu_id`,`c_name`,`grade`) values
(5,3,'中文',95); insert into `score`(`id`,`stu_id`,`c_name`,`grade`) values (6,3,'计算机',70); insert into `score`(`id`,`stu_id`,`c_name`,`grade`) values (7,4,'计算机',70); insert into `score`(`id`,`stu_id`,`c_name`,`grade`) values (8,4,'英语',92); insert into `score`(`id`,`stu_id`,`c_name`,`grade`) values (9,5,'英语',94); insert into `score`(`id`,`stu_id`,`c_name`,`grade`) values (10,5,'计算机',90); insert into `score`(`id`,`stu_id`,`c_name`,`grade`) values (11,6,'计算机',90); insert into `score`(`id`,`stu_id`,`c_name`,`grade`) values (12,6,'英语',85); 3.查询 student 表的所有记录 SELECT * FROM student; 4.查询 student 表的第 2 条到 4 条记录 SELECT * FROM student LIMIT 1,3; 5.从 student 表查询所有学生的学号(id)、姓名(name)和院系 (department)的信息
SELECT id,NAME,department FROM student; 6.从 student 表中查询计算机系和英语系的学生的信息 SELECT * FROM student WHERE department IN('计算机系','英语系 '); 7.从 student 表中查询年龄在 18~35 岁的学生信息 SELECT * FROM student WHERE YEAR(NOW())-birth BETWEEN 18 AND 35; 8.查询每个院系有多少人 SELECT department,COUNT(department) counts FROM student GROUP BY department; 9.查询每个科目的最高分 SELECT c_name,MAX(grade) maxgrade FROM score GROUP BY c_name; 10.查询李四的考试科目(c_name)和考试成绩(grade) SELECT c_name,grade FROM score WHERE stu_id =(SELECT id FROM student WHERE NAME='李四');
11.所有学生的信息和考试信息 SELECT * FROM student s,score sc WHERE s.`id`=sc.`stu_id`; SELECT s.`id`,NAME,sex,birth,department,address,grade FROM student s,score sc WHERE s.`id`=sc.`stu_id`; 12.计算每个学生的总成绩 SELECT NAME,SUM(grade) FROM student s,score sc WHERE s.`id`=sc.`stu_id` GROUP BY NAME; 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 department='计算机系' OR department='英语系'; 16.将计算机考试成绩降序排列 SELECT c_name,grade FROM score WHERE c_name='计算机' ORDER BY grade DESC; 17.查询姓张或者姓王的同学的姓名、院系和考试科目及成绩 SELECT NAME,department,c_name,grade FROM student s,score sc
WHERE s.`id`=sc.stu_id AND NAME LIKE '张%' OR NAME LIKE '王%' 18.查询都是湖南的学生的姓名、年龄、院系和考试科目及成绩 SELECT NAME,address,YEAR(NOW())-birth,department,c_name,grade FROM student INNER JOIN score ON student.`id`=score.`stu_id` WHERE address LIKE '%湖南%'
分享到:
收藏