美文网首页数据库
数据库--关键语法(非基础语法)

数据库--关键语法(非基础语法)

作者: 二妹是只猫 | 来源:发表于2019-04-01 14:12 被阅读0次
  • GROUP BY
  • HAVING
  • 统计相关:COUNT、SUM、MAX、MIN、AVG
  • 连表查询

创建3个表,用于举例

  • 学生表:
CREATE TABLE `student`(
`student_id` int(11)not null auto_increment,
`name`VARCHAR(32)default null,
`age`   int(11)default null,
`sex` varchar(8) default null,
primary key(`student_id`)
)engine=Innodb auto_increment=8 default charset=utf8;
begin;
insert into `student` values ('11','shen','12','girl'),('12','wang','12','boy'),('13','li','12','boy'),('10','zou','12','boy');
commit;
end;
  • 成绩表:
DROP TABLE IF EXISTS    `score`;
create table `score`(
`student_id` int(11)default null,
`couse_id`int(11)default null,
`score`int (11)default null
)engine=INNODB  DEFAULT charset=utf8;
  • 课程表
DROP TABLE IF EXISTS `couse`;
CREATE TABLE `couse`(
`couse_id` INT(11) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(20) DEFAULT null,
PRIMARY KEY(`couse_id`)
)ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
BEGIN;
insert into `couse` VALUES('1','语文'),('2','数学'),('3','物理');
COMMIT;
GROUP BY

定义:GROUP BY 语句用于结合聚合函数,根据一个或多个列对结果集进行分组

  • 满足"SELECT子句中的列名必须为分组列或者列函数"(要么是group by里用到的列,要么就是带有sum、min等列函数的列)
  • 列函数对于GROUP BY子句定义的每个组各返回一个结果

语法

SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;

查询所有同学的学号、选课数、总成绩

  • 表-score:


    表-score
  • sql:
CREATE DEFINER=`root`@`localhost` PROCEDURE `findall`( )
BEGIN
SELECT student_id,COUNT(student_id),sum(score)
FROM    score 
GROUP BY student_id;
END
  • 结果:


HAVING

定义:过滤,在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与聚合函数(COUNT、SUM、MAX、MIN、AVG)一起使用,HAVING 子句可以让我们筛选分组后的各组数据

  • 通常与GROUP BY子句一起使用
  • WHERE过滤行,HAVING过滤组
  • 出现在统一sql等顺序:WHERE>GROUP BY> HAVING

查询评价成绩大于60的同学的学号和平均成绩

  • sql代码:
BEGIN
SELECT student_id,AVG(score)
FROM score
GROUP BY student_id
HAVING avg(score);
END
  • 结果:


统计相关

COUNT

定义:返回匹配指定条件的行数
语法:

COUNT(*) 函数返回表中的记录数
SELECT COUNT(*) FROM table_name;

返回指定列的不同值的数目:
SELECT COUNT(DISTINCT column_name) FROM table_name;

示例(表-score):

SELECT COUNT(*) FROM score

结果:13

SELECT COUNT(DISTINCT   student_id) FROM score

结果:5

SUM

定义:返回数值列的总数
语法:

SELECT sum(*) FROM score
SELECT sum(DISTINCT  column_name) FROM score

示例(表-score):

SELECT sum(*) FROM score

结果:911

SELECT sum(DISTINCT  score) FROM score

结果:831

其余就不一一举例了
MAXMINAVG

相关文章

  • 数据库--关键语法(非基础语法)

    GROUP BY HAVING 统计相关:COUNT、SUM、MAX、MIN、AVG 连表查询 创建3个表,用于举...

  • 蔓蔓的学习之路😂

    前端:java语法基础,python语法基础,爬虫,各种大数据技术; 数据库:mysql,sql等等各种数据库 数...

  • Java基础语法需要学习哪些知识?

    Java基础语法需要学习哪些知识?Java基础语法内容包含java运行环境、HelloWorld案例、关键字&[h...

  • mysql存储过程游标的嵌套循环

    假设你已知 数据库表、存储过程的创建基本语法 存储过程游标的使用语法 关键技巧 begin end语法代表的含义 示例

  • java

    语法基础1.1 java初体验(语法基础)1.2 变量和常量(语法基础)1.2 变量和常量(语法基础)1.4 流程...

  • 【Android】知识点汇总,坚持原创ing

    Android基础 Java基础 Java基础——Java内存模型和垃圾回收机制 语法基础 语法基础——C语法基础...

  • 软帝学院:80道java基础部分面试题(四)

    Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语法,集...

  • MySQL——基本语句

    Mysql-基础语法 导语 本博文主要是简述选择数据库和对表内容的增、删、改和查的一些基本语法 USE 语法: U...

  • sql里面create的用法

    1、create database用于创建数据库关键语法:create database database_nam...

  • Mysql

    mysql 基础语法 // 数据库 表 insert select update delete 连接查询 内连接:...

网友评论

    本文标题:数据库--关键语法(非基础语法)

    本文链接:https://www.haomeiwen.com/subject/mksmbqtx.html