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所以買太大記憶體也沒用

共用印表機耍賤