搜索
首页数据库mysql教程mysql查询语句(mysql学习笔记七)_MySQL

bitsCN.com

Sql语句

一般顺序GHOL : group by,having ,order by,limit

    如果是分组,应该使用对分组字段进行排序的group by语法

                    Limit start ,length

                   去除重复记录默认为all

Select distinct 字段  from

Select distinct * from 没用(所有字段组合不相同才认为不相同,用在这里基本没用),记录值完全一样时取其一个

Union查询

把两个select 结果union起来

( select 语句1)union(select 语句2)

选出英语最高分和数学最高分的学生的id,name ,class

注意加括号

有重复记录时的合并

english由高到低和由低到高的结果合并

在符合语句中 order by功能受影响,需加上limit

子语句的排序

1.将子语句包裹在子括号内

2.子语句的 order by

 中有order by配合Limit使用时才生效。

原因是:union在做子语句时,会对没有limitorder by优化(忽略)

所有结果排序

只需要在最后一个select语句后增加相应排序即可。

子语句括号非必须最后一个排序默认针对所有结果。

Union检索的字段必须个数一样(否者出错),数据类型也一样(发生类型转换) 列名由第一个select检索列名来定

子查询

语句内部的查询语句

表中数据

查出英语成绩最高的学生的信息

不用子查询:

 

但有2个学生英语成绩最高且一致,这个时候在不知道表里数据的情况下就不能使用这种查询方法

   思路:先找出英语成绩最大的那个值,再找出哪些学生的英语成绩与这个最大的值相等。这样一步一步进行查询。

 

只检索一个字段时可以作为一个值使用,必须只检索一个字段

子查询分类

不同的分类会有不同的使用方式

分类标准:

子查询出现的位置

子查询的返回值形式

  返回值分类:

   单一值,单列,多列,多行多列()

出现位置:

Where 型,where

From  from

Exists

使用:

标量的:获得一个值后用关系运算符进行运算(> >=, )

列子查询(只是1):获得一列通常是对个行的一列值(一个集合)

 使用in,not in运算符

查出班级为php101中所有学生的信息

集合操作符还有

Any(集合)  集合中的任意一个

=any(集合) 等于集合中的任意一个即可

等同于in

=All(集合) 集合中的所有元素

!=all(集合) 不等于集合中的所有元素等同于Not in

!=any(集合) 不等于集合中的任意一个元素成立即可,即为只要不等于其中的一个元素即为成立的。

注意:这种语法不该出现在实际开发中

Some(集合) 集合中的一些

语法上与any一样

总结:

=any  等同于in

!=all 等同于 not  in

Some 和any同义

All,any ,some可以使用除了=,!=之外运算符,比in强大

返回一行

在参与比较时,使用括号可以构建一行

(field1,field2,…)

表中数据

现在要查询出和贺8在同样的班级且与他math成绩一样的同学的信息

子查询

 

返回一个表

如果用在from子句内,要求要是一个表

现在是查询结果,必须给这个查询结果起别名

 表中数据

查询php103班 english不及格的学生信息

必须有别名

Exists

如果子查询可以返回数据则返回真,否者返回假

有以下2表

A表 

B表

在a中查询出id在 b中有的记录

先获取a表的第一行记录,在子查询中判断a表的id与b表的id比较

连接查询

Join

每个实体,一个表

一个业务逻辑,使用多个实体的数据

多张表应该在一起使用,将多个表的记录连接起来

Teacher

Teacher_class1

查出代课老师的代课信息

 

 

 

笛卡尔(交叉)连接

内连接处理

在连接时,是可以省略连接条件的。意味着,所有的左表数据,都要与右表的记录做一个连接

共存在m*n个连接

称之为交叉连接或笛卡尔集

此时可以使用 cross join代替inner join

Mysql中cross join与inner join相同

Inner join是默认的连接方式(inner 省略)

等效的

也可使用

表示笛卡尔积

结果虽然一样

On数据连接条件

Where数据过滤条件

但 where是先连接成笛卡尔积

然后做筛选,而on 是在连接时就判断

上表是连接条件2

下表是 

过滤条件2

 

 

 

下表连接过滤各一个

Using:要求负责连接的两个实体之间字段名称一致。

查询条件与外连接通用 外连接不能用where作为连接条件。

注意:

无论是连接条件还是连接查询多字段列表,都没必要一定要写表名.字段语法,是否写取决于是否发生冲突。建议写上。

别名

  表应该别名,保证简洁清晰。

列别名

 

外连接:

分类

左外连接

右外连接

全外连接(暂不支持)

左连接

在连接时,如果出现左边表,数据连接不到右边表的情况,则左表的数据在最终结果内保留。而如果出现右表的数据连接不到左标的情况,右表数据被丢弃。

由于内连接没有左右连接之分,left outer joinouter可以省略。

在外连接中不可以用where做连接条件可用on ,using

表别名可以用在连接条件里,但字段别名不可以。

表起别名后,在筛选或者连接条件里必须用别名,原名不能用了

左表teacher里的数据孙武连接不上也保留。

全外连接左外与右外 union(取并集)

内连接是左外右外交集

Using会去掉结果中重复字段,并放在列首

外连接不能使用没有条件的连接(不像内连接那样形成笛卡尔积)

自然连接

通过mysql自己判断完成连接过程。不需要指定连接条件,mysql会使用多表内相同的字段作为连接条件。

one数据

Two表数据

 

自然连接也有内外之分

内:natural join

:左外natural left join ,右外 natural right join

bitsCN.com
声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
图文详解mysql架构原理图文详解mysql架构原理May 17, 2022 pm 05:54 PM

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于架构原理的相关内容,MySQL Server架构自顶向下大致可以分网络连接层、服务层、存储引擎层和系统文件层,下面一起来看一下,希望对大家有帮助。

mysql怎么替换换行符mysql怎么替换换行符Apr 18, 2022 pm 03:14 PM

在mysql中,可以利用char()和REPLACE()函数来替换换行符;REPLACE()函数可以用新字符串替换列中的换行符,而换行符可使用“char(13)”来表示,语法为“replace(字段名,char(13),'新字符串') ”。

mysql的msi与zip版本有什么区别mysql的msi与zip版本有什么区别May 16, 2022 pm 04:33 PM

mysql的msi与zip版本的区别:1、zip包含的安装程序是一种主动安装,而msi包含的是被installer所用的安装文件以提交请求的方式安装;2、zip是一种数据压缩和文档存储的文件格式,msi是微软格式的安装包。

mysql怎么去掉第一个字符mysql怎么去掉第一个字符May 19, 2022 am 10:21 AM

方法:1、利用right函数,语法为“update 表名 set 指定字段 = right(指定字段, length(指定字段)-1)...”;2、利用substring函数,语法为“select substring(指定字段,2)..”。

mysql怎么将varchar转换为int类型mysql怎么将varchar转换为int类型May 12, 2022 pm 04:51 PM

转换方法:1、利用cast函数,语法“select * from 表名 order by cast(字段名 as SIGNED)”;2、利用“select * from 表名 order by CONVERT(字段名,SIGNED)”语句。

MySQL复制技术之异步复制和半同步复制MySQL复制技术之异步复制和半同步复制Apr 25, 2022 pm 07:21 PM

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于MySQL复制技术的相关问题,包括了异步复制、半同步复制等等内容,下面一起来看一下,希望对大家有帮助。

带你把MySQL索引吃透了带你把MySQL索引吃透了Apr 22, 2022 am 11:48 AM

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了mysql高级篇的一些问题,包括了索引是什么、索引底层实现等等问题,下面一起来看一下,希望对大家有帮助。

mysql怎么判断是否是数字类型mysql怎么判断是否是数字类型May 16, 2022 am 10:09 AM

在mysql中,可以利用REGEXP运算符判断数据是否是数字类型,语法为“String REGEXP '[^0-9.]'”;该运算符是正则表达式的缩写,若数据字符中含有数字时,返回的结果是true,反之返回的结果是false。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前By尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具