2012年2月1日 星期三
【財經】IPO 是什麼,全名又是什麼?
今天看到FACEBOOK 2/1新聞來的名辭,好奇查了一下@@"
IPO是什麼?
指的是"首次公開發行股票詢價制"。就是說一個新發行股票的公司,要向一些大機構詢問發行價格,先確定一個上限
首次公開招股是指一家私人企業第一次將它的股份向公眾出售。通常,上市公司的股份是根據向相應證券會出具的招股書或登記聲明中約定的條款通過經紀商或做市商進行銷售。一般來說,一旦首次公開上市完成後,這家公司就可以申請到證券交易所或報價係統挂牌交易
IPO全名又是什麼?
全名:initial public offerings
中譯:首次公開發行股票
在西方發達國家,上市公司又可以稱作"公眾公司",即"Public Company",對應于"Private Company",也就是不上市的私營企業。所以發行股票叫做"Go Public",發行完了挂牌交易叫做"List",上市公司又叫做"Listed Company"。
2012年1月28日 星期六
【電影推薦】悲傷電影
三個故事
三個男女主角
好電影、好傷電影
看了別哭喔
電影名稱:悲傷電影
主演:李真佑--鄭雨盛 (宇成)、安秀晶--林秀晶
鄭何錫--車太鉉、全淑賢--孫太英
尚奎--李繼宇、安秀恩--辛敏雅
嚴珠英--廉靜雅、樸輝燦--餘珍久
2012年1月19日 星期四
2012年1月17日 星期二
【電影推薦】從心開始 Reign Over Me
心得:故事前面、中間很淡,內容講的很慢,卻在電影最後一節10分鐘講了以上那段話,讓我哭的亂七八糟。
2012年1月16日 星期一
Windows Service 2003 / SQL 2000 / IIS_Web 無法連線 1433 問題
剛安裝好以下設備,所出現問題
架設: A電腦
Windows Serivce 2003 / SQL 2000
架設: B電腦
Windows Serivce 2003 / IIS (Web Service)
兩層式架構
B電腦Web 抓不到連線,A電腦 SQL 2000 資料庫
原因: SQL 2000 必需要升級到 SP 4版本,Windows Service 2003 才能開Port 1433出來
SQL 2000 SP 4 升級完後,可以測試下指令
一、開始\執行\cmd
二、netstat -na
三、查閱有無1433 port 開放
以上動作就能解決 連線不到的問題
架設: A電腦
Windows Serivce 2003 / SQL 2000
架設: B電腦
Windows Serivce 2003 / IIS (Web Service)
兩層式架構
B電腦Web 抓不到連線,A電腦 SQL 2000 資料庫
原因: SQL 2000 必需要升級到 SP 4版本,Windows Service 2003 才能開Port 1433出來
SQL 2000 SP 4 升級完後,可以測試下指令
一、開始\執行\cmd
二、netstat -na
三、查閱有無1433 port 開放
以上動作就能解決 連線不到的問題
2012年1月7日 星期六
我的自足、自在、常樂
我天生資質普普,家庭給予我穩定的生活,感謝父母到不讓我為錢煩腦,三餐有著落,衣服有人洗,要吃飯時有飯吃,四肢健全及健康的身體!,現今吾長大了,獨立自主,不讓父母操心,養活自我,金錢而是身外之外(但沒錢還是要自己去賺錢),何必羨慕別人,人生該有的都有,已比其它人好上千萬倍了,要知足常樂,末須強求一切事物,要努力能會有收獲,要動頭腦才會有高收成,而不是看別人的好,靠人不如靠已,重要的是感謝一切那麼自然、自在!
2011年12月29日 星期四
Distinct 不能做到的 多欄 或 多個欄位 的 做法
Distinct 只能撈一個欄位出來,後面的連帶欄位無法撈出,所以我們用另外一種做法
假設【A1資料表】裡面有,編號有重複,要過濾編號又要最新的更改次數,連後面的【公司名稱、姓名、地址、電話】都要一併撈出
【做法】
From裡面 select 編號,Max(更新次數) from A1 group by 編號 建一個 【A2 資料表】
另外後面 再加上原本的 【A1 資料表名稱】
然後在 Where 比對我們要的最新資料
WHERE A2.編號 = A1編號 and a2.更新次數 = A1.更新次數
資料就能抓出來了
主要再於A2 只有撈兩個關鍵欄位,再去WHERE 裡面 比對資料
【研究花費我四個小時】
SQL指令如下:
SELECT 編號,公司名稱,姓名,地址,電話 from
(select 編號,Max(更新次數) from A1 group by 編號) A2 , A1
WHERE A2.編號 = A1編號 and a2.更新次數 = A1.更新次數
2011年12月28日 星期三
2004年 第一本 QBQ!問題背後的問題 心得
我最近在圖書館讀到一本書想推薦給大家
這是一本能解決問題的書,聽起來好像很棒的一本書,
因為你聽我講好像有翻就有答案出現的書,但答案卻在自己身上
書裡面所點出來的方法,卻是最難實踐~
這是2004年第一本 QBQ的書
書名:QBQ!問題背後的問題
出版:2004 年
如何讓問題找到答案,尋找答案中而碰到的礙障
我認為這本書,在把我的毛病挑出來,也在發覺我的毛病
也許有些人已經生活在這本QBQ法則裡面,我由心裡佩服他們
因為自我能不靠書籍而提升到某種境界,就是佛家的「悟、禪」之理
附件檔一:我做了一點心得記錄,也分享給大家!心得好像大多都是字,請多包涵~
附件檔二:我在網路找到的簡報,比較有趣一點!可以引起大家看這本書!
大家如果有好書也可以分享給我~
附件檔一:我的心得_QBQ問題背後的問題
附件檔二:有趣簡報_問題背後的問題
2011年12月18日 星期日
My dream - 我的夢想 Travel Guitar Person
2011/12/?
My dream is to travel all over th world.
Travel Guitar Person - Singing
1.Hoobastank - The Reason
2.山崎まさよし - one more time one more chance
3.Eric Clapton - Tears In Heaven
4.James Blunt - You're beautiful
5.Jonathan Rhys Meyers - This Time
6.Beck - slip out
7.Santana - Europa (演奏曲)
8.陳奕迅 - 好久不見
9.伍佰 - 如果這都不算愛
10.陳柏霖 - 我不會喜歡你
11.COLOR樂團 - 鐵人
12.乱彈阿翔 - 完美落地
13.自創曲 - 遺失的小孩
14.Jealous Guy
Guitar travel
My dream is to travel all over th world.
Travel Guitar Person - Singing
1.Hoobastank - The Reason
2.山崎まさよし - one more time one more chance
3.Eric Clapton - Tears In Heaven
4.James Blunt - You're beautiful
5.Jonathan Rhys Meyers - This Time
6.Beck - slip out
7.Santana - Europa (演奏曲)
8.陳奕迅 - 好久不見
9.伍佰 - 如果這都不算愛
10.陳柏霖 - 我不會喜歡你
11.COLOR樂團 - 鐵人
12.乱彈阿翔 - 完美落地
13.自創曲 - 遺失的小孩
14.Jealous Guy
Guitar travel
2011年12月12日 星期一
SQL 語法雜碎 - 字串處理
SQL 常用字串處理語法說明:包含 substring、left、right、upper、lower、ltrim、rtrim、、、
- 取字串中部分字元
- SELECT Mem_ID, substring(Mem_ID,4,6) AS MEM_ID_6 FROM members
- 語法:substring(欄位, 起始字元, 取幾字元)
- ex: A123456789 => substring(Id,4,6) => 456789
- 取左側字元
- SELECT LEFT(engname,5) FROM members
- 語法:left(欄位, 位數)
- ex: SELECT LEFT('abcdefghijk',5) => abcde
- 取右側字元
- SELECT RIGHT(engname,5) FROM members
- 語法:right(欄位, 位數)
- ex: SELECT RIGHT('abcdefghijk',5) => ghijk
- 字串大小寫轉換 upper、lower
- SELECT upper(engname) FROM members
- 語法:upper(欄位)
- ex: michael => upper => MICHAEL
- SELECT lower(engname) FROM members
- 語法:lower(欄位)
- ex: MICHAEL => lower => michael
- 去除無謂空白 ltrim、rtrim
- SELECT LTRIM(email) FROM members
- 語法:ltrim(欄位)
- ex: " abd@com" => ltrim => "abd@com"
- SELECT RTRIM(memo) FROM members
- 語法:rtrim(欄位)
- ex:"Have a nice day. " => rtrim =>"Have a nice day."
Reference : SQL 字串處理函式 http://technet.microsoft.com/zh-tw/library/ms181984.aspx
2011年12月5日 星期一
2011年11月30日 星期三
股票基本入門 2011.12.01 (二)
中鋼100年
配息1.99元x1000股=1990元
配股50股x目前股價29.35=1468元 ...(1990+1468)/(31x1000)=報酬率11%
31=是我的成本
為什麼中鋼要多點, 因為是半國營企業,官股,龍頭股,權值股, 一個字''穩''
正新100年
配息2元x1000股=2000元
配股200股x目前股價68.2=13640元 ...(2000+13640)/(61x1000)=報酬率26%
61=是我的成本
中華電100年
配息5.52元x1000股=5520元 ...5.52/股價100=報酬率6%
如果你所投資的公司有賺錢的話,公司通常會將扣除所有開銷後所得的純利潤分配給股東,這稱作股利。股利分為兩種:「現金股利」跟「股票股利」,或稱無償配股,現金股利指的就是公司發放的是現金,股票股利則指公司發放的是股票。當公司發放現金股利時,叫做除息;發放股票股利時,叫做除權。
除權參考價=前一日交易日收盤價/(1+配股率)
除息參考價=前一日交易日收盤價—現金股利
假如:除權息前一日收盤價 50元,除權 1元,跟除息 1元
※1.只除權 1元,50 / ( 1 + 0.1 ) = 45.45元
其中( 1 + 0.1 )的意思是
原股數為 1,無償配股 1元,每股 10元,所以 1 / 10 = 0.1
每 1股配發 0.1股,原來的 1股變成 1.1股。
※2.只除息 1元,50 - 1 = 49元
※3.除權息各 1元,( 50 - 1 ) / 1.1 = 44.54元
除權息之後,您手上的股票市值是不會變的。
也就是說除權息不能讓你賺錢,讓你賺錢的是配完權息後,股票的漲跌
2011年11月26日 星期六
無法存取 IIS Metabase [xp iis vs2010]
IIS 顯示這行訊息... 無法存取 IIS Metabase
無法存取 IIS Metabase。
描述: 在執行目前 Web 要求的過程中發生未處理的例外情形。請檢閱堆疊追蹤以取得錯誤的詳細資訊,以及在程式碼中產生的位置。
例外詳細資訊: System.xxxxxxxxxxxxxx: 無法存取 IIS Metabase。
用來執行 ASP.NET 的處理序帳戶必須擁有 IIS Metabase (例如 IIS://servername/W3SVC) 的讀取權限。如需修改 Metabase 使用權限的詳細資訊,請參閱 http://support.microsoft.com/?kbid=267904。
後來找到資料是說...重新安裝一次 .net framework就可以了
所以步驟為下...
開始 -> Microsoft Visual Studio -> Visual Studio Tools -> Visual Studio Command Prompt (Visual Studio 2008 命令提示字元) 中執行
aspnet_regiis -i
重新啟動IIS 就正常了....
無法存取 IIS Metabase。
描述: 在執行目前 Web 要求的過程中發生未處理的例外情形。請檢閱堆疊追蹤以取得錯誤的詳細資訊,以及在程式碼中產生的位置。
例外詳細資訊: System.xxxxxxxxxxxxxx: 無法存取 IIS Metabase。
用來執行 ASP.NET 的處理序帳戶必須擁有 IIS Metabase (例如 IIS://servername/W3SVC) 的讀取權限。如需修改 Metabase 使用權限的詳細資訊,請參閱 http://support.microsoft.com/?kbid=267904。
後來找到資料是說...重新安裝一次 .net framework就可以了
所以步驟為下...
開始 -> Microsoft Visual Studio -> Visual Studio Tools -> Visual Studio Command Prompt (Visual Studio 2008 命令提示字元) 中執行
aspnet_regiis -i
重新啟動IIS 就正常了....
2011年11月24日 星期四
C# SqlTransaction 交易方式
SqlConnection conn = new SqlConnection(System.Web.Configuration.WebConfigurationManager.ConnectionStrings["DBconnStr"].ToString());
2 conn.Open();
3 SqlCommand command = new SqlCommand();
4 SqlTransaction transaction;
5 //Start Transaction
6 transaction = conn.BeginTransaction();
7 command.Connection = conn;
8 command.Transaction = transaction;
9 try
10 {
11 for (int i = 0; i < 5; i++)
12 {
13 command.CommandText = "insert into demouser values(newid(),'TestBatch')";
14 command.ExecuteNonQuery();
15 }
16 //Commit
17 transaction.Commit();
18 }
19 catch (Exception ex)
20 {
21 //有問題即Rollback
22 transaction.Rollback();
23 }
24 command.Connection.Close();
2 conn.Open();
3 SqlCommand command = new SqlCommand();
4 SqlTransaction transaction;
5 //Start Transaction
6 transaction = conn.BeginTransaction();
7 command.Connection = conn;
8 command.Transaction = transaction;
9 try
10 {
11 for (int i = 0; i < 5; i++)
12 {
13 command.CommandText = "insert into demouser values(newid(),'TestBatch')";
14 command.ExecuteNonQuery();
15 }
16 //Commit
17 transaction.Commit();
18 }
19 catch (Exception ex)
20 {
21 //有問題即Rollback
22 transaction.Rollback();
23 }
24 command.Connection.Close();
2011年11月22日 星期二
OFFICE OWC (Office Web Components)
相關教學連結:http://www.cnblogs.com/brucenan999/archive/2008/10/28/1321125.html
EXCEL
OWC :全名(Office Web Components)
只支援到OFFICE 2003 版本: OWC 12 版 (OWC 9、OWC 10、OWC11、OWC12)
每個版本對應的【CLSID】都不一樣,元件安裝也不一樣
使用方式,必需安裝OFFICE ,要不然就是要上微軟下載 OWC 來安裝使用
OWC9 spreadsheet升級至OWC11的若干問題.
由於現有系統從OWC9升級至OWC11,遇到一些小問題,記錄如下,供參考:
1. COM組件升級
OWC9的CLSID是0002E510-0000-0000-C000-000000000046
OWC11的CLSID是0002E559-0000-0000-C000-000000000046,直接替換.當然機子上要裝上OWC11的組件.
2. 自動行列寬度調整
OWC9中的AutoFitColumns()改為Columns.AutoFit()
3. 鎖定單元格
OWC9: Spreadsheet1.Activesheet.Range("").FreezePanes(X)
OWC11: Spreadsheet1.ActiveSheet.Range("").Select();
Spreadsheet1.ActiveWindow.FreezePanes = true
4. 位置
OWC9中的HAlignment調整為OWC11的HorizontalAlignment
值為Constants.xlHAlignRight, xlHAlighLeft and so on.
5. 邊線
OWC9中的Borders.LineStyle = owcLineStyleSolid值改為Constants.xlContinuous
關於這一點,有點疑問,在OWC11的說明文檔中,OWC9中支持的owcLineStyleSolid常量還有有描述的,但是在OWC11中使用總是出錯,而改為xlContinuous等類型即可,不知道是怎麼回事,還望知情人共享,謝謝.
版本 類別字串 說明 Office (2000-2002)
9.0 0002E500-0000-0000-C000-000000000046
【office 2000】
0002E510-0000-0000-C000-000000000046
10.0
0002E556-0000-0000-C000-000000000046
11.0
0002E55D-0000-0000-C000-000000000046
【XP】
0002E559-0000-0000-C000-000000000046
EXCEL
OWC :全名(Office Web Components)
只支援到OFFICE 2003 版本: OWC 12 版 (OWC 9、OWC 10、OWC11、OWC12)
每個版本對應的【CLSID】都不一樣,元件安裝也不一樣
使用方式,必需安裝OFFICE ,要不然就是要上微軟下載 OWC 來安裝使用
OWC9 spreadsheet升級至OWC11的若干問題.
由於現有系統從OWC9升級至OWC11,遇到一些小問題,記錄如下,供參考:
1. COM組件升級
OWC9的CLSID是0002E510-0000-0000-C000-000000000046
OWC11的CLSID是0002E559-0000-0000-C000-000000000046,直接替換.當然機子上要裝上OWC11的組件.
2. 自動行列寬度調整
OWC9中的AutoFitColumns()改為Columns.AutoFit()
3. 鎖定單元格
OWC9: Spreadsheet1.Activesheet.Range("").FreezePanes(X)
OWC11: Spreadsheet1.ActiveSheet.Range("").Select();
Spreadsheet1.ActiveWindow.FreezePanes = true
4. 位置
OWC9中的HAlignment調整為OWC11的HorizontalAlignment
值為Constants.xlHAlignRight, xlHAlighLeft and so on.
5. 邊線
OWC9中的Borders.LineStyle = owcLineStyleSolid值改為Constants.xlContinuous
關於這一點,有點疑問,在OWC11的說明文檔中,OWC9中支持的owcLineStyleSolid常量還有有描述的,但是在OWC11中使用總是出錯,而改為xlContinuous等類型即可,不知道是怎麼回事,還望知情人共享,謝謝.
版本 類別字串 說明 Office (2000-2002)
9.0 0002E500-0000-0000-C000-000000000046
【office 2000】
0002E510-0000-0000-C000-000000000046
10.0
0002E556-0000-0000-C000-000000000046
11.0
0002E55D-0000-0000-C000-000000000046
【XP】
0002E559-0000-0000-C000-000000000046
2011年11月21日 星期一
富爸爸,窮爸爸
2011年11月19日 星期六
轉載:如何安裝market app 到 android 2.3 emulator
模擬器沒有 market app 總是有種空洞感, 茲感謝國外能人, 已能安裝在最新的Android 2.3 SDK.
真期待3.0 honeybomb 版~ 可惜還沒看到.
以下為安裝 market app 到 android 2.2/2.3 的安裝說明
1. Download and install Android SDK. 下載安裝 android SDK. (設定android emulator 教學如後 how to set up an Android Emulator)
2. 到目錄 …….\android-sdk_r08-windows\android-sdk-windows\platforms\android-9\images (預設資料夾, 多會在我的文件, downloads 資料夾內 SDK Platform Android 2.3, API 9, revision 1), 複製 system.img, 貼到 C:\Users\Username\.android\avd\Emulator’s name.avd
3. 下載以下三個檔案: Vending.apk, GoogleServicesFramework.apk and ADB.zip ;下載完解壓縮後將三個檔案放到 …….\android-sdk_r08-windows\android-sdk-windows\tools. (在 Android 2.3 SDK, adb files 被移到其他的目錄, anyway, 懶的深究, 照做可行就是了)
3. 按 Winkey+R, 鍵入 cmd 按 Enter. 叫出 command prompt DOS 視窗, 接著到以下目錄 …….\android-sdk_r08-windows\android-sdk-windows\tools (提醒, 按 cc .. (回上層目錄) 或 cd 目錄名稱 來移動).
4. 鍵入: emulator –avd tech-recipes –partition-size 100 and hit Enter ( tech-recipes 指的是你的 emulator 的名稱). 這個指令是叫出 android emulator. (請不要用SDK manager 來叫出android emulator, 會無法完成安裝.)
5. 再叫出另一個command prompt window (DOS 視窗), 到以下目錄 …….\android-sdk_r08-windows\android-sdk-windows\tools , 鍵入 adb -s emulator-5554 shell 並按 Enter
(模擬器emulator 要完全啓動完成, 並注意模擬器的編號 (多為5554) 鍵入 mount 按 Enter. 以下畫面會出現, 請找 /dev/block/mtdblock0 /system yaffs2 ro 00.
6. 鍵入 mount -o remount,rw -t yaffs2 /dev/block/mtdblock0 /system 按 Enter. 會重啓系統並進入 read-write 模式. (因為我們將要複製一些檔案到 /system/app ) 鍵入 chmod 777 /system/app 按 Enter. 接著離開, 鍵入 exit, 按 Enter. 流程會像以下圖示:
7. 此步驟, 我們將複製 Vending.apk 與 GoogleServicesFramework.apk 到 /system/app. 在第二個 command prompt window(DOS 視窗), 鍵入 adb -s emulator-5554 push Vending.apk /system/app/ 按 Enter. 同樣地, 另一個檔案也用同樣方式鍵入 adb -s emulator-5554 push GoogleServicesFramework.apk /system/app/. 按 Enter. 流程如下圖:
8. 現在,自 /system/app 移除 SdkSetup.apk (如果不移除, 下次SDK重啓會還原設定). 在第二個 command prompt window(DOS 視窗), 鍵入 adb shell rm /system/app/SdkSetup.apk , 按 Enter.
9. 關掉模擬器
10. 到 C:\Users\Username\.android\avd\Emulator’s name.avd 目錄並刪除下面二個檔案: userdata-qemu.img and cache.img. 啓動你的android emulator, 你會發現 Android Market 已經安裝成功了 ^^
轉載:http://dontung.wordpress.com/2011/03/14/hello-world/
真期待3.0 honeybomb 版~ 可惜還沒看到.
以下為安裝 market app 到 android 2.2/2.3 的安裝說明
1. Download and install Android SDK. 下載安裝 android SDK. (設定android emulator 教學如後 how to set up an Android Emulator)
2. 到目錄 …….\android-sdk_r08-windows\android-sdk-windows\platforms\android-9\images (預設資料夾, 多會在我的文件, downloads 資料夾內 SDK Platform Android 2.3, API 9, revision 1), 複製 system.img, 貼到 C:\Users\Username\.android\avd\Emulator’s name.avd
3. 下載以下三個檔案: Vending.apk, GoogleServicesFramework.apk and ADB.zip ;下載完解壓縮後將三個檔案放到 …….\android-sdk_r08-windows\android-sdk-windows\tools. (在 Android 2.3 SDK, adb files 被移到其他的目錄, anyway, 懶的深究, 照做可行就是了)
3. 按 Winkey+R, 鍵入 cmd 按 Enter. 叫出 command prompt DOS 視窗, 接著到以下目錄 …….\android-sdk_r08-windows\android-sdk-windows\tools (提醒, 按 cc .. (回上層目錄) 或 cd 目錄名稱 來移動).
4. 鍵入: emulator –avd tech-recipes –partition-size 100 and hit Enter ( tech-recipes 指的是你的 emulator 的名稱). 這個指令是叫出 android emulator. (請不要用SDK manager 來叫出android emulator, 會無法完成安裝.)
5. 再叫出另一個command prompt window (DOS 視窗), 到以下目錄 …….\android-sdk_r08-windows\android-sdk-windows\tools , 鍵入 adb -s emulator-5554 shell 並按 Enter
(模擬器emulator 要完全啓動完成, 並注意模擬器的編號 (多為5554) 鍵入 mount 按 Enter. 以下畫面會出現, 請找 /dev/block/mtdblock0 /system yaffs2 ro 00.
6. 鍵入 mount -o remount,rw -t yaffs2 /dev/block/mtdblock0 /system 按 Enter. 會重啓系統並進入 read-write 模式. (因為我們將要複製一些檔案到 /system/app ) 鍵入 chmod 777 /system/app 按 Enter. 接著離開, 鍵入 exit, 按 Enter. 流程會像以下圖示:
7. 此步驟, 我們將複製 Vending.apk 與 GoogleServicesFramework.apk 到 /system/app. 在第二個 command prompt window(DOS 視窗), 鍵入 adb -s emulator-5554 push Vending.apk /system/app/ 按 Enter. 同樣地, 另一個檔案也用同樣方式鍵入 adb -s emulator-5554 push GoogleServicesFramework.apk /system/app/. 按 Enter. 流程如下圖:
8. 現在,自 /system/app 移除 SdkSetup.apk (如果不移除, 下次SDK重啓會還原設定). 在第二個 command prompt window(DOS 視窗), 鍵入 adb shell rm /system/app/SdkSetup.apk , 按 Enter.
9. 關掉模擬器
10. 到 C:\Users\Username\.android\avd\Emulator’s name.avd 目錄並刪除下面二個檔案: userdata-qemu.img and cache.img. 啓動你的android emulator, 你會發現 Android Market 已經安裝成功了 ^^
轉載:http://dontung.wordpress.com/2011/03/14/hello-world/
2011年11月17日 星期四
vs 2010 標籤 規範需要加入 alt屬性 ie7狀態下
最近遇到一個問題, 就是標籤中的alt屬性並不會顯示在畫面中(我的環境是XP/IE7)
但是不加alt屬性, VS2008執行網頁時會出現警告如下
警告 1 驗證 (XHTML 1.0 Transitional): 'img' 項目遺漏必要的 'alt' 屬性。
google的結果如下,
alt的屬性在W3C定義中是用在當圖片無法正常顯示時, 用來替代的文字
我故意將標籤中的src屬性修改成不存在的檔名, 並定義alt內容如下
執行結果(環境XP/IE7下執行)
1.JPG (2.25 KiB) 被瀏覽 146 次
但是經測試IE6, IE7, IE8後發現, 在IE6及IE8環境下的alt屬性會被直接當作title來使用, 但是alt並不是title
為了避免每當使用標籤時就會出現警告訊息及配合IE6/IE8的顯示方式(只有IE6/IE8會莫名其妙的直接把alt當title來秀...), 請使用標籤時記得加上
alt=""
若是有使用畫面說明的需求(如下圖), 請一律使用title屬性來達到需求, 不要直接利用alt屬性(因為IE7及其他瀏覽器並不會顯示出alt)
2.JPG (8.93 KiB) 被瀏覽 146 次
總結, 達到上圖中的效果, HTML語法應如下
*未考慮資源檔貼字
以上
三商電腦股份有
但是不加alt屬性, VS2008執行網頁時會出現警告如下
警告 1 驗證 (XHTML 1.0 Transitional): 'img' 項目遺漏必要的 'alt' 屬性。
google的結果如下,
alt的屬性在W3C定義中是用在當圖片無法正常顯示時, 用來替代的文字
我故意將標籤中的src屬性修改成不存在的檔名, 並定義alt內容如下
執行結果(環境XP/IE7下執行)
1.JPG (2.25 KiB) 被瀏覽 146 次
但是經測試IE6, IE7, IE8後發現, 在IE6及IE8環境下的alt屬性會被直接當作title來使用, 但是alt並不是title
為了避免每當使用標籤時就會出現警告訊息及配合IE6/IE8的顯示方式(只有IE6/IE8會莫名其妙的直接把alt當title來秀...), 請使用標籤時記得加上
alt=""
若是有使用畫面說明的需求(如下圖), 請一律使用title屬性來達到需求, 不要直接利用alt屬性(因為IE7及其他瀏覽器並不會顯示出alt)
2.JPG (8.93 KiB) 被瀏覽 146 次
總結, 達到上圖中的效果, HTML語法應如下
*未考慮資源檔貼字
以上
三商電腦股份有
img 的 alt 屬性和 title 屬性的差異
img
可以下 alt
屬性,也可以下 title
屬性。兩者的差異其實很微妙…alt
屬性是當這張圖被刪掉、叉燒包、網路壞掉等狀況,反正無法顯示時,顯示給瀏覽器及瀏覽者的「替代文字」( ALTernate text )。title
屬性是當滑鼠游標移過去 (mouseover) 的時候,顯示在圖案旁邊的「標題」;很多標籤都可以使用這個屬性,例如 a
也可以。當
img
只有指定 alt
屬性時,原本應該要在圖片變成叉燒包時才顯示出來。但 ie 卻把 alt
當成 alt+title 來用,所以當圖有正常顯示的時候,也會把 alt
屬性的內容以 title
的方式顯示出來…Meta 指令運用
meta 是用來在HTML文檔中模擬HTTP協議的響應頭報文,放於網頁中的與間。
meta 的屬性有name和http-equiv兩種,name屬性主要用於描述網頁性質並對應於content(網頁內容),以方便搜索引擎機器人(網站蜘蛛)查找及分類(目前幾乎所有的搜索引擎都使用網上機器人自動查找meta值來給網頁分類)。
讓搜索引擎容易找到您:
語法範例
網頁內文關鍵字,可使用中、英文均可
每個關鍵字用逗號(,)隔開;最好不要加上空白,例如:"key word keyword",因有些搜尋引擎會將它們視為三個不同的字,有些搜尋引擎會把它們當成一個字(視空白為一個字母)。理論上,您可以加上無數個和您的網頁有關的關鍵字。
阻擋所有的網路蜘蛛找到您:
name="robots"的屬性說明如下:
all:文件將被檢索,且頁面上的鏈接可以被查詢;
none:文件將不被檢索,且頁面上的鏈接不可以被查詢;
index:文件將被檢索;
follow:頁面上的鏈接可以被查詢;
noindex:文件將不被檢索,但頁面上的鏈接可以被查詢;
nofollow:文件將不被檢索,頁面上的鏈接可以被查詢。
語法範例
...
將上述起始的語法放置在網頁區段中,這個頁面就不會搜尋到,NAME的部份使用「robots」即可阻擋所有的網路蜘蛛,也可以指定特定名稱,例如Googlebot或Yahoo!Slurp,就可阻擋特定網站蜘蛛。CONTENT可指定noindex、nofollow等兩個屬性,noindex意指不可對本頁進行索引動作,nofollow指的是否可使用本頁的超連結再延伸出去擷取搜尋。
標示網頁語言文字編碼:
上例為每15秒自動重新整理(refresh)網頁一次。您若希望網頁每五分鐘自動更新一次,就設定CONTENT="300"(5x60秒=300)。
自動轉址功能:
如果您須要進入網頁的訪客自動被導引至另一個網址時,就可利用網頁自動更新的語法做自動轉址的動作,如下:
如果您要顯示網站搬家訊息給訪客,可以設定停3至10秒以便顯示一段搬家訊息後再轉址,也可以設定為0秒,立即轉址。
網頁有效時期:
Expired 網頁終止標示
01-jan-2002 00:00:01 詳細日期時間
網頁完成時間:
Creation-Date 創作日期標示
01-jan-2001 14:41:01 詳細日期時間
網站相關內容描述:
Description 內容的主要描述
標示網頁作者:
標註本網頁作者姓名等資料
用何編輯器完成的網頁:
meta 的屬性有name和http-equiv兩種,name屬性主要用於描述網頁性質並對應於content(網頁內容),以方便搜索引擎機器人(網站蜘蛛)查找及分類(目前幾乎所有的搜索引擎都使用網上機器人自動查找meta值來給網頁分類)。
- 它必須放於與之間,主要用於本網頁的內容說明,以利自己或別人(搜索引擎)使用,另外也可以製造出一些自動翻頁等特殊效果。
- http-equiv或NAME屬性,必須配合content屬性使用,兩者也可互替使用。
- 後設語法標籤(META description tag)的用法隨各搜索引擎設定有所不同。
- 有無Meta標籤,並不影響網頁正常顯示,其最大目的在於提供網頁各種資訊及產生特殊效果。
讓搜索引擎容易找到您:
語法範例
網頁內文關鍵字,可使用中、英文均可
每個關鍵字用逗號(,)隔開;最好不要加上空白,例如:"key word keyword",因有些搜尋引擎會將它們視為三個不同的字,有些搜尋引擎會把它們當成一個字(視空白為一個字母)。理論上,您可以加上無數個和您的網頁有關的關鍵字。
阻擋所有的網路蜘蛛找到您:
name="robots"的屬性說明如下:
all:文件將被檢索,且頁面上的鏈接可以被查詢;
none:文件將不被檢索,且頁面上的鏈接不可以被查詢;
index:文件將被檢索;
follow:頁面上的鏈接可以被查詢;
noindex:文件將不被檢索,但頁面上的鏈接可以被查詢;
nofollow:文件將不被檢索,頁面上的鏈接可以被查詢。
語法範例
將上述起始的語法放置在網頁區段中,這個頁面就不會搜尋到,NAME的部份使用「robots」即可阻擋所有的網路蜘蛛,也可以指定特定名稱,例如Googlebot或Yahoo!Slurp,就可阻擋特定網站蜘蛛。CONTENT可指定noindex、nofollow等兩個屬性,noindex意指不可對本頁進行索引動作,nofollow指的是否可使用本頁的超連結再延伸出去擷取搜尋。
標示網頁語言文字編碼:
- Content-Type 文件內容格式
- text/html 純文字/超文字
- charset 字元組big5為中文繁體大五碼,如用iso-2022-jp是指日文
上例為每15秒自動重新整理(refresh)網頁一次。您若希望網頁每五分鐘自動更新一次,就設定CONTENT="300"(5x60秒=300)。
自動轉址功能:
如果您須要進入網頁的訪客自動被導引至另一個網址時,就可利用網頁自動更新的語法做自動轉址的動作,如下:
如果您要顯示網站搬家訊息給訪客,可以設定停3至10秒以便顯示一段搬家訊息後再轉址,也可以設定為0秒,立即轉址。
網頁有效時期:
Expired 網頁終止標示
01-jan-2002 00:00:01 詳細日期時間
網頁完成時間:
Creation-Date 創作日期標示
01-jan-2001 14:41:01 詳細日期時間
網站相關內容描述:
Description 內容的主要描述
標示網頁作者:
標註本網頁作者姓名等資料
用何編輯器完成的網頁:
- 標註本網頁作者姓名等資料
- Generator 編輯器
- Mozilla/3.0Gold(Win95)[Netscape] 編輯器等版本說明
- http-equiv="Page-Enter是進入本頁、Page-Exit是離開本頁、Site-Enter是進入本站、Site-Exit是離開本站"。
- content="revealTrans(指定換頁特效)、blendTrans(設定換頁特效為"混合")。
- Duration=設定特效持續的時間(秒),建議在3-5秒之間。
- Transition=以0-23代替特效,如附表及範例。
2011年11月7日 星期一
MS SQL 200 資料型態
資料型態:
資料型態 | 說明 | 範例 |
INT | 長度為 4 個 bytes;介於 -2,147,483,648 與 2,147,483,647 間的整數 | |
SMALLINT | 長度為 2 個 bytes;介於 -32,768 與 32,767 間的整數 | |
TINYINT | 長度為 1 個 bytes;介於 0 與 255 間的整數 | |
BIGINT | 長度為 8 個 bytes;介於 -2^63 與 2^63-1 間的整數 | |
FLOAT[(n)] | n 是儲存 float 數字的小數位數,介於 1 與 53 間; 若 n 介於 1 與 24 間,儲存大小為 4 個 bytes,有效位數為 7 位數;若 n 介於 25 與 53 間,儲存大小為 8 個 bytes,有效位數為 15 位數 | create table p_ex (num1 real, num2 float) insert into p_ex values(4000000.123456789, 4000000.123456789012345) insert into p_ex values(400.123456789, 400.1234567890123456789) select * from p_ex // real 共顯示八位數,float 共顯示 17 位數 |
REAL | 長度為 4 個 bytes;介於 -3.4E-38 與 3.4E+38 間的浮點數;與 FLOAT(24) 相同 | |
DECIMAL[(p[,s])] | 使用 2 到 17 個 bytes 來儲存資料,可儲存的值介於 -1038-1 與 1038-1 之間;p 用來定義小數點兩邊可以被儲存的位數總數目,而 s 代表小數點右邊的有效位數(s < p);p的預設值為 18 而 s 的預設值為0 | create table p_ex (num1 numeric(19,9), num2 decimal) insert into p_ex values(4000000.123456789, 4000000.123456789012345) select * from p_ex |
NUMERIC[(p[,s])] | 與 DECIMAL[(p[,s])] 同 | |
CHAR[(n)] | 固定長度為 n 的字元型態,n 必須介於 1 與 8000 之間 | |
VARCHAR[(n)] | 與 CHAR 相同,只是若輸入的資料小於 n,資料庫不會自動補空格,因此為變動長度之字串 | |
NCHAR 與 NVARCHAR | 與 CHAR 以及 VARCHAR 相同,只是每一個 字元為兩個 bytes 的 unicode,且 n 最大為 4000 | |
DATETIME | 長度為 8 個 bytes;介於 1/1/1753 與 12/31/9999 間的日期時間 | |
SMALLDATETIME | 長度為 4 個 bytes;介於 1/1/1900 與 6/6/2079間的日期時間 | create table d_ex (d1 datetime, d2 smalldatetime) insert into d_ex values ('1/1/1753', 'Jan 2 1900') select * from d_ex |
MONEY | 長度為 8 個 bytes 的整數,小數點的精確度取四位 | |
SMALLMONEY | 長度為 4 個 bytes 的整數,小數點的精確度取四位 | |
BIT | 只佔用一個位元,且不允許存放 NULL 值 | |
BINARY[(n)] | 固定長度為 n+4 個 bytes; n 為 1 到 8000 的值,輸入的 值必需符合兩個條件: (1) 每一個值皆為 0-9、a-f 的值;(2)每一個值的前面必須有 0X | create table b_ex (x binary(1), y binary(2)) insert into b_ex values(0x0, 0x0) insert into b_ex values(0x1, 0x1) insert into b_ex values(0xff, 0xff) insert into b_ex values(0xfff, 0xfff) insert into b_ex values(0xff, 0xfff) insert into b_ex values(0xffff, 0xffff) insert into b_ex values(0xff, 0xffff) select * from b_ex |
VARBINARY[(n)] | 與 BINARY 相同,只是若輸入的資料小於 n,資料庫 不會自動補 0,因此長度為變動的 | |
TEXT | 用來儲存大量的(可高達兩億個位元組)字元資料,儲存空間 以 8k 為單位動態增加 | |
NTEXT | 和 TEXT 雷同,只是儲存的是 Unicode 資料 | |
IMAGE | 和 TEXT 雷同,只是儲存的是影像資料 | |
SQL_VARIANT | 此資料型別可儲存 text、ntext、timestamp 與 sql_variant以外的各種 SQL Server 支援的資料型別。 | a sql_variant column can contain smallint values for some rows, float values for other rows, and char/nchar values in the remainder.create table b_ex (x int, y sql_variant) insert into b_ex values(5, '五十') insert into b_ex values(6, 60) select * from b_ex |
MSSQL 簡體字存入亂碼解決方式
資料庫型態須定義為 ntext 或是 nchar , nvarchar
若定義成一般習慣前面未加 'n' 將只能放本國語系的文字
如果簡體字存入就會變成 '?'
而當 Insert 或是 UPDATE 資料時直接將簡體資料寫入也會變成 '?'
寫法必須改為 INSERT INTO table_name(test) VALUES(N'测试')
在寫入的資料前要加 N 他在存入資料庫時才會去呼掉到擴充字集..
如未加 N 他則是使用 big-5 字集...如果使用 .Net 裡面的 DataApdater 來
Update 資料也要注意 Parameters 裡面的關於每個參數的型態設定..
若定義成一般習慣前面未加 'n' 將只能放本國語系的文字
如果簡體字存入就會變成 '?'
而當 Insert 或是 UPDATE 資料時直接將簡體資料寫入也會變成 '?'
寫法必須改為 INSERT INTO table_name(test) VALUES(N'测试')
在寫入的資料前要加 N 他在存入資料庫時才會去呼掉到擴充字集..
如未加 N 他則是使用 big-5 字集...如果使用 .Net 裡面的 DataApdater 來
Update 資料也要注意 Parameters 裡面的關於每個參數的型態設定..
股票基本入門 2011.11.07 (一)
買進時需(手續費):0.001,425元
賣出時需(手續費):0.001,425元
賣出時需付(證交所稅)0.003元
以上總計 0.0585(基本費用)
1股10元,一張股票1000股
假設:1股10塊錢
你買進1張股票 =1,000股
買:1,000 X 10 X 0.001,425 = 14.25 元手續費
補允說明:14.25元手續費 但最低手續費不買20塊,都收20塊
補允建議:你還是湊買 20塊比較省點錢
每家證券行都有下單手續費 2.5~6折
以剛算的買進:14.25(手續費 ) X 0.6 = 8.55 (折古後手續費)
但是給你打六折手續費也沒用,因為基本手續費就20塊(哈哈哈)
買跟賣一樣都要手續費
賣的時候要多加一個證券交易稅(0.003元)
假設:1,000股 X 10 X 0.00,1425 = 14.25 元 (不足20元,自動調整20元)
100,000 - 20 = 99,980 元
9980 X 0.003 (證券費) = 29.94 元
所以 20 X 2(買.賣) + 29.94 = 69.94 (四捨五入進位:70元)
以上就是演算法,請參考
賣出時需(手續費):0.001,425元
賣出時需付(證交所稅)0.003元
以上總計 0.0585(基本費用)
1股10元,一張股票1000股
假設:1股10塊錢
你買進1張股票 =1,000股
買:1,000 X 10 X 0.001,425 = 14.25 元手續費
補允說明:14.25元手續費 但最低手續費不買20塊,都收20塊
補允建議:你還是湊買 20塊比較省點錢
每家證券行都有下單手續費 2.5~6折
以剛算的買進:14.25(手續費 ) X 0.6 = 8.55 (折古後手續費)
但是給你打六折手續費也沒用,因為基本手續費就20塊(哈哈哈)
買跟賣一樣都要手續費
賣的時候要多加一個證券交易稅(0.003元)
假設:1,000股 X 10 X 0.00,1425 = 14.25 元 (不足20元,自動調整20元)
100,000 - 20 = 99,980 元
9980 X 0.003 (證券費) = 29.94 元
所以 20 X 2(買.賣) + 29.94 = 69.94 (四捨五入進位:70元)
以上就是演算法,請參考
2011年11月6日 星期日
乾巧人之星巴克買一送一個方法
乾巧人之星巴克買一送一個方法
星巴克到今年年底, 持iBon的票根, 就可以到星巴克買一送一
但沒有iBon的票根怎麼辦?!
最快的方法就是去7-11買張 台北->板橋的兒童高鐵票
這樣只要花購票$20元 + iBon手續費$10 = $30
7-11馬上會給你一張iBon的票
這張高鐵票當然不是要你去搭
直接拿這張票, 就可以在星巴克買一送一囉!
但沒有iBon的票根怎麼辦?!
最快的方法就是去7-11買張 台北->板橋的兒童高鐵票
這樣只要花購票$20元 + iBon手續費$10 = $30
7-11馬上會給你一張iBon的票
這張高鐵票當然不是要你去搭
直接拿這張票, 就可以在星巴克買一送一囉!
當然這是兩個人臨時想喝星巴克才會用到的方法
有計畫一點的, 就可以提早弄到一些搭過的高鐵票根
這樣連$30元都可以省下來了.
P.S. 帶著濕衛生紙, 等星巴克店員蓋完章, 就用力地給它擦掉,
下次又是一尾活龍~ 乾巧+1
有計畫一點的, 就可以提早弄到一些搭過的高鐵票根
這樣連$30元都可以省下來了.
P.S. 帶著濕衛生紙, 等星巴克店員蓋完章, 就用力地給它擦掉,
下次又是一尾活龍~ 乾巧+1
Constraints 約束條件 (PK.FK.UC)
NOT NULL 設定該欄立不可含Null 值
UNIQUE 設定一個或多個欄位組合,資料內容需唯一不可重覆
PRIMARY KEY 設定資料表格不可重覆、空白或為Null的主鍵值
FOREIGN KEY 設定該欄位值的存在必須關連並參照指定資料表格的欄位值
CHECK 設定需符合所列示的條件值
注意事項
所有的Constraints資料均會存放在系統資料表格(Data Dictionary)中。建立Constraint時若賦予有意義的名稱,會較易查核Constraint的資料。Constraint標準的命名方式,應加入物件名稱。若未定名,則Oracle會自動以SYS_Cn的唯一名稱為之命名。USER_CONSTRAINTS可查核所設定的 Constraintion資料。
設立Constraints
CREATE TABLE [schema.]table
(column datatype [DEFAULT expr]
[column_constraint],...
[table_constraint][,...]);
Schema:與資料表格擁有者相同的名稱。
Table:設定資料表格名稱。
DEFAULT expr:為欄位設定預設值。
Column:設定資料表格內的欄位名稱。
Datatype:設定欄位資料型態及長度。
Column_constraint:設定欄位層級的約束條件,以維護資料的完整性。
Table_constraint:設定資料表格層級的約束條件,以維護資料的完整性。
ex:
CREATE TABLE emp(
empno NUMBER(4),
ename VARCHAR2(10),...
deptno NUMBER(7,2) NOT NULL,
CONSTRAINT emp_empno_pk
PRIMARY KEY (EMPNO));
建立 Constraints 的層級
欄位層級的 constraint
column [CONSTRAINT constraint_name] constraint_type,
資料表格層級的 constraint
column,...[CONSTRAINT constraint_name] constraint_type(column, ...),
Column 單一欄位的參照設定,可定義任何型態的Constraint。
Table 一個或多個欄位的參照設定,可定義除了NOT NULL以外的,任何型態Constraint。
NOT NULL Constraint的用途
新增資料時,Oracle會對不給值的欄位,預設填入Null值。若確保該欄位值不可為Null值,需於該欄位設定NOT NULL的Constraint條件,當資料異動時,即可自動執行資料內容檢核的動作。
ex:
..deptno NUMBER(7,2)
CONSTRAINT emp_deptno_nn NOT NULL…..
使用 UNIQUE Constraint
為一個或組合性的欄位,設立UNIQUE Constraints可確保一個或組合性的欄位值的資料唯一。為一個欄立設立UNIQUE Constraint時,可接受Null值。
ex:
CREATE TABLE dept(
deptno NUMBER(2),
dname VARCHAR2(14),
loc VARCHAR2(13),
CONSTRAINT dept_dname_uk UNIQUE(dname));
設立UNIQUE Constraint時,Oracle 會隱含式自動為所設立的欄位,建置Unique Index的索引檔。
PRIMARY KEYConstraint
每一個資料表格,僅能擁有一個PRIMARY KEY的Constraints,建立主鍵值。PRIMARY KEY可以是一個欄位或組合式欄位,其欄位值必須唯一且不可含Null值。
ex:
CREATE TABLE dept(
deptno NUMBER(2),
dname VARCHAR2(14),
loc VARCHAR2(13),
CONSTRAINT dept_dname_uk UNIQUE (dname),
CONSTRAINT dept_deptno_pk PRIMARY KEY(deptno));
設立PRIMARY KEY Constraint時,Oracle 會隱含式自動為所設立的欄位,建置Unique Index的索引檔。
FOREIGN KEYConstraint
FOREIGN KEY是維護資料庫資料完整性的Constraint。以FOREIGN KEY偵測一個或組合式欄位,與自有的或其他資料表格的PRIMARY KEY或UNIQUE Constraint欄位建立資料關連。如主檔與明細檔(父子檔)間的關連。單一的 FOREIGN KEY欄位,可接受Null值。設有FOREIGN KEY Constraint條件的欄位值(子檔),必須參照並符合被參照檔(父檔),已存在的欄位值。
ex:
CONSTRAINT emp_deptno_fk FOREIGN KEY (deptno) REFERENCES dept (deptno));
FOREIGN KEY要設定前,應先確定所要參照的PRIMARY KEY 或 UNIQUE 已事先設置完成,可供參照。
FOREIGN KEY 的保留字
FOREIGN KEY定義於子檔中,且子檔含有可參照父檔的關連欄位。
FOREIGN KEY的設定,由下列保留字所組成:
FOREIGN KEY:於子檔設定可關連參照的欄位。
REFERENCES:用以指定所參照的資料表格名稱及欄位名稱。
ON DELETE CASCADE:設定當父檔的資料刪除時,子檔中相關連的明細資料,亦會一併被刪除。
若未設定ON DELETE CASCADE,在刪除父檔的資料時,若子檔仍有相關連的明細資料存在,會產生錯誤訊息。
CHECK Constraint
若以CHECK Constraint為欄位設定列示值條件,資料表格中的每一筆資料列,均需符合所列示的限制條件。一個欄位,可設定多個CHECK Constraint列示條件,衹要邏輯條件不衝突,CHECK Constraint 的個數不限。CHECK Constraint,可設立於資料表格或欄位層級。
ex:
CONSTRAINT emp_deptno_ck
CHECK (DEPTNO BETWEEN 10 AND 99),...
每一資料列的資料內容,均需滿足檢核條件
不可做為檢核條件的表述句:
參照 CURRVAL, NEXTVAL, LEVEL, 及 ROWNUM 等虛擬欄位名稱呼叫 SYSDATE, UID, USER, 及 USERENV 等函數使用
以其它資料列的資料內容做為檢核條件
新增Constraints
於資料表格建置完成後,可使用ALTER TABLE..ADD方式新增Constraint。
Table:設定資料表格名稱。
Constraint:Constraint的保留字及所指定的Constraint名稱。
Type:設定所要新增的Constraint 種類。
Column:設定Constraint運作的欄位名稱。
ALTER TABLE table
ADD [CONSTRAINT constraint] type (column);
Constraint可以新增、刪除、啟動或關閉,但不能更改其架構。
欲在已建置完成的資料表格,新增NOT NULL Constraint時,需於 ALTER TABLE 指令中,使用 MODIFY子句,否則無法設立。新增NOT NULL Constraint 時,若資料表格中已有資料,Constraint會進行檢核,若已存在有Null值,設立Constraint時會產生錯誤訊息。
ex:
ALTER TABLE emp
ADD CONSTRAINT emp_mgr_fk
FOREIGN KEY(mgr) REFERENCES emp(empno);
刪除Constraints
刪除Constraint前,可先查核系統資料表格中的USER_CONSTRAINTS及USER_CONS_COLUMNS資料內容。確定需求後,再進行刪除作業。
ALTER TABLE table
DROP PRIMARY KEY | UNIQUE (column) |
CONSTRAINT constraint [CASCADE];
DROP指令,若使用CASCADE子句,可將有參照關連的Constraint一併刪除。
關閉Constraints
對於不想刪除再重建的Constraint,可使用ALTER TABLE..DISABLE指令,暫時性關閉Constraint的檢核作用。
ALTER TABLE emp
DISABLE CONSTRAINT
emp_empno_pk CASCADE;
DISABLE子句,可使用於CREATE TABLE 及ALTER TABLE語法中。
CASCADE子句,可同時關閉有參照關連的Constraint作用。
啟動Constraints
對於被設定為DISABLE的Constraint,可使用ALTER TABLE…..ENABLE指令,重新啟動Constraint的檢核作用。
ALTER TABLE table
ENABLE CONSTRAINT constraint;
啟動Constraint作用時,會對資料表格中的所有資料列,檢核欄位值的合理性,故已存在的資料內容,需符合Constraint 的檢核條件。
啟動UNIQUE或PRIMARY KEY的Constraint 時,Oralce會自動為所設定的欄位,建置一個Unique Index索引檔。
ENABLE子句,可使用於CREATE TABLE 及ALTER TABLE語法中。
查核Constraints資訊
資料表格建置完成後,若以DESC指令查驗資料表格的檔案結構,針對Constraint,衹能查看是否有NOT NULL的Constraint記錄。若要查看資料表格上的所有Constraint設定,可查核USER_CONSTRAINTS系統資料表格檔。若 Constraint設立之初,使用者未設定Constraint名稱,所查看到的會是系統所配置的系統名稱。
SELECT constraint_name,constraint_type,search_condition
FROM user_constraints
WHERE table_name = 'EMP';
USER_CONSTRAINT的Constraint Type欄位值定義:
P:Primary key。
R:Foreign key。
U:Unique。
C:Check 或 Not Null。
查核USER_CONS_COLUMNS
USER_CONS_COLUMNS系統資料表格,可查核Constraint所對應的欄位名稱。尤其是查核系統自動配置的系統名稱(SYS_Cn)所對應的欄位,非常有效。常與USER_CONSTRAINTS的查核,搭配使用。
ex:
SELECT constraint_name,column_name
FROM user_cons_columns
WHERE table_name = 'EMP';
UNIQUE 設定一個或多個欄位組合,資料內容需唯一不可重覆
PRIMARY KEY 設定資料表格不可重覆、空白或為Null的主鍵值
FOREIGN KEY 設定該欄位值的存在必須關連並參照指定資料表格的欄位值
CHECK 設定需符合所列示的條件值
注意事項
所有的Constraints資料均會存放在系統資料表格(Data Dictionary)中。建立Constraint時若賦予有意義的名稱,會較易查核Constraint的資料。Constraint標準的命名方式,應加入物件名稱。若未定名,則Oracle會自動以SYS_Cn的唯一名稱為之命名。USER_CONSTRAINTS可查核所設定的 Constraintion資料。
設立Constraints
CREATE TABLE [schema.]table
(column datatype [DEFAULT expr]
[column_constraint],...
[table_constraint][,...]);
Schema:與資料表格擁有者相同的名稱。
Table:設定資料表格名稱。
DEFAULT expr:為欄位設定預設值。
Column:設定資料表格內的欄位名稱。
Datatype:設定欄位資料型態及長度。
Column_constraint:設定欄位層級的約束條件,以維護資料的完整性。
Table_constraint:設定資料表格層級的約束條件,以維護資料的完整性。
ex:
CREATE TABLE emp(
empno NUMBER(4),
ename VARCHAR2(10),...
deptno NUMBER(7,2) NOT NULL,
CONSTRAINT emp_empno_pk
PRIMARY KEY (EMPNO));
建立 Constraints 的層級
欄位層級的 constraint
column [CONSTRAINT constraint_name] constraint_type,
資料表格層級的 constraint
column,...[CONSTRAINT constraint_name] constraint_type(column, ...),
Column 單一欄位的參照設定,可定義任何型態的Constraint。
Table 一個或多個欄位的參照設定,可定義除了NOT NULL以外的,任何型態Constraint。
NOT NULL Constraint的用途
新增資料時,Oracle會對不給值的欄位,預設填入Null值。若確保該欄位值不可為Null值,需於該欄位設定NOT NULL的Constraint條件,當資料異動時,即可自動執行資料內容檢核的動作。
ex:
..deptno NUMBER(7,2)
CONSTRAINT emp_deptno_nn NOT NULL…..
使用 UNIQUE Constraint
為一個或組合性的欄位,設立UNIQUE Constraints可確保一個或組合性的欄位值的資料唯一。為一個欄立設立UNIQUE Constraint時,可接受Null值。
ex:
CREATE TABLE dept(
deptno NUMBER(2),
dname VARCHAR2(14),
loc VARCHAR2(13),
CONSTRAINT dept_dname_uk UNIQUE(dname));
設立UNIQUE Constraint時,Oracle 會隱含式自動為所設立的欄位,建置Unique Index的索引檔。
PRIMARY KEYConstraint
每一個資料表格,僅能擁有一個PRIMARY KEY的Constraints,建立主鍵值。PRIMARY KEY可以是一個欄位或組合式欄位,其欄位值必須唯一且不可含Null值。
ex:
CREATE TABLE dept(
deptno NUMBER(2),
dname VARCHAR2(14),
loc VARCHAR2(13),
CONSTRAINT dept_dname_uk UNIQUE (dname),
CONSTRAINT dept_deptno_pk PRIMARY KEY(deptno));
設立PRIMARY KEY Constraint時,Oracle 會隱含式自動為所設立的欄位,建置Unique Index的索引檔。
FOREIGN KEYConstraint
FOREIGN KEY是維護資料庫資料完整性的Constraint。以FOREIGN KEY偵測一個或組合式欄位,與自有的或其他資料表格的PRIMARY KEY或UNIQUE Constraint欄位建立資料關連。如主檔與明細檔(父子檔)間的關連。單一的 FOREIGN KEY欄位,可接受Null值。設有FOREIGN KEY Constraint條件的欄位值(子檔),必須參照並符合被參照檔(父檔),已存在的欄位值。
ex:
CONSTRAINT emp_deptno_fk FOREIGN KEY (deptno) REFERENCES dept (deptno));
FOREIGN KEY要設定前,應先確定所要參照的PRIMARY KEY 或 UNIQUE 已事先設置完成,可供參照。
FOREIGN KEY 的保留字
FOREIGN KEY定義於子檔中,且子檔含有可參照父檔的關連欄位。
FOREIGN KEY的設定,由下列保留字所組成:
FOREIGN KEY:於子檔設定可關連參照的欄位。
REFERENCES:用以指定所參照的資料表格名稱及欄位名稱。
ON DELETE CASCADE:設定當父檔的資料刪除時,子檔中相關連的明細資料,亦會一併被刪除。
若未設定ON DELETE CASCADE,在刪除父檔的資料時,若子檔仍有相關連的明細資料存在,會產生錯誤訊息。
CHECK Constraint
若以CHECK Constraint為欄位設定列示值條件,資料表格中的每一筆資料列,均需符合所列示的限制條件。一個欄位,可設定多個CHECK Constraint列示條件,衹要邏輯條件不衝突,CHECK Constraint 的個數不限。CHECK Constraint,可設立於資料表格或欄位層級。
ex:
CONSTRAINT emp_deptno_ck
CHECK (DEPTNO BETWEEN 10 AND 99),...
每一資料列的資料內容,均需滿足檢核條件
不可做為檢核條件的表述句:
參照 CURRVAL, NEXTVAL, LEVEL, 及 ROWNUM 等虛擬欄位名稱呼叫 SYSDATE, UID, USER, 及 USERENV 等函數使用
以其它資料列的資料內容做為檢核條件
新增Constraints
於資料表格建置完成後,可使用ALTER TABLE..ADD方式新增Constraint。
Table:設定資料表格名稱。
Constraint:Constraint的保留字及所指定的Constraint名稱。
Type:設定所要新增的Constraint 種類。
Column:設定Constraint運作的欄位名稱。
ALTER TABLE table
ADD [CONSTRAINT constraint] type (column);
Constraint可以新增、刪除、啟動或關閉,但不能更改其架構。
欲在已建置完成的資料表格,新增NOT NULL Constraint時,需於 ALTER TABLE 指令中,使用 MODIFY子句,否則無法設立。新增NOT NULL Constraint 時,若資料表格中已有資料,Constraint會進行檢核,若已存在有Null值,設立Constraint時會產生錯誤訊息。
ex:
ALTER TABLE emp
ADD CONSTRAINT emp_mgr_fk
FOREIGN KEY(mgr) REFERENCES emp(empno);
刪除Constraints
刪除Constraint前,可先查核系統資料表格中的USER_CONSTRAINTS及USER_CONS_COLUMNS資料內容。確定需求後,再進行刪除作業。
ALTER TABLE table
DROP PRIMARY KEY | UNIQUE (column) |
CONSTRAINT constraint [CASCADE];
DROP指令,若使用CASCADE子句,可將有參照關連的Constraint一併刪除。
關閉Constraints
對於不想刪除再重建的Constraint,可使用ALTER TABLE..DISABLE指令,暫時性關閉Constraint的檢核作用。
ALTER TABLE emp
DISABLE CONSTRAINT
emp_empno_pk CASCADE;
DISABLE子句,可使用於CREATE TABLE 及ALTER TABLE語法中。
CASCADE子句,可同時關閉有參照關連的Constraint作用。
啟動Constraints
對於被設定為DISABLE的Constraint,可使用ALTER TABLE…..ENABLE指令,重新啟動Constraint的檢核作用。
ALTER TABLE table
ENABLE CONSTRAINT constraint;
啟動Constraint作用時,會對資料表格中的所有資料列,檢核欄位值的合理性,故已存在的資料內容,需符合Constraint 的檢核條件。
啟動UNIQUE或PRIMARY KEY的Constraint 時,Oralce會自動為所設定的欄位,建置一個Unique Index索引檔。
ENABLE子句,可使用於CREATE TABLE 及ALTER TABLE語法中。
查核Constraints資訊
資料表格建置完成後,若以DESC指令查驗資料表格的檔案結構,針對Constraint,衹能查看是否有NOT NULL的Constraint記錄。若要查看資料表格上的所有Constraint設定,可查核USER_CONSTRAINTS系統資料表格檔。若 Constraint設立之初,使用者未設定Constraint名稱,所查看到的會是系統所配置的系統名稱。
SELECT constraint_name,constraint_type,search_condition
FROM user_constraints
WHERE table_name = 'EMP';
USER_CONSTRAINT的Constraint Type欄位值定義:
P:Primary key。
R:Foreign key。
U:Unique。
C:Check 或 Not Null。
查核USER_CONS_COLUMNS
USER_CONS_COLUMNS系統資料表格,可查核Constraint所對應的欄位名稱。尤其是查核系統自動配置的系統名稱(SYS_Cn)所對應的欄位,非常有效。常與USER_CONSTRAINTS的查核,搭配使用。
ex:
SELECT constraint_name,column_name
FROM user_cons_columns
WHERE table_name = 'EMP';
訂閱:
文章 (Atom)