Clip Hay Chọn Lọc
Posted by Tân EX on 06 8th, 2012
Linda Phạm Hóa Thân Thổ Dân Xinh Đẹp Tự Nhiên
Từ Vựng Tiếng Anh Chuyên Ngành Công Nghệ Thông Tin Hay Và Dễ Hiểu
Lập Kế Hoạch SEO
How to Add Custom Google Search Engine in Blogger
CCD Hay CMOS Hơn?
How To Add Like Box On Facebook Fan Page To Blogger
Những công việc làm thêm được trả lương ‘khủng’
Camera Full HD
Name Card Chị Hồng - Design By Tân Năm 2013
The Market - Chợ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| -- Truy vấn dữ liệu trên bảng Product_Type-- Truy vấn toàn bộ các cột.Select * From Product_Type;-- Câu lệnh truy vấn trên và câu lệnh dưới đây là tương đương nhau.-- Pty là alias (tên bí danh đặt cho bảng Product_Type).Select Pty.* From Product_Type Pty;-- Truy vấn một vài cột-- Có thể liệt kê ra.Select Pty.Product_Type_Cd ,Pty.NameFrom Product_Type Pty; |
1
2
3
4
5
6
7
8
| -- Truy vấn 4 cột trên bảng Employee (Bảng nhân viên).-- Sử dụng Emp là Alias (Tên bí danh) cho bảng Employee.Select Emp.Emp_Id ,Emp.First_Name ,Emp.Last_Name ,Emp.Dept_IdFrom Employee Emp; |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| -- Hàm Convert(Varchar, <intvalue>) chuyển một số thành chữ (Varchar) (Hàm của SQLServer)-- Sử dụng toán tử + để nối hai chuỗi (Có thể không được hỗ trợ bởi DB khác)-- Chúng ta có một cột mới sử dụng 'as' để định nghĩa tên cột cho cột mới này.Select Emp.Emp_Id ,Emp.First_Name ,Emp.Last_Name ,Emp.Dept_Id ,'EMP' + Convert(Varchar,Emp.Emp_Id) As Emp_No2 -- Cột mớiFrom Employee Emp;-- Có thể không cần sử dụng 'as' trong định nghĩa Alias cho cột.Select Emp.Emp_Id ,Emp.First_Name ,Emp.Last_Name ,Emp.Dept_Id ,'EMP' + Convert(varchar,Emp.Emp_Id ) Emp_No2 -- Cột mớiFrom Employee Emp; |
1
| Select distinct <column1>, <column2> .... |
1
2
3
4
5
6
7
8
9
10
11
12
13
| -- Truy vấn sản phẩm (Sản phẩm dịch vụ của Ngân hàng)-- Cột mã sản phẩm, tên và kiểu sản phẩm.Select Pro.Product_Cd ,Pro.Name ,Pro.Product_Type_CdFrom Product Pro;-- Truy vấn các kiểu sản phẩm (Product_Type_Cd) trong bảng Product.-- Dữ liệu là nhiều, nhưng trùng nhau.Select Pro.Product_Type_Cd from Product Pro;-- Cần sử dụng Distinct để loại bỏ việc trùng lặp.Select Distinct Pro.Product_Type_Cd from Product Pro; |
1
2
3
4
| -- Truy vấn bảng Product tìm các sản phẩm dịch vụ có kiểu:-- "Cho vay cá nhân và kinh doanh".-- Ứng với cột Product_Type_Cd = 'LOAN'.Select * From Product Pro Where Pro.Product_Type_Cd = 'LOAN'; |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| -- Câu lệnh tìm kiếm các Nhân viên có tên bắt đầu bởi chữ S.Select Emp.Emp_Id ,Emp.First_Name ,Emp.Last_Name ,Emp.Dept_IdFrom Employee EmpWhere Emp.First_Name Like 'S%';-- Câu lệnh tìm kiếm các nhân viên có tên bắt đầu bởi chữ S-- và thuộc phòng điều hành (Operations) Dept_Id = 1.Select Emp.Emp_Id ,Emp.First_Name ,Emp.Last_Name ,Emp.Dept_IdFrom Employee EmpWhere Emp.First_Name Like 'S%'And Emp.Dept_Id = 1; |
1
2
3
4
5
6
7
8
9
10
| -- Tìm kiếm các nhân viên có tên bắt đầu bởi chữ S hoặc P.-- và trong phòng điều hành (Operations). (Dept_Id = 1)Select Emp.Emp_Id ,Emp.First_Name ,Emp.Last_Name ,Emp.Dept_IdFrom Employee EmpWhere (Emp.First_Name Like 'S%' Or Emp.First_Name Like 'P%')And Emp.Dept_Id = 1; |
1
2
3
4
5
6
7
8
9
10
| -- Câu lệnh này tìm kiếm các nhân viên có tên-- hoặc Susan hoặc Paula hoặc Helen.Select Emp.Emp_Id ,Emp.First_Name ,Emp.Last_Name ,Emp.Dept_IdFrom Employee EmpWhere Emp.First_Name In ('Susan' ,'Paula' ,'Helen'); |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| -- Tìm các nhân viên có Emp_Id trong khoảng từ 5 đến 10.Select Emp.Emp_Id ,Emp.First_Name ,Emp.Last_Name ,Emp.Start_DateFrom Employee EmpWhere (Emp.Emp_Id Between 5 And 10);-- Câu lệnh trên tương đương với:Select Emp.Emp_Id ,Emp.First_Name ,Emp.Last_Name ,Emp.Start_DateFrom Employee EmpWhere Emp.Emp_Id >= 5And Emp.Emp_Id <= 10; |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| -- Câu lệnh này tìm kiếm các nhân viên bắt đầu vào làm việc trong 1 khoảng thời gian-- xác định trong mệnh đề where.-- 03-05-2002 ==> 09-08-2002 (Theo dd-MM-yyyy)Select Emp.Emp_Id ,Emp.First_Name ,Emp.Last_Name ,Emp.Start_Date , -- Hàm Convert(Varchar, <Date>, 105) chuyển Date thành Varchar dạng DD-MM-YYYY -- Đây là hàm của SQLServer. không dùng cho DB khác. Convert(Varchar, Emp.Start_Date ,105) Start_Date_VnFrom Employee EmpWhere-- Hàm Convert(Datetime, <Varchar>, 105) chuyển text dạng DD-MM-YYYY sang Datetime-- (Đây là hàm của SQLServer, có thể ko có trên các DB khác) ( -- Emp.Start_Date Between Convert(Datetime, '03-05-2002' ,105) And Convert(Datetime,'09-08-2002' ,105) -- ); |
1
2
3
4
5
6
7
8
9
10
| -- Tìm kiếm các Khách hàng (Customer) có số FED_ID theo định dạng:-- Phần trước bất kỳ, rồi tới dấu - , rồi tới 2 ký tự, rồi tới dấu -, và cuối bất kỳ.-- Sử dụng 2 dấu _ để minh họa rằng đó là 2 ký tự.-- (Mỗi dấu _ là chính xác một ký tự).Select Cus.Cust_Id ,Cus.Fed_Id ,Cus.AddressFrom Customer Cuswhere cus.fed_id like '%-__-%'; |
1
2
3
4
5
6
7
8
9
10
| -- Cú phápSELECT "column_name"FROM "table_name"[WHERE "condition"]ORDER BY "column_name1" [ASC, DESC], "column_name2" [ASC, DESC];-- Ghi chú:-- ASC: nghĩa là sắp xếp tăng dần (Mặc định)-- DESC: Nghĩa là sắp xếp giảm dần. |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
| -- Sắp xếp ưu tiên Product_Type_Cd tăng dần-- Sau đó mới tới Name (Cũng tăng dần)Select Pro.Product_Cd ,Pro.Product_Type_Cd ,Pro.NameFrom Product ProOrder By Pro.Product_Type_Cd Asc ,Pro.Name Asc; -- Trong Order BY, ASC là mặc định.-- Vì vậy có thể ko cần viết ASC.Select Pro.Product_Cd ,Pro.Product_Type_Cd ,Pro.NameFrom Product ProOrder By Pro.Product_Type_Cd ,Pro.Name;-- Sắp xếp ưu tiên Product_Type_Cd giảm dần-- Sau đó mới tới Name (Tăng dần)Select Pro.Product_Cd ,Pro.Product_Type_Cd ,Pro.NameFrom Product ProOrder By Pro.Product_Type_Cd Desc ,Pro.Name Asc; |
1
2
3
4
5
6
7
8
9
| -- Tìm các nhân viên có tên bắt đầu bởi S.-- Sắp xếp giảm dần theo ngày bắt đầu vào làm việc.Select Emp.Emp_Id ,Emp.First_Name ,Emp.Last_Name ,Emp.Start_DateFrom Employee EmpWhere Emp.First_Name Like 'S%'Order By Emp.Start_Date Desc; |
1
2
3
4
5
6
7
8
9
10
| -- Đây là cú pháp của SQLServer(Có thể không được hỗ trợ bởi Database khác).-- Sử dụng thứ tự của cột vào trong câu Order by.-- First_Name là cột thứ 2 trong câu Select-- Có thể sử dụng: Order by 2 thay cho Order by First_Name.Select Emp.Emp_Id ,Emp.First_Name ,Emp.Last_Name ,Emp.Start_DateFrom Employee EmpOrder By 2 Desc; |
1
2
3
4
5
6
7
| -- Truy vấn dữ liệu trong bảng Account.Select Acc.Account_Id ,Acc.Product_Cd ,Acc.Avail_Balance ,Acc.Pending_BalanceFrom Account Acc; |
1
2
3
4
5
6
| Select Acc.Product_Cd ,Count(Acc.Product_Cd) As Count_Acc -- Số tài khoản ,Sum(Acc.Avail_Balance) As Sum_Avail_Balance -- Tổng số tiền trong tài khoản ,Avg(Acc.Avail_Balance) As Avg_Avail_Balance -- Số tiền trung bìnhFrom Account AccGroup By Acc.Product_Cd; |
1
2
3
4
5
6
7
| Select Acc.Product_Cd ,Count(Acc.Product_Cd) As Count_Acc -- Số tài khoản ,Sum(Acc.Avail_Balance) As Sum_Avail_Balance -- Tổng số tiền trong tài khoản ,Avg(Acc.Avail_Balance) As Avg_Avail_Balance -- Số tiền trung bìnhFrom Account AccGroup By Acc.Product_CdHaving Count(Acc.Product_Cd) > 3; |
1
2
3
4
5
6
7
8
9
10
| Select Acc.Product_Cd ,Count(Acc.Product_Cd) As Count_Acc ,Sum(Acc.Avail_Balance) As Sum_Avail_Balance ,Avg(Acc.Avail_Balance) As Avg_Avail_BalanceFrom Account Acc-- Sử dụng Where lọc bớt dữ liệu trước khi group.Where Acc.Open_Branch_Id = 1Group By Acc.Product_Cd-- Sử dụng Having lọc bớt dữ liệu sau khi đã groupHaving Count(Acc.Product_Cd) > 1; |
1
2
3
4
| -- Cú pháp câu lệnh Insert Into:INSERT INTO "table_name" ("column1", "column2", ...)VALUES ("value1", "value2", ...); |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| -- Trèn 1 dòng dữ liệu vào bảng Acc_Trasaction-- Cột Txn_ID tự động được sinh ra.-- (Txn_ID không tham gia vào trong câu Insert)-- Current_Timestamp là hàm của SQLServer lấy ra giờ hệ thống (System Date)-- Current_Timestamp : Giờ hiện tại.Insert Into Acc_Transaction (Amount ,Funds_Avail_Date ,Txn_Date ,Txn_Type_Cd ,Account_Id ,Execution_Branch_Id ,Teller_Emp_Id)Values (100 -- Amount ,Current_Timestamp -- Funds_Avail_Date ,Current_Timestamp -- Txn_Date ,'CDT' -- Txn_Type_Cd ,2 -- Account_Id ,Null -- Execution_Branch_Id ,Null -- Teller_Emp_Id ); |
1
2
3
4
5
| -- Ngữ pháp câu lệnh INSERT INTO .. SELECTINSERT INTO "table1" ("column1", "column2", ...)SELECT "column3", "column4", ...FROM "table2"; |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| -- Txn_Id tự sinh ra (Không cần phải tham gia vào câu Insert)-- Trèn nhiều dòng dữ liệu vào bảng Acc_Transaction-- Lấy dữ liệu từ câu Select.Insert Into Acc_Transaction ( Txn_Date ,Account_Id ,Txn_Type_Cd ,Amount ,Funds_Avail_Date) Select Acc.Open_Date -- Txn_Date ,Acc.Account_Id -- Account_Id ,'CDT' -- Txn_Type_Cd ,200 -- Amount ,Acc.Open_Date -- Funds_Avail_Date From Account Acc Where Acc.Product_Cd = 'CD'; |
1
2
3
4
5
| -- Cú pháp câu lệnh Update:UPDATE "table_name"SET "column_1" = "new value 1", "column_2"= "new value 2"WHERE "condition"; |
Theo logic, mỗi khách hàng có thể có một hoặc nhiều tài khoản, mỗi tài khoản ứng với 1 sản phẩm dịch vụ của ngân hàng.
1
2
3
4
5
| -- Update, tăng số tiền trong tài khoản lên 2% cho khách hàng CUST_ID = 1.Update AccountSet Avail_Balance = Avail_Balance + 2 * Avail_Balance / 100 ,Pending_Balance = Pending_Balance + 2 * Pending_Balance / 100Where Cust_Id = 1; |
1
2
3
4
| -- Cú pháp xóa các dòng dữ liệu trong bảng.DELETE FROM "table_name"WHERE "condition"; |
1
2
3
4
5
| -- Xóa 2 dòng dữ liệu trong bảng Acc_Transaction:Delete From Acc_TransactionWhere Txn_Id In (25 ,26); |
1
2
3
| -- Đếm số row (dòng) có trong bảng AccountSelect Count(Acc.Account_Id) As Count_Acc From Account Acc; |
1
2
3
| -- Đếm số tài khoản có giao dịch với ngân hàng. Select Count(distinct txn.Account_id) as Distinct_Acc From Acc_Transaction txn; |
1
2
3
4
5
6
| -- Đếm số tài khoản đã mở ứng với mỗi khách hàng.Select Acc.Cust_Id ,Count(Acc.Account_Id) As Count_AccFrom Account AccGroup By Acc.Cust_Id; |
1
2
3
4
5
| -- Cú pháp:SELECT SUM("column_name")FROM "table_name"; |
1
2
3
4
5
6
7
8
9
10
11
12
| -- Tính tổng số tiền trong các tài khoản của khách hàng với Cust_ID = 1Select Sum(Acc.Avail_Balance) As Sum_Avail_BalanceFrom Account Acc Where Acc.Cust_Id = 1;-- Sử dụng với Group by.-- Tính tổng số tiền trong tài khoản ứng với mỗi khách hàngSelect Acc.Cust_Id ,Sum(Acc.Avail_Balance) As Sum_Avail_BalanceFrom Account AccGroup By Acc.Cust_Id; |
1
2
3
4
| -- Cú pháp:SELECT AVG("column_name")FROM "table_name"; |
1
| Ví dụ: |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| -- Tính số tiền trung bình ứng với loại hình gửi tiết kiêm.Select Avg(Acc.Avail_Balance) As Avg_Avail_BalanceFrom Account AccWhere Acc.Product_Cd = 'SAV'; -- Sử dụng với Group by.-- Một khách hàng có thể có 1 hoặc nhiều tài khoản.-- Tính số tiền trung bình mỗi tài khoản ứng với từng khách hàng-- (tại ngân hàng Branch_ID = 1)Select Acc.Cust_Id ,Avg(Acc.Avail_Balance) As Avg_Avail_BalanceFrom Account AccWhere Acc.Open_Branch_Id = 1Group By Acc.Cust_Id; |
1
2
3
4
| -- Cú pháp:SELECT MIN ("column_name")FROM "table_name"; |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| -- Tìm số tiền gửi tiết kiệm nhỏ nhất.Select Min(Acc.Avail_Balance) As Min_Avail_BalanceFrom Account AccWhere Acc.Product_Cd = 'SAV'; -- Sử dụng với Group by.-- Một khách hàng có thể có 1 hoặc nhiều tài khoản.-- Mở tại các chi nhánh khác nhau.-- Tìm số tiền trong tài khoản nhỏ nhất ứng với từng chi nhánhSelect Acc.Open_Branch_Id ,Min(Acc.Avail_Balance) As Min_Avail_BalanceFrom Account AccGroup By Acc.Open_Branch_Id; |
1
2
3
4
| -- Cú pháp:SELECT MAX("column_name")FROM "table_name"; |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| -- Cú phápSELECT column_name(s)FROM table1INNER JOIN table2ON table1.column_name=table2.column_name;-- Có thể thay INNER JOIN bởi JOIN-- Ý nghĩa và kết quả là như nhau.SELECT column_name(s)FROM table1JOIN table2ON table1.column_name=table2.column_name; |
1
2
3
4
5
6
7
8
9
10
11
| -- INNER JOIN 2 bảng EMPLOYEE và DEPARTMENT.Select Emp.Emp_Id ,Emp.First_Name ,Emp.Last_Name ,Emp.Dept_Id ,Dep.Name Dept_NameFrom Employee EmpInner Join Department DepOn Emp.Dept_Id = Dep.Dept_IdOrder By Emp.Emp_Id; |
1
2
3
4
5
6
7
8
9
10
11
12
13
| -- Cú pháp này cũng được hỗ trợ bởi Oracle & MySQL-- Việc INNER JOIN theo cách viết khác của SQLServer thực sự đơn giản.-- SQLServer đẩy điều kiện JOIN hai bảng xuống WHERE.Select Emp.Emp_Id ,Emp.First_Name ,Emp.Last_Name ,Emp.Dept_Id ,Dep.Name Dept_NameFrom Employee Emp ,Department DepWhere Emp.Dept_Id = Dep.Dept_IdOrder By Emp.Emp_Id; |
1
2
3
4
5
6
7
8
9
10
11
12
| -- Customer LEFT OUTER JOIN Officer-- Có thể thay thế LEFT OUTER JOIN bởi LEFT JOIN (Ý nghĩa và kết quả là giống nhau)Select Cus.Cust_Id ,Cus.Fed_Id ,Cus.State ,Ofc.Cust_Id As Ofc_Cust_Id ,Ofc.Officer_Id ,Ofc.Start_Date ,Ofc.TitleFrom Customer Cus -- Table1Left Outer Join Officer Ofc -- Table2On Cus.Cust_Id = Ofc.Cust_Id; |
1
2
3
4
5
6
7
8
| -- Cú pháp: (FULL OUTER JOIN)-- Có thể viết FULL JOINSELECT columnsFROM table1FULL [OUTER] JOIN table2ON table1.column = table2.column; |
1
2
3
4
5
6
7
| Select Acc.Account_Id ,Acc.Open_Date ,Acc.Product_Cd ,Acc.Avail_BalanceFrom Account AccWhere Acc.Cust_Id In (Select Cus.Cust_Id From Customer Cus Where Cus.Cust_Type_Cd = 'B') |
1
2
3
4
5
6
7
8
9
10
11
12
| Select Cus.Cust_Id ,Cus.Address ,Cus.Fed_Id ,Acc2.Sum_Avail_BalanceFrom Customer Cus , -- Câu Subquery định nghĩa 1 bảng ảo (inline view) (Select Acc.Cust_Id ,Sum(Acc.Avail_Balance) As Sum_Avail_Balance From Account Acc Group By Acc.Cust_Id) Acc2Where Cus.Cust_Id = Acc2.Cust_Id; |
1
2
3
4
5
6
7
8
| Select Cus.Cust_Id ,Cus.Address ,Cus.Fed_Id ,(Select Sum(Acc.Avail_Balance) From Account Acc Where Acc.Cust_Id = Cus.Cust_Id) As Sum_Avail_BalanceFrom Customer Cus; |
HỌC TẬP - THỰC HÀNH - CHIA SẺ KIẾN THỨC VỂ MARKETING & ĐIỀU HÀNH...