整理SQL語法及命令

語法

整理部分容易忘記,且比較經常使用的語法mysql

一、關於NULL,這裏之因此先說NULL,由於在開發中遇到很多坑。下面羅列幾個須要注意的點,若是還有其餘坑,後面遇到會繼續補齊
(1)=!=不能用於NULL的篩選。舉個例子,假若有一個sql查詢根據A列進行條件查詢,A列含有NULL值,那麼使用=!=這兩種邏輯判斷不能篩選出A字段爲NULL的行。
如圖:圖片描述
上圖中,第4行記錄的user_sex字段爲NULL,假設使用查詢語句
select user_id from user_info where user_sex != -1;,是不會篩選出第4行記錄,使用=同理。結果如圖:
圖片描述
(2)使用NULLNOT NULL的篩選,使用isweb

二、left join on 左鏈接
(1)LEFT JOIN 關鍵字會從左表 (table_name1) 那裏返回全部的行。在右表 (table_name2) 中沒有匹配的行,則右表的全部字段顯示爲NULL。
(2)left join on where:在左鏈接的基礎上,進行where條件篩選,若是篩選條件的字段的值含有NULL,將不會被篩選出來。若是想所有篩選出來,可使用增長條件or A is null,注意,這裏使用or進行條件的鏈接。
(3)right join on同理,所以不作累述sql

三、inner join on 內鏈接、等值鏈接
(1)只返回兩個表中聯結字段相等的行。也就是說,好比兩張表中都有知足鏈接條件的值,纔可以被篩選出來,若是其中某一行在另一張表找不到不匹配的行,那麼這一行就不會顯示出來。數據庫

四、on duplicate key update:
(1)解釋:session

查看 UNIQUE索引或PRIMARY KEY 對應的行是否存在,存在則更新(執行on duplicate key update後面的語句),不存在則插入新行。.net

(2)實例:code

INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=c+1;
// 這裏a是主鍵,查看a=1的行是否存在,存在則更新,不然插入對象

五、desc倒序、asc正序(默認)blog

六、limit m,n
(1)解釋:從m+1開始,取n條記錄索引

(2)使用場景:分頁

七、where、group by、having執行次序:
(1)where是對FROM指定的數據對象(基本表或者視圖)進行過濾,選擇知足條件的元組。若是後面接着group,則對where篩選出來的數據進行分組,having則是對分組之後的分組進行過濾。

八、存儲過程:
(1)聲明變量、循環:

DELIMITER ;;
CREATE PROCEDURE `students_count3`()
BEGIN

    declare num int;
    set num = 1;
    
    while num <= 1000000 do
    
    select count(1) from user_info;
    
    SET num = num + 1;
    end while;
    
END;;
DELIMITER ;

call students_count3();

九、查看運行時間:
(1)select @@profiling; :查看是否開啓
(2)set profiling=1; : 開啓
(3)show profiles; : 查看以前sql語句運行的時間

十、索引:
(1)添加普通索引: alter table table_name add index index_name(column)
(2)添加惟一索引:alter table table_name add unique index_name(column)

十一、增長字段:
alter table table_name add field_name field_type;

十二、刪除字段:
alter table table_name drop column field_name;

1三、更改值:
update user_info set user_sex = '-1' where user_id = 1;

1四、修改PG字段類型:

`ALTER TABLE device_data alter column wechat_register_status type varchar(4);`

1五、修改字段名稱
ALTER TABLE distributors RENAME COLUMN address TO city;

1六、修改默認值
https://blog.csdn.net/dynadot...

參考:https://www.jianshu.com/p/4af...

命令

一、鏈接遠程mysql

mysql -h 127.0.0.1 -P 3306 -u root -p school

-p後面是數據庫名字

二、查看當前會話隔離級別

select @@tx_isolation;

三、查看系統當前隔離級別

select @@global.tx_isolation;

四、設置當前會話隔離級別

set session transaction isolatin level repeatable read;

五、設置系統當前隔離級別
set global transaction isolation level repeatable read;

相關文章
相關標籤/搜索