怎么做網(wǎng)站的跳轉(zhuǎn)seo查詢外鏈
希望你開心,希望你健康,希望你幸福,希望你點(diǎn)贊!
最后的最后,關(guān)注喵,關(guān)注喵,關(guān)注喵,佬佬會看到更多有趣的博客哦!!!
喵喵喵,你對我真的很重要!
目錄
前言
認(rèn)識字符集和校對原則
MySQL 5.5支持的字符集和校對原則
常用字符集和校對原則
確定字符集和校對原則
描述字符集的系統(tǒng)變量
MySQL用下列的系統(tǒng)變量描述字符集。
字符集的依存關(guān)系
修改默認(rèn)字符集
修改默認(rèn)字符集
使用MySQL字符集時(shí)的建議
預(yù)習(xí)建立數(shù)據(jù)庫和表
配套練習(xí)
總結(jié)
前言
MySQL 能夠支持 39 種字符集和 127 個(gè)校對原則。細(xì)化為 4 個(gè)層次: 服務(wù)器 (Server) 、數(shù)據(jù)庫 ( DataBase ) 、數(shù)據(jù)表 (Table) 和連接層 (Connection) 。?MySQL 服務(wù)器 默認(rèn)的字符集是 latin1 ,如果不進(jìn)行設(shè)置,那么連接層級、客戶端級和結(jié)果返回級、數(shù)據(jù)庫級、表級、字段級都默認(rèn)使用 latin1 字符集。在向表錄入中文數(shù)據(jù)、查詢包括中文字符的數(shù)據(jù)時(shí),會出現(xiàn)類似“ ? ”這樣的 亂碼 現(xiàn)象。在創(chuàng)建存儲過程或存儲函數(shù)時(shí),也經(jīng)常由于字符集的不統(tǒng)一出現(xiàn)錯誤。本任務(wù)從認(rèn)識字符集和校對原則著手,學(xué)習(xí) MySQL 支持的字符集和校對原則。著重介紹 latin1 、 UTF-8 和 gb2312 字符集。通過認(rèn)識描述字符集的系統(tǒng)變量,學(xué)習(xí)掌握修改默認(rèn)字符集的方法。介紹在實(shí)際應(yīng)用中,如何選擇合適的字符集。
認(rèn)識字符集和校對原則
字符 (Character) 是指人類語言中最小的表義符號。例如 ‘A’ 、 ‘B’ 等。給定一系列字符,并給每個(gè)字符指定一個(gè)數(shù)值來進(jìn)行表示,這個(gè)數(shù)值就是 對應(yīng)字符的編碼( Encoding ) 。給定一系列字符,并給每個(gè)字符進(jìn)行編碼后,所有字符和編碼對組成的集合就是字符集( Character? set )。比如: ASSII 碼。字符校對原則 (Collation) 是指在 同一字符集內(nèi)字符之間的 比較規(guī)則。
確定字符序后,才能在一個(gè)字符集上定義什么是等價(jià)的字符( a 是否等價(jià) A ),以及字符之間的大小關(guān)系。每個(gè)字符序唯一對應(yīng)一種字符集,但 一個(gè)字符集可以對應(yīng)多種字符校對原則 ,其中有一個(gè)是默認(rèn)字符校對原則 (Default Collation) 。MySQL 中的字符序名稱遵從命名慣例:以字符序?qū)?yīng)的字符集名稱開頭;以 _ci( 表示大小寫不敏感 ) 、 _cs( 表示大小寫敏感 ) 或 _bin( 表示按編碼值比較 ) 結(jié)尾。例如,在字符序“ utf8_general_ci “下,字符 'a' 和 'A' 是等價(jià)的。
MySQL 5.5支持的字符集和校對原則
MySQL 5.5 服務(wù)器能夠支持 39 種字符集和 127 個(gè)校對原則。任何一個(gè)給定的字符集至少有一個(gè)校對原則,也可能有幾個(gè)校對原則。可以使用 SHOW 命令列出可用的字符集及對應(yīng)校對原則。如:? ?mysql >SHOW CHARACTER SET;
???? mysql> SHOW COLLATION LIKE ‘latin1%’;
常用字符集和校對原則
Latin1? 系統(tǒng)啟動時(shí)默認(rèn)的字符集,是一個(gè)8位字符集,字符集名稱為ISO 8859-1Latin 1,也簡稱為ISO Latin-1。
? 它把位于128~255之間的字符用于拉丁字母表中特殊語言字符的編碼,也因此而得名。
UTF-8 ( 8-bit Unicode Transformation Format )? 被稱為通用轉(zhuǎn)換格式,是針對Unicode字符的一種變長字符編碼,又稱萬國碼。
? 對英文使用8位(即1個(gè)字節(jié)),中文使用24位(3個(gè)字節(jié))來編碼。
? UTF-8包含全世界所有國家需要用到的字符,是國際編碼,通用性強(qiáng)。
? ?UTF-8編碼的文字可以在各國支持UTF-8字符集的瀏覽器上顯示。
gb 2312? 是簡體中文字符集,GBK是對GB 2312的擴(kuò)展,其校對原則是分別為gb2312_chinese_ci、gbk_chinese_ci。
? ?GBK的文字編碼不論中、英文字符均使用雙字節(jié)表示。GBK通用性比UTF-8差,占用的數(shù)據(jù)庫較小。
? GBK、GB 2312與UTF-8之間都必須通過Unicode編碼才能相互轉(zhuǎn)換。
?? 對于一個(gè)網(wǎng)站、論壇來說,如果英文字符較多,則建議使用UTF-8節(jié)省空間。不過現(xiàn)在很多論壇的插件一般只支持GBK。
確定字符集和校對原則
描述字符集的系統(tǒng)變量
MySQL 對于字符集的支持細(xì)化到 4 個(gè)層次 : 服務(wù)器 (Server) 、數(shù)據(jù)庫 ( DataBase ) 、數(shù)據(jù)表 (Table) 和連接 (Connection) 。MySQL 對于字符集的指定 可以細(xì)化 到一個(gè)數(shù)據(jù)庫、一張表和一列。
MySQL用下列的系統(tǒng)變量描述字符集。
character_set_ server 和 collation_ server :這兩個(gè)變量是 服務(wù)器 的字符集,默認(rèn)的 內(nèi)部 操作字符集。character_set_ client :客戶端來源數(shù)據(jù)使用的字符集,這個(gè)變量用來決定 MySQL 怎么 解釋 客戶端發(fā)到服務(wù)器的 SQL 命令文字。character_set_connection和collation_connection :連接層字符集。這兩個(gè)變量用來決定MySQL怎么處理客戶端發(fā)來的SQL命令。
character_set_results:查詢結(jié)果字符集,當(dāng)SQL有結(jié)果返回的時(shí)候,這個(gè)變量用來決定發(fā)給客戶端的結(jié)果中文字量的編碼。
character_set_database和collation_database :當(dāng)前選中數(shù)據(jù)庫的默認(rèn)字符集,create database命令有兩個(gè)參數(shù)可以用來設(shè)置數(shù)據(jù)庫的字符集和比較規(guī)則。character_set_system:系統(tǒng)元數(shù)據(jù)的字符集,數(shù)據(jù)庫、表和列的定義都是用的這個(gè)字符集。它有一個(gè)定值,是UTF-8 。
以“collation_”開頭的同上面對應(yīng)的變量,用來描述字符集校對原則。
有的字符集概念并沒有一個(gè)系統(tǒng)變量表示,如:
表所使用的字符集,在創(chuàng)建表的語句中指定,作為該表中列字體集的默認(rèn)值。
?列所使用的字符集,決定本列的文字?jǐn)?shù)據(jù)的存儲編碼。列的比較規(guī)則比collation_connection高。也就是說,MySQL會把SQL中的文字直接量轉(zhuǎn)成列的字符集后再與列的文字?jǐn)?shù)據(jù)比較。
字符集的依存關(guān)系
MySQL 默認(rèn)的服務(wù)器級的字符集,決定客戶端、連接級和結(jié)果級的字符集。服務(wù)器級的字符集決定數(shù)據(jù)庫的字符集。數(shù)據(jù)庫的字符集決定表的字符集。表的字符集決定字段的字符集。
MySQL默認(rèn)字符集
編譯 MySQL 時(shí),指定了一個(gè)默認(rèn)的字符集,這個(gè)字符集是“ latin1 ”。安裝 MySQL 時(shí),可以在 配置文件 ( my.ini )中重新指定默認(rèn)字符集。啟動 MySQL 時(shí),也可在命令行參數(shù)中重新指定默認(rèn)字符集。默認(rèn)字符集最終被 應(yīng)用于 character_set_server ,再被應(yīng)用于其下級字符集。
修改默認(rèn)字符集
修改 MySQL 的 my.ini ( C:\Program Files \MySQL\MySQL Server 5.5 )文件中的字符集? 查找[mysql]鍵值,在下面加上一行: default-character-set=utf8
? 修改保存后,可用語句查看。
? ?mysql> SHOW VARIABLES LIKE ‘character%
修改默認(rèn)字符集
使用 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字符集時(shí)的建議
建立數(shù)據(jù)庫、表和進(jìn)行數(shù)據(jù)庫操作時(shí),盡量 顯式指出 使用的字符集,而不是依賴于默認(rèn)設(shè)置。數(shù)據(jù)庫和連接字符集都使用 latin1 時(shí),大部分情況下都可以解決亂碼問題,但無法以字符為單位來進(jìn)行 SQL 操作,因此 使用 UTF-8 更好 。注意服務(wù)器級、結(jié)果級、客戶端級、連接級、數(shù)據(jù)庫級、表級的字符集的統(tǒng)一,當(dāng)數(shù)據(jù)庫級的字符集設(shè)置為 UTF-8 時(shí),表級與字段級的字符集也是 UTF-8 。
預(yù)習(xí)建立數(shù)據(jù)庫和表
建立數(shù)據(jù)庫和表是指在計(jì)算機(jī)系統(tǒng)中創(chuàng)建一個(gè)存儲數(shù)據(jù)的地方,并在其中創(chuàng)建表格來組織和管理數(shù)據(jù)。數(shù)據(jù)庫是一個(gè)可以被多個(gè)用戶同時(shí)訪問和操作的數(shù)據(jù)存儲系統(tǒng),而表則是數(shù)據(jù)庫中的一個(gè)結(jié)構(gòu)化數(shù)據(jù)容器。下面將介紹如何建立數(shù)據(jù)庫和表。
首先,選擇一個(gè)適合的數(shù)據(jù)庫管理系統(tǒng)(DBMS),如MySQL、Oracle或SQL Server等。這些DBMS提供了豐富的功能和工具來管理和操作數(shù)據(jù)庫。
接下來,通過運(yùn)行DBMS提供的命令或工具來創(chuàng)建數(shù)據(jù)庫。一般情況下,可以使用CREATE DATABASE語句來創(chuàng)建數(shù)據(jù)庫,并指定數(shù)據(jù)庫的名稱。例如,CREATE DATABASE mydatabase;創(chuàng)建一個(gè)名為mydatabase的數(shù)據(jù)庫。
創(chuàng)建數(shù)據(jù)庫之后,就可以在其中創(chuàng)建表格了。表格用于存儲數(shù)據(jù),并且有一定的結(jié)構(gòu)和規(guī)則。使用CREATE TABLE語句可以創(chuàng)建一個(gè)新的表格。在CREATE TABLE語句中,需要指定表格的名稱和列的信息。每個(gè)列都有一個(gè)名稱和數(shù)據(jù)類型。例如,CREATE TABLE customers (id INT, name VARCHAR(50), email VARCHAR(100));將創(chuàng)建一個(gè)名為customers的表格,并包含id、name和email三列,分別是整數(shù)和兩個(gè)字符串。
在創(chuàng)建表格之后,可以使用INSERT語句來向表格中插入數(shù)據(jù)。INSERT語句可以插入一條或多條數(shù)據(jù)。例如,INSERT INTO customers (id, name, email) VALUES (1, 'John', 'john@example.com');將向customers表格中插入一條數(shù)據(jù)。
創(chuàng)建數(shù)據(jù)庫和表格后,就可以使用SELECT語句來查詢數(shù)據(jù),使用UPDATE語句來更新數(shù)據(jù),使用DELETE語句來刪除數(shù)據(jù)等。這些語句可以通過DBMS提供的命令行界面或圖形化界面來執(zhí)行。
總之,建立數(shù)據(jù)庫和表是管理和組織數(shù)據(jù)的重要步驟。通過選擇合適的DBMS,并使用相應(yīng)的命令和工具,可以輕松地創(chuàng)建數(shù)據(jù)庫和表格,并對其中的數(shù)據(jù)進(jìn)行管理和操作。
配套練習(xí)
一、mysql注釋:
mysql注釋符有三種:1、#...2、--? ...3、/*...*/
二、啟動mysql服務(wù)器(startup)à打開命令窗口clientà輸入:
2.1? mysql >SHOW CHARACTER SET;//顯示所有字符集
?mysql> SHOW COLLATION LIKE ‘latin1%’;//顯示以latin1開頭的校對(Collation)規(guī)則:
2.2.? 修改MySQL的配置文件my.ini(自己安裝的mysql路徑)文件中的字符集?????
查找[mysql]鍵值,在下面加上一行: default-character-set=utf8
修改保存后,可用語句查看。
mysql> SHOW VARIABLES LIKE 'character%';
重新啟動服務(wù)器后再次查看字符集(先shutdown再startup)
2.3使用MySQL的命令修改字符集,修改后可用show variables like ‘character%’;查看。
???????? 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 ;
三、解決發(fā)送前的亂碼
MySQL> SET NAMES ‘UTF8?’;
與這3個(gè)語句等價(jià):
????????????????? mysql> SET character_set_client =UTF8;
??????????????? mysql> SET character_set_results = UTF8;
????????????????? mysql> SET character_set_connection =UTF8;
四、修改MySQL的my.ini文件中,將默認(rèn)字符集修改為gb2312。
提前預(yù)熱
以下是MySQL的簡單代碼示例:
先看看,喵~
連接到MySQL數(shù)據(jù)庫
import mysql.connectormydb = mysql.connector.connect(host="localhost",user="yourusername",password="yourpassword"
)print(mydb)
創(chuàng)建數(shù)據(jù)庫
import mysql.connectormydb = mysql.connector.connect(host="localhost",user="yourusername",password="yourpassword"
)mycursor = mydb.cursor()mycursor.execute("CREATE DATABASE mydatabase")
創(chuàng)建表
import mysql.connectormydb = mysql.connector.connect(host="localhost",user="yourusername",password="yourpassword",database="mydatabase"
)mycursor = mydb.cursor()mycursor.execute("CREATE TABLE customers (name VARCHAR(255), address VARCHAR(255))")
插入數(shù)據(jù)
import mysql.connectormydb = mysql.connector.connect(host="localhost",user="yourusername",password="yourpassword",database="mydatabase"
)mycursor = mydb.cursor()sql = "INSERT INTO customers (name, address) VALUES (%s, %s)"
val = ("John", "Highway 21")mycursor.execute(sql, val)mydb.commit()print(mycursor.rowcount, "record inserted.")
總結(jié)
MySQL 能夠支持 39 種字符集和 127 個(gè)校對原則。細(xì)化為 4 個(gè)層次: 服務(wù)器 (Server) 、數(shù)據(jù)庫 ( DataBase ) 、數(shù)據(jù)表 (Table) 和連接層 (Connection) 。?MySQL 服務(wù)器 默認(rèn)的字符集是 latin1 ,如果不進(jìn)行設(shè)置,那么連接層級、客戶端級和結(jié)果返回級、數(shù)據(jù)庫級、表級、字段級都默認(rèn)使用 latin1 字符集。在向表錄入中文數(shù)據(jù)、查詢包括中文字符的數(shù)據(jù)時(shí),會出現(xiàn)類似“ ? ”這樣的 亂碼 現(xiàn)象。在創(chuàng)建存儲過程或存儲函數(shù)時(shí),也經(jīng)常由于字符集的不統(tǒng)一出現(xiàn)錯誤。本任務(wù)從認(rèn)識字符集和校對原則著手,學(xué)習(xí) MySQL 支持的字符集和校對原則。著重介紹 latin1 、 UTF-8 和 gb2312 字符集。通過認(rèn)識描述字符集的系統(tǒng)變量,學(xué)習(xí)掌握修改默認(rèn)字符集的方法。介紹在實(shí)際應(yīng)用中,如何選擇合適的字符集。
希望你開心,希望你健康,希望你幸福,希望你點(diǎn)贊!
最后的最后,關(guān)注喵,關(guān)注喵,關(guān)注喵,佬佬會看到更多有趣的博客哦!!!
喵喵喵,你對我真的很重要!