第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

SQL標(biāo)準(zhǔn)對(duì)backtick(`)的用法怎么說(shuō)?

SQL標(biāo)準(zhǔn)對(duì)backtick(`)的用法怎么說(shuō)?

慕婉清6462132 2019-11-18 10:17:10
有一次,我在調(diào)試使用簡(jiǎn)單的SQL查詢花了幾個(gè)小時(shí)mysql_query()中PHP/MySQL才知道原來(lái)我錯(cuò)過(guò)了bactick周?chē)谋砻哪菚r(shí)起,我一直在表名周?chē)褂盟5钱?dāng)我在中使用相同SQLite/C++符號(hào)時(shí),該符號(hào)甚至無(wú)法識(shí)別。是否使用此選項(xiàng)會(huì)造成混淆?標(biāo)準(zhǔn)對(duì)此有何說(shuō)法?另外,如果有人可以告訴我何時(shí)使用引號(hào)以及何時(shí)不使用引號(hào),也會(huì)很有幫助。我的意思是圍繞值和字段名稱。
查看完整描述

3 回答

?
慕尼黑的夜晚無(wú)繁華

TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超6個(gè)贊

SQL標(biāo)準(zhǔn)(當(dāng)前版本為ISO / IEC 9075:2011,分為多個(gè)部分)對(duì)“反勾號(hào)”或“反引號(hào)”符號(hào)(Unicode U + 0060或GRAVE ACCENT)未作任何說(shuō)明;它不能將其識(shí)別為可以在SQL中出現(xiàn)的具有特殊含義的字符。


引用標(biāo)識(shí)符的標(biāo)準(zhǔn)SQL機(jī)制是用雙引號(hào)引起來(lái)的定界標(biāo)識(shí)符:


SELECT "select" FROM "from" WHERE "where" = "group by";

在MySQL中,可以這樣寫(xiě):


SELECT `select` FROM `from` WHERE `where` = `group by`;

在MS SQL Server中,可以這樣寫(xiě):


SELECT [select] FROM [from] WHERE [where] = [group by];

SQL Standard表示法的問(wèn)題在于C程序員習(xí)慣將字符串括在雙引號(hào)中,因此大多數(shù)DBMS都將雙引號(hào)用作標(biāo)準(zhǔn)所識(shí)別的單引號(hào)的替代方法。但是,當(dāng)您要包含標(biāo)識(shí)符時(shí),這就給您帶來(lái)了一個(gè)問(wèn)題。


微軟采取了一種方法。MySQL采用了另一個(gè)。Informix允許單引號(hào)和雙引號(hào)的互換使用,但是如果要使用定界的標(biāo)識(shí)符,則可以設(shè)置環(huán)境變量,然后必須遵循標(biāo)準(zhǔn)(字符串的單引號(hào),標(biāo)識(shí)符的雙引號(hào))。DB2僅遵循標(biāo)準(zhǔn)AFAIK。SQLite似乎遵循該標(biāo)準(zhǔn)。Oracle似乎也遵循該標(biāo)準(zhǔn)。Sybase似乎允許雙引號(hào)(標(biāo)準(zhǔn))或方括號(hào)(與MS SQL Server一樣-這意味著SQL Server可能也允許雙引號(hào))。此頁(yè)面記錄了所有這些服務(wù)器(并幫助填補(bǔ)了我的知識(shí)空白),并指出了帶分隔符的標(biāo)識(shí)符中的字符串是否區(qū)分大小寫(xiě)。


至于何時(shí)在標(biāo)識(shí)符周?chē)褂靡?hào)機(jī)制,我的態(tài)度是“從不”。好吧,不是永遠(yuǎn)不會(huì),而是只有在絕對(duì)被迫這樣做時(shí)才這樣做。


注意,分隔標(biāo)識(shí)符區(qū)分大小寫(xiě);也就是說(shuō),"from"并"FROM"引用不同的列(在大多數(shù)DBMS中-請(qǐng)參見(jiàn)上面的URL)。大多數(shù)SQL都不區(qū)分大小寫(xiě)。知道使用哪種情況很麻煩。(SQL標(biāo)準(zhǔn)具有面向大型機(jī)的方向-它希望將名稱轉(zhuǎn)換為大寫(xiě);不過(guò),大多數(shù)DBMS會(huì)將名稱轉(zhuǎn)換為小寫(xiě)。)


通常,您必須界定標(biāo)識(shí)符,這些標(biāo)識(shí)符是所使用的SQL版本的關(guān)鍵字。這意味著Standard SQL中的大多數(shù)關(guān)鍵字,以及所使用的特定實(shí)現(xiàn)中的所有其他內(nèi)容。


麻煩的一個(gè)持續(xù)根源是升級(jí),其中在發(fā)行版N中不是關(guān)鍵字的列名將成為發(fā)行版N + 1中的關(guān)鍵字。在升級(jí)之前停止工作的現(xiàn)有SQL之后會(huì)停止工作。然后,至少作為短期措施,您可能被迫引用該名稱。但是在正常情況下,您應(yīng)該避免引用引號(hào)。


當(dāng)然,我的態(tài)度因Informix(這是我最常使用的工具)接受此SQL逐字記錄而被大多數(shù)DBMS扼制的事實(shí):


CREATE TABLE TABLE

(

    DATE    INTEGER NOT NULL,

    NULL    FLOAT   NOT NULL,

    FLOAT   INTEGER NOT NULL,

    NOT     DATE    NOT NULL,

    INTEGER FLOAT   NOT NULL

);

當(dāng)然,為演示目的以外的其他目的生產(chǎn)這種可笑桌子的人應(yīng)該被吊起來(lái),畫(huà)好,放進(jìn)四分之一的位置,然后將殘留物修好以修復(fù)他們?cè)斐傻幕靵y。但是,在客戶通常設(shè)法擊中的某些限制內(nèi),關(guān)鍵字可以在許多情況下用作標(biāo)識(shí)符。這本身就是一種面向未來(lái)的有用形式。如果將單詞變成關(guān)鍵字,則現(xiàn)有代碼很有可能會(huì)繼續(xù)工作而不受更改的影響。但是,該機(jī)制并不完善。您無(wú)法使用稱為PRIMARY的列創(chuàng)建表,但可以更改表以添加此類(lèi)列。特質(zhì)是有原因的,但是很難解釋。


查看完整回答
反對(duì) 回復(fù) 2019-11-18
?
ibeautiful

TA貢獻(xiàn)1993條經(jīng)驗(yàn) 獲得超6個(gè)贊

此外,當(dāng)sql_mode ANSI_QUOTES處于活動(dòng)狀態(tài)時(shí),MySQL和MariaDB還支持雙qoutes ...- > “ ANSI_QUOTES將”視為標(biāo)識(shí)符引號(hào)字符(如`引號(hào)字符)而不是字符串引號(hào)字符。在啟用此模式的情況下,您仍然可以使用`引用標(biāo)識(shí)符。在啟用ANSI_QUOTES的情況下,您不能使用雙引號(hào)對(duì)文字字符串加引號(hào),因?yàn)樗鼈儽唤忉尀闃?biāo)識(shí)符?!?/em>這是符合ANSI SQL標(biāo)準(zhǔn)線.. 

查看完整回答
反對(duì) 回復(fù) 2019-11-18
?
白豬掌柜的

TA貢獻(xiàn)1893條經(jīng)驗(yàn) 獲得超10個(gè)贊

盡管我不一定同意,但我非常喜歡這個(gè)答案,這使我的知識(shí)大為增加,+ 1謝謝。我仍然會(huì)繼續(xù)使用反引號(hào)!:)我更擔(dān)心很多老節(jié)目突然不能工作,不必查詢傳遞到轉(zhuǎn)換函數(shù)替換用反引號(hào)[和] 如果我發(fā)生改變數(shù)據(jù)庫(kù).. 

查看完整回答
反對(duì) 回復(fù) 2019-11-18
  • 3 回答
  • 0 關(guān)注
  • 775 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)