MySQL關鍵字,mysql特有語法_MySQL 獨有SQL語法匯總(一)

 2023-11-11 阅读 24 评论 0

摘要:連接主機名 端口 一個合法用戶 用戶口令MySQL關鍵字。Mysql -u root -p -h myserver -P 9999選擇數據庫可使用USE關鍵字,mysql語言組成部分的一個關鍵字,絕不要使用關鍵字命名一個表或列mysql怎么用?USE dataname;顯示數據庫列表SHOW DATABASES;mysql5.7,一個

連接

主機名 端口 一個合法用戶 用戶口令

MySQL關鍵字。Mysql -u root -p -h myserver -P 9999

選擇數據庫

可使用USE關鍵字,mysql語言組成部分的一個關鍵字,絕不要使用關鍵字命名一個表或列

mysql怎么用?USE dataname;

顯示數據庫列表

SHOW DATABASES;

mysql5.7,一個數據庫內的表的列表(USE進入數據庫的情況下)

SHOW TABLES;

SHOW也可以用來顯示表列

sql語法,SHOW COLUMNS FROM column;

DESCRIBE 是SHOW COLUMNS的一種快捷方式;DESCRIBE cust;

其他的SHOW 語句

SHOW STATUS 顯示廣泛的服務器狀態信息

SHOW CREATE DATABASE 顯示創建特定數據庫的MYSQL語句

SHOW CREATE TABLE 顯示創建特定表的MYSQL語句

SHOW GRANTS 顯示授權用戶的安全權限

SHOW ERRORS 顯示服務器的錯誤信息

SHOW WARNINGS 顯示服務器的警告信息

限制結果條數

sql語句后面加入下面sql語句

LIMIT 5 顯示結果的前5條

LIMIT 3,4 從行3開始的后4行

LIMIT 4 OFFSET 3 從行3開始的后4行

用正則表達式進行搜索(僅支持正則表達式的一小部分)

基本字符匹配

檢索列prod_name包含1000 的所有行

SELECT columnOne FROM table WHERE columnOne REGEXP '1000' ORDER BY columnOne

. 匹配任意一個字符1000 2000 3000 a000

SELECT columnOne FROM table WHERE columnOne REGEXP '.000' ORDER BY columnOne

正則匹配不區分大小寫 ,如想區分匹配可在REGEXP 后面加上BINARY關鍵字

進行OR匹配

為搜索兩個或n個字符串之一

SELECT columnOne FROM table WHERE columnOne REGEXP '1000|2000|3000' ;

匹配單個字符

SELECT columnOne FROM table WHERE columnOne REGEXP '[123] Ton'; //匹配1 Ton 或2 Ton或3 Ton

當有非匹配的內容時使用[],它是 | 的另一種形式,如1|2|3 Ton這時匹配的只有3帶有Ton

如果想要得到非匹配的內容可以使用[^123]的形式

匹配范圍 [0-9] [a-z][A-Z]

SELECT columnOne FROM table WHERE columnOne REGEXP '[1-5] Ton' ;

匹配特殊字符

想要匹配 . [ ] | 這些字符串怎么辦呢,可以在這些字符前加 \\ 進行轉義,第一個\ mysql自己解釋,第二個給正則解釋的

元字符 說明

\\\ \

\\f 換頁

\\n 換行

\\r 回車

\\t 制表

\\v 縱向制表

使用全文本搜索

啟用全文本搜索

一般在創建表時啟用全文本搜索。CREATE TABLE語句接受FULLTEXT子句。它給出被索引列的一個逗號分隔的列表。

CREATE TABLE productontes

(

note_id int NOT_NULL AUTO_INCREMENT,

prod_id char(10) NOT_NULL,

note_date datetime NOT_NULL,

note_text text NOT_NULL,

PRIMARY KEY(note_id),

FULLTEXT(note_text)

)ENGINE=MyISAM;

為了進行全文本搜索,mysql根據子句FULLTEXT(note_text)的指示對它進行索引。這里FUNLL_TEXT索引了單個列,如果需要可以索引多個列,多列之間用逗號分隔

在定義之后mysql對自動維護該索引,在增加、更新和刪除行時,索引隨之自動更新。

不要在導入數據時使用FUNLLTEXT,否則會耗費很多時間,應該先導入數據,再定義FULLTEXT這樣有助于更快的導入數據

進行全文本搜索

在索引之后,使用兩個函數Match()和Against()執行全文本搜索,其中Match()指定被搜索的列Against()指定要使用的搜索表達式。

SELECT note_text FROM productnotes WHERE Match(note_text) Against('rabbit');

使用完整的Match()說明: 傳遞給Match()的值必須和與FULLTEXT()定義中的相同。如果指定了多個列,則必須列出它們(而且次序正確)

除非使用BINARY方式,否則全文本搜索不區分大小寫

使用SELECT 語句同樣可以檢索出兩行,但次序不同。

全文本搜索返回一文本匹配的良好程度的數據。具有較高等級的行先返回。

使用查詢擴展

查詢擴展用來設法放寬所返回的全文本搜索結果的范圍。想找出與搜索有關的其他行。不包含要搜索才字母。

如SELECT note_text FROM productnotes WHERE Match(note_text) Against('anvils');

返回一行數據

使用查詢擴展

SELECT note_text FROM productnotes

WHERE Match(note_text) Against('anvils' WITH QUERY EXPANSION);

返回7行

布爾文本搜索

Mysql支持全文本搜索的另一種形式,稱為布爾方式。布爾方式可以提供以下細節:

1 要匹配的詞

2 要排斥的詞(如果該行包含這個詞,則不返回該行,即使它已經包含指定的詞也是如此)

3 排列提示(指定某些詞比其他詞重要,更重要的詞的詞等級更高)

4 表達式分組

5 另外一些內容

即使沒有FULLTEXT索引也可以使用 布爾方式不同迄今為止使用的全文本搜索語法的地方在于,即使沒有定義FULLTEXT索引,也可以使用它,但這是一種非常緩慢的操作(其性能將隨著數據量的增加而降低)

例如:匹配包含heavy但不包含任意以rope開始的詞的行,可以使用以下查詢:

SELECT note_text FROM productnotes

WHERE Match(note_text) Against('heavy -rope*' IN BOOLEAN MODE)

全文本布爾操作符

+ 包含,詞必須存在

- 排除,詞必須不出現

> 包含,而且增加等級值

< 包含,而且減少等級值

() 吧詞組成子表達式(允許這些子表達式作為一個組被包含)

~ 取消一個詞的排序值

* 詞尾的通配符

"" 定義一個短語,(與單詞不一樣,它匹配整個短語以便包含或排除這個短語)

SELECT note_text FROM productnotes

WHERE Match(note_text) Against('+hea +rop' IN BOOLEAN MODE)

//包含hea 和rop的行

SELECT note_text FROM productnotes

WHERE Match(note_text) Against('hea rop' IN BOOLEAN MODE)

//包含hea 和rop至少一個就行的行

SELECT note_text FROM productnotes

WHERE Match(note_text) Against('"hea rop"' IN BOOLEAN MODE)

//包含hea rop這個短語而不是hea 和rop的行

SELECT note_text FROM productnotes

WHERE Match(note_text) Against('>hea

//包含hea 和rop的行,增加前者的等級,降低后者的等級

SELECT note_text FROM productnotes

WHERE Match(note_text) Against('+hea +(

//包含hea 和rop的行降低后者的等級

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/4/170798.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息