<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    楓中暢游

    關注技術,熱愛生活
    隨筆 - 15, 文章 - 0, 評論 - 3, 引用 - 0
    數據加載中……

    置頂隨筆

    [置頂]2012年個人總結

       本來這個總結要到31號寫的,結果太忙了,到了今天才有時間做個總結。
       首先,工作上,從去年的PPM項目一直延續到今年4月份,終于暫時告一個段落了?;旧蠜]有什么收獲,架構陳舊,設計原始。。一向對于代碼要求相對比較嚴格的我,實在是重構到快吐了。耦合度太高了,不知道之前寫的人是怎么過來的,心里還挺佩服他可以把這個項目做出來。總體上經歷了幾個項目的開發,實施。從java技術陣營出來,接觸到了C,C++,linux等技術,對于
    自己的技術儲備又增添了一磚,但都僅限于了解,還達不到熟悉水平。也許是自己就是喜歡java技術吧!
       今年基本上都在外奔波,我和老婆都在外面,話說那會兒她在帝都,我在天津,于是上半年經常兩地往返,京津高跌成了我最常用的交通工具:)
        從2011年來公司快兩年了,發現自己的開始技術上沒有太多的長進,只是自己平時出于對技術的愛好,才能勉強知道相關的新技術的發展,但是還是缺少實踐。也許再這樣下去,我就搞不了技術了。一直渴望有機會去淘寶一試,但是確由于種種原因未能達成。
       當然今年還有一件重要的事,我們買房了,正式告別了租房的時代,成為了房奴中的一員,哈!這一年,基本沒有關注其他的國事,或者經濟,當時釣魚島事情還是知道的。這一年中,從閱讀中得到了不少的收獲,看了劉未鵬的〈暗時間〉,看了李笑來的〈把時間當作朋友〉,為何我要提這兩本書呢,因為她們帶給我了比較多的幫助,雖然有些事情自己也是這么做著,但是卻沒有堅持,雖然一些事情一直在堅持,卻不知道為何要堅持!當然還有技術方面的書籍,這里我就不多說了,可以查看這里http://www.douban.com/people/davylin/ 。   
       今年才看了兩部電影(和老婆一起看的):一個是太極,一個是泰囧。話說這個太極真是讓人失望,感覺導演故意刪減了劇情。
       下面曬一下2012年的榜單:年度電影:泰囧;年度圖書:《暗時間》《把時間當作朋友》;年度音樂:我的歌聲里,因為愛情;年度技術:clojure(代表人物:dennis)。
       這一年中接觸到的新技術有nosql,node.js,clojure,當然還有hadoop,android,ios等等,但都僅限于了解,并沒有真正的開始實踐,也無從實踐,不知道是否有牛人可以指引。
       今年還參與了ROP的前期調研,本想參與開發,但后面卻不了了之。參與了anyous的android的客戶端開發,結果創新無門,但是現在還在繼續中。
       通過新浪微博,認識了很多淘寶系的牛人(這里不一一列舉),一步步向他們學習著,在接觸到的新技術中,不乏e文資料,深感個人英文水平是軟脅。特別是認識了美味系的相關名人,有dennis,sunng,還有胡狼拜月,哈哈,在人脈上似乎收獲不少,但是看過書上寫的,不是你認識的人多,還是認識你的人多了,才會成為真正的人脈。
       通過今天的學習,對于去年定下的目標基本上都達到了,但是對于java和oracle還是沒有達到自己認為應有的高度。(此時,taobao卻又在去O運動,這是鬧哪門子呢?。?/div>
       總之,有所得必有所失,今天失去的就是去老婆相處的時光,希望明天不要出差了:)
       下面說說2013年的展望:
       希望自己可以在所擅長的方向有所突破,可以在一個比較有潛力的團隊,使用自己喜歡的語言,對于技術人才高度重視的環境里繼續成長。希望可以去兩個地方好好休假,體驗美好的自然風光。希望交到一些志同道合的朋友,一起開創未來!
       

    posted @ 2013-01-06 14:16 javalinjx 閱讀(375) | 評論 (1)編輯 收藏

    2013年8月21日

    linux系統之上搭建maven 之nexus服務篇

           今天剛好有點時間,就想在公司的服務器搭建一個私服,以便以后可以唯我所用,當然前提是服務器最好可以上網,否則還需要配置代理服務器,前兩天剛好把服務器的網絡給配置了下,這邊就不詳述了!大家一定著急了吧,稍安務燥,這就進入正題,O(∩_∩)O~

            linux安裝過程和window主機還是差別挺大的。

    1.下載nexus集成版

    到這個地方http://www.sonatype.org/nexus/go 下載壓縮包,我這邊下載的是nexus-2.0.3-bundle.tar.gz這個版本。

    2. 解壓到相應的目錄

    tar  -xzvf  nexus-2.0.3-bundle.tar.gz , 我這邊放在/home/linjx/opendev/nexus-2.0.3目錄下。

     

    3. 設置為系統服務

    這里需要使用root權限,具體請看http://books.sonatype.com/nexus-book/reference/install-sect-service.html

    簡單如下:

    # cd  /etc/init.d

    # cp  /home/linjx/opendev/nexus-2.0.3/bin/jsw/linux-x86-64/nexus ./nexus

    # chmod 755 nexus

    # chkconfig --add nexus

    # chkconfig --levels 345 nexus on

     

    4. 編輯/etc/init.d/nexus的文本

    4.1. 添加以下變量

    RUN_AS_USER=linjx    ## 這個主要為了后面使用,不需要使用root用戶啟動服務

    NEXUS_HOME=/home/linjx/opendev/nexus-2.0.3/

    PLATFORM=linux-x86-64

    PLATFORM_DIR="${NEXUS_HOME}/bin/jsw/${PLATFORM}"

    4.2. 修改以下變量

    WRAPPER_CMD="${PLATFORM_DIR}/wrapper"

    WRAPPER_CONF="${PLATFORM_DIR}/../conf/wrapper.conf"

     

     

    PIDDIR="${NEXUS_HOME}"

     

    5. 啟動服務

    切換會自己的用戶,不需要使用root用戶;

    # service nexus start

     

    這個大家出現什么情況,是不是失敗了!界面上出現 :Could not write pid file /etc/rc.d/init.d/./nexus.pid: Permission denied通過查看日志文件:

    fzdev#[/home/linjx/opendev/nexus-2.0.3/logs] cat w*  

    wrapper  | ERROR: Could not write pid file /etc/rc.d/init.d/./nexus.pid: Permission denied

     

    怎么辦呢,根據信息提示,nexus.pid無法寫入,應該還是權限問題,這個應該跟啟動當前服務有關。

     

    查文檔http://books.sonatype.com/nexus-book/reference/install-sect-service.html后發現,一有段信息沒有配置,

    Change PIDDIR to a directory where this user has read/write permissions. In most Linux distributions, /var/run is only writable by root. The properties you need to add to customize the PID file location is "wrapper.pid". For more information about this property and how it would be configured in wrapper.conf, see: http://wrapper.tanukisoftware.com/doc/english/properties.html

     

    大概意思就是服務啟動時無法寫入pid,就是說init.d這個目錄當前用戶是沒有權限寫的,怎么辦呢。可以自定義pid寫入目錄,那么在哪里配置呢,是不是又想起了wrapper.conf了,其他文檔中也說明了。

    好吧,那就再加個配置吧,這樣:PIDDIR="/home/linjx/piddir"

     

    然后再啟動服務,果然成功了!具體可以看看附件中的詳細的日志!



     

    6. 啟動之后,可以登錄首頁查看nexus的界面

    http://192.168.1.26:8081/nexus/index.html

     

    默認管理員用戶名/密碼: admin/admin123

     



     

    posted @ 2013-08-21 09:32 javalinjx 閱讀(14950) | 評論 (2)編輯 收藏

    2013年7月3日

    使用leiningen搭建clojure開發環境

    首先來講下Leiningen是什么東東?

    Leiningen是一個用于自動化(構建)clojure項目的工具。

    它可以做到:

        創建新項目

        管理你的項目的依賴關系

        運行測試

        運行一個REPL(讀取-求值-打印循環:read-eval-print loop)

        編譯java源碼

        運行項目

        為項目產生一個Maven風格的POM文件

        為了部署,編譯和打包項目

        發布類庫到Maven倉庫,例如Clojars

        運行Clojure編寫的自定義的自動化任務(稱為Leiningen插件)

        ... 具體可以查看國內的大牛(killme2008)翻譯的Leiningen教程中文版的詳細介紹。

    好些話說多了點,大家別著急啊,馬上就切入主題:

    1. 下載安裝Leiningen

       linux: 

            1. 確保你是jdk 6 版本以下的。

            2. 下載腳本lein

            3. 把lein加入下當前的$path下(~/bin 是最好的選擇)

            4. 賦可執行權限(chmod 755 ~/bin/lein)

      windows:

            1. 可以直接下載打包好的文件,地址是:Leiningen for windows

            2. 點擊下載好的*.exe文件進行安裝

            3. 安裝好后,可以查看環境變量中會有相應的變量被設置好了:

             lein.bat is added to your PATH variable.

            LEIN_JAVA_CMD is set to point to your selected JDK, and the :java-cmd property is set in your              user profile in profiles.clj.

            

            接下來,打開命令窗口,輸入命令:lein self-install  ,會自動下載安裝leiningen 相關的jar文件。

           

           驗證下安裝成果: 在命令窗口中輸入lein repl ,會自動連上nREPL server,進入repl模式,如下所示:

     

          

    Shell代碼  收藏代碼
    1. C:\Users\linjx>lein repl  
    2. nREPL server started on port 21912  
    3. REPL-y 0.2.0  
    4. Clojure 1.5.1  
    5.     Docs: (doc function-name-here)  
    6.           (find-doc "part-of-name-here")  
    7.   Source: (source function-name-here)  
    8.  Javadoc: (javadoc java-object-or-class-here)  
    9.     Exit: Control+D or (exit) or (quit)  
    10.   
    11. user=>  

     

        如果出現上面的提示,則說明leiningen安裝成功,你可以在使用leiningen開發你的clojure之旅了。

        但是往往我們不滿足于現狀,希望可以更有效的使用lein編寫clojure。類似java的idea,eclipse一樣,都對編寫java提供了強大的工具,那么我們可以選擇什么樣的工具呢,毫無疑問,Emacs是最合適的工具,沒有之一:)

         對于我這斷斷續續學習emacs的來說,還真不是不容易,昨晚查看了相關的e文說明,在emacs中成功裝配了nrepl ,用以后續的開發學習,便記錄一下,希望對自己以后查閱,以及需要的人有所幫助。

         首先,我本地有emacs 24 版本的, 這里不想講emacs 的安裝,這個大家自個兒查詢下google便可以了。

         在安裝好leiningen之后,現在進入nrepl的主頁看看,這是個什么東東!

         nrepl.el is an Emacs client for nREPL,the Clojre networked REPL server.It's a great alternative to the now deprecated combination fo SLIME + swank-clojure.

        nrepl.el是emacs作為nrepl的一個客戶端,nrepl是一個反對目前slime+swank-clojure組合的最好的替代品。

         下面來看下如何安裝nrepl.el:

          1. emacs 24 以及更高版本是構建在package.el之上的,但是emacs 23以下版本的,你需要自己獲取package.el .

          雖然我的是24版本的,但是我也下載了package.el,并存放在     C:\Users\linjx\AppData\Roaming\.emacs.d 目前下,這個是我的emacs在windows下的配置目錄。

          2. 這里需要提一個文件,即 .emacs 文件,這個是emacs初始化配置的文件,位于C:\Users\linjx\AppData\Roaming 目錄下。

             如果你不需要使用Marmalade,則添加配置 到 .emacs文件中,如下所示:

     

    Lisp代碼  收藏代碼
    1. (require 'package)  
    2. (add-to-list 'package-archives  
    3.              '("marmalade" . "http://marmalade-repo.org/packages/"))  
    4. (package-initialize)  

     

     由于使用MELPA the code ,需要添加配置到 .emacs文件中,

         

    Lisp代碼  收藏代碼
    1. (require 'package)  
    2. (add-to-list 'package-archives  
    3.              '("melpa" . "http://melpa.milkbox.net/packages/") t)  
    4. (package-initialize)  

     

      在emacs中打開.emacs文件,并M-x eval-buffer,執行當前的配置。

        

         3.  刷新配置

    Lisp代碼  收藏代碼
    1. M-x package-refresh-contents  回車  

         emacs會自動下載安裝Marmalade , melpa相關的配置;

     

         4. 安裝nrepl

             輸入命令 

    命令代碼  收藏代碼
    1. M-x package-install 回車  
    2.        nrepl 回車  

     

         致此,nrepl集成到emacs的安裝完畢,可以使用emacs開發你的hello world!了。

    ( 當然,emacs還可以與其他集成用來clojure的開發,這里我就不詳述了,畢竟沒有使用?。?/p>

     

    現在我們使用lein new 一個clojure項目出來:

    1. $  lein new hello

     

    2. 打開emacs,在buffer中打開 hello所在的目錄下的project.clj文件

     

    3. 輸入命令:M-x nrepl-jack-in,即可初始化一個nrepl server  和 nrepl client

    如下圖所示:



     

     

    posted @ 2013-07-03 13:40 javalinjx 閱讀(8278) | 評論 (0)編輯 收藏

    git命令記錄

    從服務器創建一個本地倉庫的clone版本:

    git clone /path/to/repository

    如果是遠端服務器上的倉庫,你的命令是這樣:

    git clone username@host:/path/to/repository

    多種方式的URI

     

    git add <filename>

    git add *

    git commit -m "代碼提交信息"

     

    將本地倉庫的head中的東西提交到遠程服務器上:

    git push origin master(分支名)

    欲將本地的倉庫連接到某個遠程服務器

    git remote add origin <server>

     

    持續補充,作為自己查詢使用

    posted @ 2013-07-03 12:18 javalinjx 閱讀(262) | 評論 (0)編輯 收藏

    2013年6月17日

    Junit 學習筆記

    上周空閑,看完了《單元測試之道》,這里對自己的學習做個小結,以便以后查閱: 

     

    一般原則:
    測試任何可能失敗的地方。
    測試任何已經失敗的地方。
    對于新加的代碼,在被證明正確之前,都可能是有問題的。
    至少編寫和產品代碼一樣多的測試代碼。
    針對每次編譯都做局部測試。
    簽入代碼之前做全局測試。
    需要回答的問題:
    我如何知道代碼運行是否正確呢?
    我要如何對它進行測試?
    還有哪些方面可能會發生錯誤?
    這個問題是否會在其他的地方出現呢?
    測試哪些方面 :使用junit 測試的6個方面,統稱為:Right-BICEP:
    Right --- 結果是否正確?
    B --- 是否所有的邊界條件都是正確?
    I --- 能查一下反向關聯嗎?
    C --- 能用其他手段交叉檢查一下結果嗎?
    E --- 你是否可以強制錯誤條件發生?
    P --- 是否滿足性能要求?
    編寫測試用例原則,correct邊界條件:
    conformance (一致性)-- 值 是否和預期的一致。
    Ordering(順序性)--一組值是該有序或者無序的。
    Range(區間性)--值是否位于合理的最小值和最大值之內。
    Reference(引用 、耦合性)--代碼是否引用了一些不在代碼本身控制范圍之內的外部資源。
    Existence(存在性)--值是否存在(例如,是否是非null,非0,在一個集合中等等)。
    Cardinatity(基數性)--是否恰好有足夠的值?
    Time(相對或者絕對的時間性)--所有事情的發生是否是有序的?是否是在正確的時刻?是否恰好及時?
    環境方面的因素:
    內存耗光。
    磁盤用滿。
    時鐘出問題。
    網絡不可用或者有問題。
    系統過載。
    調色板顏色數目有限。
    顯示分辨率過高或者過低。
    0-1-n 原則
    Mock對象:
    真實對象具有不可確定的行為(產生不可預測的結果,如股票行情)
    真實對象很難被創建
    真實對象的某些行為很難觸發(如網絡錯誤)。
    真實對象令程序的運行速度很慢。
    真實對象有(或者是)用戶界面。
    測試需要詢問真實對象它是如何被調用的(例如,測試可能需要驗證某個回調函數是否被調用了)。
    真實對象實際上并不存在(當需要和其他開發小組,或者新的硬件系統打交道的時候,這是一個普遍問題)。
    借助于mock對象,我們就可以解決上面提到的所有問題。在使用mock對象進行測試的時候,總共有3個步驟,分別是:
    1. 使用一個接口來描述這個對象。
    2. 為產品代碼實現這個接口。
    3. 以測試為目的,在mock對象中實現這個接口。
    mock提供了所有系統功能的現成接口,所以在更多的時候,人們可能(也許吧)會使用它而不是直接調用諸如System.currentTimeMillis()這樣的東西,而是躲在接口背后擁有了控制一切行為的能力。
    這就是mock對象的全部;偽裝出真實世界的某些部分,使你可以集中精力測試好自己編寫的代碼。讓我們接下來看看更加復雜的例子吧。
    好的測試是一個A-TPIP:
    1. 自動化 (Automatic).  調用測試自動化和檢查結果自動化。
    2. 徹底的 (Thorough).
    3. 可重復 (Repeatable).
    4. 獨立的 (Independent).
    5. 專業的 (Professional).
    在你發現bug時,所需要做的就是以下四個步驟:
    1.驗明bug;
    2.編寫一個將失敗的測試來證明bug的存在。
    3.修正代碼,讓測試通過。
    4.驗證所有的測試仍然可以通過(也就是,你沒有在修補的時候損壞其他的測試)。
    測試的頻率:
    1.編寫新的函數    編譯并運行本地的單元測試。
    2.修正bug    運行測試來讓bug現形;修并再次運行單元測試。
    3.每次成功編譯之后   運行本地的單元測試。
    4.每次對版本控制的簽入   運行所有的模塊或者系統的單元測試。
    5. 持續不斷地   應當有一臺專門的機器來運行完整的構建和測試。每次都應該從頭開始,并且整天自動運行(要么是周期性的,要么是每當有版本控制的簽入行為的時候)
    編碼和評審以這樣的順序進行:
    1. 編寫test case 和/或測試代碼。
    2. 評審test case 和/或測試代碼。
    3. 經評審修改test case 和/或測試代碼。
    4. 編寫能通過所有測試的產品代碼。
    5. 評審產品代碼和測試代碼。
    6. 在每次評審后,修改測試代碼和產品代碼。
    在某些機器上測試失?。?/span>
    這究竟是為什么呢?這些機器之間有什么區別呢?
    比較明顯的答案可能是下面這些資源的差異:操作系統版本號、運行庫、java運行引擎、數據庫驅動等。
    統一使用junit 方法的setup 和 tearDown方法。

    posted @ 2013-06-17 09:52 javalinjx 閱讀(321) | 評論 (0)編輯 收藏

    2013年1月6日

    2012年個人總結

       本來這個總結要到31號寫的,結果太忙了,到了今天才有時間做個總結。
       首先,工作上,從去年的PPM項目一直延續到今年4月份,終于暫時告一個段落了。基本上沒有什么收獲,架構陳舊,設計原始。。一向對于代碼要求相對比較嚴格的我,實在是重構到快吐了。耦合度太高了,不知道之前寫的人是怎么過來的,心里還挺佩服他可以把這個項目做出來??傮w上經歷了幾個項目的開發,實施。從java技術陣營出來,接觸到了C,C++,linux等技術,對于
    自己的技術儲備又增添了一磚,但都僅限于了解,還達不到熟悉水平。也許是自己就是喜歡java技術吧!
       今年基本上都在外奔波,我和老婆都在外面,話說那會兒她在帝都,我在天津,于是上半年經常兩地往返,京津高跌成了我最常用的交通工具:)
        從2011年來公司快兩年了,發現自己的開始技術上沒有太多的長進,只是自己平時出于對技術的愛好,才能勉強知道相關的新技術的發展,但是還是缺少實踐。也許再這樣下去,我就搞不了技術了。一直渴望有機會去淘寶一試,但是確由于種種原因未能達成。
       當然今年還有一件重要的事,我們買房了,正式告別了租房的時代,成為了房奴中的一員,哈!這一年,基本沒有關注其他的國事,或者經濟,當時釣魚島事情還是知道的。這一年中,從閱讀中得到了不少的收獲,看了劉未鵬的〈暗時間〉,看了李笑來的〈把時間當作朋友〉,為何我要提這兩本書呢,因為她們帶給我了比較多的幫助,雖然有些事情自己也是這么做著,但是卻沒有堅持,雖然一些事情一直在堅持,卻不知道為何要堅持!當然還有技術方面的書籍,這里我就不多說了,可以查看這里http://www.douban.com/people/davylin/ 。   
       今年才看了兩部電影(和老婆一起看的):一個是太極,一個是泰囧。話說這個太極真是讓人失望,感覺導演故意刪減了劇情。
       下面曬一下2012年的榜單:年度電影:泰囧;年度圖書:《暗時間》《把時間當作朋友》;年度音樂:我的歌聲里,因為愛情;年度技術:clojure(代表人物:dennis)。
       這一年中接觸到的新技術有nosql,node.js,clojure,當然還有hadoop,android,ios等等,但都僅限于了解,并沒有真正的開始實踐,也無從實踐,不知道是否有牛人可以指引。
       今年還參與了ROP的前期調研,本想參與開發,但后面卻不了了之。參與了anyous的android的客戶端開發,結果創新無門,但是現在還在繼續中。
       通過新浪微博,認識了很多淘寶系的牛人(這里不一一列舉),一步步向他們學習著,在接觸到的新技術中,不乏e文資料,深感個人英文水平是軟脅。特別是認識了美味系的相關名人,有dennis,sunng,還有胡狼拜月,哈哈,在人脈上似乎收獲不少,但是看過書上寫的,不是你認識的人多,還是認識你的人多了,才會成為真正的人脈。
       通過今天的學習,對于去年定下的目標基本上都達到了,但是對于java和oracle還是沒有達到自己認為應有的高度。(此時,taobao卻又在去O運動,這是鬧哪門子呢?。?/div>
       總之,有所得必有所失,今天失去的就是去老婆相處的時光,希望明天不要出差了:)
       下面說說2013年的展望:
       希望自己可以在所擅長的方向有所突破,可以在一個比較有潛力的團隊,使用自己喜歡的語言,對于技術人才高度重視的環境里繼續成長。希望可以去兩個地方好好休假,體驗美好的自然風光。希望交到一些志同道合的朋友,一起開創未來!
       

    posted @ 2013-01-06 14:16 javalinjx 閱讀(375) | 評論 (1)編輯 收藏

    2012年8月5日

    SQL 21 天自學通學習筆記 5

    1. 用戶操作:

     

        創建:


    1. CREATE USER user  
    2. IDENTIFIED {BY password | EXTERNALLY}  
    3. [DEFAULT TABLESPACE tablespace]  
    4. [TEMPORARY TABLESPACE tablespace]  
    5. [QUOTA {integer [K|M] | UNLIMITED} ON tablespace]  
    6. [PROFILE profile]  
     

     

        修改:

     

    1. ALTER USER user  
    2. [IDENTIFIED {BY password | EXTERNALLY}]  
    3. [DEFAULT TABLESPACE tablespace]  
    4. [TEMPORARY TABLESPACE tablespace]  
    5. [QUOTA {integer [K|M] | UNLIMITED} ON tablespace]  
    6. [PROFILE profile]  
    7. [DEFAULT ROLE { role [, role] ...  
    8. ALL [EXCEPT role [, role] ...] | NONE}]  
     

     

        刪除:

     

    1. DROP USER user_name [CASCADE]  
      

        授權,撤銷權限:

     

    1. GRANT role TO user [WITH ADMIN OPTION]  
    2.   
    3. REVOKE role FROM user  
     

     

        系統允許 賦于整個系統的權限給用戶,角色等:

     

    1. GRANT system_privilege TO {user_name | role | PUBLIC}  
    2. [WITH ADMIN OPTION]  
     

        如果使用了WITH ADMIN OPTION 選項就允許擁有該權限的人將該權限應用給其它

        的用戶。

     

     

        你可以使用下邊的GRANT 語句來對其它用戶授權訪問你的表

     

    1. GRANT {object_priv | ALL [PRIVILEGES]} [ (column  
    2. [, column]...) ]  
    3. [, {object_priv | ALL [PRIVILEGES]} [ (column  
    4. [, column] ...) ] ] ...  
    5. ON [schema.]object  
    6. TO {user | role | PUBLIC} [, {user | role | PUBLIC}] ...  
    7. [WITH GRANT OPTION]  
     

     

        如果你想取消對某個對象對于某人的授權你可以使用REVOKE 語句語法如下

     

    1. REVOKE {object_priv | ALL [PRIVILEGES]}  
    2. [, {object_priv | ALL [PRIVILEGES]} ]  
    3. ON [schema.]object  
    4. FROM {user | role | PUBLIC} [, {user | role | PUBLIC}]  
    5. [CASCADE CONSTRAINTS]  
      

    posted @ 2012-08-05 11:44 javalinjx 閱讀(263) | 評論 (0)編輯 收藏

    SQL 21 天自學通學習筆記 4

    1. insert select 用法:

     

    insert into tablename1 (col1,col2)

    select col1,col2 from tablename2 ;

     

    2.  刪除表:

     

    drop table ovner.tablename;

     

    3. 創建視圖:

     

    CREATE VIEW <view_name> [(column1, column2...)] AS

    SELECT <table_name column_names>

    FROM <table_name>

    在視圖的select 語句中使用約束是必然的,在使用select 語句中可以應用下邊兩個規則:

    a. 不能使用union操作;

    b. 不能使用order by 子句但是在視圖中使用group by 子句可以有order by 子句相同的功能;

     

    還要注意:1. 對于多表視圖你不能使用delete 語句;2.除非底層表的所有非空列都已經在視圖中

    出現,否則你不能使用insert語句;

     

    4. 索引  index:

     

    CREATE INDEX index_name ON table_name(column_name1, [column_name2], ...)

     

    CREATE INDEX  [schema.]index ON { [schema.]table (column [!!under!!ASC|DESC] [, column [!!under!!ASC|DESC]]  ...) | CLUSTER [schema.]cluster }

     

       當表被刪除時,所有與表相關的索引也將被刪除.

    posted @ 2012-08-05 11:23 javalinjx 閱讀(290) | 評論 (0)編輯 收藏

    2012年6月17日

    SQL 21 天自學通學習筆記 3

    1. STARTING WITH 子句 相當于like (**%);

     

    2. order by 子句

     

    3. group by 子句

     

    4. having 子句

     

    SQL> select team,avg(sickleave),avg(annualleave) from orgchart 

      2  group by team

      3  having avg(sickleave)>25 and avg(annualleave)<20;

     

    TEAM            AVG(SICKLEAVE) AVG(ANNUALLEAVE)

    --------------- -------------- ----------------

    RESEARCH                    27             14.5

    MARKETING       28.33333333333 15.3333333333333

     

    SQL> select * from orgchart;

     

    NAME            TEAM                  SALARY SICKLEAVE ANNUALLEAVE

    --------------- --------------- ------------ --------- -----------

    ADAMS           RESEARCH            34000.00        34          12

    WILKES          MARKETING           31000.00        40           9

    STOKES          MARKETING           36000.00        20          19

    MEZA            COLLECTIONS         40000.00        30          27

    MERRICK         RESEARCH            45000.00        20          17

    RICHARDSON      MARKETING           42000.00        25          18

    FURY            COLLECTIONS         35000.00        22          14

    PRECOURT        PR                  37500.00        24          24

     

    8 rows selected

     

     

    SQL> select team,avg(sickleave),avg(annualleave) from orgchart

      2  group by team having count (team)>1;

     

    TEAM            AVG(SICKLEAVE) AVG(ANNUALLEAVE)

    --------------- -------------- ----------------

    COLLECTIONS                 26             20.5

    RESEARCH                    27             14.5

    MARKETING       28.33333333333 15.3333333333333

     

     

    SQL> select team,avg(salary)from orgchart

      2  group by team having team in ('PR','RESEARCH');

     

    TEAM            AVG(SALARY)

    --------------- -----------

    PR                    37500

    RESEARCH              39500

     

     

     

     

    5. 兩者結合使用:

     

     

    SQL> select * from orgchart order by name desc;

     

    NAME            TEAM                  SALARY SICKLEAVE ANNUALLEAVE

    --------------- --------------- ------------ --------- -----------

    WILKES          MARKETING           31000.00        40           9

    STOKES          MARKETING           36000.00        20          19

    RICHARDSON      MARKETING           42000.00        25          18

    PRECOURT        PR                  37500.00        24          24

    MEZA            COLLECTIONS         40000.00        30          27

    MERRICK         RESEARCH            45000.00        20          17

    FURY            COLLECTIONS         35000.00        22          14

    ADAMS           RESEARCH            34000.00        34          12

     

    8 rows selected

     

    SQL> select payee,sum(amount)total,count(payee)number_written from checks 

      2  group by payee having sum(amount) > 50;

     

    PAYEE                                     TOTAL NUMBER_WRITTEN

    ------------------------------------ ---------- --------------

    Ma Bell                                  350.32              2

    Reading R.R.                             245.34              1

    Local Utilities                              98              1

    Joes Stale$ Dent                            150              1

     

    SQL> select payee,sum(amount) total,count(payee)number_written 

      2  from checks where amount >= 100 group by payee

      3  having sum(amount) > 50;

     

    PAYEE                                     TOTAL NUMBER_WRITTEN

    ------------------------------------ ---------- --------------

    Ma Bell                                  350.32              2

    Reading R.R.                             245.34              1

    Joes Stale$ Dent                            150              1

     

     

     where 子句與order by子句常在對單行進行處理時用到;

     group by 和 having子句常用在對數據進行匯總操作上。

    posted @ 2012-06-17 22:47 javalinjx 閱讀(295) | 評論 (0)編輯 收藏

    SQL 21 天自學通學習筆記 2

         摘要: 日期、時間函數: select * from project; 針對日期型: 1. add_months:  增加月份    select * from task,startdate,enddate,original_end,add_months(enddate,2) from project;     se...  閱讀全文

    posted @ 2012-06-17 22:46 javalinjx 閱讀(423) | 評論 (0)編輯 收藏

    SQL 21 天自學通學習筆記 1

    中午又看了一下匯總函數:

     

    count ,sum,avg,max,min,variance(方差),stddev

     

    1.  SELECT COUNT( ) FROM TEAMSTATS WHERE HITS/AB .35;  

     

    2.  SELECT SUM(SINGLES) TOTAL_SINGLES FROM TEAMSTATS;  //不能處理 字符型

     

    3.  SELECT AVG(SO) AVE_STRIKE_OUTS FROM TEAMSTATS;  //不能處理 字符型

     

    4.  SELECT MAX(HITS) FROM TEAMSTATS;

     

    5.  SELECT MIN(AB) FROM TEAMSTATS;  

     

    6.  SELECT VARIANCE(HITS) FROM TEAMSTATS;   //不能處理字符型

     

    7.  SELECT STDDEV(HITS) FROM TEAMSTATS;  //不能處理字符型

     

    8.  SELECT COUNT AB AVG(AB) MIN(AB) MAX(AB) STDDEV(AB)

     

         VARIANCE(AB) SUM(AB) FROM TEAMSTATS;

     

     

     注意:匯總函數不能放在where子句中使用,持續更新。。

    posted @ 2012-06-17 22:44 javalinjx 閱讀(240) | 評論 (0)編輯 收藏

    主站蜘蛛池模板: 亚洲国产最大av| 免费毛片在线看片免费丝瓜视频| 亚洲精品无码久久久久YW| 久久综合九九亚洲一区| 亚洲精品tv久久久久久久久久| 97无码免费人妻超级碰碰碰碰| 久久久久久久99精品免费| 国产免费播放一区二区| 亚洲av日韩精品久久久久久a| 亚洲国产午夜电影在线入口| 亚洲三级电影网址| 久久亚洲国产伦理| 亚洲人成网站在线观看播放| 亚洲国产精品毛片av不卡在线 | 亚洲?V无码成人精品区日韩| 久久精品无码一区二区三区免费| 18以下岁毛片在免费播放| 国产成人免费视频| 国产一级片免费看| 国产在线观看xxxx免费| 一本一道dvd在线观看免费视频 | 午夜福利不卡片在线播放免费| 久久久精品午夜免费不卡| 99在线热播精品免费99热| 成人网站免费大全日韩国产| 一级毛片aa高清免费观看| 成人免费视频一区二区| 免费精品国自产拍在线播放| 黄色一级视频免费| 日日摸夜夜添夜夜免费视频| 一区二区三区免费在线视频| 特黄特色的大片观看免费视频| 九九免费观看全部免费视频| jizz日本免费| 日韩av无码免费播放| 国产一区二区三区免费| 99ee6热久久免费精品6| 日本成年免费网站| 精品久久免费视频| 亚洲精品人成无码中文毛片| 亚洲男人的天堂在线va拉文 |