連接
主機名 端口 一個合法用戶 用戶口令
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的行降低后者的等級
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态