1. Trang chủ
  2. » Công Nghệ Thông Tin

Tài liệu Cơ bản về SQL cho người mới bắt đầu pot

8 1,3K 5
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Cơ Bản Về SQL Cho Người Mới Bắt Đầu
Trường học Trường Đại Học
Chuyên ngành Công Nghệ Thông Tin
Thể loại Bài Viết
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 8
Dung lượng 165 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Căn bản SQL cho người lập trình C# Bài này mình giới thiệu cho các bạn các thành phần cơ bản của SQL mà bạn cần biết để có thể viết một chương trình làm việc với cơ sở dữ liệu bằng C#..

Trang 1

Cơ bản về SQL cho người mới bắt đầu

Đây là bài đầu tiên trong loạt bài về Database và C# của mình

Căn bản SQL cho người lập trình C#

Bài này mình giới thiệu cho các bạn các thành phần cơ bản của SQL mà bạn cần biết để có thể viết một chương trình làm việc với cơ sở dữ liệu bằng C#

· Query

· Câu lệnh INSERT

· Câu lệnh UPDATE

· Câu lệnh DELETE

· Kiểu dữ liệu T-SQL

SQL là cái gì ?

Nếu như bạn đã từng làm việc với hệ quản trị cơ sở dữ liệu, tất nhiên sẽ biết sử dụng SQL SQL là ngôn ngữ database chuẩn quốc tế Bạn có thể dùng SQL để tạo thêm dữ liệu, lấy thông tin, thay đổi hay xóa dữ liệu (và nhiều thứ khác) Tóm lại, SQL tiếng Anh là “Structured Query Language”, ngôn ngữ có cấu trúc.Được phát triển từ những năm 70, được IBM sáng tạo ra và gọi với tên là : SEQUEL “Structured English Query Language”, sau này được thay đổi đi một chút gọi là SQL nhưng có khác với SEQUEL, cần tránh nhầm lẫn SEQUEL hiện được sử dụng trong hệ thống của IBM Về cách phát âm, trong thế giới của Microsoft và Oracle gọi là

“sequel” ( xi-quờ ) Còn trong khu vực làm việc với DB2 và MySQL thì hay gọi là “ess cue ell” ( ét-kiu-eo ) Các bạn thích gọi thế nào cũng được, tùy Tớ thì hay gọi nó là “ess cue ell” Bắt đầu về SQL cấu trúc và query

Yêu cầu cần thiết để thực hiện 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 bạn có thể download free trong trang Downloads của Microsoft

Sau đó cài đặt tất cả và bắt đầu vào thao tác trong database

L ấ y d ữ li ệ u (RETRIEVING DATA)

Một query của SQL dùng để lấy thông tin từ database Dữ liệu được chứa trong các hàng (rows) của bảng (tables) Hàng (Rows) gồm một nhóm các cột (Columns) chứa dữ liệu tương ứng Biểu thức query lấy dữ liệu có cấu trúc :

· Một danh sách SELECT (lựa chọn), tại vị trí các cột được gọi để lấy dữ liệu chỉ định

· Một mệnh đề WHERE, xác định bảng (tables) cần truy cập để lấy dữ liệu

Bây giờ những từ nào tiếng Anh cần thiết thì tớ viết tiếng Anh nhé để khi lập trình đỡ bị loạn giữa Anh và Việt Khi viết các query SQL thì viết hoa, đơn giản là để xác định nó là từ khóa của SQL; SQL không phân biệt chữ hoa chữ thường cho nên nếu viết thường không ảnh hưởng gì cả; chẳng qua viết hoa tránh nhầm lẫn Cái này theo chuẩn lập trình ANSI để phân biệt thôi Viết một query đơn giản

MÃ: CH Ọ N T Ấ T C

SELECT

* FROM Employees;

Trang 2

Dấu * nghĩa là lấy dữ liệu của tất cả các cột nằm trong bảng Khi thực thì (! Execute) query này trong “Northwind” thì sẽ thu được tất cả các hàng và cột nằm trong ‘Employees’ Table

Chú ý: khi bạn làm việc với cơ sở dữ liệu của SQL Server 2k5 thì dùng GUI dễ xác định các thành phần và đặc điểm của cấu trúc khi làm việc với cơ sở dữ liệu Query có thể hiểu là làm việc theo kiểu code Thực tế để code với cơ sở dữ liệu một cách chuẩn thì câu lệnh sẽ rất phức tạp và tốn nhiều dòng (có khi lên đến hàng trăm dòng code

Nếu bạn chưa biết thực thi (! Execute) query như thế nào thì làm như sau :

1 Mở Mircrosoft SQL Server Management Studio 2005 Express ra

2 Chọn db ‘Northwind’

3 Chọn nút ‘New Query’ trên Toolbar (thanh công cụ)

4 Viết query vào

5 Phải chuột và chọn ‘! Execute’

6 Sẽ thấy kết quả tại tab ‘Results’ ngay bên dưới phần mà bạn vừa code query xong

Giải thích câu query

Câu query vừa thực hiện là :

MÃ: CH Ọ N T Ấ T C

SELECT * FROM Employees;

Nghĩa là : lấy dữ liệu của tất cả các cột các hàng của bảng ‘Employees’ Hoặc là : lấy tất cả dữ liệu có trong bảng ‘Employees’

Giả sử muốn lấy dữ liệu của một số columns thôi vì có nhiều cột không cần thiết, lấy vào chỉ tốn tài nguyên khi thực thi thì query như sau :

Code:

MÃ: CH Ọ N T Ấ T C

SELECT

<column 1>,

<column 2>,

….

<column n>

FROM

Employees;

Trong đó <column X> là tên column bạn cần lấy dữ liệu Chẳng hạn tớ chỉ muốn lấy tên của nhân viên trong bảng ‘Employees’ thôi thì query như sau :

Code:

MÃ: CH Ọ N T Ấ T C

SELECT

Lastname

Trang 3

FROM

Employees;

Hoặc lấy số ID của nhân viên và họ tên của nhân viên :

Code:

MÃ: CH Ọ N T Ấ T C

SELECT

employeeid,

firstname,

lastname

FROM

Employees;

Giảm bớt số lượng dữ liệu không cần thiết sẽ rất tiết kiệm tài nguyên khi bạn làm việc với một

cơ sở dữ liệu lớn, đồ sộ

Mệnh đề WHERE

Yếu tố thêm trong query này là WHERE để xác định hàng có tính chất nào đó

Cấu trúc câu lệnh :

Code:

MÃ: CH Ọ N T Ấ T C

WHERE <column1> <operator> <column2>

Trong đó : <column1> <column2> là tên 2 cột với toán tử so sánh ‘operator’

Thử dùng WHERE trong câu query vừa viết xong nhé :

Code:

MÃ: CH Ọ N T Ấ T C

SELECT

employeeid,

firstname,

lastname

FROM

Employees

WHERE

country = ‘USA’;

Rồi, ấn F5 để thực thi query hoặc phải chuột->! Execute ^_^!

Chú ý: nếu là string thì phải để trong dấu ‘ như ở trên

Toán tử so sánh của mệnh đề WHERE

Trang 4

Chú ý: trong chuẩn SQL không có toán tử ‘!=’; chỉ áp dụng với kiểu dữ liệu T-SQL.

Toán tử LIKE

Toán tử này đưa ra kết quả theo kiểu pattern cho trước (cái này liên quan Regular Expression)

Ví dụ

Code:

WHERE Title LIKE ‘Sale%’

Sẽ lấy ra tất cả các hàng nào có cột có tiêu đề bắt đầu với cụm từ Sale , có thể là ‘Sale’ ,

‘Sale0’,’Saleman’……

Có 4 trường hợp để xác định pattern :

· % : bất cứ kí tự hoặc một nhóm nào đều hợp lệ kể cả rỗng (empty)

· _ : một kí tự bất kì Ví dụ : LIKE ‘_ales’ có thể là : Sales,Bales,Cales…nhưng chỉ 1 kí tự

· [ ] : Một vài kí tự xác định cho phép là hợp lệ Ví dụ: LIKE ‘[bs]ales’ thì chỉ có 2 kết quả là : bales và sales

· [^] : kí tự không phải nhóm kí tự xác định Ví dụ : [^a-h] thì không lấy kí tự nào từ a đến h Cái này giống hệt Regular Expression nha

Đôi lúc bạn sẽ thấy những cột chẳng có giá trị gì được gắn cho nó cả, ta gọi là NULL (column is NULL) Vì vậy 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 lấy ra hàng có cột chẳng có giá trị gì

Ví dụ : WHERE Region IS NULL

· IS NOT NULL : Cho phép lấy ra hàng có cột có giá trị

Ví dụ : WHERE Region IS NOT NULL

Một query đúng :

Code:

MÃ: CH Ọ N T Ấ T C

SELECT * FROM Employees WHERE Region IS NULL;

Trang 5

Một query sai :

Code:

MÃ: CH Ọ N T Ấ T C

SELECT * FROM Employees WHERE Region = NULL;

Tại sao sai ? Sai vì chẳng có cái gì ‘= NULL’ cả Sai toán tử

Toán tử BETWEEN và IN

Nhiều lúc muốn lấy kết quả trong một khu vực mình muốn thu hẹp lại (range), ước chừng khoảng thế nào đó Ta dùng BETWEEN và IN

· BETWEEN : trả về true nếu giá trị nằm trong một khoảng

Ví dụ : WHERE extension BETWEEN 400 AND 500

Lấy hàng có cột ‘extension’ có giá trị trong khoảng 400 và 500

· IN : trả về true nếu giá trị nằm trong một danh sách (list) Danh sách có thể là một query con (sub-query)

Ví dụ : WHERE city IN (‘Seattle’, ‘London’)

Lấy hàng có cột ‘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 Tuấn’ OR title = ‘Pete’ )

Cái này dễ hiểu khỏi giải thích ^^!

Sắp xếp dữ liệu

Khi lọc ra được các dữ liệu muốn tìm nhưng mà nó không theo trật tự nào cả Bạn muốn kết quả thu được tự sắp xếp theo một hướng nào đó để bạn dễ hiểu dễ nhìn

Dùng mệnh đề ORDER BY

Cấu trúc :

Code:

MÃ: CH Ọ N T Ấ T C

ORDER BY <column_name> [ASC | DESC] {, n}

· ASC : Ascending

· DESC : Descending

Nếu bạn không có ASC hay DESC thì mặc định (default) là ASC

Query chung mẫu :

Code:

MÃ: CH Ọ N T Ấ T C

SELECT <column_list>

FROM <table>

WHERE <predicate>

ORDER BY <column_name> ASC | DESC

Trang 6

Bây giờ sử dụng những cái đã biết ở trên vào làm vài query phức tạp chơi nhé ^&^!

Viết Query phức tạp

Bây giờ tớ muốn :

· Lấy các đơn đặt hàng (orders) được nhận bởi nhân viên có id là 5 (employeeid = 5 )

· Đơn đặt hàng chuyển tới Pháp (France) hoặc Brazil

· Chỉ lấy thông tin : OrderID, EmployeeID, CustomerID, OrderDate và ShipCountry

· Sắp xếp theo nước nhận hàng và ngày đặt hàng

Hooooohohohoo…Nghe phức tạp chưa Đọc mù mắt, đếch ra cái gì

Mở New Query và dùng code sau :

Mã chọn tất cả

SELECT

Orderid,

Employeeid,

Customerid,

Orderdate,

Shipcountry,

FROM

Orders

WHERE

Employeeid = 5

AND

Shipcountry IN ( ‘Brazil’ , ‘France’)

ORDER BY

Shipcountry ASC,

Orderdate ASC

Bạn sẽ thu được 10 hàng có kết quả tương ứng nha

Kết thúc mục lấy dữ liệu từ database

Chèn thêm d ữ li ệ u (INSERTING DATA)

Bạn đã biết cách lấy dữ liệu từ db bây giờ phải biết thêm chèn thêm dữ liệu vào db nữa chứ

Để thêm dữ liệu vào dùng câu lệnh ‘INSERT’ Rất đơn giản không phức tạp lắm vì khi thêm dữ liệu đâu cần phải lọc,sắp xếp phân loại nên không xài WHERE và ORDER BY khi thêm dữ liệu Cấu trúc câu lệnh INSERT :

MÃ: CH Ọ N T Ấ T C

INSERT INTO <table_name>

( <colum-1>, <column-2>,… , <column-N>)

VALUES

( <value-1>,<value-2>, …, <value-N)

Bây giờ thử nha Mở thằng ‘Northwind’ rấu đó chọn bảng ‘Shippers’ Cột đầu tiên là

‘ShippersID’ là khóa của bảng này Tiếp theo là ‘CompanyName’ và ‘Phone’

Ta thử thêm một người ship hàng :

Trang 7

MÃ: CH Ọ N T Ấ T C

INSERT INTO shippers

( CompanyName, Phone )

VALUES

( ‘CongDongCViet.COM’, ‘000-123456’);

Sau đó run query này, có một Message trong reporting “ (1 row(s) affected “ Sau đó xem lại table ‘Shipper’ thì có thêm một hàng mới (new row) mà ta vừa chèn vào bảng xong

Kết thúc mục chèn thêm dữ liệu vào database

***Monkey D Lufy***

mr.quan.ctk32

Thành viên cấp 3

Bài viết: 57

Ngày tham gia: Thứ 4 17/08/11 7:10

Đến từ: nghệ an

Cảm ơn: 0 lần

Được cảm ơn: 5 lần

Re: C ơ b ả n v ề SQL cho ng ườ i m ớ i b ắ t đ ầ u

gửi bởi mr.quan.ctk32 » Thứ 7 03/09/11 11:19

Thay đ ổ i d ữ li ệ u (UPDATING DATA)

Bây giờ một việc quan trọng là thay đổi dữ liệu ta dùng câu lệnh ‘UPDATE’ Khi làm việc với câu lệnh ‘UPDATE’ nên rất cẩn thận vì sự thay đổi sẽ có tác dụng ảnh hưởng tất cả các hàng trong mệnh đề WHERE; bạn nên chú ý điều này

Cấu trúc câu lệnh UPDATE

MÃ: CH Ọ N T Ấ T C

UPDATE <table_name>

SET

<col-1> = <val-1>,

<col-2> = <val-2>,

Trang 8

…,

<col-N> = <val-N>

WHERE <predicate>

Vừa nãy khi chèn thêm dữ liệu ta thêm vào một hàng, hàng đó có ‘ShipperID = 4’

với CompanyName = ‘CongDongCViet.COM’; bây giờ ta đổi cái CompanyName thành ‘Pete – Vo Danh Tieu Tot’ nhé ^~^!

MÃ: CH Ọ N T Ấ T C

UPDATE shippers

SET

CompanyName = ‘Pete – Vo Danh Tieu Tot’

WHERE

ShipperID = 4

Thấy reporting “ (1 row(s) affected) “ Refresh table thấy sự thay đổi ngay

Đơn giản nhưng rất cẩn thận với câu lệnh này nhé

Kết thúc mục thay đổi dữ liệu trong database

Ngày đăng: 26/02/2014, 05:20

TỪ KHÓA LIÊN QUAN

w