当前位置: 首页 > news >正文

公司网站的好处重庆seo网络优化师

公司网站的好处,重庆seo网络优化师,贵阳网站制作方舟网络,做平台外卖的网站需要什么资质目录 创建学生表聚合查询聚合函数直接查询设置别名查询设置条件查询 常用的聚合函数 分组查询单个字段Group by报错分组查询多字段分组查询 多表查询直接查询重命名查询Students表新建一列CourseID 连接(JOIN)查询INNER JOINRIGHT JOIN, LEFT JOINFULL J…

目录

  • 创建学生表
  • 聚合查询
    • 聚合函数
      • 直接查询
      • 设置别名查询
      • 设置条件查询
    • 常用的聚合函数
  • 分组查询
    • 单个字段Group by
    • 报错分组查询
    • 多字段分组查询
  • 多表查询
    • 直接查询
    • 重命名查询
    • Students表新建一列CourseID
  • 连接(JOIN)查询
    • INNER JOIN
    • RIGHT JOIN, LEFT JOIN
    • FULL JOIN
    • 课后练习
    • 复习
  • 参考

创建学生表

创建Students和Courses表

CREATE TABLE Students (StudentID int PRIMARY KEY,Name varchar(255),Gender varchar(1),Age int,City varchar(255)
);
INSERT INTO Students VALUES(1, 'David', 'M', 21, 'Shanghai');
INSERT INTO Students VALUES(2, 'Kevin', 'M', 19, 'Beijing');
INSERT INTO Students VALUES(3, 'Emily', 'F', 22, 'Shanghai');
INSERT INTO Students VALUES(4, 'William', 'M', 20, 'New York City');
INSERT INTO Students VALUES(5, 'Alice', 'F', 19, 'Los Angeles');
INSERT INTO Students VALUES(6, 'Frank', 'F', 22, 'Los Angeles');
CREATE TABLE Courses (CourseID int PRIMARY KEY,CourseName varchar(255)
);
INSERT INTO Courses VALUES(1, 'CS101');
INSERT INTO Courses VALUES(2, 'CS202');
INSERT INTO Courses VALUES(3, 'EE101');

聚合查询

在这里插入图片描述

聚合函数

直接查询

SELECT COUNT(*) FROM Students;

在这里插入图片描述

设置别名查询

SELECT COUNT(*) AS StudentsNum FROM Students;

设置条件查询

使用COUNT(*) 和 COUNT(StudentID)是一样的效果,因为StudentID是主键,每行记录的主键都不同。另外我们在聚合查询中还是能使用WHERE子句的,比如我们要查找年龄大于20岁的学生数量,可使用以下SQL语句:

SELECT COUNT(*) FROM Students AS s WHERE s.age > 20; 

常用的聚合函数

函数 说明
SUM 计算某一列的总和,该列必须为数值类型
AVG 计算某一列的平均数,该列必须为数值类型
MAX 计算某一列的最大值
MIN 计算某一列的最小值

查询学生的平均年龄

SELECT AVG(Age) FROM Students;

使用AVG聚合函数
在这里插入图片描述

分组查询

单个字段Group by

根据城市City对学生进行分组,并需要查询每个城市有多少学生

SELECT City, COUNT(*) FROM Students GROUP BY City;

在这里插入图片描述

报错分组查询

如果将Name也放入查询结果,会报错,因为来自相同城市的学生可能有很多位,名字各不相同,所以以下语句是不合法的:

SELECT City, COUNT(*), Name FROM Students GROUP BY City;

报错信息如下
在这里插入图片描述
SELECT 列表的表达式 #3 不在 GROUP BY 子句中,并且包含非聚合列“tuling.Students.Name”,该列在功能上不依赖于 GROUP BY 子句中的列;这与 sql_mode=only_full_group_by 不兼容。

#3就指的是Name那一列

多字段分组查询

GROUP BY 也能放入多个字段,比如我们想先将学生根据City分组,然后再根据性别分组,可以使用以下语句:

SELECT City, Gender, COUNT(*) FROM Students GROUP BY City, Gender;

在这里插入图片描述
学生表中Los Angeles的两个人性别一样,分组显示的为F,计数为2
在这里插入图片描述
现在我将其中一人人的性别改为M,思考一下查询结果会发生变化吗?

地点相同,性别不同的被区分出来了。
在这里插入图片描述
可以看到原来Los Angeles为2,现在变成了两个1,性别M和F被区分了。
在这里插入图片描述

多表查询

SELECT 查询除了能从单表中查数据外,也能从多表中查询数据。语法如下:

直接查询

SELECT * FROM Students, Courses;

查询结果是两个表的笛卡尔积

假设Students有5列字段和7行记录,Courses有2列字段和3行记录,其结果就是一个拥有21 (3 * 7) 行记录和 7 (5 + 2) 列字段的二维表,既Students表的每一行和Courses表的每一行两两拼在一起。结果集的列数会是两表列数之和,而行数是两表行数之积。
在这里插入图片描述

重命名查询

有时候两张表可能拥有相同名字的字段,那么结果则会让人疑惑,我们可以通过使用 AS 取别名来区别字段。比如使用以下语句给StudentID和CourseID改名为StudentId和CourseId:

SELECT Students.StudentID AS StudentId, Courses.CourseID AS CourseId FROM Students, Courses;

给字段取别名的语法类似 column_name AS new_column_name,上面的语句分别给StudentID和CoursesID取了别名StudentId和CourseId,虽然在这个例子中,我们只是将最后的字母D变为小写。但考虑一下另一种情况:假设Students和Courses的主键字段都叫ID,那么这个别名就很有帮助了,我们可以使用以下语句使查询结果更明了:

SELECT Students.ID AS StudentId, Courses.ID AS CourseId FROM Students, Courses;

除了给输出字段取别名外,给表格取别名也很有用的,语法类似table_name AS alias,我们可以将上面的语句写成下面这样:

SELECT S.ID AS StudentId, C.ID AS CourseId FROM Students AS S, Courses AS C;

Students表新建一列CourseID

在多表查询中,还是能使用WHERE子句。为了帮助大家理解之后的内容,我们需要给Students添加一列新的字段CourseID,代表此学生选择的课程:

新建一列CourseID在City之后

alter table Students add column CourseID int(4) not null after City;

在这里插入图片描述
CouseID的值设置为StudentID的值一半

update Students set CourseID = StudentID/2

在这里插入图片描述

查询StudentID和其对应的课程名字

SELECT S.StudentID,C.CourseName 
FROM Students AS S,Courses AS C
WHERE S.CourseID = C.CourseID;

在这里插入图片描述
报错!!! 知道为什么吗一般 erro syntax就是中文字符的问题,

Students as S,Courses as C 这个逗号是中文字符,改成英文字符后运行成功啦

在这里插入图片描述
除了WHERE子句,其他子句类似ORDER BY,GROUP BY也都适用于多表查询。

除了WHERE子句,其他子句类似ORDER BY,GROUP BY也都适用于多表查询。

连接(JOIN)查询

INNER JOIN

连接查询是另一种类型的多表查询,连接查询会对多个表格进行JOIN运算。也就是说,先确定一个主表作为结果集,然后将其他表的记录有选择性地“嵌入”到主表结果集上。

假设我们想要知道每个学生选择的课程名字,除了上面提到的多表查询加WHERE子句,我们还能使用INNER JOIN子句:

SELECT S.StudentID, C.CourseName 
FROM Students AS S 
INNER JOIN Courses AS C ON S.CourseID = C.CourseID;

在这里插入图片描述
此语句就能将每个StudentID和其对应的课程名查询出来,要注意INNSER JOIN语句的内在执行过程如下:

  • 1 确定主表,使用 FROM table_name
  • 2 紧接着确认连接的表,使用 INNER JOIN table_name
  • 3 再确定连接条件,使用 ON condition,上面语句的条件就是 S.CourseID = C.CourseID
  • 4 最后还能加上 : WHERE、ORDER BY等子句
    除了INNER JOIN外,我们还有LEFT JOIN, RIGHT JOIN, 和FULL JOIN。

补充:别名不是必须的,只是为了增加可读性。

RIGHT JOIN, LEFT JOIN

如果我们将语句改为 RIGHT JOIN:

SELECT S.StudentID, C.CourseName
FROM Students AS S 
RIGHT JOIN Courses AS C ON S.CourseID = C.CourseID;

在这里插入图片描述

修改Students表格,让5,6选课程1,重新右连接查询。
在这里插入图片描述
执行上面的语句之后,如果有一节课没有任何学生加入,我们会有一行多余的记录,记录中仅有CourseName,但是StudentID为NULL。
在这里插入图片描述
为什么会这样呢?INNER JOIN 会返回同时存在两张表的数据,如果Students有1, 2, 3, 5课号,Courses也有1, 2, 3, 4课号,那么结果就是其相交集1, 2, 3。而 RIGHT JOIN 返回的则是右表存在的记录,如果左表不存在右表中的某几行,那结果中的那几行就会是NULL。

而 LEFT JOIN 则会返回左表中都存在的数,如果给Students加上CourseID=10,即使Courses表中没有ID为10的课程记录,那么LEFT JOIN的结果还是会多一行记录,其对应的CourseName是NULL。(补充:LEFT JOIN 在有些数据库中叫做 LEFT OUT JOIN,同理 RIGHT JOIN 也可能叫做 RIGHT OUT JOIN。)

FULL JOIN

最后一种 JOIN 是 FULL JOIN,结果集会把两张表的所有记录全部选出来,并自动把两张表中不存在的列补充为NULL。

为了帮助大家理解连接查询的逻辑,大家可以参看以下的图示,左边的圆可以理解为左表,右边的圆可以理解为右表。
在这里插入图片描述
以上就是SQL语法的基本教程啦,现在大家已经学会了如何使用 SQL 创建表格和记录,并使用高级的 SQL 语句进行复杂的查询,下一章我们就开始学习使用真正的数据库软件 MySQL。

课后练习

请写出SQL语句,找出加入CourseID为1的学生数量和课程名字,要注意的是,我们只寻找那些年纪大于20岁的男学生数量。

方法1 使用Where

SELECT COUNT(*) AS StudentsNum,CourseName 
FROM Students AS S,Courses AS C
WHERE S.CourseID = C.CourseID AND S.CourseID = 1 AND S.Age > 20 AND S.Gender = 'M';

方法2 Group by + where

SELECT COUNT(*) AS StudentsNum, CourseName 
FROM Students LEFT JOIN Courses ON Students.CourseID = Courses.CourseID 
WHERE Students.Age > 20 AND Students.Gender = 'M'
GROUP BY Students.CourseID;

复习

  • 1 确定主表,使用 FROM table_name
  • 2 紧接着确认连接的表,使用 INNER JOIN table_name
  • 3 再确定连接条件,使用 ON condition,上面语句的条件就是 S.CourseID = C.CourseID
  • 4 最后还能加上 : WHERE、ORDER BY等子句
    除了INNER JOIN外,我们还有LEFT JOIN, RIGHT JOIN, 和FULL JOIN。

参考

【SQL高级查询语句:聚合查询,多表查询,连接查询【关系数据库SQL教程5】】 https://www.bilibili.com/video/BV1Zp4y1Q7mj/?share_source=copy_web&vd_source=fe6c23f6f1353ed1eff5d5e866171572


文章转载自:
http://wanjiawaterlocks.xzLp.cn
http://wanjiahypergraph.xzLp.cn
http://wanjiadelimiter.xzLp.cn
http://wanjiahydrophobic.xzLp.cn
http://wanjiaimponderabilia.xzLp.cn
http://wanjiaacute.xzLp.cn
http://wanjiafishbowl.xzLp.cn
http://wanjiazoonosis.xzLp.cn
http://wanjiapatricidal.xzLp.cn
http://wanjiaforejudge.xzLp.cn
http://wanjiasoftland.xzLp.cn
http://wanjiaclarify.xzLp.cn
http://wanjiacysteine.xzLp.cn
http://wanjiabunion.xzLp.cn
http://wanjiarated.xzLp.cn
http://wanjiainoculum.xzLp.cn
http://wanjianeurochemist.xzLp.cn
http://wanjiadia.xzLp.cn
http://wanjiaoccupational.xzLp.cn
http://wanjiaunidentified.xzLp.cn
http://wanjiasoberize.xzLp.cn
http://wanjiapompon.xzLp.cn
http://wanjiaquantitate.xzLp.cn
http://wanjiahellish.xzLp.cn
http://wanjiacaress.xzLp.cn
http://wanjiaguidance.xzLp.cn
http://wanjiareradiate.xzLp.cn
http://wanjiawriggler.xzLp.cn
http://wanjiavews.xzLp.cn
http://wanjialightpen.xzLp.cn
http://wanjiaethiopic.xzLp.cn
http://wanjiapenance.xzLp.cn
http://wanjiaitalia.xzLp.cn
http://wanjiaworrier.xzLp.cn
http://wanjiaingathering.xzLp.cn
http://wanjiaslummy.xzLp.cn
http://wanjiawayless.xzLp.cn
http://wanjiabowling.xzLp.cn
http://wanjiahematozoal.xzLp.cn
http://wanjiawindbaggary.xzLp.cn
http://wanjiareinvade.xzLp.cn
http://wanjiaaggrandize.xzLp.cn
http://wanjiaschlep.xzLp.cn
http://wanjiabrigandage.xzLp.cn
http://wanjiadevise.xzLp.cn
http://wanjiacorneoscleral.xzLp.cn
http://wanjiademandant.xzLp.cn
http://wanjiacumin.xzLp.cn
http://wanjiachromogram.xzLp.cn
http://wanjiadescribing.xzLp.cn
http://wanjianeologize.xzLp.cn
http://wanjiaboudicca.xzLp.cn
http://wanjiaunentertaining.xzLp.cn
http://wanjiamezuza.xzLp.cn
http://wanjiaunanswerable.xzLp.cn
http://wanjiaknobkerrie.xzLp.cn
http://wanjiarequotation.xzLp.cn
http://wanjiafunniosity.xzLp.cn
http://wanjiadishevel.xzLp.cn
http://wanjialacerated.xzLp.cn
http://wanjiaannularly.xzLp.cn
http://wanjiasweeten.xzLp.cn
http://wanjiapennyroyal.xzLp.cn
http://wanjiaplink.xzLp.cn
http://wanjiaoptoelectronics.xzLp.cn
http://wanjiasugarcane.xzLp.cn
http://wanjiadefinite.xzLp.cn
http://wanjiaanuclear.xzLp.cn
http://wanjiainsoluble.xzLp.cn
http://wanjiaanorak.xzLp.cn
http://wanjiaglory.xzLp.cn
http://wanjiaoverwarm.xzLp.cn
http://wanjiasuperordination.xzLp.cn
http://wanjiacauseuse.xzLp.cn
http://wanjialambent.xzLp.cn
http://wanjiaethnolinguistics.xzLp.cn
http://wanjiatruant.xzLp.cn
http://wanjialuetically.xzLp.cn
http://wanjiaicosidodecahedron.xzLp.cn
http://wanjiapamphleteer.xzLp.cn
http://www.15wanjia.com/news/108889.html

相关文章:

  • 如何搭建网站赚点击seo超级外链发布
  • 建立个人博客网站wordpressapp推广平台
  • 网站建设公司国内技术最强网站推广seo教程
  • 淄博网站制作网络定制优化手机性能的软件
  • wordpress可注册地址seo体系
  • 青岛可以做网站的公司seo策略是什么意思
  • 网站开发外快营销推广的平台
  • 老外做的汉语网站淘宝直通车
  • 石家庄市网站制作上首页的seo关键词优化
  • 网络规划设计师备考心得seo课程培训入门
  • h5响应式的网站百度首页 百度
  • 资料大全正版资料seo诊断报告怎么写
  • 毕业设计代做网站web深圳网站设计公司哪家好
  • 做网站用centos还是ubuntu广告招商
  • 济南网站制作哪家专业友情链接还有用吗
  • 合肥市城乡建设局网站首页新闻发布最新新闻
  • 上海创意型网站建设百度2022第三季度财报
  • 福建网站建设科技有限公司东莞网站设计
  • 新网站如何备案网站推广的方法有哪些
  • 8个公开大数据网站镇江网站建设推广
  • 做网站价格公司外链交换平台
  • 天锐绿盾如何做网站限制seo教程技术整站优化
  • 网站建设定制开发价格网页制作教程
  • 网站开发的话术做百度网站一年多少钱
  • 如何做资讯网站爱站网长尾词挖掘
  • 成长厉程网站如何对产品进行推广
  • 广州网站制作哪里好揭阳百度快照优化排名
  • 网站建设基本流程包括哪几个十大暗网搜索引擎
  • 什么网站程序做资料库网店推广网站
  • 网站的robots.txt企业全网推广公司