Bài giảng Hệ quản trị cơ sở dữ liệu trong doanh nghiệp
1.1. Tổng quan về doanh nghiệp
1.1.1 Khái niệm
Doanh nghiệp là tổ chức kinh tế có tên riêng, có tài sản, có trụ sở giao dịch ổn
định, được đăng ký kinh doanh theo quy định của pháp luật nhằm mục đích thực
hiện các hoạt động kinh doanh. Doanh nghiệp là một chủ thể kinh tế tiến hành các
hoạt động kinh tế theo một kế hoạch nhất định nhằm mục đích kiếm lợi nhuận. Trên
thực tế doanh nghiệp được gọi bằng nhiều thuật ngữ khác nhau: cửa hàng, nhà máy,
xí nghiệp, hãng,.
Theo định nghĩa của luật doanh nghiệp[1], ban hành ngày 29 tháng 11 năm
2005 của Việt Nam, doanh nghiệp là tổ chức kinh tế riêng, có tài sản, có trụ sở giao
dịch ổn định, được đăng ký kinh doanh theo quy định của pháp luật nhằm mục đích
thực hiện các hoạt động kinh doanh.
Cũng theo quy luật trên, ta có thể phân loại các doanh nghiệp thành:
- Công ty trách nhiệm hữu hạn là doanh nghiệp mà các thành viên trong công
ty (có thể là một tổ chức hay một cá nhân đối với công ty trách nhiệm hữu hạn một
thành viên) chịu trách nhiệm về các khoản nợ và nghĩa vụ tài sản khác của công ty
trong phạm vi số vốn điều lệ của công ty.
Công ty cổ phần là doanh nghiệp mà vốn điều lệ của công ty được chia thành
nhiều phần bằng nhau gọi là cổ phần. Cá nhân hay tổ chức sở hữu cổ phần của
doanh nghiệp được gọi là cổ đông và chịu trách nhiệm về các khoản nợ và các nghĩa
vụ tài sản khác trong phạm vi số vốn đã góp vào doanh nghiệp.
Công ty hợp danh là doanh nghiệp trong đó có ít nhất hai thành viên là chủ sở
hữu của công ty, cùng kinh doanh dưới một cái tên chung (gọi là thành viên hợp
danh). Thành viên hợp doanh phải là cá nhân và chịu trách nhiệm bằng toàn bộ tài
sản của mình về các nghĩa vụ của công ty. Ngoài ra trong công ty hợp danh còn có
các thành viên góp vốn.
Doanh nghiệp tư nhân: doanh nghiệp do một cá nhân làm chủ và tự chịu trách
nhiệm bằng toàn bộ tài sản của mình về mọi hoạt động của doanh nghiệp. Mỗi cá
nhân chỉ được quyền thành lập một doanh nghiệp tư nhân.7
Ngoài ra còn có các thuật ngữ sau:
• Nhóm công ty là tập hợp các công ty có mối quan hệ gắn bó lâu dài với nhau
về lợi ích kinh tế, công nghệ, thị trường và các dịch vụ kinh doanh khác. Nó gồm có
các hình thức sau: công ty mẹ - công ty con, tập đoàn kinh tế.
• Doanh nghiệp nhà nước là doanh nghiệp trong đó nhà nước sở hữu trên 50%
vốn điều lệ.
• Doanh nghiệp có vốn đầu tư nước ngoài là doanh nghiệp do nhà đầu tư nước
ngoài thành lập để thực hiện hoạt động đầu tư tại Việt Nam hoặc doanh nghiệp Việt
Nam do nhà đầu tư nước ngoài mua cổ phần, sát nhập, mua lại.
Tóm tắt nội dung tài liệu: Bài giảng Hệ quản trị cơ sở dữ liệu trong doanh nghiệp
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG KHOA HỆ THỐNG THÔNG TIN KINH TẾ BÀI GIẢNG HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU TRONG DOANH NGHIỆP Biên soạn: Nguyễn Văn Huân Vũ Xuân Nam Nguyễn Thu Hằng TÀI LIỆU LƯU HÀNH NỘI BỘ - 2012 1 MỤC LỤC MỤC LỤC ......................................................................................................................... 1 DANH MỤC HÌNH VẼ, BẢNG BIỂU .............................................................................. 4 LỜI MỞ ĐẦU .................................................................................................................... 5 Chương 1 ........................................................................................................................... 6 DOANH NGHIỆP VÀ CƠ SỞ DỮ LIỆU TRONG DOANH NGHIỆP .............................. 6 1.1. Tổng quan về doanh nghiệp ..................................................................................... 6 1.1.1 Khái niệm .......................................................................................................... 6 1.1.2. Mục đích và mục tiêu của doanh nghiệp ............................................................ 7 1.2. Cơ sở dữ liệu trong doanh nghiệp ............................................................................ 8 1.3. Quản trị cơ sở dữ liệu doanh nghiệp ....................................................................... 11 Chương 2 ......................................................................................................................... 13 HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU .................................................................................... 13 2.1. Tổng quan về cơ sở dữ liệu và Hệ quản trị cơ sở dữ liệu ........................................ 13 2.1.1. Khái niệm CSDL............................................................................................ 13 2.1.2. Khái niệm hệ quản trị cơ sở dữ liệu ................................................................. 13 2.1.3 Các hệ quản trị cơ sở dữ liệu thông dụng .......................................................... 14 2.2. Tổng quan về SQL server 2005 .............................................................................. 16 2.2.1. Cài đặt SQL Server 2005 Express Edition ....................................................... 18 2.2.2. SQL là ngôn ngữ của cơ sở dữ liệu quan hệ ..................................................... 25 2.2.3. Vai trò của SQL .............................................................................................. 25 2.2.4. Giới thiệu sơ lược về Transact SQL (T-SQL) ................................................. 26 2.3. Tạo lập cơ sở dữ liệu trên SQL server .................................................................... 35 2.3.1. Một số thao tác cơ bản trên SQL Server 2005 Express Edition ................... 35 2.3.2. Mở một query editor để viết câu lệnh SQL ...................................................... 38 2.3.3. Các hàm quan trọng trong T- SQL .................................................................. 48 2.4. Ngôn ngữ thao tác dữ liệu – DML.......................................................................... 55 2.4.1. Câu lệnh SELECT........................................................................................... 56 2.4.2. Thêm, cập nhật và xóa dữ liệu ......................................................................... 82 2.5. View ...................................................................................................................... 87 2.5.1 Khái niệm ........................................................................................................ 87 2.5.2. Thêm, cập nhật, xóa dữ liệu trong VIEW ........................................................ 89 2.5.3. Thay đổi định nghĩa khung nhìn ...................................................................... 89 2.5.4. Xóa khung nhìn ............................................................................................... 89 2.6. Thủ tục lưu trữ (Stored procedure) ......................................................................... 90 2.6.1. Tạo thủ tục lưu trữ .......................................................................................... 91 2.6.2. Lời gọi thủ tục................................................................................................. 92 2.6.3. Biến trong thủ tục lưu trữ ................................................................................ 93 2 2.6.4. Giá trị trả về trong thủ tục lưu trữ ................................................................... 93 2.6.5. Tham số với giá trị mặc định ........................................................................... 95 2.6.6. Sửa đổi thủ tục ................................................................................................ 96 2.6.7. Xóa thủ tục ..................................................................................................... 96 2.7. Hàm (Function) ..................................................................................................... 96 2.7.1. Khái niệm ....................................................................................................... 96 2.7.2. Hàm vô hướng ................................................................................................ 97 2.7.3. Hàm nội tuyến................................................................................................. 98 2.7.4. Hàm bao gồm nhiều câu lệnh bên trong ........................................................... 99 2.7.5. Thay đổi hàm ................................................................................................ 101 2.7.6. Xóa hàm ....................................................................................................... 101 2.8. Trigger ................................................................................................................. 101 2.8.1. Khái niệm ..................................................................................................... 101 2.8.2. Các đặc điểm của trigger ............................................................................... 102 2.8.3. Các trường hợp sử dụng trigger ..................................................................... 102 2.8.4. Khả năng sau của trigger ............................................................................... 102 2.8.5. Định nghĩa trigger ......................................................................................... 103 2.8.6. Kích hoạt trigger dựa trên sự thay đổi dữ liệu trên cột ................................... 107 2.8.7. Sử dụng trigger và Giao tác ........................................................................... 108 2.8.8. DDL TRIGGER ............................................................................................ 109 2.8.9. Enable/ Disable TRIGGER ........................................................................... 111 2.9. Cursor .................................................................................................................. 112 2.9.1. Khái niệm ..................................................................................................... 112 2.9.2. Các thao tác chung trên Cursor ...................................................................... 112 2.9.3. Truy xuất dữ liệu trên Cursor ........................................................................ 115 2.10. Sao lưu và phục hồi dữ liệu ................................................................................ 117 2.10.1. Các lý do phải thực hiện Backup ................................................................. 117 2.10.2. Các loại Backup .......................................................................................... 117 2.10.3. Các thao tác thực hiện quá trình Backup và Restore trong SQL Server 2005 Express Edition .............................................................................................. 119 2.11. Kết nối Sql server 2005 từ các ngôn ngữ lập trình để xây dựng các ứng dụng .... 121 2.11.1. Cấu hình Microsoft SQL Server 2005 ......................................................... 122 2.11.2. Kết nối vào SQL Server trong các ngôn ngữ lập trình .................................. 125 Chương 3 ....................................................................................................................... 130 ỨNG DỤNG QUẢN TRỊ CƠ SỞ DỮ LIỆU CHO DOANH NGHIỆP ........................... 130 3.1. Nhiệm vụ quản trị CSDL của doanh nghiệp ......................................................... 130 3.2. Quản trị sản xuất và tác nghiệp trong doanh nghiệp ............................................. 130 3.3. Quản trị hoạt động dịch vụ ................................................................................... 131 3.4. Quản trị hoạt động marketing ............................................................................... 132 3 3.5. Quản trị nhân lực ................................................................................................. 133 3.6. Quản trị CSDL tài chính ...................................................................................... 134 3.7. Quản trị hoạt động tiêu thụ................................................................................... 135 3.8. Bảo vệ và quản lý csdl dữ liệu thông tin khách hàng ............................................ 137 3.9. Đánh giá hiệu quả sản xuất kinh doanh của doanh nghiệp .................................... 138 TÀI LIỆU THAM KHẢO .............................................................................................. 140 4 DANH MỤC HÌNH VẼ, BẢNG BIỂU Hình 2.1: Sự tương tác của hệ QTCSDL với người dùng và với CSDL..........16 Hình 2.2: Các yêu cầu cho hệ thống 32bit........................................................18 Hình 2.3: Các bước cài đặt Sql server 2005................................................. .. 22 Hình 2.4: Thiết lập Sql server 2005................................................................. 23 Hình 2.5: Cài đặt SQL Server Management Studio Express............................24 Hình 2.6: Giao diện sau khi đăng nhập thành công..........................................24 Hình 2.7: Cơ sở dữ liệu quản lý bán hàng........................................................31 Hình 2.8: Tạo một CSDL mới......................................................................... 36 Hình 2.9: Đặt tên Database ..............................................................................36 Hình 2.10: Tạo bảng mới .................................................................................37 Hình 2.11: Đặt tên bảng ...................................................................................38 Hình 2.12: Mở query editor để viết câu lệnh SQL..........................................38 Hình 2.13: Cơ sở dữ liệu quản lý ngân hàng....................................................57 Hình 2.14: Quá trình Backup..........................................................................121 Hình 2.15: Quá trình phục hồi........................................................................121 Hình 3.1: Cơ sở dữ liệu quản lý kho vật tư.....................................................129 Hình 3.2: Cơ sở dữ liệu về việc cung cấp các mặt hàng.................................130 Hình 3.3: Cơ sở dữ liệu về khách hàng ......................................................... 131 Hình 3.4: Dữ liệu về hồ sơ nhân viên của 1 doanh nghiệp.............................132 Hình 3.5: Dữ liệu về quản lý lương nhân viên............................................... 133 Hình 3.6: Dữ liệu về quản lý bán hàng...........................................................135 Bảng 2.1: Một số kiểu dữ liệu thông dụng trong SQL.....................................32 Bảng 2.2: Các toán tử và mức độ ưu tiên ....................................................... 34 5 LỜI MỞ ĐẦU Hệ quản trị cơ sở dữ liệu là phần mềm hay hệ thống được thiết kế để quản trị một cơ sở dữ liệu. Có rất nhiều hệ quản trị CSDL khác nhau: từ phần mềm nhỏ chạy trên máy tính cá nhân cho đến những hệ quản trị phức tạp chạy trên một hoặc nhiều siêu máy tính. Đa số hệ quản trị CSDL trên thị trường đều có một đặc điểm chung là sử dụng ngôn ngữ truy vấn theo cấu trúc(SQL). Ngôn ngữ SQL (Structured Query Language) được sử dụng trong hầu hết các hệ quản trị cơ sở dữ liệu để truy vấn và sửa đổi cơ sở dữ liệu. Ngôn ngữ SQL hỗ trợ các truy vấn dựa trên các phép toán đại số quan hệ, đồng thời cũng chứa các lệnh sửa đổi cơ sở dữ liệu và mô tả lược đồ cơ sở dữ liệu. Như vậy, SQL vừa là một ngôn ngữ thao tác dữ liệu, vừa là một ngôn ngữ định nghĩa dữ liệu. Ngoài ra SQL cũng tiêu chuẩn hoá nhiều lệnh cơ sở dữ liệu khác. Hiện nay, SQL đã được sử dụng phổ biến trong các hệ quản trị cơ sở dữ liệu thương mại và có vai trò quan trọng trong những hệ thống này. Bài giảng cung cấp các kiến thức cơ bản và tương đối đầy đủ về các câu lệnh thường được sử dụng trong SQL và các ứng dụng quan trọng của hệ quản trị cơ sở dữ liệu Sql server của Microfoft. Bài giảng được chia thành 3 chương với nội dung chính như sau: Chương 1 Doanh nghiệp và cơ sở dữ liệu trong doanh nghiệp. Chương 2 Hệ quản trị cơ sở dữ liệu Chương 3 Ứng dụng quản trị CSDL cho các doanh nghiệp Do hạn chế về thời gian và kinh nghiệm, chắc chắn bài giảng còn nhiều thiếu sót. Mong các bạn góp ý và phê bình. Chúng tôi sẽ tiếp thu ý kiến để bài giảng ngày càng hoàn thiện hơn. Xin chân thành cảm ơn! 6 Chương 1 DOANH NGHIỆP VÀ CƠ SỞ DỮ LIỆU TRONG DOANH NGHIỆP 1.1. Tổng quan về doanh nghiệp 1.1.1 Khái niệm Doanh nghiệp là tổ chức kinh tế có tên riêng, có tài sản, có trụ sở giao dịch ổn định, được đăng ký kinh doanh theo quy định của pháp luật nhằm mục đích thực hiện các hoạt động kinh doanh. Doanh nghiệp là một chủ thể kinh tế tiến hành các hoạt động kinh tế theo một kế hoạch nhất định nhằm mục đích kiếm lợi nhuận. Trên thực tế doanh nghiệp được gọi bằng nhiều thuật ngữ khác nhau: cửa hàng, nhà máy, xí nghiệp, hãng,... Theo định nghĩa của luật doanh nghiệp[1], ban hành ngày 29 tháng 11 năm 2005 của Việt Nam, doanh nghiệp là tổ chức kinh tế riêng, có tài sản, có trụ sở giao dịch ổn định, được đăng ký kinh doanh theo quy định của pháp luật nhằm mục đích thực hiện các hoạt động kinh doanh. Cũng theo quy luật trên, ta có thể phân loại các doanh nghiệp thành: - Công ty trách nhiệm hữu hạn là doanh nghiệp mà các thành viên trong công ty (có thể là một tổ chức hay một cá nhân đối với công ty trách nhiệm hữu hạn một thành viên) chịu trách nhiệm về các khoản nợ và nghĩa vụ tài sản khác của công ty trong phạm vi số vốn điều lệ của công ty. Công ty cổ phần là doanh nghiệp mà vốn điều lệ của công ty được chia thành nhiều phần bằng nhau gọi là cổ phần. Cá nhân hay tổ chức sở hữu cổ phần của doanh nghiệp được gọi là cổ đông và chịu trách nhiệm về các khoản nợ và ... y đủ cho kết quả như sau: Phép nối ngoài trái: select * from faculty f left join class c on f.facultyid = c.facultyid Phép nối ngoài phải: select * from faculty f right join class c on f.facultyid = c.facultyid 77 Phép nối ngoài đầy đủ: select * from faculty f full join class c on f.facultyid = c.facultyid Một đặc điểm nổi bật của SQL2 là cho phép biểu diễn phép nối trên nhiều bảng dữ liệu một cách rõ ràng. Thứ tự thực hiện phép nối giữa các bảng được xác định theo nghĩa kết quả của phép nối này được sử dụng trong một phép nối khác. Ví dụ: Liệt kê tên các mặt hàng có trong đơn đạt hàng có mã là 1. select i.ITEMNAME, o.ORDERDATE from (orders o inner join orderdetail od on o.orderid = od.orderid) inner join items i on od.itemid = i.itemid where o.orderid = 1 h. Mệnh đề GROUP BY Ngoài khả năng thực hiện các yêu cầu truy vấn dữ liệu thông thường (chiếu, chọn, nối,) như đã đề cập như ở các phần trước, câu lệnh SELECT còn cho phép thực hiện các thao tác truy vấn và tính toán thống kê trên dữ liệu. Mệnh đề GROUP BY sử dụng trong câu lệnh SELECT nhằm phân hoạch các dòng dữ liệu trong bảng thành các nhóm dữ liệu, và trên mỗi nhóm dữ liệu thực hiện tính toán các giá trị thống kê như tính tổng, tính giá trị trung bình,... Các hàm gộp (aggregate functions) được sử dụng để tính giá trị thống kê cho toàn bảng hoặc trên mỗi nhóm dữ liệu. Chúng có thể được sử dụng như là các cột trong danh sách chọn của câu lệnh SELECT hoặc xuất hiện trong mệnh đề HAVING, nhưng không được phép xuất hiện trong mệnh đề WHERE 78 SQL cung cấp các hàm gộp dưới đây: Hàm gộp Chức năng SUM([ALL| DISTINCT] biểu_thức) Tính tổng các giá trị. AVG([ALL| DISTINCT] biểu_thức) Tính trung bình của các giá trị COUNT([ALL|DISTINCT] biểu_thức) Đếm số các giá trị trong biểu thức. COUNT(*) Đếm số các dòng được chọn. MAX(biểu_thức) Tính giá trị lớn nhất MIN(biểu_thức) Tính giá trị nhỏ nhất Hàm SUM và AVG chỉ làm việc với các biểu thức số. Hàm SUM, AVG, COUNT, MIN và MAX bỏ qua các giá trị NULL khi tính toán. Hàm COUNT(*) không bỏ qua các giá trị NULL. Mặc định, các hàm gộp thực hiện tính toán thống kê trên toàn bộ dữ liệu. Trong trường hợp cần loại bỏ bớt các giá trị trùng nhau (chỉ giữ lại một giá trị), ta chỉ định thêm từ khoá DISTINCT ở trước biểu thức là đối số của hàm. Thống kê trên toàn bộ dữ liệu Khi cần tính toán giá trị thống kê trên toàn bộ dữ liệu, ta sử dụng các hàm gộp trong danh sách chọn của câu lệnh SELECT. Trong trường hợp này, trong danh sách chọn không được sử dụng bất kỳ một tên cột hay biểu thức nào ngoài các hàm gộp. Ví dụ: Tính tuổi trung bình, tuổi nhỏ nhất và lớn nhất của các khách hàng select min(year(getdate())-year(BIRTHDAY)) as MINAGE, max(year(getdate())-year(BIRTHDAY)) as MAXAGE, avg(year(getdate())-year(BIRTHDAY)) as AVGAGE from customers 79 Thống kê trên nhóm Trong trường hợp cần thực hiện tính toán các giá trị thống kê trên các nhóm dữ liệu, ta sử dụng mệnh đề GROUP BY để phân hoạch dữ liệu vào trong các nhóm. Các hàm gộp được sử dụng sẽ thực hiện thao tác tính toán trên mỗi nhóm và cho biết giá trị thống kê theo các nhóm dữ liệu. Ví dụ: Câu truy vấn sau cho biết số tổng số tiển khách hàng phải trả cho tất cả các lần đặt hàng select c.CUSTOMERID, c.CUSTOMERNAME, convert(varchar(20),cast(SUM(i.UNITPRICE*od.QUANTITY) as money),1) as SUMTOTAL from customers c inner join orders o on o.customerid = c.customerid inner join orderdetail od on o.orderid = od.orderid inner join items i on i.itemid = od.itemid group by c.customerid, c.customername Nếu muốn hiện số tiền khách hàng phải trả cho từng đơn đặt hàng, chỉ cần thêm trường ORDERID vào mệnh đề group by. select c.CUSTOMERID, c.CUSTOMERNAME, convert(varchar(20),cast(SUM(i.UNITPRICE*od.QUANTITY)as money),1) as SUMTOTAL from customers c inner join orders o on o.customerid = c.customerid inner join orderdetail od on o.orderid = od.orderid inner join items i on i.itemid = od.itemid group by c.customerid, c.customername, o.orderid 80 Lưu ý: Trong trường hợp danh sách chọn của câu lệnh SELECT có cả các hàm gộp và những biểu thức không phải là hàm gộp thì những biểu thức này phải có mặt đầy đủ trong mệnh đề GROUP BY, nếu không câu lệnh sẽ không hợp lệ. Mệnh đề HAVING chỉ định điều kiện trong hàm gộp Mệnh đề HAVING được sử dụng nhằm chỉ định điều kiện đối với các giá trị thống kê được sản sinh từ các hàm gộp tương tự như cách thức mệnh đề WHERE thiết lập các điều kiện cho câu lệnh SELECT. Mệnh đề HAVING thường không thực sự có nghĩa nếu như không sử dụng kết hợp với mệnh đề GROUP BY. Một điểm khác biệt giữa HAVING và WHERE là trong điều kiện của WHERE không được có các hàm gộp trong khi HAVING lại cho phép sử dụng các hàm gộp trong điều kiện của mình. Ví dụ: Tìm ra các khách hàng có tổng số tiền phải thanh toán cho tất cả các lần đặt hàng lớn hơn 100 triệu. select c.CUSTOMERID, c.CUSTOMERNAME, convert(varchar(20),cast(SUM(i.UNITPRICE*od.QUANTITY)as money),1) as SUMTOTAL from customers c inner join orders o on o.customerid = c.customerid inner join orderdetail od on o.orderid = od.orderid inner join items i on i.itemid = od.itemid group by c.customerid, c.customername having sum(i.UNITPRICE*od.QUANTITY) > 100000000 i. Truy vấn con Truy vấn con là một câu lệnh SELECT được lồng vào bên trong một câu lệnh SELECT, INSERT, UPDATE, DELETE hoặc bên trong một truy vấn con khác. Loại truy vấn này được sử dụng để biểu diễn cho những truy vấn trong đó điều kiện truy vấn dữ liệu cần phải sử dụng đến kết quả của một truy vấn khác. 81 Cú pháp của truy vấn con như sau: (SELECT [ALL | DISTINCT] danh_sách_chọn FROM danh_sách_bảng [WHERE điều_kiện] [GROUP BY danh_sách_cột] [HAVING điều_kiện]) Khi sử dụng truy vấn con cần lưu ý một số quy tắc sau: Một truy vấn con phải được viết trong cặp dấu ngoặc. Trong hầu hết các trường hợp, một truy vấn con thường phải có kết quả là một cột (tức là chỉ có duy nhất một cột trong danh sách chọn). Mệnh đề COMPUTE và ORDER BY không được phép sử dụng trong truy vấn con. Các tên cột xuất hiện trong truy vấn con có thể là các cột của các bảng trong truy vấn ngoài. Một truy vấn con thường được sử dụng làm điều kiện trong mệnh đề WHERE hoặc HAVING của một truy vấn khác. Nếu truy vấn con trả về đúng một giá trị, nó có thể sử dụng như là một thành phần bên trong một biểu thức (chẳng hạn xuất hiện trong một phép so sánh bằng) Phép so sánh đối với với kết quả truy vấn con Kết quả của truy vấn con có thể được sử dụng đề thực hiện phép so sánh số học với một biểu thức của truy vấn cha. Trong trường hợp này, truy vấn con được sử dụng dưới dạng: WHERE biểu_thức phép_toán_số_học [ANY|ALL] (truy_vấn_con) Trong đó phép toán số học có thể sử dụng bao gồm: =, , >, =, <=; Và truy vấn con phải có kết quả bao gồm đúng một cột. Ví dụ: Câu truy vấn sau đây tìm tên khách hàng có tuổi lớn nhất select c.tenk, c.dc from khachhang c where year(getdate()) - year(ngaysinh) = (select max(year(getdate()) - year(ngaysinh)) from khachhang) 82 Nếu truy vấn con trả về nhiều hơn một giá trị, việc sử dụng phép so sánh như trên sẽ không hợp lệ. Trong trường hợp này, sau phép toán so sánh phải sử dụng thêm lượng từ ALL hoặc ANY. Lượng từ ALL được sử dụng khi cần so sánh giá trị của biểu thức với tất cả các giá trị trả về trong kết quả của truy vấn con; ngược lai, phép so sánh với lượng từ ANY có kết quả đúng khi chỉ cần một giá trị bất kỳ nào đó trong kết quả của truy vấn con thoả mãn điều kiện Ví dụ: Toán tử IN/NOT IN Khi cần thực hiện phép kiểm tra giá trị của một biểu thức có xuất hiện (không xuất hiện) trong tập các giá trị của truy vấn con hay không, ta có thể sử dụng toán tử IN (NOT IN) như sau: WHERE biểu_thức [NOT] IN (truy_vấn_con) Ví dụ: Truy vấn con với EXISTS Lượng từ EXISTS được sử dụng kết hợp với truy vấn con dưới dạng: WHERE [NOT] EXISTS (truy_vấn_con) Lượng từ EXISTS (tương ứng NOT EXISTS) trả về giá trị True (tương ứng False) nếu kết quả của truy vấn con có ít nhất một dòng (tương ứng không có dòng nào). Điều khác biệt của việc sử dụng EXISTS với hai cách đã nêu ở trên là trong danh sách chọn của truy vấn con có thể có nhiều hơn hai cột. Ví dụ: Truy vấn con và mệnh đề HAVING Một truy vấn con có thể được sử dụng trong mệnh đề HAVING của một truy vấn khác. Trong trường hơp này, kết quả của truy vấn con được sử dụng để tạo nên điều kiện đối với các hàm gộp. 2.4.2. Thêm, cập nhật và xóa dữ liệu Các câu lệnh thao tác dữ liệu trong SQL không những chỉ sử dụng để truy vấn dữ liệu mà còn để thay đổi và cập nhật dữ liệu trong cơ sở dữ liệu. So với câu lệnh 83 SELECT, việc sử dụng các câu lệnh để bổ sung, cập nhật hay xoá dữ liệu đơn giản hơn nhiều. Trong phần còn lại của chương này sẽ đề cập đến 3 câu lệnh: Lệnh INSERT Lệnh UPDATE Lệnh DELETE a. Thêm dữ liệu Dữ liệu trong các bảng được thể hiện dưới dạng các dòng (bản ghi). Để bổ sung thêm các dòng dữ liệu vào một bảng, ta sử dụng câu lệnh INSERT. Hầu hết các hệ quản trị CSDL dựa trên SQL cung cấp các cách dưới đây để thực hiện thao tác thêm dữ liệu cho bảng: Thêm từng dòng dữ liệu với mỗi câu lệnh INSERT. Đây là các sử dụng thường gặp nhất trong giao tác SQL. Thêm nhiều dòng dữ liệu bằng cách truy xuất dữ liệu từ các bảng dữ liệu khác. Thêm từng dòng dữ liệu Để bổ sung một dòng dữ liệu mới vào bảng, ta sử dụng câu lệnh INSERT với cú pháp như sau: INSERT INTO tên_bảng[(danh_sách_cột)] VALUES(danh_sách_trị) Trong câu lệnh INSERT, danh sách cột ngay sau tên bảng không cần thiết phải chỉ định nếu giá trị các trường của bản ghi mới được chỉ định đầy đủ trong danh sách trị. Trong trường hợp này, thứ tự các giá trị trong danh sách trị phải bằng với số lượng các trường của bảng cần bổ sung dữ liệu cũng như phải tuân theo đúng thứ tự của các trường như khi bảng được định nghĩa Ví dụ: Thêm thông tin một khách hàng mới vào bảng Customer insert into khachhang (tenk, ngaysinh, gioitinh, diachi) values('Nguyen Van An', '4/2/1976', 'True', '14 Thong Nhat') hoặc insert into khachhang values('Nguyen Van An', '4/2/1976', 'True', '14 Thong Nhat') Lưu ý: Trường CUSTOMERID được thiết lập identity là “YES” nên ta không cần thêm giá trị trường này mà SQL sẽ tự động tạo ra một giá trị cho trường này. 84 Chi tiết về identity sẽ nói trong chương 4. Trong trường hợp chỉ nhập giá trị cho một số cột trong bảng, ta phải chỉ định danh sách các cột cần nhập dữ liệu ngay sau tên bảng. Khi đó, các cột không được nhập dữ liệu sẽ nhận giá trị mặc định (nếu có) hoặc nhận giá trị NULL (nếu cột cho phép chấp nhận giá trị NULL). Nếu một cột không có giá trị mặc định và không chấp nhận giá trị NULL mà không đuợc nhập dữ liệu, câu lệnh sẽ bị lỗi. Thêm một tập các dòng dữ liệu vào bảng Một cách sử dụng khác của câu lệnh INSERT được sử dụng để bổ sung nhiều dòng dữ liệu vào một bảng, các dòng dữ liệu này được lấy từ một bảng khác thông qua câu lệnh SELECT. Ở cách này, các giá trị dữ liệu được bổ sung vào bảng không được chỉ định tường minh mà thay vào đó là một câu lệnh SELECT truy vấn dữ liệu từ bảng khác. Cú pháp câu lệnh INSERT có dạng như sau: INSERT INTO tên_bảng[(danh_sách_cột)] câu_lệnh_SELECT Ví dụ: insert into Customers_Backup select * from khachhang Lưu ý: Kết quả của câu lệnh SELECT phải có số cột bằng với số cột được chỉ định trong bảng đích và phải tương thích về kiểu dữ liệu. b. Cập nhật dữ liệu Câu lệnh UPDATE trong SQL được sử dụng để cập nhật dữ liệu trong các bảng. Câu lệnh này có cú pháp như sau: UPDATE tên_bảng SET tên_cột = biểu_thức [, ..., tên_cột_k = biểu_thức_k] [FROM danh_sách_bảng] [WHERE điều_kiện] Sau UPDATE là tên của bảng cần cập nhật dữ liệu. Một câu lệnh UPDATE có thể cập nhật dữ liệu cho nhiều cột bằng cách chỉ định các danh sách tên cột và biểu thức tương ứng sau từ khoá SET. Mệnh đề WHERE trong câu lệnh UPDATE được sử dụng để chỉ định các dòng dữ liệu chịu tác động của câu lệnh 85 (nếu không chỉ định, phạm vi tác động của câu lệnh được hiểu là toàn bộ các dòng trong bảng) Ví dụ: update khachhang set tenk = 'Cao Van Chung' where mak = 9 Trong câu lệnh UPDATE có thể sử dụng CASEWHEN. Ví dụ: select * into tmp1 from khachhang update tmp1 set dc = case when mak < 2 then 'Nguyen Trung Truc' else 'Nguyen Thi Minh Khai' end c. Xóa dữ liệu Để xoá dữ liệu trong một bảng, ta sử dụng câu lệnh DELETE. Cú pháp của câu lệnh này như sau: DELETE FROM tên_bảng [FROM danh_sách_bảng] [WHERE điều_kiện] Trong câu lệnh này, tên của bảng cần xoá dữ liệu được chỉ định sau DELETE FROM. Mệnh đề WHERE trong câu lệnh được sử dụng để chỉ định điều kiện đối với các dòng dữ liệu cần xoá. Nếu câu lệnh DELETE không có mệnh đề WHERE thì toàn bộ các dòng dữ liệu trong bảng đều bị xoá. Ví dụ: CSDL quản lý bán hàng 86 delete from DMHang where MaH = 3 Xoá dữ liệu khi điều kiện liên quan đến nhiều bảng Nếu điều kiện trong câu lệnh DELETE liên quan đến các bảng không phải là bảng cần xóa dữ liệu, ta phải sử dụng thêm mệnh đề FROM và sau đó là danh sách tên các bảng đó. Trong trường hợp này, trong mệnh đề WHERE ta chỉ định thêm điều kiện nối giữa các bảng Ví dụ: delete from CTHD from DMHang where DMHang.MaH = CTHD.MaH and DMHang.MaH = 'LAPTOP' Sử dụng truy vấn con trong câu lệnh DELETE Một câu lệnh SELECT có thể được lồng vào trong mệnh đề WHERE trong câu lệnh DELETE để làm điều kiện cho câu lệnh tương tự như câu lệnh UPDATE. Ví dụ: delete from CTHD from DMHang where DMHang.MaH = (select i.MaH 87 from DMHang i inner join CTHD od on i.MaH = od.MaH WHERE TenH = 'LAPTOP') Xoá toàn bộ dữ liệu trong bảng Câu lệnh DELETE không chỉ định điều kiện đối với các dòng dữ liệu cần xoá trong mệnh đề WHERE sẽ xoá toàn bộ dữ liệu trong bảng. Thay vì sử dụng câu lệnh DELETE trong trường hợp này, ta có thể sử dụng câu lệnh TRUNCATE có cú pháp như sau: TRUNCATE TABLE tên_bảng Ví dụ: truncate table tmp1 2.5. View 2.5.1 Khái niệm Khung nhìn là một bảng tạm thời, có cấu trúc như một bảng, khung nhìn không lưu trữ dữ liệu mà nó được tạo ra khi sử dụng, khung nhìn là đối tượng thuộc CSDL. Khung nhìn được tạo ra từ câu lệnh truy vấn dữ liệu (lệnh SELECT), truy vấn từ một hoặc nhiều bảng dữ liệu. Khung nhìn được sử dụng khai thác dữ liệu như một bảng dữ liệu, chia sẻ nhiều người dùng, an toàn trong khai thác, không ảnh hưởng dữ liệu gốc. Có thể thực hiện truy vấn dữ liệu trên cấu trúc của khung nhìn. Như vậy, một khung nhìn trông giống như một bảng với một tên khung nhìn và là một tập bao gồm các dòng và các cột. Điểm khác biệt giữa khung nhìn và bảng là khung nhìn không được xem là một cấu trúc lưu trữ dữ liệu tồn tại trong cơ sở dữ liệu. Thực chất dữ liệu quan sát được trong khung nhìn được lấy từ các bảng thông qua câu lệnh truy vấn dữ liệu. Câu lệnh CREATE VIEW được sử dụng để tạo ra khung nhìn và có cú pháp như sau: CREATE VIEW tên_khung_nhìn[(danh_sách_tên_cột)] AS câu_lệnh_SELECT
File đính kèm:
- bai_giang_he_quan_tri_co_so_du_lieu_trong_doanh_nghiep.pdf