sql語句的一些基本語法使用

2021-10-08 19:10:16 字數 2963 閱讀 1134

一、 模糊查詢(like)

select * from table where a like "%s%"

select * from table where a like concat("%","s","%")   --concat:連線函式,連線括號中的字串

含義:查詢table 表中a欄位中包含s字元的字段值(

%號不要用在左邊開頭,會影響效能

二、 修改(update)

update table set a = 1 ,b = 2 where ga_data_code=1

含義:將table表中符合ga_data_code=1的列中的資料a屬性的值設為1,b的值設為2

三、 新增(insert)

insert into table(欄位1,欄位2...) values(值1,值2...)

含義:將字段1=值1 ,欄位2=值2的資料插入到表table中

目的:忽略掉可能會出現的插入錯誤(主鍵衝突),無則新增,有則忽略

用法:insert ignore into table(.....)values(.....)

說明:insert ignore 與insert into的區別就是insert ignore會忽略資料庫中已經存在的資料,如果資料庫沒有資料,就插入新的資料,如果有資料的話就跳過這條資料。這樣就可以保留資料庫中已經存在資料,達到在間隙中插入資料的目的。(如果表中有主鍵,那麼主鍵衝突也將會被忽略插入)

把a表的資料批量insert到b表中,使用了insert ignore。也就是說出現錯誤就忽略,比如b表有乙個unique約束(當前遇到的問題是這個),當insert時數的據違反約束,忽略不插入,繼續下一資料的操作

目的:解決mysql插入可能出現的堵塞問題,使用者讀取資料時也可以讀延遲佇列中的資料(如果系統不出意外,基本沒啥影響)

用法:insert delayed into table(.....) values (.....)

說明:由於對mysql的併發插入資料能力沒有乙個很好的評估,因此在些多程序併發程式時,忽略了mysql的堵塞問題

以至程式時不時因為mysql的堵塞,導致子程序一直在等待mysql釋放堵塞,完成insert  指令。

insert delayed into,是客戶端提交資料給mysql,mysql返回ok狀態給客戶端。而這是並不是已經將資料插入表,而是儲存在記憶體裡面等待排隊。當mysql有空餘時,再插入。

這樣的好處是,提高插入的速度,客戶端不需要等待太長時間

壞處是,不能返回自動遞增的id,以及系統崩潰時,mysql還沒有來得及插入資料的話,這些資料將會丟失

。如果讀取者從該資料

表中讀取資料,佇列中的資料就會被保持著,直到沒有讀取者為止。接著伺服器

開始插入延遲資料行(

delayed-row

)佇列中的資料行。在插入操作的同時,伺服器

還要檢查是否有新的讀取請求到達和等待。如果有,延遲資料行佇列就被掛起,允許讀取者繼續操作。當沒有讀取者的時候,伺服器再次開始插入延遲的資料行。這個過程一直進行,直到佇列空了為止。

目的:在新增時操作,關注非主鍵列,注意與

ignore的區別。有則更新指定列,無則新增。

用法:insert into table (.....) values (.....) on duplicate key update update ....   == 

update table set c=c+1 where a=1;(如果主鍵存在則相當於後面那句)

說明:

如果行作為新記錄被插入,則受影響行的值為

1 ;如果原有的記錄被更新,則受影響行的值為

2 。

您可以在

update

子句中使用

values(col_name)

函式從insert...update

語句的insert

部分引用列值。換句話說,如果沒有發生重複關鍵字衝突,則

update

子句中的

values(

col_name

)可以引用被插入的

col_name

的值。本函式特別適用於多行插入。

values()

函式只在

insert...update

語句中有意義,其它時候會返回

null。

當您使用

on duplicate key update

時,delayed

選項被忽略

四、替換(replace)

目的:

如果 primarykey 或者 uniquekey 已存在便更新,否則新增。

用法:與insert into類似 

replace

into

table

(field...)

values

(value...)

五、刪除(delete)

目的:刪除表中存在的資料

用法:delete from table ; delete from table where id = ''

目的:用於清空表中的資料,truncate只清空表中資料保留表結構,drop直接刪除表結構跟資料

用法:truncate table ; drop table

區別:delete(dml) : 一次刪除一行資料,並且會把刪除當做事務記錄到事務中,可以通過回滾恢復;索引不重置;

truncate(dll):一次性清空表資料,並且不會記錄事務,不會刪除表結構,並且不會觸發觸發器,所以速度快;索引重置;有外來鍵不能用

drop(dll):

將表所占用的空間全釋放掉。

一些sql語句

一。在oracle中建表,怎麼實現id自動編號 1 建表 create table code test id int,name varchar2 20 2.建立序列 create sequence s country id increment by 1 start with 1 maxvalue 9...

一些Sql語句

case when xx then yy else zz 例 case when count is null then 0 else count 當count為空的時候賦值0,不為空則取原值 isnull express1,express2 例 isnull count,0 當count為空的時候則...

一些SQL語句

在工作中收集了一些有用的語句 加密 解密 declare clearpwd varchar 255 declare encryptedpwd varbinary 255 select clearpwd test select encryptedpwd convert varbinary 255 pw...