mysql特殊處理

2021-09-08 15:00:35 字數 2331 閱讀 8823

mysql> create table ef (bc time);

query ok, 0 rows affected (0.03 sec)

mysql> insert into ef values (current_timestamp);

query ok, 1 row affected (0.00 sec)

mysql> select * from ef;

+----------+

| bc       |

+----------+

| 11:33:26 |

| 11:33:35 |

| 11:33:39 |

+----------+

3 rows in set (0.00 sec)

mysql> create table ii(qq datetime);

由於mysql目前欄位的預設值不支援函式,所以以create_time datetime default now() 的形式設定預設值是不可能的。代替的方案是使用timestamp型別代替datetime型別。

create table test (   

uname varchar(50) not null,   

updatetime timestamp null default current_timestamp on update current_timestamp   

) engine=innodb default charset=utf8;   

mysql中,預設值無法使用函式也就是你無法設定某一列,預設值是 now () 這樣的處理

假如需要某列的預設值為當前資料庫時間,那麼可以使用 timestamp 資料型別。插入的時候,填寫 null 即可。

mysql> create table testa ( dt timestamp );

query ok, 0 rows affected (0.09 sec)

mysql> insert into testa values( null );

query ok, 1 row affected (0.01 sec)

mysql> insert into testa values( null );

query ok, 1 row affected (0.08 sec)

mysql> select * from testa;

+---------------------+

| dt                  |

+---------------------+

| 2011-10-15 20:30:35 |

| 2011-10-15 20:30:36 |

+---------------------+

2 rows in set (0.00 sec)

select * from table1 where 1=1與select * from table1完全沒有區別,甚至還有其他許多寫法,1<>2,'a'='a','a'<>'b',其目的就只有乙個,where 的條件為永真,得到的結果就是未加約束條件的。

如果不寫1=1呢,那麼在每乙個不為空的查詢條件面前,都必須判斷有沒有where字句,否則要在第乙個出現的地方加where

where 1=1的寫法是為了檢化程式中對條件的檢測

打個比方有三個引數a, b, c

@sql=select * from tb'

這三個引數都可能為空

這時你要構造語句的話,乙個個檢測再寫語句就麻煩

select * from account where username like "%leo.lee%";

update account set state = 1 where state != 1

select count(*) from account where state != 1;

federated是其中乙個專門針對遠端資料庫的實現。一般情況下在本地資料庫中建表會在資料庫目錄中生成相應的表定義檔案,並同時生成相應的資料檔案。

但通過federated引擎建立的表只是在本地有表定義檔案,資料檔案則存在於遠端資料庫中(這一點很重要)。

使用federated建表語句如下:

create table (......) engine =federated connection='mysql://[name]:[pass]@[location]:[port]/[db-name]/[table-name]'

建立成功後就可直接在本地查詢相應的遠端表了。

需要注意的幾點:

1.本地的表結構必須與遠端的完全一樣。

2.遠端資料庫目前僅限mysql

3.不支援事務

4.不支援表結構修改

mysql處理特殊字元

修改表 alter table user convert to charset utf8mb4,character set utf8mb4 修改列alter table user default character set utf8mb4,modify realname varchar 100 ch...

mysql處理特殊字元

修改表 alter table user convert to charset utf8mb4,character set utf8mb4 修改列alter table user default character set utf8mb4,modify realname varchar 100 ch...

mysql處理特殊字元

修改表 alter table user convert to charset utf8mb4,character set utf8mb4 修改列alter table user default character set utf8mb4,modify realname varchar 100 ch...