本文目錄一覽:
- 1、如何更改mysql數據庫的字符集
- 2、如何修改mysql數據庫中,某表某一列的前50條數據的值,(已知修改後的值)
- 3、關於數據庫存儲鍵值對的問題?
- 4、使用set character_set_client=gbk;修改MySql數據庫顯示修改成功,重新進入後又恢復成原來未修改的時候
- 5、mysql 選擇一條記錄修改後插入原表
- 6、如何修改MySQL字符集
如何更改mysql數據庫的字符集
(1) 最簡單的修改方法,就是修改mysql的my.ini文件中的字符集鍵值,
如 default-character-set = utf8
character_set_server = utf8
修改完後,重啟mysql的服務,service mysql restart
使用 mysql SHOW VARIABLES LIKE ‘character%’;查看,發現數據庫編碼均已改成utf8
+————————–+———————————+ | Variable_name | Value | +————————–+———————————+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | D:”mysql-5.0.37″share”charsets” | +————————–+———————————+
(2) 還有一種修改mysql默認字符集的方法,就是使用mysql的命令
mysql SET character_set_client = utf8 ; mysql SET character_set_connection = utf8 ; mysql SET character_set_database = utf8 ; mysql SET character_set_results = utf8 ; mysql SET character_set_server = utf8 ; mysql SET collation_connection = utf8 ; mysql SET collation_database = utf8 ; mysql SET collation_server = utf8 ;
一般就算設置了表的mysql默認字符集為utf8並且通過UTF-8編碼發送查詢,你會發現存入數據庫的仍然是亂碼。問題就出在這個connection連接層上。解決方法是在發送查詢前執行一下下面這句:
SET NAMES ‘utf8’;
它相當於下面的三句指令:
SET character_set_client = utf8; SET character_set_results = utf8; SET character_set_connection = utf8;
如何修改mysql數據庫中,某表某一列的前50條數據的值,(已知修改後的值)
update 表名 set 列名=修改後的值 ORDER BY id limit 50;
這裡的order by 沒指明就是默認升序,
如是order by 列名 desc即為降序排列,
使用時需清楚你要修改哪一部分
關於數據庫存儲鍵值對的問題?
這是前端(應用端)和後端(服務端)的問題,這個應該是每個用戶的單獨配置,那麼應該放在前端而是不是放在後端,如果放在後端,那麼每個用戶都要讀取,那麼體驗一定不好。
對於前端來說,只要加一個“配置文件”(其實就是一段代碼)就可以,然後通過服務端的程序讀取這個“配置文件”,就知道相應的順序了,這樣總比,連通服務器讀取相應的表,來的要快。
如果非要用數據庫解決,那我們做一個假設,有100項,某人將所有的項目變成了從後往前倒着寫的,也就是第100項與第1項位置互換,第99項與第2項位置互換,這樣,那麼最後是第50項與第51項調換,也就是100項完全變換了位置,那麼不管你怎麼存儲,怎麼讀取,這些項都必須全部保存起來,因為每一項的順序都變了,所以這個方案並不是十分好。
當然,如果非要這麼做的話,那麼有一個稍微簡單一點的辦法,不過也需要前端的配合而且,很可能出現徵用的情況,使用效果也不一定能太好。
我的辦法是建立userid 10001 10002 10003 這樣一張表,說白了就是一張以默認順序ModuleID(個人覺得這個可能是你的表頭代碼,如果不是不要介意)為字段名的表,然後每條用戶id,對應一組編號比如(默認編號為1,2,3,4):
userid 10001 10002 10003 10004
1 4 3 1 2
2 2 1 4 3
3 1 2 3 4
類似於這樣就能直接得到用戶的編號順序了,不過這種還是不如在前端一個配置文件來的舒服(用戶修改配置文件後,服務端也會備份(類似於上表這種也可以作為一個客戶端配置的備份),但是這種備份比直接修改數據庫要要省事不少,至少節省了數據庫的資源),而且可能出現徵用的問題,比如兩個人或更多的人同時修改代碼,那麼一張表不可能讓這麼多人同時update,肯定要出現徵用,那麼服務體驗就不會太好(備份的話,不用那麼及時,所以徵用的可能性不大,即使出現也是發生在後端,用戶的體驗並沒有什麼影響)。
以上均為個人理解,共同探討。
使用set character_set_client=gbk;修改MySql數據庫顯示修改成功,重新進入後又恢復成原來未修改的時候
1、set xxx 是修改當前你session的設置,是臨時性的,也就是說在你exit退出當前mysql連接後就失效的。
2、如果你想永久保存,需要修改mysql的配置文件,默認的地方是/etc/my.cnf中,在[client]的這塊的隨便一行,加入default-character-set=gbk,之後重啟mysql即可。連接mysql後,輸入\s,可以看到client端已經變為你想要的字符集了。
# mysql -uroot -p
\s
…
Client characterset: gbk
Conn. characterset: gbk
mysql 選擇一條記錄修改後插入原表
自身是無法判斷的,通過存儲過程可以判斷,存儲過程中先查詢,然後再根據結果決定是更新還是新增
如何修改MySQL字符集
修改mysql的默認字符集是通過修改它的配置文件來實現的。一般分兩種情況:
Windows平台
windows下的mysql配置文件是my.ini,一般在c:windowsmy.ini或者c:winntmy.ini可以直接在這個文件裡面加上
default-character-set=gbk #或gb2312,big5,utf8
然後重新啟動mysql
service mysql restart或/etc/init.d/mysql restart
或用其他方法重新啟動,就生效了。
Unix平台
linux下的mysql配置文件是my.cnf,一般是/etc/my.cnf,如果找不到可以用find命令找一下:
find / -iname my.cnf
在這個文件裡面加上
default-character-set=gbk #或gb2312,big5,utf8
然後重新啟動mysql
net stop mysql
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/270040.html