# 查询数据
```
select 列名1, 列名2, from 表名 where条件
```
## 语法:
```
select*from user where sex!=1; //sex为表的列字段
select*from user where sex=1; //sex为表的列字段
select*from user where age=40 or age=23; //age为列字段 这个意思是40或者23
select*from user where user_name='liudehua'and age=36; //两个条件
select*from user where age between 30 and 60; //between用法
select*from user where age in(36,33); //in() 用法
select*from user where age not in(36,33); // no in() 用法
select*from user where user_name like '%u%'; //模糊查询用法 这里是查含字符串里有u字符的。
select*from user where user_name like '%g'; //模糊查询以某个字符开头实例, 这里是查含字符串里以g开头的字符串。
select*from user where user_name like 'g%'; //模糊查询以某个字符结尾实例, 这里是查含字符串里以g结尾的字符串。
查所有字段用* 不带where条件 把表的所有记录查出来
```
# 条件付号
```
and并且的意思与&&相同
or 与 || 相同
< > <= >= != = 逻辑运算符。
between 30 and 60 范围 (多少到多少的意思,这里是30-60的意思)
in(36,33); 与or大至相同
not in(36,33); 非36和33的
like '%这里写含有某个字符字符%'; 模糊查询(这个查的必须是字符串)
like '这里写含有某个字符字符%'; 以这个字符串开始 模糊查询 (这个查的必须是字符串)
like '%这里写含有某个字符字符'; 以这个字符串结束 模糊查询(这个查的必须是字符串)
```
# 改别名
意思:把查询回来的名称改名
## 语法:
```
select 字段名称 as 改后的字段名称 from 数据库表名;
代码案例:select user_name as name from user;
```
# 字段值连接一起
## 语法:
```
concat()
select concat(字段名,字段名,字段名) from 数据库表名; //可以把几个字段连到一起
select concat_ws("分隔符==",字段名,字段名,字段名) from 数据库表名 //可以用分割连接一起看起来更清楚
```
## 代码案例:
```
select concat_ws('==',user_name,age,sex) from user;
```
# 过滤重复值
## 语法:
```
select distinct 字段名 from 数据库表名;
代码案例:select distinct user_name from user;
```
# LIMIT 查询 限制查询的条数
## 语法:
```
select *from 表名 limit (从第几个开),(到后面几个) //从1后面开始的2个
代码案例:
select*from user limit 0,3; //从第0个开始后面的3个表
```
# 聚合函数
## 查询行总数
###语法:
```
select count(*) from 表名 // 查询表行数 一共多少行
代码案例:
select count(id)from user; //查表中id行数
```
## 求查询字段的和值
###语法:
```
select sum(字段名) from 表名;
```
## 求查询字段的平均值
```
select avg (字段名) from 表名;
代码案例:
select avg(age)from user; //求age字段平均值
```
## 求查询字段的最大值
```
select max(字段名) from 表名
代码案例:
select max(age)from user; //求age的最大值
```
## 求查询字段的最小值
```
select min(字段名) from 表名
代码案例:
select min(age)from user; //求age的最小值
```
# 分组查询(聚合查询)
## 语法:
```
select 要分组的字段 from 表名 group by 要分组的字段; //把字段里共同的值分到一个组里
```
## 代码案例:
```
select sex from user group by sex; //sex字段分组分组
select avg(age), sex from user group by sex; //两条语句执行 先求平均age(年龄),在把sex(男女)进行分组
```
# 分组查询条件查询
## 语法:
```
select 要分组的字段 from user group by 要分组的字段 having 条件 ;
```
## 代码案例:
```
select avg(age), sex from user group by sex having count(age)>2; //两条语句执行 先求平均age(年龄),在把sex(男女) 并且年龄总行数大于2的
```
# 连表查询
```
2个表或者多个表查询
内连接查询 inner join(显示和隐式)
```
笛卡尔积
## 连表查询隐式方法:
##
语法:
```
select*from 表名,另一个表名称 where 条件
select 表名.字段名 from 表名,另一个表名称 where 条件 //这里的点语法与JS一样
(点语法这里也可也用别名法)
```
## 连表查询内连接(显示方法)
```
select*from 表名inner join 另一个表名称 on 条件 //显示方法(条件也是用点语法)
```
代码案例:
~~~
select*from guo_article inner join guo_cat on guo_article.cat_id=guo_cat.id;
~~~
![](https://img.kancloud.cn/a1/41/a1410c20670d87b7f213d5e26aa5751a_1318x81.png)
```
select*from student,mark where mark.stu_id=student.id; //这个意思就是student与mark表一起查 条件里的stu_id是mark的 ,id是student的 这里用的是点语法,与JS的点语法一样,就是包含的意思(父包含子,父里的什么什么子)
select*from student,mark where mark.stu_id=student.id and student.id=1; //student与
mark表一起查出,并且查出student.id=1的数据
```
代码案例
:
```
select s.name,s.mobile, m.mark,s. id from student as s left join mark as m on m.stu_id=s.id;
```
## 连表查询左连接
```
两个表以左边数据数量为主,右边不够给自动补偿
select*from 表名 left join 另一个表名称 on 条件
代码案例:
select*from student left join mark on student.id=mark.stu_id;
```
## 连表查询右连接
```
两个表以右边数据数量为主,左边多出去的不展示
select*from 表名 right join 另一个表名称 on 条件
代码案例:
select*from student right join mark on student.id=mark.stu_id;
```
## 连表查询内连接
```
只要有数据的时候就显示出来,没有的不显示(比较智能,用的多,推荐用)
select*from 表名inner join 另一个表名称 on 条件
注意:inner left right 不能用where条件否则报错。
```
# 子查询
select*from 表名 where 字段名 in(外面查询语句的一个条件 )
## 代码案例:
```
select*from student where id in(select id from student where id>1); //括号里其实是一个条件语句,也就是子查询。
```
# 联合查询
select 字段名 from 表名 union select 字段名 from 第二个表名
## 代码案例:
```
select id,neme from php union select id,neme from java;
select 字段名 from 表名 union all select 字段名 from 第二个表名
select id,neme from php union all select id,neme from java;
```
## union与union all 的区别
```
当用union 两个表的字段值位置内容如果相同(比如id1都是同一个值),就会去掉一个,
用union all的时候两个表的字段值位置内容如果相同(比如id1都是同一个值),会保留这个2个值,一起展示出出来。
注意:字段必须相等 也就是查询的时候必须是同样个数的字段,共同查1个或者2个。不能表1查一个字段,表2查二个字段。
```
# union 与join区别
## union只是将两条select语句的查询结果组合在一起,而join是将两个表建立起关联后再查询。
- 变量删除查找与static静态变量
- 赋值原理
- global涵数引入全局变量使用
- 数据类型
- 数据类型判断is_
- PHP输出
- PHP指针(取址运算)
- PHP运算符
- 常量
- 字符串
- 字符串添加反斜杠函数addslashes($变量)
- htmlspecialchars()转字符实体
- int strcmp()判断2个字符串大小
- strstr() 查找字符串
- 字符串常用系统内置函数
- 控制流之if
- switch判断方法
- while循环
- for循环
- 跳出循环
- PHP文件引文入( include与require)
- PHP文件引入include_once与require_once
- 函数(函数各种应用以及约束方法)
- global 引入函数外的变量
- 函数的递归
- 数组(遍历方法)与( foreach()遍历方法)
- 数组函数
- PHP时间操作
- 常用数学内置函数
- 正则表达式
- PHP 九大超全局变量(内置的)
- 超全局变量$_SERVER的详细介绍
- PHP类
- 类的$this
- 类的构造方法__construct()
- 类的修饰符 public private protected
- 类的继承
- 类的多态(instanceof)方法
- 类的静态方法与常用关键字(final static self parent clone )
- 类的__set() __get() 方法
- 类的重载
- 类的__call()与__callstatic()方法
- 类的抽象类与方法
- 抽象类接口interface (实现子类继承多个抽象类)
- 类的trait (解决单继承的限制)
- 命名空间
- 类的魔术常量以及系统函数
- mysql数据库
- 数据库的概念
- SQL语句规范
- 数据库字段类型
- 字段是属性(创建数据库字段用)
- 数据库操作(增删改)
- 数据表与字段(DDL)(增删改)
- 数据的操作(DML)(增删改)
- 数据的查询数据(最重要最核心经常看)
- 数据库 字符集 引擎 校对等
- cookie创建使用与删除
- session创建使用与删除
- 在cookie禁止的情况下session的使用方法
- session的配置以及session与cookie的区别
- session实战登录
- PHP文件处理函数
- PHP打开读取写入文件
- file_get_contents GET请求接收
- PHP文件上传以及过大报错解决方案
- 验证并控制上传格式与大小
- 判断是否有目录(如果没有就创建目录)
- 上传文件到目录move_uploaded_file()
- 图片上传用class写法
- PDO链接数据库与exec()使用(只能用于增,删,改)
- PDO-推荐方法prepare() 增删改查
- 关于PDO类种事务使用
- 类的单例模式写法
- 自动加载autoload()
- composer安装与使用
- PHP操作XML
- PHP操作JSON
- curl GET与POST请求接收
- 自己封装的一些实用函数
- 微信公众号开发
- 常见问题以及解决
- PHP反序列化HTML
- try catch尝试执行与异常
- json 对象转字符串数组的方法可以在用json_e转数组