Tải bản đầy đủ (.pdf) (84 trang)

Câu lệnh truy vấn sql

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3.62 MB, 84 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

1

<b>MỤC LỤC </b>

<b>GIỚI TH U CHUNG </b>Ệ <b>... 4 </b>

CHƯƠNG 1. XÂY DỰNG CƠ SỞ DỮ LIỆU ... 6

1. CƠ SỞ DỮ LIỆU QUẢN LÝ SINH VIÊN ... 6

DẠNG 1: CÂU L NH TRUY VỆ ẤN CÓ ĐIỀU KIỆN ... 16

Bài s 1: Câu l nh SQL không k t n i ố ệ ế ố ... 16

Bài s 2: Câu l nh SQL có k t n i ố ệ ế ố ... 17

BÀI T P T Ậ Ự GIẢI ... 18

DẠNG 2: CÂU L NH TRUY V N CÓ PHÂN NHÓM Ệ Ấ ... 19

Bài s 1: Câu l nh SQL có t ố ệ ừ khố GROUP BY không điều kiện. ... 19

Bài s 2: Câu l nh SQL có t khố GROUP BY vố ệ ừ ới điều ki n lệ ọc... 20

Bài s 3: Câu l nh SQL có t ố ệ ừ khoá GROUP BY với điều ki n nhóm. ệ ... 21

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

2

Bài s 4: Câu l nh SQL có t khoá TOP. ố ệ ừ ... 22

BÀI T P T Ậ Ự GIẢI: ... 23

DẠNG 3: CÂU L NH TRUY V N VỆ Ấ ỚI CẤU TRÚC LỒNG NHAU ... 24

Bài s 1: Cố ấu trúc l ng nhau ph ồ ủ định (KHÔNG, CHƯA). ... 24

Bài s 2: Cố ấu trúc l ng nhau không k t n ồ ế ối. ... 25

BÀI T P T Ậ Ự GIẢI... 26

DẠNG 4: CÂU L NH TRUY V N VỆ Ấ ỚI LƯỢNG TỪ ALL, ANY, EXISTS ... 26

Bài s ố 1: Lượng từ ALL ... 26

Bài s ố 2: Lượng từ ANY ... 27

Bài s ố 3: Lượng từ EXISTS ... 27

DẠNG 5: CÂU L NH TRUY V N VỆ Ấ ỚI CẤU TRÚC TẬP HỢP ... 28

DẠNG 6: CÂU L NH B SUNG, C P NH T, XOÁ DỆ Ổ Ậ Ậ Ữ DIỆU ... 28

Bài s 1: Lố ệnh INSERT bổ sung d u ữ liệ ... 28

Bài s 2: Lố ệnh DELETE xoá d u ữ liệ ... 29

Bài s 3: Lố ệnh UPDATE cập nh t d u ậ ữ liệ ... 30

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

3

DẠNG 1: HÀM ... 40

Bài s 1: Vi t hàm x p lo i dố ế ế ạ ựa vào điểm ... 40

Bài s 2: Vi t hàm tách tên t chu i Hố ế ừ ỗ ọ tên ... 40

Bài s 3: Viố ết hàm đọc điểm nguyên ra thành ch ữ tương ứng ... 41

Bài s 4: Viố ết hàm đọc điểm 1 chữ số thập phân ra thành ch ữ tương ứng 43 Bài s 4: Các d ng hàm ố ạ liên quan đến tính tốn trong CSDL ... 43

BÀI T P T Ậ Ự GIẢI: ... 45

DẠNG 2: THỦTỤ ... 46 C DẠNG BÀI 1: T o th tuc c p nh t, b sung , xoá d ạ ủ ậ ậ ổ ữ liệu... 46

DẠNG BÀI 2: T o th tạ ủ ục hi n th d u vể ị ữ liệ ới các điều ki n ch ệ ỉ định. .... 52

BÀI T P T Ậ Ự GIẢI... 59

DẠNG 3: CON TR Ỏ ... 59

Bài s 1: Tố ạo th tủ ục đánh Số báo danh theo t ng l p ch ừ ớ ỉ định. ... 59

Bài s 2: Tố ạo th tủ ục đánh số báo danh t ự động ... 60

Bài s 3: Tố ạo th tủ ục cập nh t mã th sinh viên v i công thậ ẻ ớ ức như sau: ... 61

Bài s 4: Vi t th t c phân l p theo yêu c u khác nhau ố ế ủ ụ ớ ầ ... 62

CHƯƠNG 4: MỘT SỐ ĐỐI TƯỢNG TIỆN ÍCH KHÁC ... 65

Bài s 1. Tố ạo Form k t n i ế ố ... 74

Bài s 2: Tố ạo Form hi n th danh sách sinh viên ể ị ... 76

Bài s 3: Tố ạo Form L c danh sách sinh viên theo l p ọ ớ ... 78

Bài s 4: Tố ạo Form nh p d u cho b ng SINHVIEN ậ ữ liệ ả ... 80

<b>Tài li u tham kh o </b>ệ <b>ả ... 83</b>

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

4

<b>SQL, viết tắt của Structure Query Language là một công cụ quản lý dữ , </b>

liệu, đơn giản nhưng rất hiệu quả, được sử dụng phổ biến ở nhiều lĩnh vực. Mặc khác, h<b>ầu hết tất cả các ngôn ngữ lập trình bậc cao đều có hỗ trợ SQL. </b> Các công cụ lập trình đều cho phép người sử dụng kết nối và truy cập tới CSDL bằng cách nhúng các câu l nh SQL vào trong các ngôn ng l p trình ệ ữ ậ hoặc viết lời gọi đến các chương trình con trên hệ quản trị CSDL.

<b>SQL ngày càng đóng vai trị quan trọng khi mà hiện nay Internet ngày </b>

càng phát triển. SQL được sử dụng như là công cụ để giao tiếp giữa các trình ứng d ng phía máy khách v i máy chụ ớ ủ cơ sở ữ liệu d <b>, SQL sẽ thực hiện việc </b>

truy cập thông tin và kết quả hiển thị trên ứng dụng khi người dùng yêu cầu. Trong các hệ quản trị cơ sở ữ liệ d u, SQL xuất hi n v i vai trò ngôn ng , ệ ớ ữ là công c giao ti p giụ ế ữa ngườ ử ụi s d ng và hệ quản trị cơ sở ữ liệ d u với nhiều vai trò khác nhau như: truy vấn dữ liệu, lập trình cơ sở dữ liệu, qu n trị ả cơ sở dữ liệu, truy c p d u trên Internậ ữ liệ et, …

Để phục vụ nhu cầu học tập và nghiên c u của sinh viên nói chung và ứ sinh viên ngành Cao đẳng Bình Định nói riêng, một tài liệu tham khảo mang tính th c hành là c n thi t. Phân lo i và gi i chi ti t các d ng bài t p SQL s ự ầ ế ạ ả ế ạ ậ ẽ giúp cho sinh viên nhận biết chính xác các d ng câu h i, s d ng câu l nh SQL ạ ỏ ử ụ ệ hiệu quả nhất. Trong l p trình, tác giậ ả sử ụng các thuật toán đơn giản, dễ ểu d hi để ả gi i quyết các bài tốn qu n lý, ả đó là mục tiêu trong tài li u này. ệ

Trong tài li u này, tác gi s d ng CSDL Qu n lý sinh viên làm bài mệ ả ử ụ ả ẫu từ đó sinh viên tự làm các bài t p trên CSDL bán hàng và các CSDL khác. Tài ậ liệu cung c p nh ng kiến thấ ữ ức căn bản nhất v 2 nội dung chính là ngơn ng ề ữ thao tác dữ liệu và l p trình vậ ới cơ sở ữ liệ d u, từ đó sinh viên có thể xây d ng ự một ứng dụng qu n lý trên windows t ả ừ đơn giản đến phức tạp.

Trong mỗi chương tài liệu chia làm 2 ph n chính là: tóm t t lý thuy t và ầ ắ ế phân lo i bài t p. C ạ ậ ụ thể chia thành 4 chương như sau:

<b>Chương 1: Xây d</b>ựng Cơ sở ữ liệ d u. Trong chương này tác giả giới thiệu 2 CSDL mẫu, CSDL qu n lý sinh viên và CSDL quản lý bán hàng, là 2 cơ sở dữ ả liệu mang tính cơ bản nhất, nó tập hợp tất cả các yêu cầu tổng quan để từ đó

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

5

sinh viên có th làm mể ột cách tương tự đối với các CSDL khác.

<b>Chương 2: Câu l nh truy v n SQL. T</b>ệ ấ rong chương này tác giả chia câu lệnh thao tác dữ liệu thành 6 dạng cơ bản, m i d ng có t 3-4 bài t p minh hoỗ ạ ừ ậ ạ, giúp sinh viên nhanh chóng nh n dậ ạng đúng các yêu cầu của mỗi câu lệnh SQL.

<b>Chương 3: L p trình v i SQL. T</b>ậ ớ rong chương này tác giả chia cấu trúc lập trình thành 3 d ng: Hàm, Th t c và Con tr . M i d ng bao g m nhi u d ng ạ ủ ụ ỏ ỗ ạ ồ ề ạ bài khác nhau, m i dỗ ạng bài là cơ bản được tác giả chọn l c và r t c n thiọ ấ ầ ết trong l p trình ậ ứng d ng sau này. ụ

<b>Chương 4: M t s</b>ộ ố đối tượng ti n ích khác, nh m nâng cao kệ ằ ỹ năng lập trình, người lập trình phải hạn chế tối đa nhất các lỗi thường xẩy ra, lường trước lỗi và b y lẫ ỗi là k ỹ năng cần thi t cế ủa người lập trình chuyên nghiệp.

<b>Phần đọc thêm: Ứng d ng SQL trong l p trìn</b>ụ ậ h C# căn bản. Trong chương này tác giả minh hoạ một số ứng dụng cơ bản, trong đó thể hiện một kết nối từ ứng dụng t i thớ ủ t c trong h ụ ệ quản tr CSDL SQL Server. Giúp sinh viên ị thấy được mối liên hệ giữa lập trình CSDL với lập trình trên cơng cụ C#, được xem là kỹ thuật mang tính b o m t cao. ả ậ

Tài li u tham khệ ảo “Phân loại và gi i chi ti t các d ng bài tả ế ạ ập SQL” mang tính thực hành cao, là tài li u gệ ối đầu cho t t cấ ả sinh viên đang ngồi gh nhà ế trường, tài liệu giúp sinh viên học tốt các học phần liên quan như: Hệ qu n tr ả ị CSDL Access, Hệ quản tr CSDL SQL, L p trình Windows, L p trình Website, ị ậ ậ …Tài liệu sẽ hoàn thiện hơn khi nhận nhiều ý kiến đóng góp quý báu của các bạn đọc. Tác gi r t mong nh n nhiả ấ ậ ều góp ý để tài liệu h u ích ữ hơn.

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

6

CHƯƠNG 1. <b>XÂY DỰNG </b>CƠ SỞ<b> DỮ LIỆU </b>

<b>1. CƠ SỞ DỮ LI U QU N LÝ SINH VIÊN </b>Ệ Ả

<b>1.1 BÀI TOÁN Dữ u vào: liệ</b>

- Danh m c các Ngành h c c a mụ ọ ủ ỗi Khoa.

- Danh sách hồ sơ sinh viên g m nhồ ững thông tin đầu vào như Mã sinh viên, H tên, Gi i tính, Ngày sinh, ọ ớ Địa ch Khoá h c, Hỉ, ọ ệ đào tạo,

- Theo dõi chương trình giảng dạy các học ph n theo t ng ngành. ầ ừ - Theo dõi điểm học phần của mỗi sinh viên của từng h c k , cọ ỳ ả năm và

cả khố. Đưa ra danh sách sinh viên tích luỹ, ngừng tiến độ học t p. ậ - Đưa ra bảng điểm tổng hợp có xếp loại học tập theo từng lớp ở mỗi

học kỳ, cả năm và cả khoá học.

- Xử lý dữ liệu: t o các th tạ ủ ục (Procedure) hiển th dị ữ liệu, tính tốn, bổ sung, c p nhậ ật, xoá, …

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

8

<b>Bảng DMHOCPHAN </b>

<b>Bảng DIEMHP </b>

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

9

<b>2. CƠ SỞ DỮ LI U QU N LÝ BÁN HÀNG </b>Ệ Ả

<b>2.1. BÀI TOÁN Dữ u vào liệ</b>

- Danh sách các m hàng bán l t i các c a hàng (ch ng hặt ẻ ạ ử ẳ ạn như Siêu thị) gồm các thông tin Mã hàng, Tên hàng và đơn giá bán hiện tại. - Danh sách các khách hàng Thành viên và VIP g m các thông tin H ồ ọ tên, Địa chỉ, Số điện tho ại.

- Danh sách các mặt hàng của từng hoá đơn.

<b>Dữ u ra liệ</b>

- Hoá đơn bán hàng cho mỗi khách hàng và theo dõi quá trình mua hàng của mỗi khách hàng để có những ưu đãi thích hợp.

- Theo dõi t ng mừ ặt hàng bán theo tháng, quý và năm. Những m t hàng ặ mức tiêu th cao, tiêu thu thụ ấp để điều chỉnh giá phù hợp.

- Tổng h p doanh thu c a t ng mợ ủ ừ ặt hàng theo từng tháng, quý và năm. - Tổng hợp tiền mua c a tủ ừng khách hàng trong mỗi năm, tích điểm và in chi t khế ấu.

<b>2.2. CƠ SỞ DỮ LIỆU QUAN HỆ </b>

</div><span class="text_page_counter">Trang 52</span><div class="page_container" data-page="52">

Tạo th t c: Hiủ ụ ển thị danh sách gồm MaSV, HoTen, , MaLop, DiemHP, MaHP c a nh ng sinh viên có Diemủ ữ HPnhỏ hơn số chỉ định, n u khơng có thì ế hiển thị thơng báo khơng có sinh viên nào.

Lời gi i ả

CREATE PROCEDURE HIENTHI_Diem @DiemHP varchar(5)

AS

IF NOT EXISTS (SELECT * FROM DIEMHP WHERE DiemHP < @DiemHP)

PRINT N'khơng có sinh viên nào'

</div><span class="text_page_counter">Trang 53</span><div class="page_container" data-page="53">

53 ELSE

SELECT SINHVIEN.MaSV, HoTen, MaLop, MaHP, DiemHP FROM DIEMHP

INNER JOIN INHVIEN ON DIEMHP.MaSV = SINHVIEN.MaSV S WHERE DIEMHP.DiemHP < @DiemHP

GO

• Thực hi n g i th t c ệ ọ ử ụ EXCE HIENTHI_Diem 5

<b>Bài toán 2: </b>

Tạo th t c: Hiủ ụ ển thị Hoten sinh viên CHƯA học học ph n có mã ch ầ ỉ định, Kiểm tra Mã học ph n chỉ nh có trong danh mục khơng, Nếu khơng có ầ đị thì hi n th thơng báo khơng có h c ph n này. ể ị ọ ầ

SELECT Ho en FROM T SINHVIEN

WHERE MaHp=@MaHP) GO

Thực hiện thủ tục

EXCE HIENTHI_MaHP '001'

</div><span class="text_page_counter">Trang 54</span><div class="page_container" data-page="54">

54

<b>Bài toán 3: </b>

Tạo th t c: Hiủ ụ ển thị danh sách g m: ồ MaSV, HoTen, MaLop NgaySinh , (dd/mm/yyyy), GioiTinh (Nam, Nữ),Tuổi c a nh ng sinh viên có tu i trong ủ ữ ổ khoảng ch ỉđịnh. N u khơng có thì hi n th thơng báo khơng có sinh viên nào ế ể ị Lời gi ải:

CREATE PROCEDURE HIENTHI_Tuoi @tuoi1 tinyint, @tuoi2 tinyint

AS

IF NOT EXISTS (SELECT * FROM SINHVIEN WHERE YEAR(GETDATE())-YEAR(Ngaysinh) BETWEEN @tuoi1 AND

Tạo th t c:Cho bi t MaKhoa, Tên Khoa, t ng s sinh viên c a Khoa ch ủ ụ ế ổ ố ủ ỉ định. Kiểm tra điều kiện Mã khoa có trong b ng danh mả ục khơng.

Lời gi ải:

CREATE PROCEDURE HIENTHI_KHOA

</div><span class="text_page_counter">Trang 55</span><div class="page_container" data-page="55">

INNER JOIN DMLOP ON DMLOP.MaLop=SINHVIEN.MaLop INNER JOIN DMNGANH ON DMNGANH.MaNganh=DMLOP.MaNganh INNER JOIN DMKHOA ON DMKHOA.MaKhoa=DMNGANH.MaKhoa WHERE DMKHOA.MaKhoa=@MaKhoa

GROUP BY DMKHOA.MaKhoa,TenKhoa GO

<b>Bài toán 5: </b>

Tạo th tủ ục: Hi n thể ị MaLop,TenLop, Tổng s SV m i lố ỗ ớp của khoa có mã chỉ định, Kiểm tra điều ki n MaKhoa có trong b ng Danh mệ ả ục khơng, Nếu khơng có thì hi n th thơng báo Khơng có l p này. ể ị ớ

</div><span class="text_page_counter">Trang 56</span><div class="page_container" data-page="56">

56 END

SELECT DMLOP.MaLop,TenLop, COUNT(MaSV) AS SoLuong FROM SINHVIEN

INNER JOIN DMLOP ON SINHVIEN.MaLop=DMLOP.MaLop

INNER JOIN DMNGANH ON DMNGANH.MaNganh=DMLOP.MaNganh

INNER JOIN DMHOCPHAN ON DIEMHP.MaHP=DMHOCPHAN.MaHP INNER JOIN SINHVIEN ON DIEMHP.MaSV=SINHVIEN.MaSV

</div><span class="text_page_counter">Trang 57</span><div class="page_container" data-page="57">

57

<b>Bài toán 7. </b>

Tạo th t c: Hiủ ụ ển thị danh sách g m: ồ MaSV, HoTen, MaLop, MaKhoa, NgaySinh (dd/mm/yyyy),GioiTinh (Nam, N ) c a nh ng sinh viên Khoa có ữ ủ ữ ở mã ch nh, N u khơng có thì hi n th thơng báo Khơng có sinh viên nào. ỉ đị ế ể ị Lời gi i ả

CREATE PROCEDURE HIENTHI_KHOA3 @MaKhoa varchar(10)

AS

IF NOT EXISTS(SELECT * FROM DMNGANH WHERE MaKhoa=@MaKhoa) PRINT N'Khoa này khơng có trong danh m c'ụ

ELSE

SELECT MaSV, HoTen, DMLOP.MaLop,

CASE ioiTinh WHEN 1 THEN N'Nam' ELSE N'N ' END G ữ AS GioiTinh,

CONVERT (char(10),ngaysinh,103) AS NgaySinh FROM SINHVIEN

INNER JOIN DMLOP ON SINHVIEN.MaLop=DMLOP.MaLop

INNER JOIN DMNGANH ON DMNGANH.MaNganh=DMLOP.MaNganh

Tạo th tủ ục: Cho bi t Hoten sinh viên KHƠNG ế có điểm HP <5 l p có ở ớ mã chỉ định, Ki m tra Mã l p chể ớ ỉ định có trong danh m c khơng, N u khơng thì ụ ế hiển thị thông báo.

Lời gi i ả

CREATE PROCEDURE KIEMTRA_LOP

</div><span class="text_page_counter">Trang 58</span><div class="page_container" data-page="58">

58 @MaLop varchar(6)

AS

IF NOT EXISTS (SELECT * FROM DMLOP WHERE MaLop=@MaLop) PRINT N'L p này khơng có trong danh m c'ớ ụ

Tạo th t c: Hiủ ụ ển thị danh sách g m: ồ MaSV, HoTen, MaLop, NgaySinh (dd/mm/yyyy), GioiTinh(Nam, N ), c a nh ng sinh viên hữ ủ ữ ọc lớp có mã ch ỉ định. Kiểm tra MaLop chỉ nh có t n t i trong bảng khơng, n u khơng có thì đị ồ ạ ế hiển thị thơng báo Khơng có lớp đó.

Lời gi i ả

CREATE PROCEDURE GETALL SINHVIEN_ @MaLop varchar(5)

AS

IF NOT EXISTS (SELECT * FROM SINHVIEN WHERE MaLop=@ MaLop)

PRINT N'Lớp đó khơng có trong danh mụ c' ELSE

SELECT MaSV, HoTen, MaLop,

CASE ioiTinh WHEN 1 THEN N'Nam' ELSE N'N END G ữ' , CONVERT(char(10), NgaySinh,103)

FROM SINHVIEN

</div><span class="text_page_counter">Trang 59</span><div class="page_container" data-page="59">

1. Hiển th ịdanh các khách hàng đã mua hàng trong ngày chỉ định (ngày là tham s truyố ền vào)

2. Hiển th danh sách 5 khách hàng có t ng tr ị ổ ị giá các đơn hàng lớn nhất. 3. Hiển th danh sách 10 m t hàng có s ị ặ ố lượng bán l n nh ớ ất.

4. Cập nh t c t Khuyậ ộ ến mãi như sau: Khuyến mãi 5% thành tiền ếu n SoLuong >100, 10% thành ti n n u SoLuongL >500. ề ế

5. Tính tr giá cho mị ỗi hoá đơn.

6. Cập nhật cho cột Lo i khách hàng: là VIP nạ ếu t ng thành tiổ ền trong năm lớn hơn hoặc bằng 20 triệu.

<b>DẠNG 3: CON TR </b>Ỏ

<b>Bài s 1: T o th t</b>ố ạ <b>ủ ục đánh Số báo danh theo từng lớp chỉ định.</b>

Trước hết thêm c t SBD vào b ng SINHVIEN ộ ả ALTER TABLE SINHVIEN

DECLARE cur_SBD CURSOR FOR SELECT MaSV

</div><span class="text_page_counter">Trang 60</span><div class="page_container" data-page="60">

60 FROM SINHVIEN WHERE MaLop=@MaLop ORDER BY MaLop, dbo.TACHTEN(HoTen) OPEN cur_SBD

DECLARE @MaSV varchar(5),@i int

FETCH NEXT FROM cur_SBD INTO @MaSV

<b>Bài s 2: T o th t</b>ố ạ ủ ục đánh số<b> báo danh t ự động</b>

khi sang l p mớ ới thì SBD đánh lại t ừ đầu.

Chú ý: L p g m nh ng sinh viên cùng ngành h c và khoá h c (khác v i cớ ồ ữ ọ ọ ớ ột PhanLop).

Lời gi i ả

CREATE PROCEDURE DanhSBD_Lop AS

DECLARE cur_SBD CURSOR FOR SELECT MaSV, MaLop

FROM SINHVIEN ORDER BY MaLop,dbo.TACHTEN(HoTen) OPEN cur_SBD

DECLARE @MaSV varchar(5),@MaLop varchar(5),@i int

</div><span class="text_page_counter">Trang 61</span><div class="page_container" data-page="61">

61 DECLARE @Lop varchar(5)

FETCH NEXT FROM cur_SBD INTO @MaSV,@MaLop

CREATE PROCEDURE DanhTheSV

@MaNganh varchar(10), @NamNhapHoc char(4) AS

DECLARE cur_MaSV CURSOR

FOR SELECT MaSV, MaNganh, NamNhaphoc FROM SINHVIEN

INNER JOIN DMLOP ON SINHVIEN.MaLop=DMLOP.MaLop

</div><span class="text_page_counter">Trang 62</span><div class="page_container" data-page="62">

62

WHERE MaNganh=@MaNganh AND NamNhapHoc=@NamNhapHoc

DECLARE @MaSV varchar(5), nt FETCH NEXT FROM cur_MaSV INTO FETCH NEXT FROM cur_MaSV

INTO @MaSV, @MaNganh, @NamNhapHoc

<b>Bài s 4: </b>ố <b>Viết th tủ ục phân lớp theo yêu c u khác nhau </b>ầ

1. Phân thành 2 l p A,B v i t l nam, nớ ớ ỉ ệ ữ như nhau, Mã lớp là tham s ố truyền vào ch ỉđịnh.

2. Phân l p v i sớ ớ ố lượng l p chớ ỉ định và t l nam, nỉ ệ ữ như nhau. Mã l p và ớ số lượng là 2 tham s truy n vào ch nh. ố ề ỉ đị

Ghi chú: t o thêm c t PhanLop varchar(5) ạ ộ ALTER TABLE SINHVIEN

ADD PhanLop varchar(5)

ORDER BY dbo.TACHTEN(HoTen) 65

</div><span class="text_page_counter">Trang 63</span><div class="page_container" data-page="63">

DECLARE cur_phanlop CURSOR

FOR SELECT MaSV FROM SINHVIEN WHERE MaLop=@MaLop ORDER BY MaLop,GioiTinh, dbo.TACHTEN(HoTen)

UPDATE SINHVIEN SET

PhanLop=LTRIM(@MaLop)+'A' WHERE CURRENT OF cur_phanlop

ELSE

UPDATE SINHVIEN SET

PhanLop=LTRIM(@MaLop)+'B' WHERE CURRENT OF

CREATE PROCEDURE PhanLop3 @MaLop varchar(6),@SoLop int AS

</div><span class="text_page_counter">Trang 64</span><div class="page_container" data-page="64">

64 DECLARE cur_phanlop CURSOR FOR

SELECT MaSV FROM SINHVIEN WHERE MaLop=@MaLop ORDER BY MaLop, GioiTinh, dbo.TACHTEN(HoTen)

</div><span class="text_page_counter">Trang 65</span><div class="page_container" data-page="65">

65

CHƯƠNG 4: MỘ<b>T SỐ </b>ĐỐI TƯỢ<b>NG TIỆN ÍCH KHÁC </b>

<b>A. KIẾN TH C C N NH </b>Ứ Ầ Ớ

<b>1. TRANSACTION </b>

Transaction (Giao tác) là m t t p h p có th t các thao tác và chúng ch ộ ậ ợ ứ ự ỉ có th cùng nhau thành công ho c cùng nhau th t b i. ể ặ ấ ạ

</div><span class="text_page_counter">Trang 66</span><div class="page_container" data-page="66">

66

<b>2. TRIGGER </b>

Trigger là một lo i stored Procạ edure đặc biệt có đặc điểm sau:

<b>- Tự động thực hiện khi có lệnh INSERT, DELETE hoặc UPDATE</b>

trên d ữ liệu

- Thường dùng để kiểm tra các <b>ràng buộc toàn vẹn ủ</b> c a CSDL hoặc

<b>các qui tắc nghi p v</b>ệ ụ.

- Một TRIGGER được định nghĩa trên một bảng, nhưng các xử lý trong TRIGGER có th s d ng nhi u bể ử ụ ề <b>ảng khác. </b>

<b>Xoá TRIGGER DROP TRIGGER <Tên TRIGGER> : B. PHÂN LOẠI BÀI T P </b>Ậ

<b>DẠNG 1: T o b</b>ạ <b>ẫy lỗi INSERT </b>

<b>Bài s 1</b>ố : T o m Trigger ạ ột để kiểm tra tính h p l c a dợ ệ ủ ữ liệu được nh p vào ậ một bảng SINHVIEN là d ữ liệu MaSV là không r ng. ỗ

</div>

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×