最近去一個公司面試

昨天去一個公司面試,要求就是Delphi兩年,精通MSSQL!到了公司與一個項目經理一翻“技術交流”,感覺在一些細節上,還是有一些差距!

其中,關於MSSQL,自認爲,用過4年多,不說精通,但是比較熟悉,但是還是被他的一些問題問的不知所措!

其一,建一個JOB用什麼SQL命令,聽着他說話的語氣,估計不是這種create job ...,呵,sp _ add _ job應該是正解!!雖然平時也用JOB,不太常用,用的時候大部分採用IDE(Enterprise Manager)做了,如果需要用SQL做的時候,HELP,或是GOOGLE還是能幫助解決問題!但是還是覺得細節的地方注意的不多!

其二,關於觸發器的工作原理,平時用觸發器的地方還蠻多的,但是具體的原理還是不是太清楚!正解應該是:

每個觸發器有兩個特殊的表:插入表和刪除表。這兩個表是邏輯表,並且這兩個表是由系統管理的,存儲在內存中,不是存儲在數據庫中,因此不允許用戶直接對其修改。這兩個表的結構總是與被該觸發器作用的表有相同的表結構。這兩個表是動態駐留在內存中的,當觸發器工作完成,這兩個表也被刪除。這兩個表主要保存因用戶操作而被影響到的原數據值或新數據值。另外,這兩個表是隻讀的,即用戶不能向這兩個表寫入內容,但可以引用表中的數據。例如可用如下語句查看DELETED 表中的信息:
select * from deleted
下面詳細介紹這兩個表的功能:

12.7.1 插入表的功能
    對一個定義了插入類型觸發器的表來講,一旦對該表執行了插入操作,那麼對向該表插入的所有行來說,都有一個相應的副本存放到插入表中。即插入表就是用來存儲向原表插入的內容。

12.7.2 刪除表的功能
    對一個定義了刪除類型觸發器的表來講,一旦對該表執行了刪除操作,則將所有的刪除行存放至刪除表中。這樣做的目的是,一旦觸發器遇到了強迫它中止的語句被執行時,刪除的那些行可以從刪除表中得以恢復。

    需要強調的是,更新操作包括兩個部分,即先將更新的內容去掉,然後將新值插入。因此對一個定義了更新類型觸發器的表來講,當報告會更新操作時,在刪除表中存放了舊值,然後在插入表中存放新值。

    由於觸發器僅當被定義的操作被執行時才被激活,即僅當在執行插入、刪除、和更新操作時,觸發器將執行。每條SQL 語句僅能激活觸發器一次,可能存在一條語句影響多條記錄的情況。在這種情況下就需要變量@@rowcount 的值,該變量存儲了一條SQL 語句執行後所影響的記錄數,可以使用該值對觸發器的SQL 語句執行後所影響的記錄求合計值。一般來說,首先要用IF 語句測試@@rowcount 的值以確定後面的語句是否執行。

 
其三,SQL中取消一個自增字段的自增標識,變發普通字段,SQL中的執行原理是什麼?這個問題沒弄過,由於手頭的SQL沒有安裝,我想用“跟蹤”看一下應該可以看到的!!!
以上,是主要的幾個方面,感覺在以後的CODING中,一些小的細節的地方應該注意!!

接下來的筆試(比較討厭筆試)

一些毛虎又讓自己感覺,工作中應該注意細節!

procedure a();

var vEdit: TEdit;

begin

  vEdit.caption := 'aaaa';

 ShowMessage('bbbb');

end;

運行結果是?我當時還想,爲啥出這個題呢!!後來想到了是vEdit的問題,看來自己真的很毛虎

其它的一些沒有什麼深度,數據庫的一些操作,insert ,update delete ,order by , select top ,group by ,having

自己的工作經驗挺長的了,但對一些小的地方,一些細節的地方還是做的不好,以後要加強

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章