中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mysql學習之-字符集選定,修改。

發布時間:2020-08-18 08:29:49 來源:ITPUB博客 閱讀:248 作者:張沖andy 欄目:MySQL數據庫

環境:5.6

基礎概念:

字符(Character)是指人類語言中最小的表義符號。例如’A'、’B'等;
編碼(Encoding)是指給定一系列字符,對每個字符賦予一個數值,用數值來代表對應的字符.例如,我們給字符’A'賦予數值0,給字符’B'賦予數值1,則0就是字符’A'的編碼;
字符集(Character Set)是指字符和編碼對組成的集合。
字符序(Collation)是指在同一字符集內字符之間的比較規則。
MySQL中的字符序名稱遵從命名慣例:以字符序對應的字符集名稱開頭;以_ci(表示大小寫不敏感)、_cs(表示大小寫敏感)或_bin(表示按編碼值比較)結尾。例如:在字符序“utf8_general_ci”下,字符“a”和“A”是等價的;

mysql> show variables like 'character%'; --查看MySQL字符集設置 MySQL字符集設置
+--------------------------+----------------------------+
| Variable_name | Value | ? 系統變量:
+--------------------------+----------------------------+
| character_set_client | utf8 | – character_set_client:客戶端來源數據使用的字符集 
| character_set_connection | utf8 | – character_set_connection:連接層字符集
| character_set_database | latin1 | – character_set_database:當前選中數據庫的默認字符集
| character_set_filesystem | binary | – character_set_filesystem:文件系統字符集
| character_set_results | utf8 | – character_set_results:查詢結果字符集
| character_set_server | latin1 | – character_set_server:內部操作字符集(服務器的字符集)
| character_set_system | utf8 | – character_set_system:系統元數據(字段名等)字符集
| character_sets_dir | /usr/share/mysql/charsets/ | 
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

詳細解釋:
1. 
服務器(數據)端的字符集和collation,可以分成四級逐層指定——server, database, table, column。當MySQL存取位于某一列(column)的數據時,如果column的字符集和collation沒有指定,就會向上追溯table的;如果table也沒有指定字符集和collation,就以database的字符集和collation作為默認值;如果database仍舊沒有指定,那么就以服務器的字符集和collation作為默認值。

2.
server的字符集和collation的默認值又是從哪里來的呢?答案是,配置文件(my.ini)和mysqld(或者mysqld-nt)的命令行參數中都可以指定。如果不幸的,你根本沒有在my.ini或者命令行中指定,那么MySQL就會使用編譯MySQL時指定的默認字符集——latin1。

3.
數據字符集轉換過程:
character_set_client->character_set_connection->character_set_(column,table,database,server)->character_set_results

MySQL默認字符集
MySQL對于字符集的指定可以細化到一個數據庫,一張表,一列.傳統的程序在創建數據庫和數據表時并沒有使用那么復雜的配置,它們用的是默認的配置.
(1)編譯MySQL 時,指定了一個默認的字符集,這個字符集是 latin1;
(2)安裝MySQL 時,可以在配置文件 (my.ini) 中指定一個默認的的字符集,如果沒指定,這個值繼承自編譯時指定的;
(3)啟動mysqld 時,可以在命令行參數中指定一個默認的的字符集,如果沒指定,這個值繼承自配置文件中的配置,此時 character_set_server 被設定為這個默認的字符集;
(4)安裝 MySQL選擇多語言支持,安裝程序會自動在配置文件中把default_character_set 設置為 UTF-8,保證缺省情況下所有的數據庫所有表的所有列的都用 UTF-8 存儲。

mysql> create database demo; --創建數據庫未指定字符集,使用默認字符集創建數據庫
Query OK, 1 row affected (0.00 sec)

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| demo |
| mysql |
| performance_schema |
| test |
+--------------------+
5 rows in set (0.00 sec)

mysql> show create database demo \G; --查看創建數據庫時使用的什么字符集。
*************************** 1. row ***************************
Database: demo
Create Database: CREATE DATABASE `demo` /*!40100 DEFAULT CHARACTER SET latin1 */
1 row in set (0.00 sec)

ERROR: 
No query specified

mysql> create database demo default character set gbk collate gbk_chinese_ci; --指定字符集創建數據庫
Query OK, 1 row affected (0.00 sec)
mysql> show create database demo;
+----------+--------------------------------------------------------------+
| Database | Create Database |
+----------+--------------------------------------------------------------+
| demo | CREATE DATABASE `demo` /*!40100 DEFAULT CHARACTER SET gbk */ |
+----------+--------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> create database demo2 default character set utf8 collate utf8_general_ci; --指定字符集創建數據庫
Query OK, 1 row affected (0.00 sec)

修改字符集 :

方法一:(永久生效)
1.查找/etc目錄下是否有my.cnf文件;
#ls -l | grep my.cnf (在/etc下查找是否有my.cnf文件存在)
2.如果沒有就要從/usr/share/mysql,拷貝一個到/etc 下,在/usr/share/mysql目錄下有五個后綴為.cnf的文件,分別是 my-huge.cnf my-innodb-heavy-4G.cnf my-large.cnf my-medium.cnf my-small.cnf ;從中隨便拷貝一個到/etc目錄下并將其改為my.cnf文件,我選擇的是my-medium.cnf :
#cp /usr/share/mysql/my-medium.cnf /etc/my.cnf
3.修改my.cnf文件,在該文件中的兩個地方加上 default-character-set=utf8([client] [mysql])、
在 [mysqld] 中添加character-set-server=utf8

范例(紅色為添加部分):
[mysqld]
character-set-server=utf8
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[mysql] (注意是小寫,博客問題格式有問題)
default-character-set=utf8
[client]
default-character-set=utf8

驗證:查看數據庫字符集
mysql> show variables like 'character%';
+--------------------------+----------------------------+
| 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 | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
成功!

方法二: (臨時生效)
通過MySQL命令行修改:

mysql> set character_set_client=utf8;
Query OK, 0 rows affected (0.00 sec)

mysql> set character_set_connection=utf8;
Query OK, 0 rows affected (0.00 sec)

mysql> set character_set_database=utf8;
Query OK, 0 rows affected (0.00 sec)

mysql> set character_set_results=utf8;
Query OK, 0 rows affected (0.00 sec)

mysql> set character_set_server=utf8;
Query OK, 0 rows affected (0.00 sec)

mysql> set character_set_system=utf8;
Query OK, 0 rows affected (0.01 sec)

mysql> set collation_connection=utf8;
Query OK, 0 rows affected (0.01 sec)

mysql> set collation_database=utf8;
Query OK, 0 rows affected (0.01 sec)

mysql> set collation_server=utf8;
Query OK, 0 rows affected (0.01 sec)

總結:
1. 如果安裝mysql時未指定數據庫字符集,則默認數據庫字符集為 latin1 。 
2. 選定數據庫字符集時需要根據開發程序選定字符集。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

雷波县| 宜丰县| 溧阳市| 东乌珠穆沁旗| 会同县| 宝兴县| 卓尼县| 海原县| 普安县| 理塘县| 皮山县| 当阳市| 大洼县| 东丽区| 宝鸡市| 九江县| 郎溪县| 和田市| 扎赉特旗| 沽源县| 长乐市| 柳州市| 安康市| 教育| 张家川| 海伦市| 襄汾县| 梨树县| 收藏| 会理县| 宁波市| 抚顺县| 奎屯市| 陆河县| 达州市| 金山区| 施甸县| 宣城市| 大渡口区| 高碑店市| 武强县|