mysql sql語句注意事項

  • 更新的表不能在 set 和 where 中用于子查詢
  • update 后面可以做任意的查詢
  • 關(guān)閉 MySQL 的事務(wù)自動提交
    START TRANSACTION
    DML....
    COMMIT|ROLLBACK
  • SELECT 語句中的算術(shù)表達式
  • :加法運算
  • :減法運算
  • :乘法運算
    / :除法運算,返回商
    % :求余運算宽气,返回余數(shù)
  • 包含空值的算術(shù)表達式計算結(jié)果為空。
  • MySQL 中并不支持||作為連字符,需要使用 concat 函數(shù)鸵熟。在參數(shù)數(shù)量上與 oracle 的 concat函數(shù)有區(qū)別。
  • 使用 DISTINCT 關(guān)鍵字時需要注意以下幾點:
  1. DISTINCT 關(guān)鍵字只能在 SELECT 語句中使用负甸。
  2. 在對一個或多個字段去重時流强,DISTINCT 關(guān)鍵字必須在所有字段的最前面痹届。
  3. 如果 DISTINCT 關(guān)鍵字后有多個字段,則會對多個字段進行組合去重打月,也就是說短纵,只有多個字段組合起來完全是一樣的情況下才會被去重。
  • like
    %表示任意多個任意字符
    _表示一個任意字符
  • 左右拼接
    LPAD(str,len,padstr)/RPAD(str,len,padstr)
    str --- 待拼接的字符串
    len ---拼接后的長度
    padstr --- 拼接的字符串
  • REPLACE(str,from_str,to_str)
    將 str 中的 from_str 替換為 to_str(會替換掉所有符合from_str 的字符串)
  • 數(shù)字函數(shù)
    ROUND(arg1,arg2):四舍五入指定小數(shù)的值
    ROUND(arg1):四舍五入保留整數(shù)僵控。
    TRUNCATE(5.365,2) 截斷指定小數(shù)的值香到,不做四舍五入處理。
    MOD(arg1,arg2):取余 MOD(5,2) --- 1
  • 轉(zhuǎn)換函數(shù)
    DATE_FORMAT(date,format)
    將日期轉(zhuǎn)換成字符串(類似 oracle 中的 to_char())
    STR_TO_DATE(str,format)
    將字符串轉(zhuǎn)換成日期(類似 oracle 中的 to_date())
  • 通用函數(shù)
    IFNULL(expr1,expr2)
    判斷 expr1 是否為 null报破,如果為 null悠就,則用 expr2 來代替 null
    (類似 oracle 的 NVL()函數(shù))
    NULLIF(expr1,expr2)
    判斷 expr1 和 expr2 是否相等,如果相等則返回 null充易,如果不
    相等則返回 expr1
    IF(expr1,expr2,expr3)
    判斷 expr1 是否為真(是否不為 null)梗脾,如果為真,則使用 expr2
    替代 expr1盹靴;如果為假炸茧,則使用 expr3 替代 expr1(類似 oracle 的 NVL2()函數(shù))
    COALESCE(value,...)
    判斷 value 的值是否為 null,如果不為 null稿静,則返回 value梭冠;如
    果為 null,則判斷下一個 value 是否為 null……直至出現(xiàn)不為 null 的 value 并返回或者返回最
    后一個為 null 的 value
    CASE WHEN THEN ELSE END
    條件函數(shù)
  • 聚合函數(shù)
  1. AVG(arg)函數(shù)
    對分組數(shù)據(jù)做平均值運算改备。
    arg:參數(shù)類型只能是數(shù)字類型控漠。

2.SUM(arg)函數(shù)
對分組數(shù)據(jù)求和。
arg:參數(shù)類型只能是數(shù)字類型悬钳。

3.MIN(arg)函數(shù)
求分組中最小數(shù)據(jù)盐捷。
arg:參數(shù)類型可以是字符、數(shù)字默勾、日期碉渡。

  1. MAX(arg)函數(shù)
    求分組中最大數(shù)據(jù)。
    arg:參數(shù)類型可以是字符母剥、數(shù)字滞诺、日期。

  2. COUNT 函數(shù)
    返回一個表中的行數(shù)媳搪。
    COUNT 函數(shù)有三種格式:
    ? COUNT(*)
    ? COUNT(expr)
    ? COUNT(DISTINCT expr)

  • 約束分組結(jié)果(HAVING) 只能用在 數(shù)據(jù)組 的sql中

  • 子查詢
    可以將子查詢放在許多的 SQL 子句中铭段,包括:
    ? WHERE 子句
    ? HAVING 子句
    ? FROM 子句

使用子查詢的原則
? 子查詢放在圓括號中骤宣。
? 將子查詢放在比較條件的右邊秦爆。
? 在單行子查詢中用單行運算符,在多行子查詢中用多行運算符憔披。

  • MySQL 中的正則表達式
    ? MySQL 中允許使用正則表達式定義字符串的搜索條件等限,性能要高于 like爸吮。
    ? MySQL 中的正則表達式可以對整數(shù)類型或者字符類型檢索。
    ? 使用 REGEXP 關(guān)鍵字表示正則匹配望门。
    ? 默認忽略大小寫形娇,如果要區(qū)分大小寫,使用 BINARY 關(guān)鍵字
  • 索引
  1. 普通索引
    是最基本的索引筹误,它沒有任何限制桐早。
    在創(chuàng)建索引時,可以指定索引長度厨剪。length 為可選參數(shù)哄酝,表示索引的長度,只有字符串
    類型的字段才能指定索引長度祷膳,如果是 BLOB 和 TEXT 類型陶衅,必須指定 length。
    創(chuàng)建索引時需要注意:
    如果指定單列索引長度直晨,length 必須小于這個字段所允許的最大字符個數(shù)搀军。

  2. 唯一索引
    唯一索引與普通索引類似,不同的就是:索引列的值必須唯一勇皇,但允許有空值罩句。

  3. 主鍵索引
    主鍵索引是一種特殊的唯一索引,一個表只能有一個主鍵敛摘,不允許有空值的止。一般是在建表的時候同時創(chuàng)建主鍵索引。

  4. 組合索引
    組合索引是指使用多個字段創(chuàng)建的索引着撩,只有在查詢條件中使用了創(chuàng)建索引時的第一個字段诅福,索引才會被使用(最左前綴原則)。

最左前綴原則
就是最左優(yōu)先拖叙。
如:我們使用表中的 name氓润,address,salary 創(chuàng)建組合索引薯鳍,那么想要組合索引生效咖气,
我們只能使用如下組合:
name/address/salary
name/address
name/
如果使用 addrees/salary 或者是 salary 則索引不會生效。

  1. 全文索引
    全文索引(FULLTEXT INDEX)主要用來查找文本中的關(guān)鍵字挖滤,而不是直接與索引中的值
    相比較崩溪。FULLTEXT 索引跟其它索引大不相同,它更像是一個搜索引擎斩松,而不是簡單的 where語句的參數(shù)匹配伶唯。FULLTEXT 索引配合 match against 操作使用,而不是一般的 where 語句加 like惧盹。
    全文索引可以從 CHAR乳幸、VARCHAR 或 TEXT 列中作為 CREATE TABLE 語句的一部分被創(chuàng)建瞪讼,或是隨后使用 ALTER TABLE 添加。不過切記對于大容量的數(shù)據(jù)表粹断,生成全文索引是一個非常消耗時間非常消耗硬盤空間的做法符欠。

全文解析器
全文索引中基本單位是”詞”。分詞瓶埋,全文索引是以詞為基礎(chǔ)的希柿,MySQL 默認的分詞是所有非字母和數(shù)字的特殊符號都是分詞符。在檢索數(shù)據(jù)時我們給定的檢索條件也是詞养筒。
MySQL 中默認的全文解析器不支持中文分詞狡汉。如果數(shù)據(jù)含有中文需要更換全文解析器NGRAM。

使用全文索引
SELECT 投影列 FROM 表名 WHERE MATCH(全文索引列名) AGAINST(‘搜索內(nèi)容’)

MySQL中The used table type doesn't support FULLTEXT indexes解決辦法
報此錯誤是不支持全文索引闽颇,解決辦法:
1盾戴、查看創(chuàng)建表時用的哪種引擎,如果是InnoDB兵多,改為MyISAM尖啡,InnoDB不支持FULLTEXT類型的索引
2、查看配置文件mysql.ini剩膘,搜索default-storage-engine= 衅斩,如果是InnoDB,改為MyISAM怠褐。重啟MySQL服務(wù)畏梆。

  • 在實際操作過程中,應(yīng)該選取表中哪些字段作為索引奈懒?
    為了使索引的使用效率更高奠涌,在創(chuàng)建索引時,必須考慮在哪些字段上創(chuàng)建索引和創(chuàng)建什么類型的索引,有7大原則:

1.選擇唯一性索引
2.為經(jīng)常需要排序磷杏、分組和聯(lián)合操作的字段建立索引
3.為常作為查詢條件的字段建立索引
4.限制索引的數(shù)目
5.盡量使用數(shù)據(jù)量少的索引
6.盡量使用前綴來索引
7.刪除不再使用或者很少使用的索引

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末溜畅,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子极祸,更是在濱河造成了極大的恐慌慈格,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,919評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件遥金,死亡現(xiàn)場離奇詭異浴捆,居然都是意外死亡,警方通過查閱死者的電腦和手機稿械,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,567評論 3 392
  • 文/潘曉璐 我一進店門选泻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人溜哮,你說我怎么就攤上這事滔金∩猓” “怎么了茂嗓?”我有些...
    開封第一講書人閱讀 163,316評論 0 353
  • 文/不壞的土叔 我叫張陵餐茵,是天一觀的道長。 經(jīng)常有香客問我述吸,道長忿族,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,294評論 1 292
  • 正文 為了忘掉前任蝌矛,我火速辦了婚禮道批,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘入撒。我一直安慰自己隆豹,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,318評論 6 390
  • 文/花漫 我一把揭開白布茅逮。 她就那樣靜靜地躺著璃赡,像睡著了一般。 火紅的嫁衣襯著肌膚如雪献雅。 梳的紋絲不亂的頭發(fā)上碉考,一...
    開封第一講書人閱讀 51,245評論 1 299
  • 那天,我揣著相機與錄音挺身,去河邊找鬼侯谁。 笑死,一個胖子當(dāng)著我的面吹牛章钾,可吹牛的內(nèi)容都是我干的墙贱。 我是一名探鬼主播,決...
    沈念sama閱讀 40,120評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼贱傀,長吁一口氣:“原來是場噩夢啊……” “哼嫩痰!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起窍箍,我...
    開封第一講書人閱讀 38,964評論 0 275
  • 序言:老撾萬榮一對情侶失蹤串纺,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后椰棘,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體纺棺,經(jīng)...
    沈念sama閱讀 45,376評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,592評論 2 333
  • 正文 我和宋清朗相戀三年邪狞,在試婚紗的時候發(fā)現(xiàn)自己被綠了祷蝌。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,764評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡帆卓,死狀恐怖巨朦,靈堂內(nèi)的尸體忽然破棺而出米丘,到底是詐尸還是另有隱情,我是刑警寧澤糊啡,帶...
    沈念sama閱讀 35,460評論 5 344
  • 正文 年R本政府宣布拄查,位于F島的核電站,受9級特大地震影響棚蓄,放射性物質(zhì)發(fā)生泄漏堕扶。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,070評論 3 327
  • 文/蒙蒙 一梭依、第九天 我趴在偏房一處隱蔽的房頂上張望稍算。 院中可真熱鬧,春花似錦役拴、人聲如沸糊探。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,697評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽科平。三九已至,卻和暖如春淤击,著一層夾襖步出監(jiān)牢的瞬間匠抗,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,846評論 1 269
  • 我被黑心中介騙來泰國打工污抬, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留汞贸,地道東北人。 一個月前我還...
    沈念sama閱讀 47,819評論 2 370
  • 正文 我出身青樓印机,卻偏偏與公主長得像矢腻,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子射赛,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,665評論 2 354

推薦閱讀更多精彩內(nèi)容