MySQL_知识点
1、執行順序
語句模板:
(8)SELECT (9)DISTINCT (11)<Top Num> <select list>
(1)FROM [left_table]
(3)<join_type> JOIN <right_table>
(2)ON <join_condition>
(4)WHERE <where_condition>
(5)GROUP BY <group_by_list>
(6)WITH <CUBE | RollUP>
(7)HAVING <having_condition>
(10)ORDER BY <order_by_list>
執行順序:
1.FROM:對FROM子句中的前兩個表執行笛卡爾積(Cartesian product)(交叉聯接),生成虛擬表VT1
2.ON:對VT1應用ON篩選器。只有那些使<join_condition>為真的行才被插入VT2。
3.OUTER(JOIN):如 果指定了OUTER JOIN(相對于CROSS JOIN 或(INNER JOIN),保留表(preserved table:左外部聯接把左表標記為保留表,右外部聯接把右表標記為保留表,完全外部聯接把兩個表都標記為保留表)中未找到匹配的行將作為外部行添加到VT2,生成VT3.如果FROM子句包含兩個以上的表,則對上一個聯接生成的結果表和下一個表重復執行步驟1到步驟3,直到處理完所有的表為止。
4.WHERE:對VT3應用WHERE篩選器。只有使<where_condition>為true的行才被插入VT4.
5.GROUP BY:按GROUP BY子句中的列列表對VT4中的行分組,生成VT5.
6.CUBE|ROLLUP:把超組(Suppergroups)插入VT5,生成VT6.
7.HAVING:對VT6應用HAVING篩選器。只有使<having_condition>為true的組才會被插入VT7.
8.SELECT:處理SELECT列表,產生VT8.
9.DISTINCT:將重復的行從VT8中移除,產生VT9.
10.ORDER BY:將VT9中的行按ORDER BY 子句中的列列表排序,生成游標(VC10).
11.TOP:從VC10的開始處選擇指定數量或比例的行,生成表VT11,并返回調用者。
?
2、mysql中int類型日期與datetime類型互相轉化
在mysql中存儲時間,我們可以用datetime格式,timestamp格式,也可以用int格式。
DATETIME默認格式是"YYYY-MM-DD HH:MM:SS",它表示的從1000-01-01 00:00:00-9999-12-31 23:59:59 。
TIMESTAMP的格式也是'YYYY-MM-DD HH:MM:SS',與DATETIME不同的地方是,它的年份取值范圍是1970-2037。
INT就是整數的形式,它可以控制位數,一般我們設置成10位就可以了。
那么什么時候使用DATETIME呢,當要顯示的格式比較固定,就是顯示年月日,時分秒這樣的格式的時候,就采用這個方式,timestamp雖然較datetime的范圍小,但是一般我們認為他的范圍也是足夠大的了,此外它還可以設置為更新的時候,自動修改值,也就是說當我們修改數據庫,比如插入或者更新的時候,這個字段當我們設置成CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,時,它就會自動填入當前的時間。
那么何時使用int呢,本來int不應該是時間格式,但是我們經過大量的編程實踐發現,我們平時在php編程中,經常需要格式化顯示時間,比如只顯示年月日,如果數據庫中存入的是int類型的時間,那么我們可以直接使用php的內置函數date()來轉換了,非常的方便,而且對于時間的比較也更加的容易,因為是int類型,可以直接比較大小就可以比較時間了。
?
轉載于:https://www.cnblogs.com/xiancheng/p/6396972.html
總結
- 上一篇: VS2012 打包部署程序
- 下一篇: 这样才能使本地Mysql服务允许被外部主