sql分组

MySql学习笔记(基础)

ぃ、小莉子 提交于 2019-12-05 12:00:46
MySql学习笔记(基础) 学习笔记 数据库基础 SQL的基本操作 基本操作:CRUD(增删改查) 更新数据库 删除数据库 表操作 修改数据表 查看数据 更新数据 删除数据 中文数据问题 校对集问题 数据类型(列类型) 字段属性 范式: 蠕虫复制 查询数据 连接查询 学习笔记 数据库基础 1.什么是数据库? 数据库:database,存储数据的仓库 数据库:高效的存储和处理数据的介质(介质主要是两种:磁盘和内存) 2.数据库的分类? 数据库基于存储介质的不同:进行了分类,分为两大类:关系型数据库(SQL)和非关系型数据库(NoSQL:Not Noly SQL,不是关系型的数据库都叫做非关系型数据库) 3.不同的数据库阵营中的产品有哪些? 关系型数据库: 大型:Oracle,DB2 中型:SQL-SERVER,MySql等 小型:access等 非关系型数据库: memcached,mongodb,redis(同步到磁盘) 4.两种数据库阵营的区别? 关系型数据库:安全(保存磁盘基本不可能丢失)容易理解,比较浪费空间(二维表) 非关系型数据库:效率高,不安全(断电会丢失) 关系型数据库 1.什么是关系型数据库? 关系型数据库:是一种建立在关系模型(数学模型)上的数据库。 关系模型:一种所谓建立在关系上的模型,关系模型包含三个方面。 数据结构:数据存储的问题,二维表(有行和列)

MySQL学习(2)----DDL,DML,DQL

拥有回忆 提交于 2019-12-05 11:55:37
1.SQL(结构化查询语言) 可以操作关系型数据库 DDL(Data Definition Language)----操作数据库和表 DML(Data Manipulation Language)----增删改表中数据 DQL(Data Query Language)----查询表中数据 DCL(Data Control Language)----授权 2.SQL通用语法 1.SQL语句可以单行或多行书写,以分号结尾,可以用空格和缩进增强语句可读性 2.mysql数据库的SQL语句不区分大小写 3. 单行注释:-- 注释内容 或 #注释内容 (--和注释内容间有空格,#和注释内容间没有空格) 多行注释:/*注释内容*/ 3.DDL 操作数据库、表 3.1操作数据库 1.Create创建: 创建数据库: create database 数据库名称; create database if not exists 数据库名称;(防止重名报错) create database 数据库名称 character set 字符集;(指定字符集) 2.Retrieve查询: 查看所有数据库:show databases; 查询某个数据库的字符集:show create database 数据库名称; 3.Update修改: 修改数据库字符集:alter database 数据库名称

MySQL_笔记

百般思念 提交于 2019-12-05 07:33:32
MySQL数据库软件 1. 安装 * 参见《MySQL基础.pdf》 2. 卸载 1. 去mysql的安装目录找到my.ini文件 * 复制 datadir="C:/ProgramData/MySQL/MySQL Server 5.5/Data/" 2. 卸载MySQL 3. 删除C:/ProgramData目录下的MySQL文件夹。 3. 配置 * MySQL服务启动 1. 手动。 2. cmd--> services.msc 打开服务的窗口 3. 使用管理员打开cmd * net start mysql : 启动mysql的服务 * net stop mysql:关闭mysql服务 * MySQL登录 1. mysql -uroot -p密码 2. mysql -hip -uroot -p连接目标的密码 3. mysql --host=ip --user=root --password=连接目标的密码 * MySQL退出 1. exit 2. quit * MySQL目录结构 1. MySQL安装目录:basedir="D:/develop/MySQL/" * 配置文件 my.ini 2. MySQL数据目录:datadir="C:/ProgramData/MySQL/MySQL Server 5.5/Data/" * 几个概念 * 数据库:文件夹 * 表:文件 * 数据:数据

mysql 复习

梦想的初衷 提交于 2019-12-04 23:27:04
SQL 什么是SQL? Structured Query Language :结构化查询语言 其实就是定义了操作所有关系型数据库的规则。每一种数据库操作的方式存在不一样的地方,称为“方言”。 SQL通用语法 SQL 语句可以单行或多行书写,以分号结尾。 可使用空格和缩进来增强语句的可读性。 MySQL 数据库的 SQL 语句不区分大小写,关键字建议使用大写。 3 种注释 单行注释: -- 注释内容 或 # 注释内容(mysql 特有) 多行注释: /* 注释 */ SQL分类 1) DDL(Data Definition Language) 数据定义语言 用来定义数据库对象:数据库,表,列等。关键字: create , drop , alter 等 2) DML(Data Manipulation Language) 数据操作语言 用来对数据库中表的数据进行增删改。关键字: insert , delete , update 等 3) DQL(Data Query Language) 数据查询语言 用来查询数据库中表的记录(数据)。关键字: select , where 等 4) DCL(Data Control Language) 数据控制语言(了解) 用来定义数据库的访问权限和安全级别,及创建用户。关键字: GRANT , REVOKE 等 DDL: 操作数据库、表 操作数据库

sql 聚合查询

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-04 11:25:04
如果我们要统计一张表的数据量,例如,想查询 students 表一共有多少条记录,难道必须用 SELECT * FROM students 查出来然后再数一数有多少行吗? 这个方法当然可以,但是比较弱智。对于统计总数、平均数这类计算,SQL提供了专门的聚合函数,使用聚合函数进行查询,就是聚合查询,它可以快速获得结果。 仍然以查询 students 表一共有多少条记录为例,我们可以使用SQL内置的 COUNT() 函数查询: -- 使用聚合查询: Run COUNT(*) 表示查询所有列的行数,要注意聚合的计算结果虽然是一个数字,但查询的结果仍然是一个二维表,只是这个二维表只有一行一列,并且列名是 COUNT(*) 。 通常,使用聚合查询时,我们应该给列名设置一个别名,便于处理结果: -- 使用聚合查询并设置结果集的列名为num: Run COUNT(*) 和 COUNT(id) 实际上是一样的效果。另外注意,聚合查询同样可以使用 WHERE 条件,因此我们可以方便地统计出有多少男生、多少女生、多少80分以上的学生等: -- 使用聚合查询并设置WHERE条件: Run 除了 COUNT() 函数外,SQL还提供了如下聚合函数: 函数 说明 SUM 计算某一列的合计值,该列必须为数值类型 AVG 计算某一列的平均值,该列必须为数值类型 MAX 计算某一列的最大值 MIN

sql 基础语法3:分组,聚合函数,having,联合查询,快速备份,内联函数

▼魔方 西西 提交于 2019-12-04 02:15:53
select * from Classinfo select * from StuInfo select * from CourseInfo select * from ScoreInfo --分组 group by,分组后在结果列中只能出现分组依据列和聚合列 --统计男女人数 select stuSexy,COUNT(*) from StuInfo group by stuSexy--分组也是一个聚合过程,把所有性别相同的元组放到了同一行 --算出每门课的平均分 select cId,avg(score) from ScoreInfo group by cId --根据科目进行分组,算出平均分 select cId,avg(score) from ScoreInfo group by cId,StuId --按多个属性进行分组 --求每个班的男女人数,同时输出班级名 select ci.className,si.stuSexy,COUNT(*) from StuInfo as si inner join Classinfo as ci on si.classId=ci.classId group by ci.className,si.stuSexy --除了这两个分组关键属性,其他属性都被合并了,所以不能再使用 select ci.classId,si.stuSexy,COUNT

java_day15

我是研究僧i 提交于 2019-12-04 01:20:21
MySQL数据库 外键的级联 在修改和删除主表的主键时,同时更新或删除副表的外键值,称为级联操作 级联更新:ON UPDATE CASADE -- 主表主键修改,从表外键的值也跟着修改 级联删除:ON DELETE CASCADE -- 主表的主键删除,从表外键值相同的也删除 -- 例子 CREATE TABLE department ( -- 创建部门表 id INT PRIMARY KEY AUTO_INCREMENT, -- 部门ID 设置id自动增长 dep_name VARCHAR(20), -- 部门名字 dep_location VARCHAR(20) -- 部门地址 ); -- 添加2个部门 INSERT INTO department (dep_name, dep_location) VALUES ('研发部', '广州'), ('销售部', '深圳'); -- 创建员工表 CREATE TABLE employee ( id INT PRIMARY KEY AUTO_INCREMENT, -- 员工id NAME VARCHAR(30), -- 员工名字 age INT, -- 员工年龄 dep_id INT -- 部门id ); -- 在已有表增加外键约束 ALTER TABLE employee ADD CONSTRAINT employee_dep_fk

SQL语句汇总(三)——聚合函数、分组、子查询及组合查询

隐身守侯 提交于 2019-12-03 21:10:02
SQL语句汇总(三)——聚合函数、分组、子查询及组合查询 拖了一个星期,终于开始写第三篇了。走起! 聚合函数: SQL中提供的聚合函数可以用来统计、求和、求最值等等。 分类: –COUNT:统计行数量 –SUM:获取单个列的合计值 –AVG:计算某个列的平均值 –MAX:计算列的最大值 –MIN:计算列的最小值 首先,创建数据表如下: 执行列、行计数(count): 标准格式 SELECT COUNT(<计数规范>) FROM <表名> 其中,计数规范包括: - * :计数所有选择的行,包括NULL值; - ALL 列名:计数指定列的所有非空值行,如果不写,默认为ALL; - DISTINCT 列名:计数指定列的唯一非空值行。 例,计算班里共有多少学生: SELECT COUNT(*) FROM t_student; 也可加入筛选条件,如求女学生数目: SELECT COUNT(*) FROM t_student WHERE student_sex='女'; 如果要计算班级数目,就需要用到DISTINCT: SELECT COUNT(DISTINCT student_class) FROM t_student; DISTINCT即去重,如果不加DISTINCT则结果为表行数——5。 返回列合计值(SUM): 注:sum只要ALL与DISTINCT两种计数规范,无*。

SQL 聚合查询

匿名 (未验证) 提交于 2019-12-03 00:29:01
如果我们要统计一张表的数据量,例如,想查询students表一共有多少条记录,难道必须用SELECT * FROM students查出来然后再数一数有多少行吗? 这个方法当然可以,但是比较弱智。对于统计总数、平均数这类计算,SQL提供了专门的聚合函数,使用聚合函数进行查询,就是聚合查询,它可以快速获得结果。 仍然以查询students表一共有多少条记录为例,我们可以使用SQL内置的COUNT()函数查询: SELECT COUNT (*) FROM students; COUNT( )表示查询所有列的行数,要注意聚合的计算结果虽然是一个数字,但查询的结果仍然是一个二维表,只是这个二维表只有一行一列,并且列名是COUNT( )。 通常,使用聚合查询时,我们应该给列名设置一个别名,便于处理结果: SELECT COUNT (*) num FROM students; 所有的UDAF(即聚合函数)都应该支持分组查询,内置的聚合函数有: sum (列名) 求和      max (列名) 最大值      min (列名) 最小值      avg (列名) 平均值      first (列名) 第一条记录 last (列名) 最后一条记录 count (列名) 统计记录数 注意和 count (*) 的区别 COUNT(*)和COUNT(id)实际上是一样的效果。另外注意

sql分组计算及添加筛选条件:group by,having

匿名 (未验证) 提交于 2019-12-02 23:55:01
查询会员表里开通会员数量大于10的会员省份及对应会员数量,并把省份名称从地址表里匹配出来 group by 分组,功能类似于EXCEL的数据透视,可以通过count(*)等对分组结果进行运算,注意查询的元素都必须包含在分组group by后面 having 添加分组筛选条件 select m.Province,S.Name,count(*)   from member as m,ShippingArea as s   where m.Status=1   and m.Province=s.ShippingAreaID   group by m.Province,S.Name having count(*)>10; 来源:博客园 作者: 野望之风 链接:https://www.cnblogs.com/webwangjie/p/11425463.html