mysql基本操作

查詢數(shù)據(jù)

SELECT 語法結(jié)構(gòu)

SELECT (DISTINCT) column_name1, column_name2,.....,aggregate_function(column_name) FROM table_name ORDER BY  column_name1, column_name2,....(LIMIT 0,5);
  • SELECT 命令可以讀取一條或者多條記錄。
  • 你可以使用星號(*)來代替其他字段,SELECT語句會返回表的所有字段數(shù)據(jù)
  • 你可以使用 WHERE 語句來包含任何條件。
  • 你可以使用 LIMIT 屬性來設(shè)定返回的記錄數(shù)。
  • 你可以通過OFFSET指定SELECT語句開始查詢的數(shù)據(jù)偏移量。默認(rèn)情況下偏移量為0。

過濾數(shù)據(jù)

值比較符號=、<>、 !=、<、<=、>、>=、IS [NOT] NULL

范圍(BETWEEN AND), IN(范圍, 范圍) NOT IN(范圍, 范圍)

LIKE過濾

語法結(jié)構(gòu):

SELECT field1, field2,...fieldN 
FROM table_name
WHERE field1 LIKE condition1;
模式 描述 示例
_ 表示任意單個字符。類似于正則表達(dá)式中的星號 "." 'a' //三位且中間字母是a的 <br />'a' //兩位且結(jié)尾字母是a的 <br />'a' //兩位且開頭字母是a的
% 表示任意字符,類似于正則表達(dá)式中的星號 ""* '%a' //以a結(jié)尾的數(shù)據(jù) <br />'a%' //以a開頭的數(shù)據(jù) <br />'%a%' //含有a的數(shù)據(jù)
[...] 字符集合。匹配所包含的任意一個字符。例如, '[abc]' 可以匹配 "plain" 中的 'a'。
[^...] 負(fù)值字符集合。匹配未包含的任意字符。例如, '[^abc]' 可以匹配 "plain" 中的'p'。

示例:

SELECT prod_id, prod_name FROM products WHERE prod_name  LIKE 'jet%';  //搜索prod_name字段中包含jet字符串的所有數(shù)據(jù)

正則表達(dá)式過濾

模式 描述 示例
^ 匹配輸入字符串的開始位置 查找name字段中以'st'為開頭的所有數(shù)據(jù):<br />mysql> SELECT name FROM person_tbl WHERE name REGEXP '^st';
$ 匹配輸入字符串的結(jié)束位置 查找name字段中以'ok'為結(jié)尾的所有數(shù)據(jù):<br />mysql> SELECT name FROM person_tbl WHERE name REGEXP 'ok$';
\ 匹配特殊字符。 查找name字段中包含.的所有數(shù)據(jù):<br />mysql> SELECT name FROM person_tbl WHERE name REGEXP '\\.';
[...] 字符集合。匹配所包含的任意一個字符。例如, '[abc]' 可以匹配 "plain" 中的 'a'。 查找name字段包含:ak, ek,ik, ok, uk等所有數(shù)據(jù):<br />mysql> SELECT name FROM person_tbl WHERE name REGEXP '[aeiou]k';
[^...] 負(fù)值字符集合。匹配未包含的任意字符。例如, '[^abc]' 可以匹配 "plain" 中的'p'。 <br />
. 匹配除 "\n" 之外的任何單個字符。要匹配包括 '\n' 在內(nèi)的任何字符,請使用像 '[.\n]' 的模式。 查找name字段中以'ok'為結(jié)尾的所有數(shù)據(jù):
* 匹配前面的子表達(dá)式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等價于{0,}。 <br />
+ 匹配前面的子表達(dá)式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等價于 {1,}。 <br />
{n} n 是一個非負(fù)整數(shù)。匹配確定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的兩個 o。
{n,m} m 和 n 均為非負(fù)整數(shù),其中n <= m。最少匹配 n 次且最多匹配 m 次。 <br />
p1|p2|p3 匹配 p1 或 p2 或 p3。例如,'z|food' 能匹配 "z" 或 "food"。'(z|f)ood' 則匹配 "zood" 或 "food"。 查找name字段中以元音字符開頭或以'ok'字符串結(jié)尾的所有數(shù)據(jù):<br />mysql> SELECT name FROM person_tbl WHERE name REGEXP '^[aeiou]|ok$';

示例:

SELECT prod_name FROM products WHERE prod_name REGXP '[1-5] Ton' ORDER BY prod_name;
SELECT vend_name FROM vendors WHERE vend_name REGEXP '\\.' ORDER BY vend_name;

[NOT] EXISTS

判斷子查詢是否存在。語法結(jié)構(gòu):

SELECT column_name1, column_name2,... FROM table_name_1 WHERE [conditions] and [NOT] EXISTS (SELECT * FROM table_name_2 where [conditons]);

執(zhí)行過程:
1、首先進(jìn)行外層查詢,在表table_name_1中查詢滿足條件的column1;
2、接下來進(jìn)行內(nèi)層查詢,將滿足條件的column1帶入內(nèi)層的表table_name_2中進(jìn)行查詢;
3、如果內(nèi)層的表table_name_2滿足查詢條件,則返回true,該條數(shù)據(jù)保留;如果內(nèi)層的表table_name_2不滿足查詢條件,則返回false,該條數(shù)據(jù)不保留;
4、最終將數(shù)據(jù)進(jìn)行返回;
示例:

select * from student s where exists( select * from classinfo c where s.classid = c.classid);

函數(shù)

  • 拼接字段:Concat
  • 別名:AS, 會創(chuàng)建新的列
  • 算術(shù)計算:+,-,*,/
  • 文本處理函數(shù):Ltrim(), RTrim(), Lower(), Upper(), Left(), Right(), - Length(),<br />日期和時間處理函數(shù):Date(), Year(), Month(), Day(), Hour()
  • 匯總數(shù)據(jù):AVG(), COUNT(), MAX(), MIN(), SUM() 忽略列值為NULL的行,可以加DISTINCT參數(shù)。

分組

GROUP BY語句根據(jù)一個或多個列對結(jié)果集進(jìn)行分組,如果想要對分組的結(jié)果進(jìn)一步過濾,可以使用HAVING。<br />語法結(jié)構(gòu):

SELECT column_name1, column_name2……,aggregate_function(column_name)
FROM table_name
[WHERE conditions]
GROUP BY column_name1,column_name2…… [HAVING conditions];

執(zhí)行流程:<br />1.首先進(jìn)行外層查詢,根據(jù)WHERE條件過濾出數(shù)據(jù);<br />2.對第一步所得數(shù)據(jù)按照GROUP BY后面跟的字段進(jìn)行分組,分組順序與字段順序保持一致;<br />3.HAVING子句篩選滿足第二條件的數(shù)據(jù); 如果HAVING中有使用SELECT中聚合函數(shù)生成的字段,那等SELECT完之后再執(zhí)行過濾;<br />4.執(zhí)行SELECT, 返回指定的字段;

示例:

SELECT order_num, SUM(quantity*item_price) AS ordertotal FROM orderitems
GROUP BY order_num
HAVING SUM(quantity*item_price) >= 50
ORDER BY ordertotal;

增刪改數(shù)據(jù)

INSERT INTO customers(cust_name, cust_address, cust_city, cust_state, cust_zip, cust_country) VALUES(...);
UPDATE customers SET cust_name = 'The Fudds', cust_email = 'elmer@fudd.com' WHERE cust_id = 10005;
DELETE FROM  customers WHERE cust_id = 10006;

表定義操作

創(chuàng)建和刪除表

SHOW DATABASES;                                        //顯示數(shù)據(jù)庫;
USE <數(shù)據(jù)庫名>;                                         //使用數(shù)據(jù)庫;
SHOW TABLES;                                           //顯示庫下面所有表;
DROP TABLE <表名>;                                      //刪除表

ALTER TABLE <表名> ADD <新字段名><數(shù)據(jù)類型>[約束條件];    //添加字段
ALTER TABLE <表名> DROP <字段名>;                       //刪除字段
ALTER TABLE <表名> CHANGE <舊字段名> <新字段名> <新數(shù)據(jù)類型>;//修改字段定義
ALTER TABLE <表名> MODIFY <字段名> <新數(shù)據(jù)類型>;//修改字段定義, 跟CHANGE區(qū)別是不能重命名字段


參考:

1.幾種MySQL中的聯(lián)接查詢操作方法總結(jié)Mysql腳本之家<br />http://www.jb51.net/article/64006.htm<br />3.第8篇 MySQL 多表連接查詢

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容