SQL學習筆記3_函式,事件與navicat for mysql 插入系統時間操作
1函式
1.1。建立函式
1.2。呼叫函式
mysql> select f2(666,777);
+-------------+
| f2(666,777) |
+-------------+
| 0 |
+-------------+
1 row in set
1.3.執行結果
2.事件
2.1建立事件
2.2開啟事件
檢視事件是否開啟
mysql> show variables like 'event_scheduler'; +-----------------+-------+ | Variable_name | Value | +-----------------+-------+ | event_scheduler | OFF | +-----------------+-------+ 1 row in set
未開啟則開啟事件
mysql> set global event_scheduler = on;
Query OK, 0 rows affected
查驗事件是否開啟
mysql> show variables like 'event_scheduler';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| event_scheduler | ON |
+-----------------+-------+
1 row in set
OK
2.3檢視結果
重新整理表格,檢視結果
3.時間設定
3.1引數型別介紹
開啟設計表格
datetime
1.佔用8個位元組
2.允許為空值,可以自定義值,系統不會自動修改其值。
3.實際格式儲存(只儲存您儲存的內容並檢索您儲存的內容。)
4.與時區無關(沒有什麼可以處理TIMEZONE和轉換。)
5.可以在指定datetime欄位的值的時候使用now()變數來自動插入系統的當前時間。
6. datetime是可以設定預設值的,DEFAULT CURRENT_TIMESTAMP在mysql5.7中親測可用
結論:datetime型別適合用來記錄資料的原始的建立時間,因為無論你怎麼更改記錄中其他欄位的值,datetime欄位的值都不會改變,除非你手動更改它。
timestamp
1. 佔用4個位元組
2. 允許為空值,但是不可以自定義值,所以為空值時沒有任何意義。
3. TIMESTAMP值不能早於1970或晚於2037。這說明一個日期,例如'1968-01-01',雖然對於DATETIME或DATE值是有效的,但對於TIMESTAMP值卻無效,如果分配給這樣一個物件將被轉換為0。
4.值以UTC格式儲存( it stores the number of milliseconds)
5.時區轉化 ,儲存時對當前的時區進行轉換,檢索時再轉換回當前的時區。
6. 預設值為CURRENT_TIMESTAMP(),其實也就是當前的系統時間。
7. 資料庫會自動修改其值,所以在插入記錄時不需要指定timestamp欄位的名稱和timestamp欄位的值,你只需要在設計表的時候新增一個timestamp欄位即可,插入後該欄位的值會自動變為當前系統時間。
8. 預設情況下以後任何時間修改表中的記錄時,對應記錄的timestamp值會自動被更新為當前的系統時間。
9. 如果需要可以設定timestamp不自動更新。通過設定DEFAULT CURRENT_TIMESTAMP 可以實現。
修改自動更新:
`field_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE
修改不自動更新
`field_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
結論:時間戳型別適合用來記錄資料的最後修改時間,因為只要你更改了記錄中其他欄位的值,時間戳欄位的值都會被自動更新(如果需要可以設定時間戳不自動更新)
3.2自動填入時間
3.3手動填入時間
mysql> UPDATE test SET d=NOW() WHERE d is NULL;
Query OK, 8 rows affected
Rows matched: 8 Changed: 8 Warnings: 8