where语句字段,必须是”数据表中存在的”字段
having:语句字段,必须是查询结果集中存在的字段
select \[all | distinct\] 字段或表达式列表 \[from子局\] \[where 子局\] \[group by子句\] \[having 子句\] \[order by子句\] \[limit 子句\];
select可以单独用不跟from,如果想跟from可以from一个dual(伪表)
all和distinct用于设定select出来的数据,是否消除’重复行’,可以不写,那就是默认all,如果是distinct表示会消除
结果集中可以使用字段别名,但是where条件中要用表的名字
查询时间戳用select unix\_timestamp();
where子句:
where中的字段要来自表不能用之前取的别名
算术运算符: +, -, \*, /, %
比较运算符: >, >=, <, <=, =(等于), <>(不等于), !=(不等于)
=即代表赋值也代表比较运算
\[not\] between and 介于两者之间或不介于2者之间
is null 为空 is not null 不为空
逻辑运算符: and, or, not
is运算符:
xx is null:判断某个字段是”null”值就是没有值
xx is not null: 判断某个字段不是”null”值
xx is true:判断某个字段为真
xx is false:判断某个字段为假 0, 0.0, ‘’, null
between运算符:判断某个值是否在给定值的范围内---适用于数字类型
xx between 值1 and 值2
in运算符:给定确定数据的范围判断,后面罗列的字段用()包括
语法:xx in (值1,值2,值3,….)
表示字段在所列出中的一个就满足条件
like运算符:对字符串进行模糊查找
语法:xx like ‘要查找的内容’;
%代表任何个数的任何字符 \_:它代表一个任何字符
要找%或\_,转义就行了\\%和\\\_
group by子句:分组
形式:group by 字段1 \[desc | asc\], 字段2 \[desc | asc\]
每一组的数量信息,就是用count(\*)获得,count(字段名)不计空值,count(\*)计算空值
最大值:max(字段名) 最小值:min(字段名) 平均值:avg(字段名) 总和值:sum(字段名)
group\_concat(字段名):可以显示一个分组的普通字段的所有值
having子句:只对分组的结果数据进行筛选
where对原始数据筛选,having对分组之后的数据筛选
order by子句
order by字段1 \[asc | desc\], 字段2 \[asc | desc\],………. desc倒序 asc 顺序(排序默认小到大)
limit子句
limit offset,pagesize offset为偏移量,如果为0可以省略. pagesize每页显示的行数 分页公式:pagesize:每页显示条数,page:当前页. limit(page-1)\*pagesize,pagesize
#### 连接的分类
**交叉连接**:cross join
**自然连接:**natural join会自动的去找两张表中的相同字段,然后利用相同字段去进行连接,并且相同字段只会显示一个.如果两张表有多个同名字段,只有当多个同名字段值全部相等,才会显示这条记录
**自然左连接**: natural left join以左表为主,然后利用相同字段去连接,自然右类似
**内连接:**inner join 形式:select \* from 表1 \[inner\] join 表2 on 连接条件
没有连接条件其实就是交叉连接
一般都写连接条件:例:select \* from product inner join product\_type on product .protype\_id=product\_type.protype\_id;
**左(外)连接:**left (outer) join 形式:表1(左表) left \[outer\] join 表2(右表) on 连接条件
其实就是将两个表的内连接的结果再加上左边表的不符合内连接所设定条件的那些数据结果,右边没有对应位置填null,不加on条件不行
**右外连接:**right(outer) join
**全(外)连接:**full(outer) join mysql不支持全连接语法
using(字段名) 在左连接,右连接和内连接时可以不使用on,直接使用using(),指定一个同名字段去自动连接,指定的同名字段只显示一次
#### 子查询
形式:select 字段或表达式或子查询\[as 别名\] from 表名或链接结果或子查询 where 字段或表达式或子查询的条件判断
分为:
**表子查询:**一个子查询返回的结果理论上是多行多列的时候.此时可当做一个表来使用,通常放在from后面
**行子查询:**一个子查询返回的结果理论上是”一行多列”的时候,此时可以当做一个行来使用,通常放在”行比较语法中”
行比较语法类似:where row(字段1,字段2)=(select 行子查询)
**列子查询:**一个子查询语句返回的结果理论上是多行一列的时候.此时可以当多个值来使用,类似(5,17,18,2,6)
**标量子查询:**一个子查询返回的结果,理论上是”一行一列”的时候.此时可以当做一个单个值来使用,即单个数据值
any 满足任意一个值就true all(some) 满足所有才true
例:查询所有非最高价商品 (只会小于上述所有价格中的某一个)
select \* from product where price < any
(select price from product);
查询所有最高价商品(大于等于”所有价格”)
select \* from product where price >= all(select price from product);
#### exists查询
形式:where exists(子查询) 如果子查询有数据,则exists的结果是true,否则是false
select \* from product where exists (select \* from product\_type where protype\_name like ‘%电%’ and protype\_id = product.protype\_id)
#### 联合查询union
语法形式:select 语句1
union \[all | distinct\]
select 语句2;
此联合查询默认会”自动消除重复行”,即默认distinct,如果想都显示,就用all,而且默认使用第一个select的字段名,相同的数据只显示一个
order by子句和limit子句只能对整个联合之后的结果进行排序,如果第一个select子句用别名,order by必须用别名,如果2个子都想使用order by,在order by后面要跟limit
连接查询横向,联合查询纵向
- PHP
- 页面跳转
- 数据类型和运算符
- 整形
- 浮点型
- 字符串型
- 布尔型
- 判断数据类型
- 传值
- 类型转换
- 常量
- 进制转换
- 运算符
- 各种结构
- 数组
- 分类
- 创建
- 多维数组
- 数组操作函数
- 数组指针
- 排序
- 数组交换需要注意的
- 函数
- 创建函数
- 参数传递
- 参数数量问题
- 返回值
- 可变函数
- 匿名函数
- 冒泡,选择,二分
- 变量的作用域
- 局部作用域中使用全局
- use
- 有关函数的系统函数
- 递归
- 递推(迭代)
- 面向对象
- 类和对象
- 值传递
- 引用传递
- 成员
- 构造和析构调用上级同类方法
- 重写
- 最终类
- 最终方法
- 设计模式
- 抽象类
- 抽象方法
- 抽象类和抽象方法的细节
- 重载
- 接口
- 类和接口的总结
- 自动加载
- 克隆
- 对象的遍历
- 内置标准类
- 其他类型转对象类型
- 类型约束
- 魔术方法
- static关键字
- 命名空间
- 子级空间
- 引入机制
- 公共空间
- 使用注意
- 错误处理
- 错误的触发
- 错误报告的显示
- 错误日志的记录问题
- 自定义错误处理器
- 异常抛出
- 文件锁
- 文件处理
- 序列化与反序列化
- 目录操作
- 文件操作
- 文件上传
- $_FILFS
- 多文件上传处理
- 绘图技术
- 创建画布资源
- 操作画布
- 导出
- 销毁资源
- 验证码
- 补充文件居中
- 在图像上写入一行TTF字体的文本
- 获得图像相关信息
- 水印
- 等比例缩放
- 常见错误
- HTTP协议
- URL的构成
- 请求
- 防盗链
- 响应
- 使用header()禁用缓存
- 下载文件的HTTP响应头
- 文件下载
- HTTPS
- 会话技术
- cookie
- session
- PHP操作MySQL函数
- 登录
- 一些函数
- 从结果集中取出一行数据
- 获取行数,列数,字段名
- 安全
- 缓存
- 补充
- MySQL
- 语法
- 备份和恢复
- 注释
- 语句行
- 字符集
- 校验级
- 存储引擎
- 数据库操作
- 创建数据库
- 删除数据库
- 显示数据库
- 修改数据库
- 数据类型
- 整数类型
- 小数类型
- 日期时间型
- 字符和文本型
- enum类型
- set类型
- 时间类型
- 表操作
- 创建
- 索引
- 约束
- 表选项列表
- 表的其他语句
- 视图语法
- 增删改查
- 插入数据(增)
- 删除数据(删)
- 修改数据(改)
- 查询(查)
- 用户和权限管理
- 用户管理
- 权限管理
- PDO
- 与PDO相关的几个类
- 连接数据库
- 使用
- PDO的错误处理
- PDO结果集对象
- pdo结果集对象的常用方法
- PDO预处理
- 常用属性
- mysql编程
- 事务
- 语句块
- mysql中的变量
- (存储)函数
- 存储过程procedure
- 触发器(trigger)
- mysql优化
- 存储引擎
- 字段类型
- 逆范式
- 索引
- Memcache
- 与redis区别
- 安装
- php开启扩展
- php操作memcache
- Key的命名
- 有效期
- 各种数据类型存储
- 删除
- 第三个参数压缩作用
- 其他相关操作方法
- 终端命令操作方式
- 获取memcache统计信息
- Git
- 创建一个git仓库
- 添加
- 修改文件
- 删除文件
- 克隆
- 个人网站
- Ajax
- 发起请求
- 接受响应
- 常用属性和方法
- get和post
- get
- post
- 同步和异步
- 什么时候使用同步请求?
- 分页
- xml的接收和处理
- JSON
- 无刷新表单提交和进度条
- JQuery操作ajax
- iframe
- 邮件
- 介绍
- 发送邮件
- 直投邮件
- 中转邮件发送
- phpmailer
- 正则表达
- 简单使用
- preg_match()
- 正则内容
- 定义字符集
- 特别字符集
- 组合字符集
- 限制字符
- 模式修正符
- 进行全局匹配