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

mysql查询语句(mysql学习笔记七)的更多相关文章

  1. MySQL基础语句【学习笔记】

    放在这里,以备后查. 1. 数据库, 数据库服务器, 数据库语言 数据库,是持久性数据的集合,供给定企业的应用程序系统使用,并且由一个数据库管理系统来管理: 数据库服务器,又称数据库管理系统,用来管理 ...

  2. MySQL实战45讲学习笔记:第三十九讲

    一.本节概况 MySQL实战45讲学习笔记:自增主键为什么不是连续的?(第39讲) 在第 4 篇文章中,我们提到过自增主键,由于自增主键可以让主键索引尽量地保持递增顺序插入,避免了页分裂,因此索引更紧 ...

  3. MYSQL查询语句大全集锦

    MYSQL查询语句大全集锦 1:使用SHOW语句找出在服务器上当前存在什么数据库: mysql> SHOW DATABASES; 2:2.创建一个数据库MYSQLDATA mysql> C ...

  4. MySQL事务控制语句(学习笔记)

    MySQL事务控制语句(学习笔记) MySQL事务控制语句         在mysql命令行的默认下,事务都是自动提交的,sql语句提交后马上会执行commit操作.因此开启一个事务必须使用begi ...

  5. 深挖计算机基础:MySQL实战45讲学习笔记

    参考极客时间专栏<MySQL实战45讲>学习笔记 一.基础篇(8讲) MySQL实战45讲学习笔记:第一讲 MySQL实战45讲学习笔记:第二讲 MySQL实战45讲学习笔记:第三讲 My ...

  6. 多IDC数据分布--MySQL多机房部署 - 学习笔记 - 51CTO技术博客

    多IDC数据分布--MySQL多机房部署 - 学习笔记 - 51CTO技术博客 多IDC数据分布--MySQL多机房部署

  7. MySQL查询语句执行过程及性能优化(JOIN/ORDER BY)-图

    http://blog.csdn.net/iefreer/article/details/12622097 MySQL查询语句执行过程及性能优化-查询过程及优化方法(JOIN/ORDER BY) 标签 ...

  8. PHP之路——MySql查询语句

    1,select查询的基本结构 select 字段 from 表 where 过滤条件 group by 分组条件 having 过滤的第二条件 order by 排序条件 limit 限定结果条件; ...

  9. mysql查询语句,通过limit来限制查询的行数。

    mysql查询语句,通过limit来限制查询的行数. 例如: select name from usertb where age > 20 limit 0, 1; //限制从第一条开始,显示1条 ...

随机推荐

  1. Sq server 关于存储过程,触发器的一些理论简述

    http://www.doc88.com/p-2905916227462.html      

  2. [ACDream 1430]SETI 后缀数组

    题目链接:http://acdream.info/problem?pid=1430 题目大意:给你一个长度不超过10000的字符串,问你出现过两次或两次以上的不重叠的子串有多少个. 后缀数组计算出he ...

  3. 使用jaxp对比xml进行DOM解析

    /*DOM解析编程 •遍历所有节点 •查找某一个节点 •删除结点 •更新结点 •添加节点 /* package cn.itcast.jaxp; import java.io.File; import ...

  4. The Ninth Hunan Collegiate Programming Contest (2013) Problem I

    Problem I Interesting Calculator There is an interesting calculator. It has 3 rows of button. Row 1: ...

  5. 【LeetCode】21. Merge Two Sorted Lists

    题目: Merge two sorted linked lists and return it as a new list. The new list should be made by splici ...

  6. 慕课网-安卓工程师初养成-4-6 Java条件语句之 switch

    来源:http://www.imooc.com/code/1358 当需要对选项进行等值判断时,使用 switch 语句更加简洁明了.例如:根据考试的名次,给予前 4 名不同的奖品.第一名,奖励笔记本 ...

  7. asp.net(c#)修改时的赋值操作

    赋值操作方法(将信息显示至文本框中): public void Show_Infobase(int _peoid) { DataSet ds = new DataSet(); ds = platbll ...

  8. [前端 4] 使用Js实现图片上传预览

    导读:今天做图片上传预览,刚开始的做法是,先将图片上传到Nginx,然后重新加载页面才能看到这个图片.在这个过程中,用户一直都看不到自己上传的文件是什么样子.Ps:我发现我真的有强迫症了,都告诉我说不 ...

  9. 动态链接库(VC_Win32)

    目录 动态链接库概述相关函数动态链接库编程dumpbin工具 (本章节中例子都是用 VS2005 编译调试的) 动态链接概述 说明 所谓动态链接,就是把一些经常会共用的代码(静态链接的OBJ程序库)制 ...

  10. windows svn

    1.1Svn和VisualSvn介绍 VisualSvn Server2.5.6(版本控制服务器)免费开源软件 是基于Windows平台上的Subversion服务器,它是免费的 官方下载: http ...