以下是表的基本信息,请自行创建。
创建studen:
CREATE TABLE student (id INT(10) NOT NULL UNIQUE PRIMARY KEY ,name VARCHAR(20) NOT NULL ,sex VARCHAR(4) ,birth YEAR,department VARCHAR(20) ,address VARCHAR(50) );
向student表插入记录的INSERT语句如下:
INSERT INTO student VALUES( 901,'张老大', '男',1985,'计算机系', '北京市海淀区');
INSERT INTO student VALUES( 902,'张老二', '男',1986,'中文系', '北京市昌平区');
INSERT INTO student VALUES( 903,'张三', '女',1990,'中文系', '湖南省永州市');
INSERT INTO student VALUES( 904,'李四', '男',1990,'英语系', '辽宁省阜新市');
INSERT INTO student VALUES( 905,'王五', '女',1991,'英语系', '福建省厦门市');
INSERT INTO student VALUES( 906,'王六', '男',1988,'计算机系', '湖南省衡阳市');
创建score表:
CREATE TABLE score (id INT(10) NOT NULL UNIQUE PRIMARY KEY AUTO_INCREMENT ,stu_id
INT(10) NOT NULL ,c_name VARCHAR(20) ,grade INT(10));
向score表插入记录的INSERT语句如下:
INSERT INTO score VALUES(NULL,901, '计算机',98);
INSERT INTO score VALUES(NULL,901, '英语', 80);
INSERT INTO score VALUES(NULL,902, '计算机',65);
INSERT INTO score VALUES(NULL,902, '中文',88);
INSERT INTO score VALUES(NULL,903, '中文',95);
INSERT INTO score VALUES(NULL,904, '计算机',70);
INSERT INTO score VALUES(NULL,904, '英语',92);
INSERT INTO score VALUES(NULL,905, '英语',94);
INSERT INTO score VALUES(NULL,906, '计算机',90);
INSERT INTO score VALUES(NULL,906, '英语',85);
学习知识点:
一、SELECT 列名称 FROM 表名
(SELECT * FROM 表名)(*:选取所有列)
二、SELECT 列名 FROM 表名 WHERE列 运算符 值
(SELECT * FROM 表名 WHERE列 运算符 值)
(SELECT * FROM 表名 WHERE列名='具体名')
三、SELECT 列名 FROM 表名 ORDER BY 列名
ORDER BY: 根据指定的列对结果集进行升序排序。DESC:降序排序
四、(SELECT 列名 FROM 表名)
UNION ALL
(SELECT 列名 FROM 表名);
(UNION ALL:操作符用于合并两个或多个 SELECT 语句的结果集。LIMIT 数:选取几位进行排序)
五、%通配符可替代一个或多个字符,与LIKE运算符一起使用。
六、聚合函数规范:SELECT 函数名(列名) FROM表名常用于GROUP BY从句的SELECT查询中。
MAX()——最大值,MIN()——最小值,SUM()——总数值,AVG()——平均值
COUNT()——总个数值
七、SELECT COUNT(列名)FROM表名
SELECT COUNT(*)FROM 表名(函数返回表中的记录数,即表的总行数)
SELECT COUNT(DISTINCT 列名) FROM 表名(函数返回指定列的不同值的数目)
题目:
1.1、统计李四的考试科目和对应成绩;
1.2、统计李四的考试科目和对应成绩,并列出名字;
2、查询计算机成绩低于95的学生信息;
3、查询同时参加计算机和英语考试的学生的信息;
4.1、按从高到低排列计算机学科分数;
4.2、按姓名且从高到低排列计算机学科分数;
4.3、按从高到低排列计算机学科和英语学科分数;
4.4、按姓名且从高到低排列计算机学科和英语学科分数;
5、查询张姓或者王姓的同学的姓名、院系和考试科目及成绩;
6.1、统计所有最大值;
6.2、统计各个学科最大值;
6.3、计算每个学生的总成绩;
6.4、计算每个学科的平均成绩;
6.5、统计各学科人数。
(往下是答案)
答案:
1.1、SELECT c_name,grade FROM score WHERE stu_id=(SELECT id FROM student WHERE name ='李四');
1.2、SELECT name,c_name,grade FROM score,student WHERE student.id=score.stu_id AND name='李四';
2、SELECT * FROM student WHERE id IN (SELECT stu_id FROM score WHERE c_name="计算机" AND grade<95);
3、SELECT*FROM student WHERE id =ANY (SELECT stu_id FROM score WHERE stu_id IN (SELECT stu_id FROM score WHERE c_name='计算机') AND c_name= '英语' );
4.1、SELECT c_name,grade FROM score WHERE c_name='计算机' ORDER BY grade DESC;
4.2、SELECT name,c_name,grade FROM score,student WHERE c_name='计算机' AND student.id=score.stu_id ORDER BY grade DESC;
4.3、(SELECT c_name,grade FROM score WHERE c_name='英语' ORDER BY grade DESC)
UNION ALL
(SELECT c_name,grade FROM score WHERE c_name='计算机' ORDER BY grade DESC);
4.4、(SELECT name,c_name,grade FROM score,student WHERE c_name='计算机' AND student.id=score.stu_id ORDER BY grade DESC LIMIT 4)
UNION ALL
(SELECT name,c_name,grade FROM score,student WHERE c_name='英语' AND student.id=score.stu_id ORDER BY grade DESC LIMIT 4);
5、SELECT student.id, name,sex,department, c_name,grade FROM student, score WHERE (name LIKE '张%' OR name LIKE '王%')AND student.id=score.stu_id ;
6.1、SELECT c_name,MAX(grade) FROM score ;
6.2、SELECT c_name,MAX(grade) FROM score GROUP BY c_name;
6.3、SELECT student.id,name,SUM(grade) FROM student,score WHERE student.id=score.stu_id GROUP BY id;
6.4、SELECT c_name,AVG(grade) FROM score GROUP BY c_name;
6.5、SELECT department,COUNT(id) FROM student GROUP BY department;