1 CREATE TABLE student 2 ( 3 id INT, 4 NAME VARCHAR (10), 5 Chinese FLOAT, 6 English FLOAT, 7 Math FLOAT 8 ); 9 10 INSERT INTO student VALUES (1,'张三',80,70,90); 11 INSERT INTO student VALUES (2,'李四',70,80,80); 12 INSERT INTO student VALUES (3,'张三',80,70,90); 13 INSERT INTO student VALUES (4,'张大锤',82.5,86.5,90); 14 INSERT INTO student VALUES (5,'李二蛋',76.5,80,78); 15 INSERT INTO student VALUES (6,'王老五',76.5,92,78); 16 17 -- 查询表中所有学生的信息 18 SELECT * FROM student; 19 20 -- 查询表中所有学生的姓名和对应的英语成绩。 21 SELECT NAME,English FROM student; 22 23 -- 过滤表中英语成绩的重复数据 24 SELECT DISTINCT English FROM student; 25 26 -- 使用别名表示学生分数 27 SELECT Chinese AS '语文',English AS '英语',Math '数学' FROM student; 28 29 -- 查询姓名为李四的学生成绩 30 SELECT * FROM student WHERE NAME = '李四'; 31 32 -- 查询英语成绩大于等于90分的同学 33 SELECT * FROM student WHERE English > 90; 34 35 -- 查询总分大于200分的所有同学 36 SELECT *,(Chinese+English+Math) AS '总成绩' FROM student WHERE (Chinese+English+Math) > 200; 37 38 -- 查询所有姓李的学生英语成绩。 39 SELECT * FROM student WHERE NAME LIKE '李%'; 40 41 -- 查询英语>80或者总分>200的同学 42 SELECT * FROM student WHERE English > 80 OR (Chinese+English+Math) > 200; 43 44 -- 统计每个学生的总分。 45 SELECT *,(Chinese+English+Math) AS '总成绩' FROM student; 46 47 -- 在所有学生总分数上加10分特长分。 48 SELECT * , (Chinese+English+Math) AS '总成绩', (Chinese+English+Math) + 10 AS '特长分' FROM student; 49 50 51 52 53 -- 5.8 、聚合查询 (使用聚合函数的查询) 54 -- 常用的聚合函数:和:sum() 平均:avg() 最大:max() 最小:min() 计数:count() 55 -- count:统计的数量不包括null,所以使用它来统计记录书,要使用不包括null的字段 56 57 58 -- 查询学生的Math的总成绩 59 SELECT SUM(Math) FROM student; 60 61 -- 查询学生的Math的平均分 62 SELECT AVG(Math) FROM student; 63 64 -- 查询Math的最高分 65 SELECT MAX(Math) AS '最高分' FROM student; 66 67 -- 统计当前学生的人数 68 SELECT COUNT(*) FROM student; -- 统计每种数据的个数,取最大的 69 SELECT COUNT(id) FROM student; -- 统计id的个数 70 71 72 -- 5.9、分页查询(Limit 起始行,查询行数) 73 -- 起始行是从0开始 (没有的记录不显示) 74 -- 分页查询当前页的sql语句(SELECT * FROM student LIMIT (当前页-1)*每页显示的行数,每页显示的行数); 75 76 -- 查询第1、2条记录 77 SELECT * FROM student LIMIT 0,2; 78 79 -- 查询第3、4条记录 80 SELECT * FROM student LIMIT 2,2; 81 82 -- 查询第5、6条记录 83 SELECT * FROM student LIMIT 4,2; 84 85 -- 查询第7、8条记录(没记录,不显示) 86 -- SELECT * FROM student LIMIT 6,2; 87 88 -- 上面这些可以看作是3页的数据 89 90 91 -- 默认情况下,排序是按照插入记录的先后顺序 92 -- 5.10、 查询排序(order by) 93 -- 语法: order by 字段 asc/desc 94 -- asc:正序 : 数字(递增) 字母(a-z) 95 -- desc:反序 :反过来 96 97 98 -- 按照id正序排序: 99 SELECT * FROM student ORDER BY id ASC; 100 -- 不写排序规则,默认正序 101 SELECT * FROM student ORDER BY id ; 102 103 -- 按照id倒序: 104 SELECT * FROM student ORDER BY id DESC; 105 106 -- 若相同,则按照插入顺序再排) 107 SELECT * FROM student ORDER BY Chinese; 108 109 -- 注意:当有多个排序条件(先按照第一个条件排序,再第二个) 110 SELECT * FROM student ORDER BY Chinese , Math DESC; 111 112 113 -- 5.11、分组查询(group by) 114 115 -- 查询男女的人数 116 -- 预期结果: 117 -- 男 3 118 -- 女 2 119 -- 1)把学生按照性别分组 120 SELECT sex FROM student GROUP BY sex; 121 -- 2)统计每组的人数 122 SELECT sex , COUNT(*) FROM student GROUP BY sex; 123 124 -- 5.12、分组查询后进行筛选 125 126 -- 查询总人数大于2的性别 127 -- 1) 查询男女的人数 128 SELECT sex,COUNT(*) FROM student GROUP BY sex; 129 -- 2) 筛选出人数大于2的记录 130 -- 分组之前的筛选用where 131 -- 分组以后再筛选用having 132 SELECT sex , COUNT(*) FROM student GROUP BY sex HAVING COUNT(*)>2;