日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

mysql datatable_MySQL-数据表操作

發(fā)布時(shí)間:2025/4/5 数据库 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql datatable_MySQL-数据表操作 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.打開(kāi)數(shù)據(jù)庫(kù)

語(yǔ)法:USE 數(shù)據(jù)庫(kù)名稱;

SELECT DATABASE();---查詢當(dāng)前使用的數(shù)據(jù)庫(kù)

2.創(chuàng)建數(shù)據(jù)表

語(yǔ)法:CREATE TABLE [IF NOT EXITS] table_name(

column_name data_type,

...

)

3.查看數(shù)據(jù)表

語(yǔ)法:SHOW TABLES;

4.查看數(shù)據(jù)表結(jié)構(gòu)

語(yǔ)法:SHOW COLUMNS FROM tbl_name;---查詢表的列結(jié)構(gòu)

4.數(shù)據(jù)表插入記錄

語(yǔ)法:

INSERT [INTO] tbl_name [(col_name,...)] VALUES (VAL,...)

說(shuō)明:.如果省略列名,則需要給每列都要賦值!

.可以只給部分字段插入值,通過(guò)指定要插入的字段即可。

.對(duì)float型,如果插入值的小數(shù)點(diǎn)位數(shù)大于實(shí)際定義位數(shù),可以插入成功,只是截取定義的位數(shù)。

查看數(shù)據(jù)表內(nèi)容:

SELECT expr FROM tbl_name;

注意:常用的SELECT * FROM tbl_name,不是查詢所有記錄,而是指查詢所有字段。

5.數(shù)據(jù)表數(shù)據(jù)的更新

UPDATE TABLE tableName SET field1=newValue1,field2=newValue2,...

[WHERE clause]

6.數(shù)據(jù)表數(shù)據(jù)的刪除

DELETE FROM TABLE tableName [WHERE Clause]

說(shuō)明:DML語(yǔ)句即是對(duì)數(shù)據(jù)表中數(shù)據(jù)的操作語(yǔ)句,是指INSERT,UPDATE,DELETE

7.SELECT *與SELECT 所有字段差異

.特別注意:兩者的查詢效率是一樣的;

.建議使用后者,主要是考慮到數(shù)據(jù)庫(kù)代碼的可閱讀性,特別是其他人來(lái)維護(hù)代碼時(shí),后者更容易讓其他人了解數(shù)據(jù)表的字段!

8.冪等性

8.1概念

一個(gè)冪等操作的特點(diǎn)是其任意多次執(zhí)行所產(chǎn)生的影響均與一次執(zhí)行的影響相同。

冪等函數(shù),或冪等方法,是指可以使用相同參數(shù)重復(fù)執(zhí)行,并能獲得相同結(jié)果的函數(shù)。

8.2實(shí)際的冪等技術(shù)方法

1.查詢操作 查詢一次和查詢多次,在數(shù)據(jù)不變的情況下,查詢結(jié)果是一樣的。select是天然的冪等操作。

刪除操作 刪除操作也是冪等的,刪除一次和多次刪除都是把數(shù)據(jù)刪除。(注意可能返回結(jié)果不一樣,刪除的數(shù)據(jù)不存在,返回0,刪除的數(shù)據(jù)多條,返回結(jié)果多個(gè))

3.唯一索引,防止新增臟數(shù)據(jù) 比如:支付寶的資金賬戶,支付寶也有用戶賬戶,每個(gè)用戶只能有一個(gè)資金賬戶,怎么防止給用戶創(chuàng)建資金賬戶多個(gè),那么給資金賬戶表中的用戶ID加唯一索引,所以一個(gè)用戶新增成功一個(gè)資金賬戶記錄

要點(diǎn): 唯一索引或唯一組合索引來(lái)防止新增數(shù)據(jù)存在臟數(shù)據(jù) (當(dāng)表存在唯一索引,并發(fā)時(shí)新增報(bào)錯(cuò)時(shí),再查詢一次就可以了,數(shù)據(jù)應(yīng)該已經(jīng)存在了,返回結(jié)果即可)

token機(jī)制,防止頁(yè)面重復(fù)提交

業(yè)務(wù)要求:頁(yè)面的數(shù)據(jù)只能被點(diǎn)擊提交一次

發(fā)生原因:由于重復(fù)點(diǎn)擊或者網(wǎng)絡(luò)重發(fā),或者nginx重發(fā)等情況會(huì)導(dǎo)致數(shù)據(jù)被重復(fù)提交

解決辦法:集群環(huán)境:采用token加redis(redis單線程的,處理需要排隊(duì)) 單JVM環(huán)境:采用token加redis或token加jvm內(nèi)存。

處理流程:

數(shù)據(jù)提交前要向服務(wù)的申請(qǐng)token,token放到redis或jvm內(nèi)存,token有效時(shí)間

提交后后臺(tái)校驗(yàn)token,同時(shí)刪除token,生成新的token返回

token特點(diǎn):要申請(qǐng),一次有效性,可以限流

注意:redis要用刪除操作來(lái)判斷token,刪除成功代表token校驗(yàn)通過(guò),如果用select+delete來(lái)校驗(yàn)token,存在并發(fā)問(wèn)題,不建議使用。

5. 悲觀鎖 獲取數(shù)據(jù)的時(shí)候加鎖獲取

select * from table_xxx where id='xxx' for update;

注意:id字段一定是主鍵或者唯一索引,不然是鎖表,會(huì)死人的

悲觀鎖使用時(shí)一般伴隨事務(wù)一起使用,數(shù)據(jù)鎖定時(shí)間可能會(huì)很長(zhǎng),根據(jù)實(shí)際情況選用

樂(lè)觀鎖 樂(lè)觀鎖只是在更新數(shù)據(jù)那一刻鎖表,其他時(shí)間不鎖表,所以相對(duì)于悲觀鎖,效率更高。

樂(lè)觀鎖的實(shí)現(xiàn)方式多種多樣可以通過(guò)version或者其他狀態(tài)條件:

1、通過(guò)版本號(hào)實(shí)現(xiàn)

update table_xxx set name=#name#,version=version+1 where version=#version#

2、通過(guò)條件限制

update tablexxx set name=#name#,version=version+1 where id=#id# and version=#version#

update tablexxx set avaiamount=avaiamount-#subAmount# where id=#id# and avai_amount-#subAmount# >= 0

注意:樂(lè)觀鎖的更新操作,最好用主鍵或者唯一索引來(lái)更新,這樣是行鎖,否則更新時(shí)會(huì)鎖表

總結(jié)

以上是生活随笔為你收集整理的mysql datatable_MySQL-数据表操作的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。