MySQL表的基本查詢詳細圖文教程
1,創(chuàng)建表
前面基礎的文章已經講了很多啦,直接上操作:
非常簡單!下一個!
2,插入數(shù)據(jù)
1,全列插入
前面也說很多了,直接上操作:
以上插入和全列插入類似,全列插入也可以這樣寫:
注意,后面插入的數(shù)據(jù)數(shù)量必須和定義表的列的數(shù)量及順序一致
2,多行數(shù)據(jù) + 指定列插入
插入兩條記錄,value_list 數(shù)量必須和指定列數(shù)量及順序一致
操作:
如果需要用一條語句插入多行數(shù)據(jù),可以在values后面用逗號隔開然后加入數(shù)據(jù):
3,插入否,則更新
由于 主鍵 或者 唯一鍵 對應的值已經存在而導致插入失敗
可以選擇性的進行同步更新操作語法:
on duplicate key update = 。。。。。
可以看到,因為主鍵沖突所以無法插入數(shù)據(jù),那么我又不想要id為1的數(shù)據(jù),這個時候就可以用上面的語法:
可以看到,表中的第一行數(shù)據(jù)被更新了。
3,替換
用法:
-- 主鍵 或者 唯一鍵 沒有沖突,則直接插入;
-- 主鍵 或者 唯一鍵 如果沖突,則刪除后再插入
我們可以用創(chuàng)建成功后的提示來看有沒有數(shù)據(jù)沖突:
-- 1 row affected: 表中沒有沖突數(shù)據(jù),數(shù)據(jù)被插入
-- 2 row affected: 表中有沖突數(shù)據(jù),刪除后重新插入
創(chuàng)建表和插入數(shù)據(jù)講完之后,就可以開始我們的主題了:表的查詢!
4,表的查詢
首先我們來快速創(chuàng)建一個表,讓我們可以方便查詢:
具體指令:
創(chuàng)建表指令:
CREATE TABLE exam_result ( id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT, name VARCHAR(20) NOT NULL COMMENT '同學姓名', chinese float DEFAULT 0.0 COMMENT '語文成績', math float DEFAULT 0.0 COMMENT '數(shù)學成績', english float DEFAULT 0.0 COMMENT '英語成績' );
插入表指令:
INSERT INTO exam_result (name, chinese, math, english) VALUES ('唐三藏', 67, 98, 56), ('孫悟空', 87, 78, 77), ('豬悟能', 88, 98, 90), ('曹孟德', 82, 84, 67), ('劉玄德', 55, 85, 45), ('孫權', 70, 73, 78), ('宋公明', 75, 65, 30);
1,select列
1,全列查詢
通常情況下不建議使用 * 進行全列查詢
1. 查詢的列越多,意味著需要傳輸?shù)臄?shù)據(jù)量越大;
2. 可能會影響到索引的使用。(索引待后面講解)
操作:
2,指定列查詢
操作:
3,查詢字段為表達式
可以看到,可以進行運算并顯示在表中。
4,為查詢結果指定別名
操作:在加算表達式后面加as加要命名的名字
其中,as可以省略:
5,結果去重
我們想去差個成績,看全班分數(shù)的整體趨勢,為此要求分數(shù)不重復,而我們看到math里分數(shù)有重復的部分,那么我們怎么解決這個分數(shù)重復的問題?
去重!語法:在列名前加distinct:
可以看到,表中的數(shù)據(jù)被去重
2,where語句
我們可以用where語句來做判斷來查詢表,具體判斷的表達式:
我們用例子來描述上面操作符的使用:
1 英語不及格的同學及英語成績 ( < 60 )
可以用比較來篩選出想要的數(shù)據(jù)。
2,語文成績在 [80, 90] 分的同學及語文成績
這個時候,可以引入一個指令:and,它代表的是且命令,就和C++中的&&差不多
也可以用between來查詢,操作如下:
3,數(shù)學成績是 58 或者 59 或者 98 或者 99 分的同學及數(shù)學成績
這里面可以用or指令來完成,or相當于C++里的||:
當然,這樣寫比較麻煩,那么可以使用in條件來寫:
這些寫會比第一種方法好看。
4,姓孫的同學 及 孫某同學
這時候得引入模糊查找和%:
可以看到,孫后面的名字都查到了,但是如果只想要后面只有一個字的怎么操作?
可以看到,用_可以指定后面跟多少字
5,語文成績好于英語成績的同學
可以打印列表與列表的比較:
6,總分在 200 分以下的同學
可以用表相加減得出,但是不能用給表啟的名字做比較,因為語句執(zhí)行的順序不一樣:
7,語文成績 > 80 并且不姓孫的同學
這里用到了like和not連用
8,孫某同學,否則要求總成績 > 200 并且 語文成績 < 數(shù)學成績 并且 英語成績 > 80
9,NULL 的查詢
先創(chuàng)建表
查詢 qq 號已知的id:
NULL 和 NULL 的比較,= 和 的區(qū)別
3,結果排序
語法:
-- ASC 為升序(從小到大)
-- DESC 為降序(從大到小)
-- 默認為 ASC
注意:沒有 ORDER BY 子句的查詢,返回的順序是未定義的,永遠不要依賴這個順序
1,同學及數(shù)學成績,按數(shù)學成績升序顯示
2,同學及數(shù)學成績,按數(shù)學成績降序顯示
3,查詢同學各門成績,依次按 數(shù)學降序,英語升序,語文升序的方式顯示
4,查詢同學及總分,由高到低
5,查詢姓孫的同學或者姓曹的同學數(shù)學成績,結果按數(shù)學成績由高到低顯示
4,篩選分頁結果
關鍵字:limit
只顯示前幾行
操作:
可以看到,limit前加的數(shù)字代表從第幾行開始,第二個數(shù)字代表往下顯示幾行
可以用關鍵字offset來表示第幾行開始:
總結
到此這篇關于MySQL表的基本查詢的文章就介紹到這了,更多相關MySQL表的基本查詢內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
MyEclipse連接Mysql數(shù)據(jù)庫的方法(一)
這篇文章主要介紹了MyEclipse連接Mysql數(shù)據(jù)庫的方法(一)的相關資料,非常實用,具有參考價值,需要的朋友可以參考下2016-05-05mysql數(shù)據(jù)存儲過程參數(shù)實例詳解
這篇文章主要介紹了mysql數(shù)據(jù)存儲過程參數(shù)實例詳解,小編覺得挺不錯的,這里分享給大家,供需要的朋友參考。2017-10-10Express連接MySQL及數(shù)據(jù)庫連接池技術實例
數(shù)據(jù)庫連接池是程序啟動時建立足夠數(shù)量的數(shù)據(jù)庫連接對象,并將這些連接對象組成一個池,由程序動態(tài)地對池中的連接對象進行申請、使用和釋放,本文重點給大家介紹Express連接MySQL及數(shù)據(jù)庫連接池技術,感興趣的朋友一起看看吧2022-02-02