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()
- 正則內容
- 定義字符集
- 特別字符集
- 組合字符集
- 限制字符
- 模式修正符
- 進行全局匹配