當前位置:首頁 » 編程語言 » presql

presql

發布時間: 2023-09-03 08:00:08

1. sql 語句 中的表示什麼意思

sql語句中的?相當於一個變數,你可以再其後通過具體賦值,例如setString(1,「nihao」),設置對應?位置處的變數的值。

這樣做的目的是:當你有很多相同的sql語句執行時,可以先發出sql語句的定義,然後再將具體的值傳過去,這樣只發了一次sql語句,提高效率;否則,你發多次相同的sql語句,效率就低了。另外,在防sql注入方面,可以通過這樣的方法來避免簡單的侵害。

2. 資料庫基礎篇(二)—— SQL之數據查詢

接下來,我們將使用員工相關的四張樣本數據表,來學習SQL,建議你在學習過程中多動手練習,理解才會更深刻。表和欄位含義,如下圖:

如何利用SQL語句來操作以上數據呢?我們必須將樣本數據導入MySQL客戶端(如:Navicat)中。可以在客戶端操作數據,或者在終端窗口。工作中經常在客戶端操作,所以本文所有SQL語句將在Navicat中學習。
首先將sql腳本保存到桌面(獲取方式:關注"Python之每日一課"公眾號,後來回復"sql基礎數據",即可。),導入SQL腳本的具體操作流程如下:

現在數據准備完成。這里是導入sql腳本;導出同理,選擇」轉儲SQL「文件。當然了,Navicat也支持將當前表或查詢結果導出Excel、CSV等文件類型。

下面可以寫SQL語句了(每個sql腳本可以保存,下次直接使用),如下:

類似於Python中 :print(要列印的東西)

①通過select查詢完的結果 ,是一個虛擬的表格,不是真實存在

② 要查詢的東西 可以是常量值、表達式、欄位、也可以是函數

補充:可以給欄位起別名,好處是提高可讀性,更方便理解;多表連接時,區分欄位。用AS 或 空格來實現。如下:

2、 條件查詢

條件查詢:根據條件過濾原始表的數據,查詢到想要的數據

1)語法

2)分類

①條件表達式

②邏輯表達式

③模糊查詢

⭐ 注意:where 一定要放到 from 後面。NULL 不是假,也不是真,而是"空";任何運算符,判斷符碰到NULL,都得NULL;NULL的判斷只能用is null,is not null;NULL 影響查詢速度,一般避免使值為NULL。exists查詢可以與in型子查詢互換,它們之間區別以後語句優化時會詳細講解。

3、 排序查詢

1)語法

2)舉栗

⭐ 注意:order by 一定要放到 語句最後(limit前面)

4、分組查詢
1)語法

2)特點

①可以按單個欄位分組

②和分組函數一同查詢的欄位最好是分組後的欄位

③分組篩選(where 和 having區別)

④可以按多個欄位分組,欄位之間用逗號隔開

⑤可以支持排序

⑥having後可以支持別名

3)舉栗

⭐ 注意:關鍵字順序是where —>group by—>having—>order by—>limit( having不能單獨使用,需結合group by ,表示對分組後的結果進行篩選;而 group by 必須結合分組聚合函數一起使用 ,比如:count()、max()等)

5、 常見函數

1)單行函數

2)分組函數

3)分組函數特點

①以上五個分組函數都忽略null值,除了count(*)

②sum和avg一般處理數值型,max、min、count可以處理任何數據類型

③都可以搭配distinct使用,用於統計去重後的結果

④count的參數可以支持:欄位、*、常量值,一般放1

6、連接查詢(多表查詢)

單個表不能滿足需求時,需要結合多張表,去除有關聯的數據。這時就需要用連接查詢,連接查詢有三種,通常join使用的最多。

①等值連接的結果 = 多個表的交集

②多個表不分主次,沒有順序要求

③一般為表起別名,提高閱讀性和性能

①語法

②好處

語句上,連接條件和篩選條件實現了分離,簡潔。

⭐ 注意:左右連接可互換 A left join B 等價於B right join A;內連接是左</pre>

右連接的交集;mysql沒有外連接。

自連接相當於等值連接,但是等值連接涉及多個表,而自連接僅僅是它自己。如下:在員工信息表裡,查詢員工名和直接上級的名。

7、子查詢

一條查詢語句中又嵌套了另一條完整的select語句,其中被嵌套的select語句,稱為子查詢或內查詢。在外面的查詢語句,稱為主查詢或外查詢。

①子查詢都放在小括弧內

②子查詢可以放在from後面、select後面、where後面、having後面,但一般放在條件的右側

③子查詢優先於主查詢執行,主查詢使用了子查詢的執行結果

④子查詢根據查詢結果的行數不同分為以下兩類:

2)舉栗

8、分頁查詢 (可選)
實際web開發中,當顯示的數據,一頁顯示不完時,需要分頁提交sql請求。

2)特點

①起始條目索引默認從0開始

②limit子句放在查詢語句的最後

③公式:select * from 表 limit (page-1)*sizePerPage,

3)舉栗

9、union聯合查詢

union用於把涉及多個表的SELECT語句的結果組合到一個結果集合中。適用於查詢條件較多,多個表之間沒有連接關系的場景。</pre>

2)特點

①多條查詢語句的查詢的列數必須是一致的

②多條查詢語句的查詢的列的類型幾乎相同

③union 代表去重,union all 代表不去重

3)舉栗

UNION 和 UNION ALL 運行結果的區別如下:

⭐ 注意:在多個 SELECT 語句中,第一個 SELECT 語句中被使用的欄位名稱將被用於結果的欄位名稱。當使用 UNION 時,MySQL 會把結果集中重復的記錄刪掉,而使用 UNION ALL ,MySQL 會把所有的記錄返回,且效率高於 UNION

好,今天學習到這里。工作中用的最多就是查詢。如果能消化本文涉及到的所有內容,大概能解決80%的工作需求。本文更多的是原理介紹,例子不多,只有先知道是什麼,才能知道怎麼學。那麼,接下來最重要的是要多練習實踐。因為實際的業務場景要復雜很多,給大家推薦兩個刷題的網站,力扣和牛客網,裡面有大量的sql面試題。能進一步提高我們sql的水平。這篇文章主要是SQL的常用查詢。明天繼續學習SQL的DML增刪改。一起加油!

3. SQL報錯,無效數字

問題原因:表中的欄位dept類型是varchar,但是傳入的數據類型是number
解決方案兩種:
①把dept欄位的數據轉換成告敬number類型
builder.append("\n and to_number(s.dept) in(").append(department).append(")");
②使用presql,調用工具類的襪譽慎 querySqlConditionByMap() 方法,不過需要注意:
比如,有開始日期stdate 和 結束日期eddate還有 部門casein_department 時,得先把stdate和eddate從map取出來,然後再remove掉,只對casein_department進行虛凳單獨處理。舉例如下

熱點內容
db2存儲執行變慢 發布:2025-02-03 20:42:21 瀏覽:764
滑板鞋腳本視頻 發布:2025-02-02 09:48:54 瀏覽:433
群暉怎麼玩安卓模擬器 發布:2025-02-02 09:45:23 瀏覽:558
三星安卓12彩蛋怎麼玩 發布:2025-02-02 09:44:39 瀏覽:744
電腦顯示連接伺服器錯誤 發布:2025-02-02 09:24:10 瀏覽:537
瑞芯微開發板編譯 發布:2025-02-02 09:22:54 瀏覽:147
linux虛擬機用gcc編譯時顯示錯誤 發布:2025-02-02 09:14:01 瀏覽:240
java駝峰 發布:2025-02-02 09:13:26 瀏覽:653
魔獸腳本怎麼用 發布:2025-02-02 09:10:28 瀏覽:538
linuxadobe 發布:2025-02-02 09:09:43 瀏覽:212