當前位置:首頁 » 編程語言 » sql程序員

sql程序員

發布時間: 2023-01-23 05:05:49

java程序員有必要練習sql

非常有必要,後端開發和資料庫直接打交道,而且90%的情況都是開發人員寫sql,個別的sql才會由dba去優化,一個你的主要工作內容當然要練習

② 寫sql的不算是程序員嗎,為什麼都把兩者分開說

程序員顧名思義需要跟「程序」打交道,程序是啥??目前軟體行業裡面指編程語言,C,C++,JAVA等等,這些是編程語言。而SQL呢???SQL本身也是編程語言,而你說的「寫SQL」就不一定了,如果只是寫SQL查詢查詢數據,那充其量就是寫SQL語句而已。執行一個select得到一個結果。沒有業務,沒有邏輯,所以可能不算。

③ sql 腳本程序員主要做什麼,這腳本是否和我們資料庫使用到的語法是否會相同

對於資料庫所要使用語句,主要是三種
1.基本sql語句,就是建表,查詢,登錄,更新,刪除等
2.程序語句,就是存儲過程,函數等使用的語句
3.命令語句,就是在命令行模式下的語句,比如導入導出文件/數據,增加修改用戶,許可權等等的語句

腳本程序員要做什麼,這個要看項目情況而言。一般情況下,使用比較多的是基本sql語句和命令語句(有些項目裡面程序語句也會使用到的),就是把創建和修改資料庫對象等很多動作行為做成腳本(可以理解成批處理文件),然後需要的時候調用執行腳本就可以了,不需要我們再去手動寫代碼。

④ Java程序員需要精通SQL資料庫嗎

理論上是這樣,軟體工程師更應該關注於程序設計而非對於某一技術的掌握,編寫和優化SQL應該交由資料庫專家負責,這是一種關注分離。x0dx0a但實際和理論相差甚遠,尤其在中國:x0dx0a很少公司會聘請資料庫專家進行開發的工作。x0dx0a而且相對的,資料庫專家並不了解具體軟體開發的技術,然而也沒有人要求資料庫專家要了解這些技術(是不是覺得對軟體工程師很不公平),如果想讓資料庫專家能夠工作起來,軟體工程師就必須從設計上把業務層與持久層的分離,目前很少工程師能夠做到這一點,基本上都是把SQL內嵌到業務層里了。x0dx0a所以如果公司沒有提供這樣理想的開發環境,還是有必要熟悉SQL的。

⑤ 程序員工作常用的sql存儲過程

給兩個例子,有問題在追問吧。(sqlserver環境)

CREATEPROCEDUREproc_stu/*proc_stu為存儲過程的名稱*/
AS
DECLARE@writtenAvgfloat,@labAvgfloat/*筆試平均分和機試平均分變數*/
SELECT@writtenAvg=AVG(writtenExam),
@labAvg=AVG(labExam)FROMstuMarks
print'筆試平均分:'+convert(varchar(5),@writtenAvg)
print'機試平均分:'+convert(varchar(5),@labAvg)
IF(@writtenAvg>70AND@labAvg>70)
print'本班考試成績:優秀'/*顯示考試成績的等級*/
ELSE
print'本班考試成績:較差'
print'--------------------------------------------------'
print'參加本次考試沒有通過的學員:'
SELECTstuName,stuInfo.stuNo,writtenExam,labExam/*顯示未通過的學員*/

stuInfo.stuNo=stuMarks.stuNo
WHEREwrittenExam<60ORlabExam<60
GO


CREATEPROCEDUREproc_stu
@writtenPassint=60,/*輸入參數:筆試及格線*/
@labPassint=60/*輸入參數:機試及格線*/
AS
print'--------------------------------------------------'
print'參加本次考試沒有通過的學員:'
SELECTstuName,stuInfo.stuNo,writtenExam,/*查詢沒有通過考試的學員*/
labExamFROMstuInfo
INNERJOINstuMarksON
stuInfo.stuNo=stuMarks.stuNo
WHEREwrittenExam<@writtenPass
ORlabExam<@labPass
GO

⑥ 一個Java程序員有必要精通SQL么

程序員精通SQL是最基本的要求
因為做的程序是需要跟數據進行交互的,沒有數據交互的程序,應用層面太狹隘了。
國外的崗位區分的很明確,專門寫代碼的,專門做資料庫的,即便如此,也有區分,專門處理前台的、後台,專門做框架的架構師,還有專門的測試工程師。
但是國內不同,基本上程序員要掌握除了架構以外的全部技能。可以說國內的一流程序員就是萬能的,什麼都會。
這個也導致了國內IT行業從業人員入門的門檻高,培訓不規范。新人不知道該從何入手。
現在國內的IT行業人才缺口很大。這個問題,本身跟行業規范也有一定原因。
作為剛剛進入行業的程序員,第一考慮的是自身能力一定要跟上公司的技能需求,然後在此基礎上不斷學習,有方向有機會的學習新的技能。這樣才能拿到高薪。

⑦ 有專門的 plsql 程序員嗎前景如何啊想向資料庫方面發展啊

我是oracle得ocp,剛剛過的。現在在一個做erp的公司工作。總的來說,做這行會到處跑沒有固定地點,主要跟著項目走。要學的比較多,單純pl/sql是基礎。努力吧,現在來看工資不錯,但也很辛苦,直接和客戶打交道。

⑧ 程序員的SQL金典的序言

市面上講解資料庫的書都花了很多篇幅講解資料庫的備份、授權、調優、修復、監控等內容,這些內容是資料庫管理員(DBA)應該掌握的,而對於程序員來說更需要掌握的則是SQL語句的使用方法。但是市面上專門講解SQL語句的書非常少,初學者在學習資料庫開發過程中常常被那些寫給DBA的書弄得暈頭轉向,無法真正快速地掌握SQL技術;而且這些書中講解的SQL語句也常常是針對特定資料庫系統的專有實現,無法很容易地在其他資料庫系統中運行,讀者需要閱讀大量的書籍和查閱大量的資料才能掌握不同資料庫系統的使用方法。
本書是專門寫給程序員的,因此沒有講解備份、授權、調優、修復、監控等開發人員不關心的內容,直接從SQL語句入手,讓讀者快速掌握資料庫開發的技能。「面向開發人員,講解對開發人員最有用的知識」是本書的編寫宗旨。
MySQL、MS SQL Server、Oracle和DB2等都是非常流行的資料庫管理系統(DBMS),雖然在大部分SQL語法上這些DBMS實現都是一致的,但是在實現細節及高級語法方面這些DBMS的實現差異還是非常大的。如何編寫能夠兼容這些DBMS的SQL語句是開發人員經常需要面對的問題,本書將幫助讀者從根本上解決這個問題。
很多開發人員對於SQL語句的掌握只限於簡單的SELECT、UPDATE語句,對於稍微復雜的邏輯經常需要編寫程序代碼來完成,這不僅無法發揮資料庫的優勢,而且開發出的系統性能也非常低,但如果使用資料庫函數、子查詢、表連接、開窗函數等高級的SQL特性,則可以大大簡化系統開發的難度,並且提高系統的性能。本書將對這些高級特性進行詳細講解。
本書第1、2章介紹資料庫系統的基礎知識及基本操作;第3章介紹INSERT、DELETE和UPDATE語句的基本應用;第4章對SELECT語句進行全面介紹,並對模糊匹配、分組、限制數據條數、計算欄位、組合查詢等高級內容進行了重點講解;第5章介紹常用的資料庫函數及它們在主流DBMS中的實現差異;第6章介紹索引與約束等知識點;第7、8章分別介紹表連接、子查詢等高級查詢技術;第9章對主流DBMS的語法差異進行分析,並且給出了解決方案;第10章介紹注入漏洞攻擊、SQL調優、事務、自動增長欄位、NULL值處理、開窗函數等高級話題;第11章以一個綜合案例講解書中知識點在實際開發中的應用。
在此,我要感謝為這本書的誕生給予幫助的所有人。首先要感謝CowNew開源團隊的朋友們一直以來的無私奉獻;感謝KingChou在開發CowNewSQL過程中的卓越工作,沒有CowNewSQL也就不會有這本書的問世;還要感謝EasyJF的蔡世友,他一直以來對開源事業的奉獻是值得我學習的;最後我要感謝電子工業出版社的田小康,他的高效工作使得本書能夠順利完成和出版。

⑨ Java程序員在寫SQL時常犯的錯誤!

Java程序員編程時需要混合面向對象思維和一般命令式編程的方法,能否完美的將兩者結合起來完全得依靠編程人員的水準:

技能(任何人都能容易學會命令式編程)模式(有些人用「模式-模式」,舉個例子,模式可以應用到任何地方,而且都可以歸為某一類模式)心境(首先,要寫個好的面向對象程序是比命令式程序難的多,你得花費一些功夫)

但當Java程序員寫SQL語句時,一切都不一樣了。SQL是說明性語言而非面向對象或是命令式編程語言。在SQL中要寫個查詢語句是很簡單的。但在Java里類似的語句卻不容易,因為程序員不僅要反復考慮編程範式,而且也要考慮演算法的問題。

下面是Java程序員在寫SQL時常犯的10個錯誤(沒有特定的順序)。

1、忘掉NULL

Java程序員寫SQL時對NULL的誤解可能是最大的錯誤。也許是因為(並非唯一理由)NULL也稱作UNKNOWN。如果被稱作 UNKNOWN,這還好理解些。另一個原因是,當你從資料庫拿東西或是綁定變數時,JDBC將SQL NULL 和Java中的null對應了起來。這樣導致了NULL = NULL(SQL)和null=null(Java)的誤解。

對於NULL最大的誤解是當NULL被用作行值表達式完整性約束條件時。另一個誤解出現在對於NULL 在 NOT IN anti-joins的應用中。

解決方法:

好好的訓練你自己。當你寫SQL時要不停得想到NULL的用法:這個NULL完整性約束條件是正確的?NULL是否影響到結果?

2、在Java內存中處理數據

很少有Java開發者能將SQL理解的很好。偶爾使用的JOIN,還有古怪的UNION,好吧,但是對於窗口函數呢?還有對集合進行分組呢?許多 的Java開發者將SQL數據載入到內存中,將這些數據轉換成某些相近的集合類型,然後再那些集合上面使用邊界循環控制結構(至少在Java8的集合升級 以前)執行令人生厭的數學運算。

但是一些SQL資料庫支持先進的(而且是SQL標准支持的)OLAP特性,這一特性表現更好而且寫起來也更加方便。一個(並不怎麼標準的)例子就 是Oracle超棒的MODEL分句。只讓資料庫來做處理然後只把結果帶到Java內存中吧。因為畢竟所有非常聰明的傢伙已經對這些昂貴的產品進行了優 化。因此實際上,通過將OLAP移到資料庫,你將獲得一下兩項好處:

便利性。這比在Java中編寫正確的SQL可能更加的容易。性能表現。資料庫應該比你的演算法處理起來更加快.而且更加重要的是,你不必再去傳遞數百萬條記錄了。

解決方法:

每次你使用Java實現一個以數據為中心的演算法時,問問自己:有沒有一種方法可以讓資料庫代替為我做這種麻煩事。

3、使用UNION代替UNION ALL

和UNION相比UNION ALL還需要額外的關鍵字。如果SQL標准已經規定了支持,那麼可能會更好點。

UNION(允許重復)UNION DISTINCT (去除了重復)

移除重復行不僅很少需要(有時甚至是錯的),而且對於帶很多行的大數據集合會相當慢,因為兩個子select需要排序,而且每個元組也需要和它的子序列元組比較。

注意即使SQL標准規定了INTERSECT ALL和EXCEPT ALL,很少資料庫會實現這些沒用的集合操作符。

解決方法:

每次寫UNION語句時,考慮實際上是否需要UNION ALL語句。

4、通過JDBC分頁技術給大量的結果進行分頁操作

大部分的資料庫都會支持一些分頁命令實現分頁效果,譬如LIMIT..OFFSET,TOP..START AT,OFFSET..FETCH語句等。即使沒有支持這些語句的資料庫,仍有可能對ROWNUM(Oracle)或者是ROW NUMBER()、OVER()過濾(DB2、SQL Server2008等),這些比在內存中實現分頁更快速。在處理大量數據中,效果尤其明顯。

解決方法:

僅僅使用這些語句,那麼一個工具(例如JOOQ)就可以模擬這些語句的操作。

5、在Java內存中加入數據

從SQL的初期開始,當在SQL中使用JOIN語句時,一些開發者仍舊有不安的感覺。這是源自對加入JOIN後會變慢的固有恐懼。假如基於成本的 優化選擇去實現嵌套循環,在創建一張連接表源前,可能載入所有的表在資料庫內存中,這可能是真的。但是這事發生的概率太低了。通過合適的預測,約束和索 引,合並連接和哈希連接的操作都是相當的快。這完全是是關於正確元數據(在這里我不能夠引用Tom Kyte的太多)。而且,可能仍然有不少的Java開發人員載入兩張表通過分開查詢到一個映射中,並且在某種程度上把他們加到了內存當中。

解決方法:

假如你在各個步驟中有從各種表的查詢操作,好好想想是否可以表達你的查詢操作在單條語句中。

6、在一個臨時的笛卡爾積集合中使用 DISTINCT 或 UNION 消除重復項

通過復雜的連接,人們可能會對SQL語句中扮演關鍵角色的所有關系失去概念。特別的,如果這涉及到多列外鍵關系的話,很有可能會忘記在JOIN .. ON子句中增加相關的判斷。這會導致重復的記錄,但或許只是在特殊的情況下。有些開發者因此可能選擇DISTINCT來消除這些重復記錄。從三個方面來說 這是錯誤的:

它(也許)解決了表面症狀但並沒有解決問題。它也有可能無法解決極端情況下的症狀。對具有很多列的龐大的結果集合來說它很慢。DISTINCT要執行ORDER BY操作來消除重復。對龐大的笛卡爾積集合來說它很慢,還是需要載入很多的數據到內存中。

解決方法:

根據經驗,如果你獲得了不需要的重復記錄,還是檢查你的JOIN判斷吧。可能在某個地方有一個很難覺察的笛卡爾積集合。

7、不使用MERGE語句

這並不是一個過失,但是可能是缺少知識或者對於強悍的MERGE語句信心不足。一些資料庫理解其它形式的更新插入(UPSERT)語句, 如 MYSQL的重復主鍵更新語句,但是MERGE在資料庫中確是很強大,很重要,以至於大肆擴展SQL標准,例如SQL SERVER。

解決方法:

如果你使用像聯合INSERT和UPDATE或者聯合SELECT .. FOR UPDATE然後在INSERT或UPDATE等更新插入時,請三思。你完全可以使用一個更簡單的MERGE語句來遠離冒險競爭條件。

8、使用聚合函數代替窗口函數(window functions)

在介紹窗口函數之前,在SQL中聚合數據意味著使用GROUP BY語句與聚合函數相映射。在很多情形下都工作得很好,如聚合數據需要濃縮常規數據,那麼就在join子查詢中使用group查詢。

但是在SQL2003中定義了窗口函數,這個在很多主流資料庫都實現了它。窗口函數能夠在結果集上聚合數據,但是卻沒有分組。事實上,每個窗口函數都有自己的、獨立的PARTITION BY語句,這個工具對於顯示報告太好了。

使用窗口函數:

使SQL更易讀(但在子查詢中沒有GROUP BY語句專業)提升性能,像關系資料庫管理系統能夠更容易優化窗口函數

解決方法:

當你在子查詢中使用GROUP BY語句時,請再三考慮是否可以使用窗口函數完成。

9、使用內存間接排序

SQL的ORDER BY語句支持很多類型的表達式,包括CASE語句,對於間接排序十分有用。你可能重來不會在Java內存中排序數據,因為你會想:

SQL排序很慢SQL排序辦不到

解決方法:

如果你在內存中排序任何SQL數據,請再三考慮,是否不能在資料庫中排序。這對於資料庫分頁數據十分有用。

10、一條一條地插入大量記錄

JDBC「懂」批處理(batch),你應該不會忘了它。不要使用INSERT語句來一條一條的出入成千上萬的記錄,(因為)每次都會創建一個新 的PreparedStatement對象。如果你的所有記錄都插入到同一個表時,那麼就創建一個帶有一條SQL語句以及附帶很多值集合的插入批處理語 句。你可能需要在達到一定量的插入記錄後才提交來保證UNDO日誌瘦小,這依賴於你的資料庫和資料庫設置。

解決方法:

總是使用批處理插入大量數據。

來自:OSChina

譯者:oschina.net/translate/10-common-mistakes-java-developers-make-when-writing-sql

⑩ 如何成為一位sql 程序員

寫復雜的SQL語句,為項目服務
一般包括查詢語句、存儲過程開發、觸發器、作業開發,資料庫結構優化等

熱點內容
明日之後如何掃碼登伺服器 發布:2025-07-19 20:36:26 瀏覽:241
ftp搜索引擎工作原理 發布:2025-07-19 20:31:25 瀏覽:371
景物視頻腳本 發布:2025-07-19 20:30:33 瀏覽:180
hadoop查看文件夾 發布:2025-07-19 20:19:12 瀏覽:22
安卓手機的旁白在哪裡 發布:2025-07-19 20:09:40 瀏覽:741
身份證注冊借書卡的密碼是什麼 發布:2025-07-19 19:44:39 瀏覽:76
玩夢幻西遊哪個配置好 發布:2025-07-19 19:44:37 瀏覽:753
php數組大小排序 發布:2025-07-19 19:27:51 瀏覽:647
linux查找並刪除 發布:2025-07-19 19:25:14 瀏覽:936
linux實驗環境 發布:2025-07-19 19:15:09 瀏覽:412