1. 程式人生 > >SQL學習筆記3_函式,事件與navicat for mysql 插入系統時間操作

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