Professional Documents
Culture Documents
MỤC LỤC..............................................................................................................................................1
1 GIỚI THIỆU.............................................................................................................................3
2.2.3 DNS.............................................................................................................................................................................. 4
2.2.4 TNS_NAME................................................................................................................................................................5
4 SQL Select.................................................................................................................................8
4.1 Các mệnh đề chính và câu hỏi nghiệp vụ để viết select........................................................................8
4.3 SQL...........................................................................................................................................................8
4.3.1 Select tất cả các cột.....................................................................................................................................................8
4.3.3 Đặt alias – bí danh cho cột trong mệnh đề select cần tuân thủ 1 số quy tắc sau:.................................................9
723226974.docx Trang 2 / 23
1 GIỚI THIỆU
Ngày Tác giả Ghi chú
Tài liệu này nhằm mục đích giúp cho nghiệp vụ nắm được CSDL và có thể select
kiểm soát được luồng dữ liệu
Tài liệu này viết cho nghiệp vụ nên có những khái niệm đối với kỹ thuật đã biết có
thể sẽ hơi nhàm chán
723226974.docx Trang 3 / 23
2 CÁC KHÁI NIỆM VÀ VIẾT TẮT
2.2.1 IP
https://vi.wikipedia.org/wiki/%C4%90%E1%BB%8Ba_ch%E1%BB%89_IP
Địa chỉ IP (IP là viết tắt của từ tiếng Anh: Internet Protocol - giao thức Internet) là
một địa chỉ đơn nhất mà những thiết bị điện tử hiện nay đang sử dụng để nhận diện
và liên lạc với nhau trên mạng máy tính bằng cách sử dụng giao thức Internet.
IP là 1 dãy số gồm 4 phân đoạn cách nhau bởi dấu chấm, trong đó mỗi phân đoạn có
thể nhận giá trị từ 0 đến 255, ví dụ: 192.168.1.10
IP cần phải hiểu rộng hơn là địa chỉ duy nhất trong 1 vùng nào đó, vùng đó có thể là
o Router: thiết bị modem hay wifi
o LAN: mạng của phòng, văn phòng hay công ty
o WAN: mạng của công ty hay tổng công ty
o Internet: toàn thế giới
2.2.3 DNS
https://vi.wikipedia.org/wiki/Domain_Name_System
723226974.docx Trang 4 / 23
DNS (viết tắt trong tiếng Anh của Domain Name System - Hệ thống tên miền) là
một hệ thống cho phép thiết lập tương ứng giữa địa chỉ IP và tên miền trên Internet.
Cũng giống như host của window nhưng host trên window thì tên đó chỉ có ý nghĩa
với thiết bị của bạn, còn DNS là tên được định nghĩa chung trên internet và ai cũng
dùng được.
2.2.4 TNS_NAME
Đây là nơi định nghĩa 1 bí danh (alias) để kết nối tới CSDL oracle
Mỗi khi bạn cài 1 sản phẩm của oracle như database full, database client, developer
suite, … sẽ tạo ra 1 oracle_home (là 1 thư mục riêng) trên máy của bạn, mỗi
oracle_home sẽ có 1 file tns_name.ora
Vị trí của file tns_name.ora thông thường là: <oracle_home>\network\admin
723226974.docx Trang 5 / 23
3 CSDL QUAN HỆ
Khóa duy nhất (UK): Là 1 bộ giá trị của các cột xác định duy nhất 1 dòng trong
bảng
- 2 UK trong cùng 1 dòng giống nhau mới tính valid
Ví dụ: EMPLOYEES
A-A, MSNV: ABC STT 1 -> được trùng vì MSNV đã ko còn duy nhất
A-B, MSNV: ABC STT 2 -> được trùng vì MSNV đã ko còn duy nhất
A-A, MSNV: ABC STT 1-> không được trùng báo lỗi
Mỗi UK sẽ có nhiều cột:
Null cũng là giá trị, chẳng qua là chưa xác định nên UK vẫn áp được
A-Null, MSNV: ABC STT Null – Insert lần 1
A-Null, MSNV: ABC STT Null –> Không insert được
Khi select 2 UK sẽ cho đúng row đó
Khóa chính (PK): là khóa duy nhất UK và các cột của nó không chứa giá trị null
Khóa ngoại (FK): được xem như tham chiếu (con trỏ) trỏ tới khóa chính của 1 bảng
khác
723226974.docx Trang 6 / 23
o Đối với tên có 3 từ thì lấy 3 chữ cái đầu của mỗi từ: PRO_FORMA_INVS -->
PFI
o Đối với tên có 2 từ thì lấy 1 chữ của từ đầu và 2 chữ của từ sau:
SALES_INVOICES --> SIN
o Đối với tên có 1 từ thì lấy 3 chữ cái đầu: EMPLOYEES --> EMP
o sys_bi_co_logo bcl
Quan hệ DHE-DLI là 1-n, cách thể trên mô hình quan hệ như sau:
Muốn thể quan hiện quan hệ n-n (nhiều-nhiều) giữa 2 thực thể thì cần tạo 1 thực thể
trung gian và 2 thực thể gốc sẽ có quan hệ 1-n với thực thể trung gian này.
o Ví dụ 1: Trong nghiệp vụ kho, phương pháp FIFO:
- 1 chi tiết nhập (RLI) có thể được xuất bởi 1 hoặc nhiều chi tiết xuất (DLI)
- 1 chi tiết xuất (DLI) có thể xuất cho 1 hoặc nhiều chi tiết nhập (RLI)
Bảng trung gian của quan hệ này là RDE, cách thể hiện trên mô hình quan hệ như sau:
723226974.docx Trang 7 / 23
4 SQL Select
4.3 SQL
723226974.docx Trang 8 / 23
4.3.2 Để loại bỏ những dòng trùng nhau
Dùng từ khóa distinct để loại những dòng trùng nhau (trùng giá trị ở tất cả các cột)
Từ khóa distinct đứng ngay sau từ khóa select và trước tất cả các cột và chỉ xuất
hiện 1 lần
4.3.3 Đặt alias – bí danh cho cột trong mệnh đề select cần tuân thủ 1 số quy
tắc sau:
Tên cột và tên bí danh cần cách nhau dấu cách hoặc từ khóa “ as ” (có khoảng cách
2 bên từ khóa “as”)
Vd: Select * From Vbis_Accounts Vac
Select * From Sys_App_Parameters Sap
Select * From sys_bi_co_logo Slo
Mặc định bí danh sẽ được viết hoa ở kết quả, Nếu bí danh có khoảng cách hoặc
muốn viết Hoa chữ cái đầu thì để tên bí danh trong dấu ngoặc kép “”
Vd: select 'abc' as "ab c" from dual
723226974.docx Trang 9 / 23
o >=: Lớn hơn hoặc bằng
o <=: nhỏ hơn hoặc bằng
o <>: Khác
o !=: Khác
Toán tử so sánh trong SQL
o Between … And … : nằm giữa 2 giá trị bao gồm cả đầu mút (= 2 giá trị đó)
o select * from vbis_accounts where pos_id between 299
and 319;
o In: trong 1 tập hợp giá trị
- Tập này có thể là tập giá trị liệt kê trong ()
723226974.docx Trang 10 / 23
4.4.1 Hàm với chuỗi ký tự
Nối cột hoặc biểu thức: ||
723226974.docx Trang 11 / 23
length(str): trả về độ dài của chuỗi str
723226974.docx Trang 12 / 23
4.4.4 Các hàm chuyển đổi
Chuyển đổi tường minh
723226974.docx Trang 13 / 23
o YEAR: đánh vần năm theo tiếng anh
o MM: hiển thị tháng với 2 số
o MONTH: Tên tháng đầy đủ theo tiếng anh
o MON: 3 chữ cái đầu của tháng theo tiếng anh
o DY: 3 chữ cái đầu của thứ trong tuần
o DAY: đầy đủ tên thứ trong tuần
o DD: hiển thị ngày trong tháng với 2 số
o HH24: giờ dạng 24
o MI: phút
o SS: giây
o AM: hiển thị AM (sáng), PM (chiều)
723226974.docx Trang 14 / 23
NVL2(expr1,expr2,expr3): expr1 not null trả về expr2, ngược lại trả về expr3
NULLIF(expr1, expr2): trả về null nếu 2 thằng bằng nhau, trả về expr1 nếu khác
nhau
COALESCE (expr1, expr2, ..., exprn): trả về biểu thức not null đầu tiên
723226974.docx Trang 15 / 23
Những cột nào trên mệnh đề select không sử dụng hàm nhóm thì phải đưa vào mệnh
đề group by
723226974.docx Trang 16 / 23
5 Một số câu lệnh hỗ trợ
723226974.docx Trang 17 / 23
5.3 Câu lệnh tìm các bảng tham chiếu đến 1 bảng cho trước
Select Uco_Pk.Table_Name
,Uco_Pk.Constraint_Name
,Uco_Fk.Table_Name Bang_Fk
From User_Constraints Uco_Pk
,User_Constraints Uco_Fk
Where 1 = 1
And Uco_Pk.Constraint_Type = 'P'
And Uco_Pk.Constraint_Name = Uco_Fk.r_Constraint_Name
And Uco_Fk.Constraint_Type = 'R'
And Uco_Pk.Table_Name = 'INVOICES';
723226974.docx Trang 18 / 23
From User_Constraints Uco_Pk
,User_Constraints Uco_Fk
Where 1 = 1
And Uco_Pk.Constraint_Type = 'P'
And Uco_Pk.Constraint_Name =
Uco_Fk.r_Constraint_Name
And Uco_Fk.Constraint_Type = 'R'
And Uco_Pk.Table_Name = 'PAYMENTS') Bang_b
Where 1 = 1
And Bang_a.Bang_Fk = Bang_b.Bang_Fk
5.6 Tìm domain khi biết vài giá trị của nó (CRC)
Select d_1.Rv_Domain
From (Select Crc.Rv_Domain
From Cg_Ref_Codes Crc
Where 1 = 1
And Crc.Rv_Low_Value In ('I')) d_1
,(Select Crc.Rv_Domain
From Cg_Ref_Codes Crc
Where 1 = 1
And Crc.Rv_Low_Value In ('K')) d_2
,(Select Crc.Rv_Domain
From Cg_Ref_Codes Crc
Where 1 = 1
And Crc.Rv_Low_Value In ('L')) d_3
Where 1 = 1
And d_1.Rv_Domain = d_2.Rv_Domain
And d_3.Rv_Domain = d_2.Rv_Domain;
--
Select *
From Cg_Ref_Codes Crc
Where 1 = 1
And Crc.Rv_Domain = 'DISTRIBUTION TYPE';
723226974.docx Trang 19 / 23
6 Bài tập
1. Đếm số phiếu xuất và số phiếu đã xác nhận xuất trong mỗi kỳ
2.
723226974.docx Trang 20 / 23
7 Luồng dữ liệu
723226974.docx Trang 21 / 23
8 SQL Select nâng cao dành cho KT
8.3 With
8.4 Subquery
Exists
Not exists
8.5 DML
8.5.1 Insert
Insert Into table_name[(column1, …)] values(value1, …);
Insert Into table_name values v_rec_tab;
Insert into table_name[(column1, …)] select value1, … from table…;
8.5.2 Update
8.5.3 Delete
723226974.docx Trang 22 / 23
8.5.4 Merge
Ss
723226974.docx Trang 23 / 23