2008年9月12日 星期五

T-SQL 執行效能考量

Exact Matches 或Ranges查詢可加速查詢速度
僅量不要用not like order by

T-SQL 查詢處理的方式

Parse
檢查語法
Resolve
解釋欄位存在
Optimize
最佳化判斷有無索引
Compile
編譯
Execute

T-SQL 算年齡的方法

USE Northwind
select Employeeid , year(getdate())-year(birthdate)
from Employees


USE Northwind
select Employeeid ,DATEDIFF(yy,birthdate,getdate())
from Employees

T-SQL 資料排序

SELECT DISTINCT UnitPrice as abc , SupplierID as def , ProductID as ghi
FROM Products
ORDER BY UnitPrice DESC

DISTINCT:將重覆的除去
AS:將欄位命名為
ORDER BY 依序排列 DESC=降幕 沒打就是升幕ASC
以上會以abc先排再來比較def或ghi

T-SQL IS NULL

USE northwind
SELECT *
FROM suppliers
WHERE fax IS NULL
同之前做法可查出suppliers表隔中欄位中有NULL的

*NULL不等於任何值

T-SQL IN

USE northwind
SELECT *
FROM suppliers
WHERE country in ('japan' ,'italy')

查尋條件中使用值串
以上會找出suppliers表隔中含有japan,italy的欄位

T-SQL BETWEEN AND

USE northwind
SELECT UnitPrice
FROM Products
WHERE UnitPrice BETWEEN 50 AND 90
//也可寫成WHERE UnitPrice<90>50
就會取出在Products表格裡UnitPrice欄位中
值有介於50至90的欄位表出來

T-SQL 一些特殊字用法

%=任意字元 任意字
_=單一任一字元
[0-9]=在這範圍任意一字元
[a-y]=在這範圍任意一字元
[^A]=除了A以外任意一字元

T-SQL SELECT WHERE用法

SELECT 用以指定查詢欄位

SELECT 欄位名 FROM 表格名
SELECT DISTINCT 欄位名 FROM 表格名 //可將重覆欄位名稱除去

WHERE 子句用以指定查詢的條件
SELECT 欄位名 FROM 表格名 WHERE 條件 //可選擇性的抓出資料例如 WHERE sale>1000就是sale大於100抓出

SELECT name
FROM user
WHERE name LIKE'%jo%'
就會搜尋出字中有jo的欄位

FROM 子句用以標示查詢的資料表

T-SQL sqlcmd常用語

sqlcmd -E //windows驗證
sqlcmd -U -P SQL //驗證
sqlcmd -S //連至別台似服器用
sqlcmd -E -i c:\123.sql -0 c:\123.txt //-i input sql檔 -o 輸出sql檔至

2008年9月11日 星期四

T-SQL 系統含數

聚合函數(Aggregate Functions)
可以有一群資料變成一個
數值函數(Scalar Functions)
根據表格一比都算一次
紀錄集函數(Rowset Functions)
回傳質是多個質

T-SQL 變數

使用DECLARE@作變數的宣告
使用SET或SELECT@指派變數的值
@為區域變數@@為全域變數
EX:
DECLARE @EmpID varchar(11)

T-SQL 常用的資料型態

Numbers
整數:int,smallint,tinyint,bigint
浮點數:float,raw
精確數字:numeric,decinal
Dates
日期時間:計算到秒後三位數
Characters
固定長度字串:char(100)
變動長度字串:varchar(100)
超長字串(超過8000字2Gbyte):char(texe),char(max)

T-SQL 識別字

命名原則
名稱僅量簡短
命名最好有意義
最好有簡單清處的約定
可以區別物件型態
物件名稱與使用者名稱不要重覆


第一個字必需要英文字
分隔字元識別字[]
欄位用 , 分開

T-SQL 敘述句類型

資料定義語言(Data Definition Language Statements)DDL
定義資料庫物件
CREATE 建立
ALTER 修改
DROP 刪除
資料控制語言(Data Control Language Statemnets)DCL
設定改變權限
GRANT 付予權限
DENY 拒絕權限
REVOKE 取消
資料處理語言(Data Manipulation Language Statements)DML
對資料的查詢新增以及刪修
SELECT
INSERT
UPDATE
DELETE

T-SQL 資料資訊定義

資料:未整理過的文字、影像、聲音、視訊等等...
資訊:經處理過利於決策的資料
Metadata:描述資料的資料(屬性特徵、型態、欖位、大小、可容許值、說明)

2008年9月9日 星期二

動態磁碟

簡單磁碟區



跨距磁碟區
可將兩個不同磁碟串接起來
檔案寫入會從最前面那顆磁區開始
磁碟大小可以不一樣





等量磁碟區 (RAID-0)
以64kb分別寫入多顆硬碟每顆都同時寫
寫入及讀取速度加速
最大缺點硬碟一顆壞即全壞
磁碟大小一樣



鏡像磁碟區(RAID-1)
兩顆資料會同步、硬碟大小會一樣硬碟壞一顆還可以用
若要不同步即為分割鏡像磁區就不會同步了但是這樣就不能再同步







RAID-5
至少三顆硬碟每次寫入都同時寫 寫入跟讀也快
但如果壞掉每次都要算parity一般其實沒感覺
壞一顆再加入一顆新再使用修復即可
有容錯功能,n-1/n顆在使用
Data可以算回parity



XP32位元記憶體只能讀3.25G

32位元即是2的32次方約4G所以買太大記憶體也沒用

共用印表機耍賤


2008年9月4日 星期四

Java 覆寫(Overriding),多載(Overloading)多型(Polymorphism)

覆寫
寫一個父親別相同名稱的含數
可覆蓋繼承過來的函數用法
規則
1.參數必需與原函式相同
2.傳回值型態一樣
3.存取等級不可比原程式高但可寬鬆
不可覆寫標示為final或static的函式

多載
宣告相同含數傳入型態不同或個數不同
規則
1.多載函式必須變更參數
2.多載函式可以變更回傳型別
3.多載含式可變更存取修飾子
4.多載含式可宣告新範圍或更寬可控式異常
5.可在同一個類別或子類別多載函式

多型
多型存取物件唯一方式就是透過參考變數
父參考控制子物件


Java 繼承

定義
1.已存在的父類別擴充功能較多的子類別
2.如Car為父類別,而法拉利、賓士等可為子類別(具特殊化特性)
使用理由
1促進程式碼再利用.
2.使用多型

Java 建構值

建構值(Constructor)
目地:
幫您將變數設一組初始值

1.與類別名稱相同
2.不會有回傳型態(不會return回去)
class Qoo{
protected Qoo{

class Qoo{
void Qoo(){
}
}
不可有void

2008年9月2日 星期二

Java 封裝

利用公用的函數包裝私用的變數就稱為封裝


Java Lab 九九乘法表


Jave 存取等級


存取其它類別的函數或變數的方式
1.使用dot operator(.)
2.使用繼承extends

Java 原始檔的宣告規則及命名規則

宣告規則

原始檔最多只能有一個public類別(class)但可有多個非public類別

若原始檔出現public類別檔案名稱必需與public名稱相同


註解 //

/* */


命名規則

一般使用名詞命名,若使用多個名詞複合形成則使用駝峰字

Dog

PrintWriter



Jave 函數

命名規則
第一個字母為小寫,遵守駝峰字並使用動詞名詞配對
如:getBalance

副程式
1.函數:有傳回值
2.無傳回值:無傳回值
Java提供函數用法,若無傳回值則在含數名稱前加void

Java break & continue

break用來停止整個迴圈(必需使用於迴圈中或switch中)
continue用來停止當次迴圈(必需使用於迴圈中,否則編譯上錯誤)

Java Lab 費氏級數


Java Lab 阿姆斯壯數