MySQL不常用 易忽略的小知識

2022-05-23 00:57:15 字數 1818 閱讀 5159

筆者從事開發也有一段時間了,關於資料庫方面的一些小知識在這裡總結一下

1、count(*),count(1)與count(column)區別

count(*)對行的數目進行計算,包含null

count(1)對行的數目進行計算,包含null

count(column)對特定的列的值具有的行數進行計算,不包含null值。

所以count(1)這個用法和count(*)的結果是一樣的。

注意:如果表沒有主鍵,那麼count(1)比count(*)快。

如果有主鍵,那麼count(主鍵,聯合主鍵)比count(*)快。

如果表只有乙個字段,count(*)最快。

count(1)跟count(主鍵)一樣,只掃瞄主鍵。count(*)跟count(非主鍵)一樣,掃瞄整個表。明顯前者更快一些。

2、mysql日期加減

獲取當前日期時間函式 now() 和 sysdate():

select now(), sleep(3), now();
結果是

mysql>

select sysdate(), sleep(3), sysdate();

結果是

可以看到,雖然中途 sleep 3 秒,但 now() 函式兩次的時間值是相同的; sysdate() 函式兩次得到的時間值相差 3 秒。

sysdate() 日期時間函式跟 now() 類似,不同之處在於:now() 在執行開始時值就得到了, sysdate() 在函式執行時動態得到值。

mysql>

select

curdate(); #獲得當前日期(date)函式:curdate()

mysql

>

select curtime(); #獲得當前時間(time)函式:curtime()

為日期增加乙個時間間隔:date_add()

mysql>

select date_add('

2017-12-25 17:43:44

', interval 1

day);

結果為:2017-12-26 17:43:44

類似的還有:

set

@dt=

now();

select date_add(@dt, interval 1

day); --

add 1 day

select date_add(@dt, interval 1 hour); --

add 1 hour

select date_add(@dt, interval 1 minute); --

...select date_add(@dt, interval 1

second);

select date_add(@dt, interval 1

microsecond);

select date_add(@dt, interval 1

week);

select date_add(@dt, interval 1

month

);select date_add(@dt, interval 1

quarter);

select date_add(@dt, interval 1

year

);select date_add(@dt, interval -

1day); --

sub 1 day

SQL 不常用的知識點(mysql)

1.sql default 約束 default 約束用於向列中插入預設值。如果沒有規定其他的值,那麼會將預設值新增到所有的新記錄。建立表時 create table persons id p int not null,lastname varchar 255 not null,firstname ...

MySQL 函式,不常用的

select abs 9 返回絕對值 select ceiling 2.2 向上取整 select floor 2.2 向上取整 select rand 返回0 1隨機數 select sign x 返回乙個數的正負,正返回1,負返回 1 select char length 反恐精英之生死決奪 返...

mysql命令不常用的引數

mysql e 這個引數是告訴mysql 我只要執行 e 後面的某個命令,而不是要通過mysql連線到mysql server上面,此引數在寫一些基本的mysql檢查和監控的指令碼中非常有用 mysql h,htlm 這個引數 select出來的結果都會按照html格式輸出,在某些場後下,比如希望用...