2011年3月11日 星期五

SQL閱讀整理四

第四章 聰明的資料表
具有唯一性資料的表

//不具唯一性的資料表
employees_info
nameagegendercity
江小魚20男台北
林瀨瑤20女東京
古小三22女台北
古小三22女台北
塵在天26男高雄
表4-1

  • 表4-1出現同名的古小三,這兩筆資料無法辨識,簡單的說該表沒有唯一性。
  • 修正方式加入一各欄位使其每一筆資料都具有唯一性。
//修正成具有唯一性的資料表
employees_info
employeeIDnameagegendercity
00001江小魚20男台北
00002林瀨瑤20女東京
00003古小三22女台北
00004古小三22女台北
00005塵在天26男高雄
  • 如此加上employeeID之後我們可以辨識出兩筆古小三是不同筆的資料。
而加入的這一個欄位,就是Primary Key。


Primary Key的規則
  • 主鍵不可為NULL
  • 插入新紀錄時,也必須指定主鍵值
  • 必須簡潔
  • 主鍵值不可修改
什麼是Primary Key? 
  • 是資料表中的某各資料欄位,它可以獨一無二的分辨出每一筆紀錄。
第一階正規劃的步驟之一
  • 具有Primary Key的資料表,是資料表第一階正規化的步驟之一。

關於正規劃將於後面章節將會談論


查詢已存在資料表當時建立的SQL敘述碼
  • SHOW CREATE TABLE yourTable;

建立一各不具Primary Key的資料表
CREATE TABLE employees_A
(
  name varchar(20) NOT NULL,
  age INT default NULL,
  gender char(4),
  city varchar(20)
)

建立一各具有Primary Key的資料表
CREATE TABLE employees_B
(
  employeeID INT NOT NULL,
  name varchar(20) NOT NULL,
  age INT default NULL,
  gender char(4),
  city varchar(20),
  PRIMARY KEY (employeeID)
)
  • PRIMARY KEY (columnName),用於指定Primary Key。
建立一各具有具有Primary Key並且會自動增加的資料表
CREATE TABLE employees_C
(
  employeeID INT NOT NULL AUTO_INCREMENT,
  name varchar(20) NOT NULL,
  age INT default NULL,
  gender char(4),
  city varchar(20),
  PRIMARY KEY (employeeID)
)
  • AUTO_INCREMENT,讓employeeIDy自動遞增數值。

其實不用重新建立具有Primary Key的資料表,可以使用ALTER來修正
ALTER TABLE employees_A
ADD COLUMN employeeID INT NOT NULL AUTO_INCREMENT FIRST,
ADD PRIMARY KEY (employeeID );
  • FIRST要求將該欄位安至於最前面。
  • ADD COLUMN,用於加入一各欄位。
  • ADD PRIMARY KEY,設定主鍵。

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_US與zh_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;