Chương 1. create TABLE Nhanuien ( manv int primary key, tennv nvarchar(50) not null, diachi nvarchar(50) not null ) Để chạy câu lệnh SQL trên, mở một Query Editor, copy câu lệnh vào Query Editor, bôi đen toàn bộ câu lệnh và bấm F5. Tiếp theo, dùng lệnh alter để thay đổi cấu trúc bảng Nhanvien.Cụ thể là một thêm một cột mới có tên ghichu vào bảng Nhanvien. alter TABLE Nhanvien add ghichu nvarchar(50) not null Cuối cùng, dùng lệnh drop để xóa hoàn toàn bảng Nhanvien ra khỏi CSDL, nghĩa là toàn bộ định nghĩa bảng và các dữ liệu bên trong đều bị xóa.
Chương 6: Truy vấn xử lý dữ liệu drop TABLE Nhanvien Lưu ý: Lệnh drop khác với lénh delete. Lệnh delete chỉ xóa các dòng dữ liệu có trong bảng.6 Ngôn ngữ điều khiển dữ liệu (tham khảo) Đây là các lệnh quản lý quyền truy cập lên các đối tượng (TABLE, view, storedprocedure. Bao gồm: Grant Deny Revoke Vi du: Lệnh grant sẽ cấp quyền Select trên bảng Nhanvien trong CSDL Test cho các Users thuộc Role public grant select on nhanvien to public Sau khi thực hiên lệnh này, có Users trong Role public cd thể thực hiện câu lệnh Select trên bảng Nhanvien trong CSDL Test. Dung lénh deny dé tir chdi quyền select trên bang Nhanvien trong CSDL Test của các Users thuộc Role public deny select on nhanvien to public Sau khi thực hiện lệnh nay, cé Users trong Role public sé khong thể thực hiện câu lệnh Select trên bảng Nhanvien trong CSDL Test.
Dùng lệnh revoke để xóa bỏ các quyền được cấp hay từ chối trước đó. revoke select on nhanvien to public 3 „ Pháo trình bệ thông thông tỉn kế toáu:— PhẩnJT Sau khi thực hiện lệnh này, các quyền được gán hay từ chối của Users trong Role public trên bảng Nhanvien trong CSDL Test sẽ được “xóa” hoàn toàn.7 Ngôn ngữ thao tác dữ liệu SQL được xem như là công cụ hữu hiệu để thực hiện các yêu cầu truy vấn và thao tác trên dữ liệu. Trong chương này, ta sẽ bàn luận đến nhóm các câu lệnh trong SQL được sử dụng cho mục đích này. Nhóm các câu lệnh này được gọi chung là ngôn ngữ thao tác dữ liệu (DML: Data Manipulation Language) bao gồm các câu lệnh sau: SELECT: Sử dụng để truy xuất dữ liệu từ một hoặc nhiều bảng.
INSERT: Thêm dữ liệu. UPDATE: Cập nhật dữ liệu DELETE: Xóa dữ liệu Trong số các câu lệnh này, có thể nói SELECT là câu lệnh tương đối phức tạp vàđược sử dụng nhiều trong cơ sở dữ liệu. Với câu lệnh này, ta không chỉ thực hiện các yêu cầu truy xuất đữ liệu đơn thuần mà còn có thể thực hiện được các yêu cầu thống kê đữ liệu phức tạp. Ví dụ: Câu lệnh sau sẽ lọc ra các nhân viên có tên bắt đầu bằng chữ A trong bảng Nhanvien.
select * from Nhanvien as nv where nv.tennv like A%” Dấu * hàm ý là lựa chọn tất cả các cột của bang Nhanvien.1 Cú pháp câu lệnh SELECT Câu lệnh SELECT được sử dụng để truy xuất dữ liệu từ các đòng và các cột của một hay nhiều bảng, khung nhìn (view). Câu lệnh này có thể dùng để thực hiện phép chọn (tức là truy xuất một tập con các dòng trong một hay nhiều bảng), phép chiếu (tức là truy xuất một tập con các cột trong một hay nhiều bảng) và phép nối (tức là liên kết các dòng trong hai hay nhiều bảng để truy xuất dữ liệu). Ngoài ra, câu lệnh này còn cung cấp khả năng thực hiện các thao tác truy vấn và thống kê dữ liệu phức tạp khác. Chương6: Truy vấn xử lý dữ liệu Cú pháp chung của câu lệnh SELECT có dạng: SELECT [ALL | DISTINCT]ITOP n] danh_sách_chọn [INTO tên_bảng_ mới] FROM danh_sdch_bang/khung_nhin [WHERE diéu_kién] [GROUP BY danh_sdch_cét] [HAVING điều_kiện] [ORDER BY c6t_sitp_xép] [COMPUTE danh_sdch_ham_gé6p [BY danh_sách_cột]] * Lưu ý: Các thành phần trong câu lệnh SELECT nếu được sử dụng phải tuân theo đúng thứ tự như trong cú pháp.
Nếu không, câu lệnh sẽ được xem là không hợp lệ. Nhấn F5 hoặc uào Query!Execute để chạu câu truy uấn. * Danh_sách_chọn: Danh sách chọn trong câu lệnh SELECT được sử dụng để chỉ định các trường, các biểu thức cần hiển thị trong các cột của kết quả truy vấn. Các trường, các biểu thức được chỉ định ngay sau từ khóa SELECT và phân cách nhau bởi dấu phẩy.
Nếu chọn tất cả các trường thì dùng dấu *. Ví dụ 1: Lấy tất cả thông tin của khách hàng Select * from DanhMucKhachHang Vi du 2: Chi lay ho tén va dia chỉ khách hàng Select hoten, diachi from DanhMucKhachHang e Thay đổi tiêu đề các cột: Trong kết quả truy vấn, tiêu đề của các cột mặc định sẽ là tên của các trường tương ứng trong bảng. Tuy nhiên, để các tiêu đề trở nên thân thiện hơn, ta có thể đổi tên các tiêu đề của các cột. Để đặt tiêu đề cho một cột nào đó, ta sử dụng cách viết: 336 _ _Giéo trinh hé théng théng tin ké toan - Phan IT [tiêu_đề_ cột] = tên_trường hoặc tên_trường AS [tiêu_đề _cột] Ví dụ: Select [Ma hang] = MaHang, TenHangAS [Tén hang] from DanhMucHangHoa e Loại bỏ các dòng dữ liệu trùng nhau: Từ khóa DISTINCT sẽ loại bỏ các dòng dữ liệu giống nhau.
Vi du: Có hai khách hàng có tên Công ty ABC. Nếu ta chỉ truy vấn tên khách hàng, để loại bỏ sự trùng lắp ta dùng từ khóa DISTINCT. select distinctTenKH from DanhMucKH_NCC * Mệnh dé FROM (bat buộc phải có): trong câu lệnh SELECT được sử dụng nhằm chỉ định các bảng và khung nhìn cần truy xuất dữ liệu. Sau FROM là danh sách tên của các bảng và khung nhìn tham gia vào truy vấn, tên của các bảng và khung nhìn được phân cách nhau bởi dấu phẩy.
Ví dụ: Câu lệnh sau hiển thị toàn bộ thông tin hàng hóa có trong bảng DanhMucHangHoa. Select * from DanhMucHangHoa .* Mệnh đề WHERE (có thể không có): trong câu lệnh select được sử dụng, nhằm xác định các điều kiện đối với việc truy xuất dữ liệu. Sau mệnh đề WHERE là một biểu thức logic và chỉ những dòng dữ liệu nào thỏa mãn điều kiện được chỉ định mới được hiển thị trong kết quả truy vấn. Vi du: Lọc ra thông tin các mặt hàng có số lượng tồn đầu kỳ > 1000 Select * From DanhMucHangHoa Where SLTonDK>1000 Trong mệnh đề WHERE thường sử dụng: ~ Các toán tử kết hợp điều kiện (AND, OR) ¬ Các toán tử so sánh Chương G Truy vấn xử lý dữ.
337 Toán tử Ý nghĩa = Bằng > Lớn hơn < Nhỏ hơn >= _ |Lớnhơn hoặc bằng <= Nhỏ hơn hoặc bằng > Khác > Không lớn hơn I< Không nhỏ hơn — Kiểm tra giới hạn của dữ liệu (BETWEEN/ NOT BETWEEN) Để kiểm tra xem giá trị dữ liệu nằm trong (ngoài) một khoảng nào đó, ta sử dụng toán tử BETWEEN/ NOT BETWEEN như sau: Mệnh đề Ý nghĩa xBETWEEN aANDb a<=x<=b x NOT BETWEEN a AND b x<a hoặc x>b Vi du: Lọc lấy danh sách các mặt hàng có số lượng tồn đầu kỳ trong khoảng 1000 — 5000. Select MaHang, TenHang, DVT, SLTonDK, TienTonDK From DanhMucHangHoa Where SLTonDK BETWEEN 1000 and 5000 ~ Toán tử làm việc trên tập hợp (IN/ NOT IN) Từ khóa IN/NOTN được sử dụng khi ta cần chỉ định điều kiện tìm kiếm dữ liệu cho câu lệnh SELECT là một danh sách các giá tri. Sau IN/ NOT IN cé thé 1a một danh sách các giá trị hoặc là một câu lệnh SELECT khác. 338 Giáo trình hệ thống thông tin kế toán - Phần II Vi du: Cau lệnh dưới đây lấy ra các thông tin của khách hàng có mã là KHOI, KH02 hoặc KH04.
Select * From DanhMucKH_NCC Where MaKH in (‘KHO1’, ‘KH02’, ‘KH04’) — Toan tir LIKE/ NOT LIKE và ký tự đại diện Từ khóa LIKE (NOT LIKE) sử dụng trong câu lệnh SELECT nhằm mô tả khuôn dạng của dữ liệu cần tìm kiếm. Chúng thường được kết hợp với các ký tự đại diện sau đây. Ký tự đại diện Ý nghĩa % Chuỗi ký tự bất kỳ có chiều dài bất kỳ “ Một ký tự bất kỳ 0 Một ký tự nằm trong giới hạn đượcchỉ định. Ví dụ: [a-f] ham ý chỉ một trong các ký tự: a, b, c, d, e, f.
f1 Một ký tự không nằm trong giới hạn được chỉ định. Ví dụ: [ˆ^a-f] hàm ý chỉ một ký tự khác tất cả các ký tự: a, b, c, d, e, £. Vi dụ: Lọc lấy ra các mặt hàng có tên bắt đầu bằng “Sách” Select * From DanhMucHangHoa Where TenHang like ‘Sdch%’ Thứ tự ưu tiên của các toán tử từ cao xuống thấp sẽ là: + (Dương), - (âm), ~ V * (Nhân), ! (Chia), % (Lấy phần du) VV + (Cộng), + (Nối chuỗi), - (Trừ) Các toán tử so sánh VV Các toán tử đảo bit (nhị phân) NOT VV AND Chương 6: Truy vấn xử lý dữ liệu _339 > ALL, ANY, BETWEEN, IN, LIKE, OR, SOME > = (Phép gan) * Cac ham trong SQL Server 2008 CAC HAM XU LY CHUOI Tén ham Tac dung CHARINDEX | Xác định vị trí bắt đầu của 1 nhóm chuỗi trong một chuỗi LEFT Lấy bên trái của 1 chuỗi n ký tự LEN Lấy độ dài của 1 chuỗi LOWER Chuyển từ chữ hoa sang chữ thường LTRIM Bỏ khoảng trống đầu chuỗi RTRIM Bỏ khoảng trống cuối chuỗi REPLACE Thay thế ký tự trong chuỗi bằng ký tự khác REVERSE Đảo chuỗi ký tự RIGHT Lấy bên phải một chuỗi ký tự SUBSTRING | Lấy một số ký tự trong chuỗi UPPER Chuyển từ chữ thường sang chữ hoa * HÀM CHARINDEX: Trả về vị trí bắt đầu của một chuỗi ký tự trong một chuỗi ký tự cho trước. CÚ PHÁP: CHARINDEX (chuỗi cần xác định vị trí, chuỗi cho trước, vị trí bắt đầu tìm) Ví dụ: tìm vị trí bắt đầu của chuỗi DH trong chuỗi “Lớp DHKT3TC’ SELECT CHARINDEX (‘DH’, N'Lớp DHKT3TC') * HAM LEFT | RIGHT: Lay n ky tur bat dau tir dau bén trail phai cia chudi.
Sido trinh hé théng thong tin ké toan ~ PhanIT CU PHAP: LEFT | RIGHT (chudi can lấy, số ký tự cần lấy) Vi du: Lấy chữ Lớp trong chudi ‘Lép DHKT3TC’ SELECT LEFT (N’Lop DHKT3TC’,3) Lấy chữ TC trong chuỗi ‘Lop DHKT3TC’ SELECT RIGHT (N'Lớp DHKT3TC’,2) * HÀM SUBSTRING: Lấy n ký tự bắt đầu từ vị trí bất kỳ của chuỗi. CÚ PHÁP: SUBSTRING (chuỗi cần lấy, vị trí ký tự đầu tiên, số ký tự cần lấy) Vi du: Lấy chữ DH trong chuỗi “Lớp DHKT3TC' SELECT SUBSTRING (N'Lớp DHKT3TC 5,2) * HÀM LEN: Trả về độ dài của chuỗi CÚ PHÁP: LEN(chuỗi cần tìm độ dài) Ví dụ: Tìm độ dài của chuỗi ‘Lop DHKT3TC’ SELECT LEN (N’L6p DHKT3TC’) * HAM UPPER! LOWER: déi mét chuỗi từ chữ thường | hoa sang chữ hoa | thường CÚ PHÁP: UPPERI LOWER (chuỗi cần đổi) Vi dụ: đổi chuỗi Lớp DHKT3TC' sang chữ hoa SELECT UPPER (N'Lớp DHKT3TC') đổi chuỗi Lớp DHKT3TC: sang chữ thường SELECT LOWER(N'Lớp DHKT3TC’) * HÀM REPLACE: thay thế các ký tự cũ bằng các ký tự mới trong một chuỗi ký tự.