筆者從事開發也有一段時間了,關於資料庫方面的一些小知識在這裡總結一下
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>為日期增加乙個時間間隔:date_add()select
curdate(); #獲得當前日期(date)函式:curdate()
mysql
>
select curtime(); #獲得當前時間(time)函式:curtime()
mysql>結果為:2017-12-26 17:43:44select date_add('
2017-12-25 17:43:44
', interval 1
day);
類似的還有:
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格式輸出,在某些場後下,比如希望用...