類似與MSSQL里面的[],理解為對字段名、表名的一個引號,不是必須的,例如建立表abc可以使用:
創(chuàng)新互聯(lián)公司堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站設(shè)計、網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的門源網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
create table abc ....
也可以使用:
create table `abc` ...
但是,如果你建立的表名叫做table或者其它的特殊名稱,那就必須要使用反引號:
create table `table` ...
它是為了區(qū)分MYSQL的保留字與普通字符而引入的符號。
舉個例子:SELECT `select` FROM `test` WHERE select=‘字段值‘
在test表中,有個select字段,如果不用反引號,MYSQL將把select視為保留字而導(dǎo)致出錯,所以,有MYSQL保留字作為字段的,必須加上反引號來區(qū)分。
引號一般用在字段的值,如果字段值是字符或字符串,則要加引號,如:select=‘字段值‘
不加反引號建的表不能包含MYSQL保留字,否則出錯
MySql中用一對反引號"`"來標(biāo)注SQL語句中的標(biāo)識,如數(shù)據(jù)庫名、表名、字段名等。反引號是非必須的,在確保不會導(dǎo)致歧義發(fā)生的情況下可以省略掉,反之,例如在出現(xiàn)字段名與保留關(guān)鍵字相同、標(biāo)識中含空格等等情況下就需要使用,否則可能出錯。
引號則用來標(biāo)注語句中所引用的字符型常量或日期/時間型常量。引號是必須的,不得省略,否則會導(dǎo)致系統(tǒng)報錯。一般情況下使用一對英文單引,也可以英文雙引號。
下面舉例示范反引號和單引號的用法
select cid,`name`,`place of birth` ,
'特殊客戶群' as remark
from client where `type of client`='student' ;
選出客戶類型為學(xué)生的記錄,列出客戶id、姓名和出生地,額外附加一個虛擬備注字段將學(xué)生類型客戶標(biāo)注為常量"特殊客戶群"
a.
select * from student where
remark="Mary's elder twin sister";
b.
select * from student where
remark='Mary''s elder twin sister';
通過備注查出瑪麗的雙胞胎姐姐的資料。
因為常量中包含英文單引號
a例使用雙引號標(biāo)注字符串常量,可直接引用含單引號的字符串;
b例使用單引號標(biāo)注字符串常量,字串中包含的單引號需要轉(zhuǎn)義(一個單引號寫成兩個單引號),否則會報錯。
經(jīng)評論區(qū)朋友的指點,此篇文章存在問題,不把SQL關(guān)鍵字作為字段名才是解決問題的關(guān)鍵。
單獨針對mysql,可以使用反引號,即`
對于oracle,需要使用雙引號加大寫,即"KEY"這種,或者直接不加任何符號,不能使用單引號,不然會出現(xiàn)評論區(qū)兄弟說的那種情況,即查詢結(jié)果的字段是返回'key'這種形式。
sql使用單引號
查詢見截圖,下面返回的查詢結(jié)果中返回的字段名帶有單引號:
查詢結(jié)果中應(yīng)該不帶單引號的。
所以為了兼顧mysql和oralce,最好的辦法是修改字段名,不要涉及sql系統(tǒng)關(guān)鍵字和特殊字段。
在mybatis的xml配置中有如下sql語句:
上述配置,在mysql中會報錯
提示有語法錯誤, key value為msyql系統(tǒng)關(guān)鍵字,解決方法可以是可以用反引號,如下
這樣做在mysql中是可以的,不過在oracle中使用反引號會報錯
上述mybatis配置中的sql在oracle中執(zhí)行是沒問題的,
所以為了sql在mysql和oracle中都能執(zhí)行,使用單引號更改sql語句,改完如下:
這樣在mysql和oracle中都可以執(zhí)行了。
1、首先單引號和反引號,如圖,這里的? ?'圖書ID'? ?就使用到了單引號,而 CREATE TABLE `book`? 這里的? book? 就使用到了反引號。
2、單引號:在例子中的條件值周圍使用的是單引號。SQL 使用單引號來環(huán)繞文本值。如果是數(shù)值,不要使用引號。
3、反引號:它是為了區(qū)分MYSQL的保留字與普通字符而引入的符號。有MYSQL保留字作為字段的,必須加上反引號來區(qū)分。
4、雙引號的用法和單引號有所類似,大多數(shù)數(shù)據(jù)庫都支持單引號和雙引號的互換,即varchar類型的變量既可以用單引號來囊括,也可以用雙引號。
5、另外,在oracle里面,雙引號還有一個意義,那就是保留大小寫。在oracle數(shù)據(jù)庫里面,所有的字段是默認(rèn)為轉(zhuǎn)化成大寫后進數(shù)據(jù)庫的,所以如果有一個表名為user,這個時候select * from user;這個語句是查不出任何數(shù)據(jù)的。
mysql的別名可以不加引號,如果加引號,單引號和雙引號以及反引號都可以,如下
mysql的 字段名、表名 通常不需要加任何引號,如果非要加上引號,必須加反引號``(注意是英文狀態(tài)),如下
QA:
Q:在給字段設(shè)置別名的時候,加單引號、雙引號和不加有區(qū)別嗎?
A:本質(zhì)上都可以實現(xiàn),但是如果引號引起來可以添加空格,不加引號的別名無法做到。