关于mysql的count的问题

关于mysql的count的问题,第1张

数据库经常用于回答这个问题,“某个类型的数据在表中出现的频度?”例如,你可能想要知道你有多少宠物,或每位主人有多少宠物,或你可能想要对你的动物进行各种类型的普查。

计算你拥有动物的总数目与“在pet表中有多少行?”是同样的问题,因为每个宠物有一个记录。COUNT(*)函数计算行数,所以计算动物数目的查询应为:

mysql>SELECT COUNT(*) FROM pet

+----------+

| COUNT(*) |

+----------+

|9 |

+----------+

在前面,你检索了拥有宠物的人的名字。如果你想要知道每个主人有多少宠物,你可以使用COUNT( )函数:

mysql>SELECT owner, COUNT(*) FROM pet GROUP BY owner

+--------+----------+

| owner | COUNT(*) |

+--------+----------+

| Benny |2 |

| Diane |2 |

| Gwen |3 |

| Harold |2 |

+--------+----------+

注意,使用GROUP BY对每个owner的所有记录分组,没有它,你会得到错误消息:

mysql>SELECT owner, COUNT(*) FROM pet

ERROR 1140 (42000): Mixing of GROUP columns (MIN(),MAX(),COUNT(),...)

with no GROUP columns is illegal if there is no GROUP BY clause

COUNT( )和GROUP BY以各种方式分类你的数据。下列例子显示出进行动物普查 *** 作的不同方式。

每种动物的数量:

mysql>SELECT species, COUNT(*) FROM pet GROUP BY species

+---------+----------+

| species | COUNT(*) |

+---------+----------+

| bird|2 |

| cat |2 |

| dog |3 |

| hamster |1 |

| snake |1 |

+---------+----------+

每种性别的动物数量:

mysql>SELECT sex, COUNT(*) FROM pet GROUP BY sex

+------+----------+

| sex | COUNT(*) |

+------+----------+

| NULL |1 |

| f|4 |

| m|4 |

+------+----------+

(在这个输出中,NULL表示“未知性别”。)

按种类和性别组合的动物数量:

mysql>SELECT species, sex, COUNT(*) FROM pet GROUP BY species, sex

+---------+------+----------+

| species | sex | COUNT(*) |

+---------+------+----------+

| bird| NULL |1 |

| bird| f|1 |

| cat | f|1 |

| cat | m|1 |

| dog | f|1 |

| dog | m|2 |

| hamster | f|1 |

| snake | m|1 |

+---------+------+----------+

若使用COUNT( ),你不必检索整个表。例如, 前面的查询,当只对狗和猫进行时,应为:

mysql>SELECT species, sex, COUNT(*) FROM pet

->WHERE species = 'dog' OR species = 'cat'

->GROUP BY species, sex

+---------+------+----------+

| species | sex | COUNT(*) |

+---------+------+----------+

| cat | f|1 |

| cat | m|1 |

| dog | f|1 |

| dog | m|2 |

+---------+------+----------+

或,如果你仅需要知道已知性别的按性别的动物数目:

mysql>SELECT species, sex, COUNT(*) FROM pet

->WHERE sex IS NOT NULL

->GROUP BY species, sex

+---------+------+----------+

| species | sex | COUNT(*) |

+---------+------+----------+

| bird| f|1 |

| cat | f|1 |

| cat | m|1 |

| dog | f|1 |

| dog | m|2 |

| hamster | f|1 |

| snake | m|1 |

是两两关联还是一表关联所有表,这不是凭空乱猜的。楼主连最基本的概念都没弄清楚,首先,你问问自己为什么需要这些表?如果这些表是凭着感觉构建出来的,那么结局注定是乱,甚至是出错更进一步的话可能出现灾难。

正确的做法是:

进行需求分析;

对分析结果画数据流图;

根据数据流图各部分构造出一个个子E-R图;

将各个子E-R图合并成全局E-R图。这个全局E-R图就是构造数据库的基石。

这个全局E-R图是业务模型的抽象,对这个图建表有以下四种情况:

1.给其上的每个实体建一张表;

2.实体与实体之间的联系,如果是一对一(很少会这样做)的,则将该联系的属性并入随便哪头的实体表;

3.如果联系是1对多的,则可以给该联系单独建表,也可以将其属性并入多的这一头。如果是单独建表,则可取多的这头表的主键为其主键,也可单独开主键,并引入多的这头主键为其外键;

4.如果联系是多对多的,则必须单独建表(这就是你上面提到的中间表),这个表最好自己开辟主键,且必须把两头实体的主键拿来当外键,以建立他们之间的联系。

回到你的问题,你给了这些表,我们并不清楚你的具体业务是什么,并不清楚你已建的这些表是否合理,也不清楚这些表在业务上的相互关系,所以外人难以给你建中间表。建议楼主先学习掌握数据库原理,然后自行分析并勾勒出E-R图,接着建表是一目了然的事了。

数据库是什么?

之前小编在这个问题上详细讲述过(详见《数据库》),和现实生活中的各类仓库一样,数据库就是网络上用来存放数据的地方,用户可以对这些数据进行增删、查询、更新等 *** 作,从而实现对数据的管理和调令。

数据库技术,是信息管理系统、自动化办公系统、销售统计系统等各种信息系统的核心部分,是进行科学研究和决策管理的重要技术手段,常用的数据库包括:Oracle、DB2、MySQL、SQL Server、Sybase、VF等。

由于MySQL数据库具有性能优良、稳定性好、配置简单、支持各种 *** 作系统等优势,本章主要讲述Windows系统下MySQL数据库的内容。

MySQL的安装与配置

在浏览器中输入MySQL的官方网址mysql.com,找到其中的“DOWNLOADS”菜单并点击:

当然也可以直接在百度上搜索MySQL软件进行下载,在官网中可以找到几种不同的版本,已经更新到了MySQL 8.0版本了。

双击MySQL安装文件setup.exe,进入MySQL安装欢迎界面,点击“Next”进行安装,紧接着进入“Setup Type”界面选择MySQL安装类型,这里选择“Typical”类型,然后点击“Next”按钮进入下一个安装步骤,选择安装目录和“Developer Components”组件。

继续点击“Next”按钮进入下一步,选择Server Machine(服务器),再点击“Next”进入数据库用途选择界面,选择Multifunctional Database(多功能数据库),然后点击“Next”进入并发连接设置界面选择Decision Support(决策支持系统),然后设置MySQL数据库访问量连接数和默认端口号,最后点击Finish完成安装。

SQL语言

任何生物之间的沟通以语言为桥梁,在互联网世界中也无一例外;服务器之间的沟通我们可以称之为数据传输的过程,而在数据库中,SQL语句处于一种关键性地位。

SQL语句是结构化查询语言(Structure Query Language)的缩写,是关系模型的程序设计以及数据库查询语言,专门用于数据的存储、更新、查询以及对数据库系统的管理。

简单说来,就像人类对宠物施行命令要使用特殊口令一样,SQL语句是对数据库进行 *** 作的一种特殊语言。

SQL语句主要划分为三种类别:

DCL(Data Control Language)语句

中文翻译过来又叫做数据控制语句。

该语句用于控制不同数据字段的许可和访问级别,定义了数据库、表、字段、用户的访问权限和安全级别。

常用的语句关键字包括grant、revoke等。

DML(Data Manipulation Language)语句

数据库 *** 纵语句。该语句用于插入、删除、更新和查询数据库的记录,是数据库 *** 作最常用的语句,并检查数据完整性。常用的语句关键字包括insert、delete、update和select。

DDL(Data Definition Language)语句

数据定义语言。该语句定义了不同的数据字段、数据库、数据表、列、索引等数据库对象。常用语句关键字包括create、drop、alter等。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5928035.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-08
下一篇 2023-03-08

发表评论

登录后才能评论

评论列表(0条)

保存