2011年3月11日 星期五

SQL閱讀整理三

第三章 DELETE 與 UPDATE
DELETE 刪除紀錄
※注意DELETE記得要加上WHERE使用,否則會刪掉整張表的資料。
※DELETE用於刪除一列或多列,無法刪除單一欄。
※使用DELETE必須小心,每次執行都有可能意外刪除掉必要的資料。
※使用時定要確認WHERE所下的條件精確與否。
※由於DELETE不精準,因此刪除前最好先SELECT確定刪除對象是否正確。
example:
//原始資料表
employees_info
nameagegendercity
江小魚20台北
林瀨瑤20東京
古小三22台北
塵在天26高雄

//刪除name欄位為江小魚的資料。
DELETE FROM employess
WHERE name = '江小魚';
employees_info
nameagegendercity
林瀨瑤20東京
古小三22台北
塵在天26高雄

example:
//原始資料表
employees_info
nameagegendercity
江小魚20台北
林瀨瑤20東京
古小三22台北
塵在天26高雄

//刪除年齡20歲且為女性的資料。
DELETE FROM employess
WHERE age = 20 AND gender = "女";
employees_info
nameagegendercity
江小魚20台北
古小三22台北
塵在天26高雄


回憶一下INSERT,INSERT 與 DELETE
example:
//原始資料表
employees_info
nameagegendercity
江小魚20台北
林瀨瑤20東京
古小三22台北
塵在天26高雄

//插入一筆資料
INSERT INTO employees_info
VALUES('吳英雄', 27, '男', '高雄' );
employees_info
nameagegendercity
江小魚20台北
林瀨瑤20東京
古小三22台北
塵在天26高雄
吳英雄27高雄

//刪除前先用SELECT確定要刪除的資料是否正確。
SELECT * FROM employees_info
WHERE name = '林瀨瑤' AND gender = '女';
nameagegendercity
林瀨瑤20東京

//刪除資料
DELETE FROM employees_info
WHERE name = '林瀨瑤' AND gender = '女';
employees_info
nameagegendercity
江小魚20台北
古小三22台北
塵在天26高雄
吳英雄27高雄

閱讀階段心得:
資料庫規劃在實做上其實會有Primary Key,來代表資料表中唯一的一筆資料,確保不重複,而在employess_info設計上通常會加上一各員工編號來做Primary Key,以便識別,關於PK後面在來敘述。

閱讀到此,我想,像關於員工資料,在實際情境下,能夠刪除員工資料的人員,必定是具有管理權限的人事單位,而刪除員工資料在搜尋上因該是會以員工身分證號來找出員工編號,再以員工編號來執行刪除,若是有誤之處請指正之。


UPDATE 改變資料
※UPDATE可以修改已存在的資料。
※UPDATE可以搭配WHERE使用。
※UPDATE能夠只調整需要改變的欄位。
example:
//原始資料表
drinks_info
nametypeprice
可樂汽水25
芒果汁果汁40
黃色淺水艇酒精100
台灣啤酒酒精40
香蕉冰沙冰沙60

//SET用來指定將改調整的欄位與值。
UPDATE drinks_info
SET price = 35
WHERE name = '可樂' AND price = 25;
drinks_info
nametypeprice
可樂汽水35
芒果汁果汁40
黃色淺水艇酒精100
台灣啤酒酒精40
香蕉冰沙冰沙60

※UPDATE若沒加上WHERE使用,則所有SET提到的欄位全部都會被修改。
如上例,若沒加上WHERE則所有的price都會被改成35。


example:
//SQL中可以對欄位套用基礎數學運算。
//原始資料表 
drinks_info
nametypeprice
可樂汽水35
芒果汁果汁40
黃色淺水艇酒精100
台灣啤酒酒精40
香蕉冰沙冰沙60

//修改所有酒精類飲料的價格,原本價格再加五元
UPDATE drinks_info
SET price = price +5
WHERE name = '酒精' ;

drinks_info
nametypeprice
可樂汽水35
芒果汁果汁40
黃色淺水艇酒精105
台灣啤酒酒精45
香蕉冰沙冰沙60

2011年3月10日 星期四

SQL閱讀整理二

第二章 SELECT 進階使用
輸出整張Table
SELECT * FROM TableName;

SELECT:選擇欄位,做輸出。
FROM:來源資料表。
*表示全部欄位。


SELECT + WHERE 條件
SELECT [輸出欄位] FROM [來源資料表]
WHERE [欄位] = [比對條件];

WHERE 指定特定條件。 

example:
SELECT * FROM phome_table
WHERE phomeNumber = "28825252";


SELECT 特定資料
SELECT drinkName, type, price
FROM drinkTable
WHERE type= 'alcohol';


SELECT + 邏輯運算子
SELECT drinkName, type, price
FROM drinkTable
WHERE type = 'alcohol' AND price = 100;

如此會列出類別為酒精且售價為100元的飲品。

邏輯運算
AND
OR
//邏輯運算子可以一直連接使用,但這是硬來的方式。

比較運算
=  等於
>  大於
<  小於
>= 大於等於
<= 小於等於
<> 不等於


找NULL欄的資料,IS NULL
SELECT drinkName, type, price
FROM drinkTable
WHERE price IS NULL;
NULL無法使用比較運算子找出,需使用IS NULL來找尋,
因為NULL代表不存在所以無法比較。


LIKE 與 %
SELECT * FROM Customers
WHERE location LIKE '%縣';
//表示尋找所有以"縣"結尾的資料。
LIKE :像。
%萬用字元,代表任何字串


LIKE 與 _
SELECT first_name FROM my_contacts
WHERE first_name LIKE '_J';
//會找出如TJ,AJ,BJ,等,_代表一各字元。
_:萬用字元,代表一各字元

BETWEEN關鍵字,兩者之間
SELECT drinkName FROM drinkTable
WHERE
price BETWEEN 30 AND 100;
//選出價格在30~60間的飲料。

//不使用BETWEEN的寫法
SELECT drinkName FROM drinkTable
WHERE
price >= 30 AND price <= 100;


IN,包含
SELECT drinkName
FROM drinkTable WHERE type IN ('Alcohol','soda');
//會找出type屬於alcohol與soda類的飲料。

等價方式
SELECT drinkName
FROM drinkTable
WHERE type = 'Alcohol' OR type = 'soda';


NOT IN , 不包含
SELECT drinkName
FROM drinkTable WHERE type NOT IN ('Alcohol','soda');
//會找出type非alcohol與soda類的飲料。


WHERE 與 NOT
SELECT drindName FROM drindTable
WHERE NOT price BETWEEN 30 AND 100;

//會找出 "非" >=30 ~ <=100 之間的飲料。



寫入有'號的資料
寫入字串中含有 ' 號時需使用 \ 。  
example:
INSERT INTO contacts
(location)
VALUES
('Grover\'s Mill');

2011年1月12日 星期三

Flex Localization 在地化 閱讀筆記三:Loacal資源配置實做

  • new Flex project。
  • 設定專案名稱為Localization_Demo。
  • 選擇你想用的SDK版本,本篇使用4.1,本篇撰寫時SDK已經有4.5版本,
若要使用最新版本,於adobe open Source中下載SDK,下載完後將其放至
Adobe Flash Builder 4\sdks目錄底下,然後選擇配置Flex SDK將其加入。
  • 建立locale文件夾,並於locale中建立en_USzh_TW兩個文件夾,這兩個文件夾將會各自置放properties的在地化資源檔,建立完之後目錄結構如下。

Flex Localization 在地化 閱讀筆記二:properties Local資源檔與其配置簡介

localization的資源檔
  • properties為副檔名。
  • properties資源檔內容是以key/value名值對來架構。
  • properties資源檔的編碼使用格式是UTF-8
  • 在資源檔中可以使用 ! 或是 # 符號來做為註解。
key/value表示方式
  • key = value
  • key : value
  • key value
sample:

#Localization resources in American Englist
Title=International Demo
language=American English

2011年1月11日 星期二

Flex Localization 在地化閱讀筆記一 Locale基本介紹

A locale is the combination of a language and a country code.
一個在地化表示,是由一個語言與國家所組成。

example, en_US refers to the English language as spoken in the United States.
例如en_US 就是 英語做為口頭語在美國。

簡單說就是  locale = 語言 + 國碼

一個環境區域中所用的貨幣、日期格式也都可能會有所不同。

在區域化的素材使用上,還可以包含音頻、圖像、視訊,讓應用程序能夠針對不同文化區域來給予不同素材來呈現使用。


有關Flex中使用在地化功能,請參考Flex4官方Help

2011年1月6日 星期四

Flex 程式效能簡易測試工具

最近離職後開始在整理自已做測試的小東西,因此順便把測試結果簡單重整成一個工具類,以下是一個簡單的程式執行效能測試類,不夠好或考量不夠的地方請大家多多指教~


//interface
package com.utils
{
 public interface ILoopTestTools
 {
  function startExecuteTestFunction():void
  function set testFunctionA(functin:Function):void;
  function set testFunctionB(functin:Function):void;
 }
}
//Class
package com.utils
{
 import flash.display.DisplayObject;
 import flash.events.IEventDispatcher;
 import flash.events.MouseEvent;
 import flash.utils.Timer;
 import flash.utils.getTimer;

 import mx.controls.TextArea;
 import mx.core.IButton;
 import mx.managers.IBrowserManager;

2011年1月5日 星期三

FlexDeep Link,Flex BrowserManager與IBrowserManager 測試

Flex有兩個可以管理「瀏覽器歷程的」的原生類,一個是BrowserManager一個是HistoryManager,搜尋過網路上資訊得知,現在大多以BowserManager為主HistoryManager已經少用,但是為什麼、是否需視不同狀況而用,目前本編不下結果,原因是還未做過HistoryManager的測試,待測試過後再來做個比較文章,因此本編著重於BrowserManager與IBrowserManager的應用測試。


/****
* 注意:測試時發現,使用SDK3.5運作不正常,用SDK 4,深層管理運作正常,問題還未查明。
* 參考文件 Adobe官方文件:
* http://help.adobe.com/zh_CN/AS3LCR/Flex_4.0/mx/managers/IBrowserManager.html
* http://help.adobe.com/zh_CN/AS3LCR/Flex_4.0/mx/managers/BrowserManager.html
*
* 主要用法:BrowserManager類只用來拿到實體,
*主要操作是藉由IBrowserManager介面來實現操作。
* */
//測試程式
<?xml version="1.0" encoding="utf-8"?>
 <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
         layout="absolute"
         historyManagementEnabled="false"
         creationComplete="startProcess()"
>
<!--
 BrowserManagerManager與historyManager同時間只能用一個,
 因此使用BrowserManager做深層管理時要將historyManagementEnabled設為flase
-->
 <mx:Script>
 <![CDATA[
   import mx.events.BrowserChangeEvent;
            import mx.managers.BrowserManager;
            import mx.managers.IBrowserManager;
            import mx.utils.ObjectUtil;
            import mx.utils.URLUtil;
   private var _IbrowserManager:IBrowserManager;
   private function startProcess():void
   {
    /*Step1.
     取得BrowserManager實體,BowserManager是一個獨體模式,
     因此使用getInstance取回運行環境中唯一的實體物件。
    */
    _IbrowserManager = BrowserManager.getInstance();

    //Step2. 初始化BrowserManager
    _IbrowserManager.init();

    //將Browser的各項屬性,呈現於From表單結構上
    updateValue();

    //對BrowserManager加上真聽式
    addListener();
   }