Căn bn SQL cho người lp trình C#
Bài này mình gii thiu cho các bn các thành phn cơ bn ca SQL mà bn cn biết
để có th viết mt chương trình làm vic vi cơ s d liu bng C#.
Query
Câu lnh INSERT
Câu lnh UPDATE
Câu lnh DELETE
Kiu d liu T-SQL
SQL là cái gì ?
Nếu như bn đã tng làm vic vi h qun tr cơ s d liu, tt nhiên s biết s dng
SQL. SQL là ngôn ng database chun quc tế. Bn có th dùng SQL để to thêm d
liu, ly thông tin, thay đổi hay xóa d liu (và nhiu th khác). Tóm li, SQL tiếng Anh
là “Structured Query Language”, ngôn ng có cu trúc.Được phát trin t nhng năm
70, được IBM sáng to ra và gi vi tên là : SEQUEL “Structured English Query
Language”, sau này được thay đổi đi mt chút gi là SQL nhưng có khác vi SEQUEL,
cn tránh nhm ln. SEQUEL hin được s dng trong h thng ca IBM. V cách phát
âm, trong thế gii ca Microsoft và Oracle gi là “sequel” ( xi-qu ). Còn trong khu vc
làm vic vi DB2 và MySQL thì hay gi là “ess cue ell” ( ét-kiu-eo ). Các bn thích gi
thế nào cũng được, tùy :D..T thì hay gi nó là “ess cue ell”. Bt đầu v SQL cu trúc và
query.
Yêu cu cn thiết để thc hin các thao tác trong bài viết này :
1. Microsoft Visual C# 2005 Express Edition
2. Microsoft SQL Server 2005 Express Edition
3. Cài đặt thêm : MS SQL Server Management Studio 2005 Express
4. Database : Northwind
Các bn có th download free trong trang Downloads ca Microsoft.
Sau đó cài đặt tt c và bt đầu vào thao tác trong database.
Ly d liu (RETRIEVING DATA)
Mt query ca SQL dùng để ly thông tin t database. D liu được cha trong các
hàng (rows) ca bng (tables). Hàng (Rows) gm mt nhóm các ct (Columns) cha d
liu tương ng. Biu thc query ly d liu có cu trúc :
Mt danh sách SELECT (la chn), ti v trí các ct được gi để ly d liu
ch định.
Mt mnh đề WHERE, xác định bng (tables) cn truy cp để ly d liu.
Bây gi nhng t nào tiếng Anh cn thiết thì t viết tiếng Anh nhé để khi lp trình đỡ b
lon gia Anh và Vit. Khi viết các query SQL thì viết hoa, đơn gin là để xác định nó là
t khóa ca SQL; SQL không phân bit ch hoa ch thường cho nên nếu viết thường
không nh hưởng gì c; chng qua viết hoa tránh nhm ln. Cái này theo chun lp
trình ANSI để phân bit thôi.
Viết mt query đơn gin
[code]
SELECT
*
FROM
Employees;
[/code]
Du * nghĩa là ly d liu ca tt c các ct nm trong bng. Khi thc thì (! Execute)
query này trong “Northwind” thì s thu được tt c các hàng và ct nm trong
‘Employees’ Table.
Chú ý: khi bn làm vic vi cơ s d liu ca SQL Server 2k5 thì dùng GUI d xác định
các thành phn và đặc đim ca cu trúc khi làm vic vi cơ s d liu. Query có th
hiu là làm vic theo kiu code. Thc tế để code vi cơ s d liu mt cách chun thì
câu lnh s rt phc tp và tn nhiu dòng (có khi lên đến hàng trăm dòng code.
Nếu bn chưa biết thc thi (! Execute) query như thế nào thì làm như sau :
1. M Mircrosoft SQL Server Management Studio 2005 Express ra.
2. Chn db ‘Northwind’.
3. Chn nút ‘New Query’ trên Toolbar (thanh công c).
4. Viết query vào.
5. Phi chut và chn ‘! Execute’.
6. S thy kết qu ti tab ‘Results’ ngay bên dưới phn mà bn va code query
xong.
Gii thích câu query
Câu query va thc hin là :
[code] SELECT * FROM Employees; [/code]
Nghĩa là : ly d liu ca tt c các ct các hàng ca bng ‘Employees. Hoc là : ly tt
c d liu có trong bng ‘Employees’.
Gi s mun ly d liu ca mt s columns thôi vì có nhiu ct không cn thiết, ly
vào ch tn tài nguyên khi thc thi thì query như sau :
[code]
SELECT
<column 1>,
<column 2>,
….
<column n>
FROM
Employees;
[/code]
Trong đó <column X> là tên column bn cn ly d liu. Chng hn t ch mun ly tên
ca nhân viên trong bng ‘Employees’ thôi thì query như sau :
[code]
SELECT
Lastname
FROM
Employees;
[/code]
Hoc ly s ID ca nhân viên và h tên ca nhân viên :
[code]
SELECT
employeeid,
firstname,
lastname
FROM
Employees;
[/code]
Gim bt s lượng d liu không cn thiết s rt tiết kim tài nguyên khi bn làm vic
vi mt cơ s d liu ln, đồ s.
Mnh đề WHERE
Yếu t thêm trong query này là WHERE để xác định hàng có tính cht nào đó.
Cu trúc câu lnh :
[code] WHERE <column1> <operator> <column2> [/code]
Trong đó : <column1> <column2> là tên 2 ct vi toán t so sánh ‘operator’.
Th dùng WHERE trong câu query va viết xong nhé :
[code]
SELECT
employeeid,
firstname,
lastname
FROM
Employees
WHERE
country = ‘USA’;
[/code]
Ri, n F5 để thc thi query hoc phi chut->! Execute ^_^!
Chú ý: nếu là string thì phi để trong du ‘ như trên.
Toán t so sánh ca mnh đề WHERE
Toán tGii thích Ví d
=Bng EmployeeID = 1
<Nh hơn EmployeeID < 1
>Ln hơn EmployeeID > 1
<= Nh hơn hoc bng EmployeeID <= 1
>= Ln hơn hoc bng EmployeeID >= 1
<>, != Khác EmployeeID <> 1
!< Không nh hơn EmployeeID !< 1
!> Không ln hơn EmployeeID !> 1
Chú ý: trong chun SQL không có toán t ‘!=’; ch áp dng vi kiu d liu T-SQL.
Toán t LIKE
Toán t này đưa ra kết qu theo kiu pattern cho trước (cái này liên quan Regular
Expression). Ví d
[code] WHERE Title LIKE ‘Sale%’ [/code]
S ly ra tt c các hàng nào có ct có tiêu đề bt đầu vi cm t Sale , có th là
‘Sale’ , ‘Sale0’,’Saleman’……
Có 4 trường hp để xác định pattern :
% : bt c kí t hoc mt nhóm nào đều hp l k c rng (empty).
_ : mt kí t bt kì . Ví d : LIKE ‘_ales’ có th là : Sales,Bales,Cales…nhưng ch
1 kí t.
[ ] : Mt vài kí t xác định cho phép là hp l. Ví d: LIKE ‘[bs]ales thì ch có 2
kết qu là : bales và sales.
[^] : kí t không phi nhóm kí t xác định. Ví d : [^a-h] thì không ly kí t nào t
a đến h.
Cái này ging ht Regular Expression nha. :D
Đôi lúc bn s thy nhng ct chng có giá tr gì được gn cho nó c, ta gi là NULL
(column is NULL). Vì vy có toán t giúp ta xác định các giá tr này :
Toán t IS NULL và IS NOT NULL
IS NULL : Cho phép ly ra hàng có ct chng có giá tr gì.
Ví d : WHERE Region IS NULL
IS NOT NULL : Cho phép ly ra hàng có ct có giá tr.
Ví d : WHERE Region IS NOT NULL
Mt query đúng :
[code]
SELECT * FROM Employees WHERE Region IS NULL;
[/code]
Mt query sai :
[code]
SELECT * FROM Employees WHERE Region = NULL;
[/code]
Ti sao sai ? Sai vì chng có cái gì ‘= NULL’ c :D. Sai toán t.
Toán t BETWEEN và IN
Nhiu lúc mun ly kết qu trong mt khu vc mình mun thu hp li (range), ước
chng khong thế nào đó. Ta dùng BETWEEN và IN
BETWEEN : tr v true nếu giá tr nm trong mt khong.
Ví d : WHERE extension BETWEEN 400 AND 500
Ly hàng có ct ‘extension’ có giá tr trong khong 400 và 500
IN : tr v true nếu giá tr nm trong mt danh sách (list). Danh sách có th là
mt query con (sub-query)
Ví d : WHERE city IN (‘Seattle’, ‘London’)
Ly hàng có ct ‘city’ mang giá tr là ‘Seattle’ và ‘London.
Toán t Logic : AND – NOT – OR
AND : ví d : WHERE ( title LIKE ‘Sale%’ AND lastname = ‘Peacock’ )
NOT : ví d : WHERE NOT ( title LIKE ‘Sale%’ AND lastname = ‘Peacock’)
OR : ví d : WHERE ( title = ‘Anh Tun’ OR title = ‘Pete’ )
Cái này d hiu khi gii thích. ^^!
Sp xếp d liu