一、 模糊查詢(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...