# 查詢數據
```
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;
~~~

```
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轉數組