MySQL 基础语句的练习2

本文详细介绍SQL的基本操作,包括创建表、插入数据、查询、排序、分组等实用技巧,并通过具体示例展示如何进行数据筛选及聚合分析。
  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;

 

转载于:https://www.cnblogs.com/LZL-student/p/6002816.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值