Sql Server – Function Và Trigger

--- Bài mới hơn ---

  • Dưới Đây Là Một Số Câu Hỏi Trong Bài Tập Nghiệp Vụ Ngoại Thương Incoterm
  • Bài Tập Hệ Điều Hành
  • Lập Trình Trực Quan
  • Xml: Bài 4.1. Lược Đồ Xml
  • 1000 Bài Tập Lập Trình C/c++ Có Lời Giải Giành Cho Sv
  • Trong bài trước mình đã giới thiệu về Stored Procedure , Trong bài này chúng ta sẽ tìm hiểu về Function và Trigger – một phần cũng không kém phần quan trong trong lập trình với cơ sở dữ liệu

    1. Hàm – Functions

    Cũng giống như Stored Procedure Hàm là một đối tượng trong cơ sở dữ liệu bao gồm một tập nhiều câu lệnh SQL được nhóm lại với nhau thành một nhóm. Điểm khác biệt giữa hàm và thủ tục là hàm trả về một giá trị thông qua tên hàm. Điều này cho phép ta sử dụng hàm như là một thành phần của một biểu thức chẳng hạn như trong các câu lệnh truy vấn hay các câu lệnh thực hiện cập nhật dữ liệu

    Trong SQL có rất nhiều các hàm được định nghĩa sẵn (Được chia theo nhóm – Trong 1 Database bạn chọn Programmability/Functions/System Functions) như các hàm về chuỗi (String Functions), các hàm về ngày tháng (Date and Time Functions), Các hàm toán học (Mathematical Function), … Ngoài những hàm do hệ quản trị cơ sở dữ liệu cung cấp sẵn, bạn có thể tự xây dựng các hàm nhằm phục vụ cho mục đích riêng của mình – Các hàm do người dùng định nghĩa. Các hàm do người dùng định nghĩa thường có 2 loại: Loại 1 là Hàm với giá trị trả về là “dữ liệu kiểu bảng” – Table-valued Functions; Loại 2 là Hàm với giá trị trả về là một giá trị – Scalar-valued Functions và các hàm này cũng sẽ được Hệ quản trị phân thành 2 nhóm.

    Các hàm sẵn có của SQL bạn tự tìm hiểu và sử dụng, trong bài viết này mình giới thiệu qua về những hàm “Do người dùng định nghĩa”.

    Cú pháp của hàm như sau:

    CREATE FUNCTION Ten_Ham ( [Danh_Sach_Cac_Tham_So] ) 

    RETURNS Kieu_Du_Lieu_Tra_Ve_Cua_Ham

    AS 

    BEGIN

       Cac_Cau_Lenh_Cua_Ham

    END

    – Ten_Ham: Tên của hàm cần tạo. Tên phải tuân theo qui tắc định danh và không trùng với tên của các hàm hệ thống có sắn.

    – Danh_Sach_Cac_Tham_So: Các tham số của hàm được khai báo ngay sau tên hàm và được bao bởi cặp dấu (), Danh sách các tham số này có thể không có – trường hợp này thì sau tên hàm bạn cần có cặp dấu (). Nếu hàm có nhiều tham số thì các khai báo phân cách nhau bởi dấu phẩy và phải bao hồm 2 phần: Tên tham số được bắt đầu bởi dấu @, Kiểu dữ liệu của tham số

    – Cac_Cau_Lenh_Cua_Ham: Tập hợp các câu lệnh sử dụng trong nội dung hàm để thực hiện các yêu cầu của hàm.

    Ví dụ 1: Mình sẽ lấy một ví dụ thật đơn giản là hàm không có Danh_Sach_Cac_Tham_So – trả về giá trị là năm hiện hành (Theo giờ hệ thống trên máy Database server):

    CREATE  FUNCTION dbo.fuGetCurrYear () 

    RETURNS int

    AS 

    BEGIN

     RETURN   YEAR(getdate())

    END

     

    Xem ví dụ trên bạn sẽ thấy nó rất đơn giản nhưng qua đây bạn cũng đã biết được việc viết hàm trong SQL như thế nào.

    Ví dụ 2: Tiếp theo mình sẽ viết một ví dụ nữa để bạn hiểu và có thể viết cho mình các hàm tự định nghĩa:

     CREATE  FUNCTION dbo.fuDaysInMonth (  @Thang Int,  @Nam  Int )  RETURNS int AS  BEGIN    DECLARE @Ngay Int  IF @Thang = 2   BEGIN     OR (@Nam % 400 = 0))     SET @Ngay = 29    ELSE     SET @Ngay = 28   END  ELSE   SELECT @Ngay =     CASE @Thang     WHEN 1 THEN 31     WHEN 3 THEN 31     WHEN 5 THEN 31     WHEN 7 THEN 31     WHEN 8 THEN 31     WHEN 10 THEN 31     WHEN 12 THEN 31     WHEN 4 THEN 30     WHEN 6 THEN 30     WHEN 9 THEN 30     WHEN 11 THEN 30    END  RETURN @Ngay END

     

    Ví dụ 3: Bạn xem tiếp ví dụ sau để xác định thứ trong tuần của một giá trị kiểu ngày

    CREATE FUNCTION fuThu

    (

     @ngay DATETIME

    )

    RETURNS NVARCHAR(10)

    AS

         BEGIN

              DECLARE @KetQua NVARCHAR(10)

              SELECT @KetQua=CASE DATEPART(DW,@ngay)

                            WHEN 1 THEN N’Chủ nhật’

                            WHEN 2 THEN N’Thứ hai’

                            WHEN 3 THEN N’Thứ ba’

                            WHEN 4 THEN N’Thứ tư’

                            WHEN 5 THEN N’Thứ năm’

                            WHEN 6 THEN N’Thứ sáu’

                            ELSE N’Thứ bảy’

                          END   

              RETURN (@KetQua)  /* Trị trả về của hàm */

    END

    SELECT e.FirstName, e.LastName,

    dbo.fuThu(e.BirthDate) AS ThuOfBirth 

    FROM Employees e

    Tiếp theo mình sẽ nói về Hàm với giá trị trả về là “dữ liệu kiểu bảng”

    Nếu đã biết về SQL chắc hẳn bạn đã biết cách tạo View từ các bảng trong CSDL, Nhưng với View bạn không thể truyền các tham số được, điều này phần nào đó làm giảm tính linh hoạt trong việc sử dụng View. Vậy nên khi bạn cần sử dụng dữ liệu dạng View mà có các tham số thì việc sử dụng hàm là một giải pháp hợp lý nhất.

    Ví dụ 4: Giả sử Mình tạo 1 View như sau: 

     CREATE VIEW vProducts  as  SELECT      Categories.CategoryID,  Categories.CategoryName,  Products.ProductName,  Products.QuantityPerUnit,  Products.UnitPrice FROM          Categories INNER JOIN  Products ON Categories.CategoryID = Products.CategoryID  WHERE Categories.CategoryID=1

    Ví dụ 5: Tạo một hàm trả về dữ liệu dạng bảng tùy theo giá trị của biến @CategoryID truyền vào:

    CREATE FUNCTION fuGetProducts

    (

     @CategoryID int

    )RETURNS TABLE

     AS

      RETURN

      (

       SELECT    

      Categories.CategoryID,

      Categories.CategoryName,

      Products.ProductName,

      Products.QuantityPerUnit,

      Products.UnitPrice

     FROM        

      Categories INNER JOIN

      Products ON Categories.CategoryID = Products.CategoryID

      WHERE [email protected])

    chạy thử hàm trên(Chú ý là khi hàm trả về dạng bảng bạn cũng coi đó như 1 table hoặc 1 View và bạn có thể truy vấn theo 1 hay nhiều trường của hàm) như sau:  

    SELECT CategoryID,

    CategoryName,

    ProductName,

    QuantityPerUnit,

    UnitPrice

    FROM  dbo.fuGetProducts(1)

     

    Sẽ tra về dữ liệu chính là Select * from vProducts ở trên. Nếu muốn lầy Theo CategoryID=2 bạn dùng câu lệnh Select * from dbo.fuGetProducts(2)…

    --- Bài cũ hơn ---

  • Các Dạng Bài Tập Foxpro – Sanghv
  • Bài Tập Cây Nhị Phân Tìm Kiếm
  • 6 Cách Sửa Lỗi The Archive Is Either In Unknown Format Or Damaged
  • Hướng Dẫn Sửa Lỗi Giải Nén Winrar
  • Cách Khắc Phục Lỗi The Archive Is Either In Unknown Format Or Damaged
  • Bài Tập Thực Hành Sql Server Phần 1 (Full Hướng Dẫn)

    --- Bài mới hơn ---

  • Full Giải Bài Tập Tự Luận Chương 4 Nguyên Lý Kế Toán 2022
  • Kèm Tài Liệu, Đề Thi Sưu Tầm Các Năm
  • East Riffa Team Details, Competitions And Latest Matches
  • Giải Bài Tập Toán Lớp 4 Trang 57 Đầy Đủ Nhất
  • Đề Thi Thử Thpt Quốc Gia 2022 Môn Vật Lý
  • Cafedev chia sẻ cho ace một số bài tập thực hành sql server nhằm giúp các bạn nâng cao kỹ năng và kiến thức khi làm việc với cơ sở dữ liệu trong thực tế.

    Series tự học SQL từ cơ bản tới nâng cao cho ace.

    1. Đề bài

    • Câu 1 – Tạo cơ sở dữ liệu sau

    Cơ sở dữ liệu quản lý sinh viên có chứa 3 table. Viết

    lệnh tạo các table với các ràng buộc khóa chính, khóa ngoại được nêu trong tân

    từ. Kiểu dữ liệu của các Fields là tự chọn theo ngữ nghĩa.

    SinhVien(MSSV,

    Lop, Ho, Ten, Ngaysinh, Nu)

    Tân từ: Mỗi sinh viên có một mã số (MSSV) là số nguyên phân biệt,

    thuộc một lớp (Lop), có họ (HO) và tên (Ten) sinh viên, ngày sinh (Ngaysinh),

    thuộc phái nữ hay nam (Nu).

    MonHoc(MSMon,

    TenMon)

    Tân từ: Mỗi môn học có một mã số (MSMon) là một

    số nguyên phân biệt, có tên môn học (TenMon).

    DiemThi(MSSV, MSMon,

    LanThi, Diem)

    Tân từ: Mỗi sinh viên (MSSV) có thể học nhiều môn (MSMon). Mỗi môn học có thể thi nhiều lần  (LanThi), mỗi lần thi được đánh số thứ tự từ 1 trở đi và ghi nhận điểm thi (Diem) của các lần thi đó.

    • Câu 2 – Khai báo bổ sung các ràng buộc sau:
    1. Lần thi (LanThi) trong table DiemThi có giá trị mặc định là 1
    2. Điểm thi (Diem) trong table DiemThi được chấm theo thang điểm 10
    • Câu 3 – Tạo View:
    1. Tạo view vwLanThiCuoi dùng liêt kê danh sách lần thi cuối cùng của các sinh viên gồm: Mã số sinh viên, mã số môn học, lần thi cuối cùng của môn học (ví dụ sinh viên A thi môn học C ba lần thì lần thi cuối cùng là 3).
    2. Tạo view vwDiemThiCuoi dùng liêt kê danh sách sinh viên gồm: Mã số sinh viên, mã số môn học, lần thi cuối cùng của môn học (ví dụ sinh viên A thi môn học M ba lần thì lần thi cuối cùng là 3) và điểm của lần thi cuối cùng đó.
    • Câu 4 – Tạo trigger insert

    Tạo trigger Insert cho

    table DiemThi dùng điền tự động số thứ tự lần thi khi thêm điểm thi một môn học

    của một sinh viên. Ví dụ sinh viên A đã thi môn học M hai lần thì lần thi mới

    thêm vào phải là 3.

    • Câu 5 – Viết hàm

    Viết thủ tục hoặc hàm liệt

    kê kết quả thi các môn của một sinh viên khi biết mã số của sinh viên (MSSV) gồm

    các thông tin: mã số môn học, lần thi, điểm thi. Trong đó, mã số sinh viên là giá

    trị input

    2. Bài giải

    Hướng dẫn cách xem và tải tài liệu từ trang cafedev tại đây.

    Xem bài giải

    3. Series lý thuyết ôn tập

    Nếu bạn thấy hay và hữu ích, bạn có thể tham gia các kênh sau của cafedev để nhận được nhiều hơn nữa:

    Chào thân ái và quyết thắng!

    --- Bài cũ hơn ---

  • Tổng Hợp Và Chọn Lọc Bài Tập Sql Full Hướng Dẫn Cho Ace Với Mọi Level Từ Cơ Bản Tới Nâng Cao
  • Bài Tập Nguyên Lý Kế Toán Từ Dễ Đến Khó Có Lời Giải Chi Tiết
  • Tài Liệu Bài Tập Sức Bền Vật Liệu 1 Có Lời Giải, Tài Liệu Bài Tập Sức Bền Vật Liệu 1 Chọn Lọc
  • Hướng Dẫn Giải Bài Tập Chuỗi Phản Ứng Hóa Hữu Cơ 11 Có Đáp Án
  • Ôn Tập Hình Học Lớp 8 Học Kỳ Ii
  • Đề + Đáp Án Bài Tập Quản Lý Sinh Viên (Sql Server)

    --- Bài mới hơn ---

  • Bài Tập Tình Huống Quản Trị Nhân Lực
  • #1. Bài Tập Quản Trị Nguồn Nhân Lực Có Lời Giải Dễ Hiểu Nhất
  • Bài Tập Từ Trường Cực Hay
  • Bài Tập Phân Tích Tương Quan Và Hồi Qui
  • Chương 5 & 6 Tương Quan Và Hồi Quy
  • TRANSCRIPT

    + p n bi tp qun l sinh vin (SQL Server) Qun L Sinh Vin Table SINHVIEN

    Table KHOA

    Table MONHOC

    Table KETQUA

    Cu hi: 01: Tao CSDL, cac bang va cac khoa ngoai cho tren 02: Xoa cac rang buoc khoa ngoai tham chieu den bang SINHVIEN va bang MONHOC 03: Xoa bang KHOA va MONHOC 04: Tao lai cac bang va cac khoa ngoai da xoa o cau 2 va 3 05: Nhap du lieu cho tat ca cac bang 06: Sua so tiet cua mon “Tri Tue Nhan Tao” lai 30 tiet 07: Xoa ket qua cua sinh vien co ma S001 08: Chen lai cac bo cua sinh vien S001 vua xoa o cau 7 09: Sua sinh vien ‘Nguyen Thi Lam’ thanh ‘Nguyen Thanh Son’ va phai thanh ‘Nam’ 10: Chuyen sinh vien ‘Le Thi Lan Anh’ sang khoa CNTT 11: Cho biet ket qua hoc tap cua sinh vien co ma S007 12: Liet ke nhung sinh vien sinh vao ngay 03 thang 07 13: Cho biet danh sach sinh vien ma ho co chua chu Anh 14: Cho biet ket qua hoc tap gom: HOSV, TENSV, MAMH, LANTHI, DIEM cua sinhvien S007 15: Cho biet ket qua hoc tap gom: HOSV, TENSV, TENMH, LANTHI, DIEM cua sinh vien S007 16: Cho biet danh sach sinh vien Nam khoa ‘Cong Nghe Thong Tin’ sap tang dan theo ten 17: Cho biet danh sach cac mon hoc tren 40 tiet va co ten bat dau bang chu T 18: Liet ke nhung sinh vien tu 22 tuoi tro len khoa ‘Cong Nghe Thong Tin’ va khoa ‘Dien Tu Vien Thong’ 19: Cho biet ten khoa nao khong co Sinh Vien 20: Cho biet danh sach sinh vien sinh vien chua hoc mon nao, thong tin gom Ho, Ten, Ngay sinh, Ten khoa 21: Cho biet danh sach nhung sinh vien da hoc mon co ma AV, sap giam dan theo ngay sinh. Thong tin

    hien thi gom MASV,HOSV,TENSV,NGAYSINH,ten KHOA 22: Cho biet ten sinh vien duoc diem cao nhat 23: Cho biet sinh vien nao rot mon CSDL o lan thi thu nhat 24: Cho biet sinh vien nao rot mon CSDL o lan thi thu nhat ma chua thi lai lan 2 25: Dem so luong sinh vien cua khoa ‘Quan Tri Kinh Doanh’ 26: Dem so luong sinh vien cua tung khoa 27: Cho biet ten khoa co dong sinh vien nhat 28: Cho biet diem thap nhat cua moi mon hoc 29: Cho biet ten mon hoc nao chua co sinh vien hoc 30: Cho biet diem trung binh lan thi thu nhat cua sinh vien S004 31: Cho biet diem trung binh, diem lon nhat, diem nho nhat lan thu nhat cua tung sinh vien. Thong tin gom TenSV, TenKhoa, DiemTB p n:insert into SINHVIEN values(‘Tran Minh’,’Son’,’S001′,’01/05/1985′,’Nam’,’CNTT’) insert into SINHVIEN values(‘Nguyen Quoc’,’Bao’,’S002′,’15/06/1986′,’Nam’,’CNTT’) insert into SINHVIEN values(‘Phan Anh’,’Tung’,’S003′,’20/12/1983′,’Nam’,’QTKD’) insert into SINHVIEN values(‘Bui Thi anh’,’Thu’,’S004′,’01/02/1985′,’Nu’,’QTKD’) insert into SINHVIEN values(‘Le Thi Lan’,’Anh’,’S005′,’03/07/1987′,’Nu’,’DTVT’) insert into SINHVIEN values(‘Nguyen Thi’,’Lam’,’S006′,’25/11/1984′,’Nu’,’DTVT’) insert into SINHVIEN values(‘Phan Thi’,’Ha’,’S007′,’03/07/1988′,’Nu’,’CNTT’) insert into SINHVIEN values(‘Tran The’,’Dung’,’S008′,’21/10/1985′,’Nam’,’CNTT’) insert insert insert insert insert insert insert insert insert insert insert insert insert insert insert insert insert insert insert insert into into into into into into into into into into into into into into into into into into into into MONHOC MONHOC MONHOC MONHOC MONHOC MONHOC MONHOC KETQUA KETQUA KETQUA KETQUA KETQUA KETQUA KETQUA KETQUA KETQUA KETQUA KETQUA KETQUA KETQUA values(‘Ke Toan Tai Chinh’,’KTTC’,45) values(‘Toan Cao Cap’,’TCC’,60) values(‘Co So Du Lieu’,’CSDL’,45) values(‘Ky Thuat Lap Trinh’,’KTLT’,60) values(‘Tin Hoc Van Phong’,’THVP’,30) values(‘Anh Van’,’AV’,45) values(‘Tri Tue Nhan Tao’,’TTNT’,45) values(‘S001′,’TCC’,1,5.5) values(‘S002′,’CSDL’,1,3) values(‘S008′,’AV’,1,7) values(‘S002′,’CSDL’,2,6) values(‘S003′,’KTTC’,1,4.5) values(‘S004′,’AV’,1,8) values(‘S004′,’THVP’,1,3.5) values(‘S006′,’TCC’,1,5) values(‘S001′,’CSDL’,1,4) values(‘S007′,’AV’,1,2) values(‘S004′,’THVP’,2,7.5) values(‘S007′,’KTLT’,1,6) values(‘S007′,’AV’,2,9)

    — khigiadano : 6: Sua so tiet cua mon “Tri Tue Nhan Tao” lai 30 tiet update MONHOC set SOTIET=30 where TENMH=’Tri Tue Nhan Tao’ — khigiadano : 7: Xoa ket qua cua sinh vien co ma S001 delete from KETQUA where MASV=’S001′ — khigiadano : 8: Chen lai cac bo cua sinh vien S001 vua xoa o cau 7 insert into KETQUA values(‘S001′,’TCC’,1,5.5) insert into KETQUA values(‘S001′,’CSDL’,1,4) — khigiadano : 9: Sua sinh vien ‘Nguyen Thi Lam’ thanh ‘Nguyen Thanh Son’ va phai thanh ‘Nam’ update SINHVIEN set HOSV=’Nguyen Thanh’, TENSV=’Son’, PHAI=’Nam’ where HOSV=’Nguyen Thi’ and TENSV=’Lam’ — khigiadano : 10: Chuyen sinh vien ‘Le Thi Lan Anh’ sang khoa CNTT update SINHVIEN set MAKHOA=’CNTT’ where HOSV+’ ‘+TENSV=’LE Thi Lan Anh’ — khigiadano : 11: Cho biet ket qua hoc tap cua sinh vien co ma S007 select * from KETQUA where MASV=’S007′ — khigiadano : 12: Liet ke nhung sinh vien sinh vao ngay 03 thang 07 select * from SINHVIEN where day(NGAYSINH)=03 and month(NGAYSINH)=07 — khigiadano : 13: Cho biet danh sach sinh vien ma ho co chua chu Anh select * from SINHVIEN where HOSV like’%Anh%’ — khigiadano : 14: Cho biet ket qua hoc tap gom: HOSV, TENSV, MAMH, LANTHI, DIEM cua sinhvien S007 select HOSV,TENSV,MAMH,LANTHI,DIEM from SINHVIEN,KETQUA where SINHVIEN.MASV=KETQUA.MASV and KETQUA.MASV=’S007′ — khigiadano : 15: Cho biet ket qua hoc tap gom: HOSV, TENSV, TENMH, LANTHI, DIEM cua sinh vien S007 select HOSV,TENSV,TENMH,LANTHI,DIEM from SINHVIEN,MONHOC,KETQUA where SINHVIEN.MASV=KETQUA.MASV and KETQUA.MAMH=MONHOC.MAMH and KETQUA.MASV=’S007′ — khigiadano : 16: Cho biet danh sach sinh vien Nam khoa ‘Cong Nghe Thong Tin’ sap tang dan theo ten select HOSV,TENSV,MASV,NGAYSINH,PHAI,SINHVIEN.MAKHOA from SINHVIEN,KHOA where SINHVIEN.MAKHOA=KHOA.MAKHOA and TENKHOA=’Cong Nghe Thong Tin’

    --- Bài cũ hơn ---

  • Bài Tập Quản Trị Tài Chính Có Lời Giải
  • Bài Tập Quản Trị Sản Xuất
  • Bài Tập Về Mắt Có Lời Giải
  • Tài Liệu Bài Tập Cơ Học Lý Thuyết
  • Bài Tập Cơ Lý Thuyet 1
  • Tổng Hợp 10 Bài Tập Truy Vấn Sql Có Lời Giải Hay Cho Học Sinh

    --- Bài mới hơn ---

  • Bài Tập Sql Giải Đề Thi Tuyển Lập Trình Viên Của Fpt Fsoft
  • 25 Ví Dụ Về Ôn Tập Sql Quản Lý Sinh Viên
  • Bài Tập Tổng Hợp Sql Kèm Đáp Án
  • Một Số Bài Tập Mẫu Sql(Phân I)
  • Pp Mới Giải Một Lớp Bài Tập Khó Vê Giới Hạn Trong Ct Thpt
  • Tổng hợp bài tập truy vấn SQL có lời giải hay :

    Câu hỏi 1 : Để quản lý Thực tập nghề nghiệp của sinh viên, người ta xây dựng một cơ sở dữ liệu có tên là ThucTap gồm các sơ đồ quan hệ sau:

    Khoa(makhoa char(10), tenkhoa char(30), dienthoai char(10))

    GiangVien(magv int, hotengv char(30), luong decimal(5,2), makhoa char(10))

    SinhVien(masv int, hotensv char(30), makhoa char(10), namsinh int, quequan char(30))

    DeTai(madt char(10), tendt char(30), kinhphi int, NoiThucTap char(30))

    HuongDan(masv int, madt char(10), magv int, ketqua decimal(5,2))

    Các lệnh SQL tạo bảng Đầu tiên bạn cần thực hiện lệnh tạo Data Base trước như sau : Nhập dữ liệu cho từng bảng : Thêm dữ liệu vào bảng Khoa :

    Thêm dữ liệu vào bảng Giảng Viên :

    Thêm dữ liệu vào bảng SInh Viên : Thêm dữ liệu vào bảng Đề Tài : Thêm dữ liệu vào bảng Hướng Dẫn :

    Câu hỏi 2 : Cũng cùng nội dung câu hỏi trên bạn hãy đưa ra thông tin gồm mã số, họ tên và tên khoa của tất cả các giảng viên .

    SELECT GV.Magv, GV.Hotengv, K.Tenkhoa

    Câu hỏi 3 : Sử dụng lệnh xuất ra mã số, họ tên, tên khoa của các giảng viên hướng dẫn từ 3 sinh viên trở lên.

    Câu hỏi 4 : Sử dụng lệnh SQL để xuất ra thông tin về những sinh viên chưa có điểm thực tập .

    Câu hỏi 5 : Thực hiện lệnh SQL xuất ra số điện thoại của khoa mà sinh viên có tên ‘Le van son’ đang theo học .

    Câu hỏi 6 : Sử dụng lệnh truy vấn SQL lấy ra mã số và tên các đề tài có nhiều hơn 2 sinh viên tham gia thực tập .

    Câu hỏi 7 : Sử dụng câu lệnh truy vấn SQL lấy ra mã số, tên đề tài của đề tài có kinh phí cao nhất .

    Câu hỏi 8 : Sử dụng câu lệnh SQL xuất ra Tên khoa, Số lượng sinh viên của mỗi khoa .

    Câu hỏi 9 : Sử dụng truy vấn SQL xuất ra mã số, họ tên và điểm của các sinh viên khoa ‘DIALY và QLTN’ .

    SELECT SV.Masv,SV.Hotensv,HD.KetQua

    Câu hỏi 10 : Sử dụng câu lệnh SQL xuất ra danh sách gồm Mã số, Họ tên và Tuổi của các sinh viên khoa ‘TOAN’ .

    --- Bài cũ hơn ---

  • Bài Tập Sql Cơ Bản
  • Bai Tap Va Loi Giai Sql
  • Giải Bài Tập Toán 9, Hướng Dẫn Giải Bài Trang Sgk Toán Lớp 9 Đại Số, H
  • Các Công Thức Hóa Học Lớp 11 Giải Nhanh Mọi Dạng Bài Tập Hiđrocabon
  • Pp Giải Bài Tập Về Anken
  • Bài Tập Sql Cơ Bản

    --- Bài mới hơn ---

  • Tổng Hợp 10 Bài Tập Truy Vấn Sql Có Lời Giải Hay Cho Học Sinh
  • Bài Tập Sql Giải Đề Thi Tuyển Lập Trình Viên Của Fpt Fsoft
  • 25 Ví Dụ Về Ôn Tập Sql Quản Lý Sinh Viên
  • Bài Tập Tổng Hợp Sql Kèm Đáp Án
  • Một Số Bài Tập Mẫu Sql(Phân I)
  • Bài 1: Để quản lý Thực tập nghề nghiệp của sinh viên, người ta xây dựng một cơ sở dữ liệu có tên là ThucTap gồm các sơ đồ quan hệ sau:

    Khoa(makhoa char(10), tenkhoa char(30), dienthoai char(10))

    GiangVien(magv int, hotengv char(30), luong decimal(5,2), makhoa char(10))

    SinhVien(masv int, hotensv char(30), makhoa char(10), namsinh int, quequan char(30))

    DeTai(madt char(10), tendt char(30), kinhphi int, NoiThucTap char(30))

    HuongDan(masv int, madt char(10), magv int, ketqua decimal(5,2))

    A. Sử dụng SSMS để tạo lập và nhập dữ liệu cho CSDL

    B. Chỉ sử dụng 01 lệnh SQL trả lời các yêu cầu sau:

    I

    1. Đưa ra thông tin gồm mã số, họ tênvà tên khoa của tất cả các giảng viên
    2. Đưa ra thông tin gồm mã số, họ tênvà tên khoa của các giảng viên của khoa ‘DIA LY va QLTN’
    3. Cho biết số sinh viên của khoa ‘CONG NGHE SINH HOC’
    4. Đưa ra danh sách gồm mã số, họ tênvà tuổi của các sinh viên khoa ‘TOAN’
    5. Cho biết số giảng viên của khoa ‘CONG NGHE SINH HOC’
    6. Cho biết thông tin về sinh viên không tham gia thực tập
    7. Đưa ra mã khoa, tên khoa và số giảng viên của mỗi khoa
    8. Cho biết số điện thoại của khoa mà sinh viên có tên ‘Le van son’ đang theo học

    II

    1. Cho biết mã số và tên của các đề tài do giảng viên ‘Tran son’ hướng dẫn
    2. Cho biết tên đề tài không có sinh viên nào thực tập
    3. Cho biết mã số, họ tên, tên khoa của các giảng viên hướng dẫn từ 3 sinh viên trở lên.
    4. Cho biết mã số, tên đề tài của đề tài có kinh phí cao nhất
    5. Cho biết mã số và tên các đề tài có nhiều hơn 2 sinh viên tham gia thực tập
    6. Đưa ra mã số, họ tên và điểm của các sinh viên khoa ‘DIALY và QLTN’
    7. Đưa ra tên khoa, số lượng sinh viên của mỗi khoa
    8. Cho biết thông tin về các sinh viên thực tập tại quê nhà
    9. Hãy cho biết thông tin về những sinh viên chưa có điểm thực tập
    10. Đưa ra danh sách gồm mã số, họ tên các sinh viên có điểm thực tập bằng 0

    Ok xong phần bài tập sql cơ bản nha !!! Cái này làm nhiều ắt sẽ quen tay, mà cái nào chả vậy 😀

    Cho đi kiến thức bạn đang có là cách tuyệt vời để nâng cao trình độ của bản thân!

    --- Bài cũ hơn ---

  • Bai Tap Va Loi Giai Sql
  • Giải Bài Tập Toán 9, Hướng Dẫn Giải Bài Trang Sgk Toán Lớp 9 Đại Số, H
  • Các Công Thức Hóa Học Lớp 11 Giải Nhanh Mọi Dạng Bài Tập Hiđrocabon
  • Pp Giải Bài Tập Về Anken
  • Bài Tập Tự Luận Hữu Cơ 11 Tổng Hợp Từng Chương
  • Một Số Bài Tập Mẫu Sql(Phân I)

    --- Bài mới hơn ---

  • Pp Mới Giải Một Lớp Bài Tập Khó Vê Giới Hạn Trong Ct Thpt
  • Luyện Tập Giới Hạn Hàm Số
  • Chuyên Đề Giới Hạn Của Dãy Số Và Hàm Số
  • Giải Bài Tập Về Định Giá Trái Phiếu
  • Một Số Bài Tập Nâng Cao Hóa 8 Có Đáp Án
  • Khách hàng đặt hàng cho cty thông qua các đơn đặt hàng. Thông tin chung về các đơn đạt hàng được lưu trữ trong DONDATHANG (mỗi một đơn đặt hàng phải do một nhân viên của cty lập và do đó bảng này có quan hệ với bảng NHANVIEN)

    Thông tin chi tiết của các đơn đặt hàng (đặt mua hàng gì, số lượng, giá cả, …) được lưu trữ chi tiết trong bảng CHITIETDATHANG. Bảng này có quan hệ với DONDATHANG và MATHANG.

    Sử dụng câu lệnh sau để tạo cơ sở dữ liệu:

    /*2. Những đơn đặt hàng nào yêu cầu giao hàng ngay tại cty đặt hàng và những đơn đó là của công ty nào? */

    /*3. Những mặt hàng nào chưa từng được khách hàng đặt mua?*/

    /*4. Những nhân viên nào của công ty chưa từng lập bất kỳ một hoá đơn đặt hàng nào? */

    /*5. Trong năm 2003, những mặt hàng nào chỉ được đặt mua đúng một lần*/

    /*6. Hãy cho biết mỗi một khách hàng đã phải bỏ ra bao nhiêu tiền để đặt mua hàng của công ty? */

    /*7. Mỗi một nhân viên của công ty đã lập bao nhiêu đơn đặt hàng (nếu nhân viên chưa hề lập một hoá đơn nào thì cho kết quả là 0) */

    /*8. Cho biết tổng số tiền hàng mà cửa hàng thu được trong mỗi tháng của năm 2003 (thời được gian tính theo ngày đặt hàng). */

    /*9. Hãy cho biết tổng số lượng hàng của mỗi mặt hàng mà cty đã có (tổng số lượng hàng hiện có và đã bán). */

    /*10. Nhân viên nào của cty bán được số lượng hàng nhiều nhất và số lượng hàng bán được của nhân viên này là bao nhiêu?*/

    /*11. Mỗi một đơn đặt hàng đặt mua những mặt hàng nào và tổng số tiền mà mỗi đơn đặt hàng phải trả là bao nhiêu? */

    /*12. Hãy cho biết mỗi một loại hàng bao gồm những mặt hàng nào, tổng số lượng hàng của mỗi loại và tổng số lượng của tất cả các mặt hàng hiện có trong công ty là bao nhiêu? */

    /*13. Thống kê xem trong năm 2003, mỗi một mặt hàng trong mỗi tháng và trong cả năm bán được với số lượng bao nhiêu.*/

    /*14. Cập nhật lại giá trị NGAYCHUYENHANG của những bản ghi có giá trị NGAYCHUYENHANG chưa xác định (NULL) trong bảng DONDATHANG bằng với giá trị của trường NGAYDATHANG.*/

    /*15. Cập nhật giá trị của trường NOIGIAOHANG trong bảng DONDATHANG bằng địa chỉ của khách hàng đối với những đơn đặt hàng chưa xác định được nơi giao hàng (có giá trị trường NOIGIAOHANG bằng NULL)*/

    /*16. Cập nhật lại dữ liệu trong bảng KHACHHANG sao cho nếu tên công ty và tên giao dịch của khách hàng trùng với tên công ty và tên giao dịch của một nhà cung cấp nào đó thì địa chỉ, điện thoại, fax và email phải giống nhau.*/

    /*17. Tăng lương lên gấp rưỡi cho những nhân viên bán được số lượng hàng nhiều hơn 100 trong năm 2003 */

    *18. Tăng phụ cấp lên bằng 50% lương cho những nhân viên bán được hàng nhiều nhất.*/

    /*19. Giảm 25% lương của những nhân viên trong năm 2003 ko lập được bất kỳ đơn đặt hàng nào */

    /*20. Giả sử trong bảng DONDATHANG có them trường SOTIEN cho biết số tiền mà khách hàng phải trả trong mỗi dơn đặt hàng. Hãy tính giá trị cho trường này.*/

    /*21. Xoá khỏi bảng MATHANG những mặt hàng có số lượng bằng 0 và không được đặt mua trong bất kỳ đơn đặt hàng nào.*/

    --- Bài cũ hơn ---

  • Bài Tập Tổng Hợp Sql Kèm Đáp Án
  • 25 Ví Dụ Về Ôn Tập Sql Quản Lý Sinh Viên
  • Bài Tập Sql Giải Đề Thi Tuyển Lập Trình Viên Của Fpt Fsoft
  • Tổng Hợp 10 Bài Tập Truy Vấn Sql Có Lời Giải Hay Cho Học Sinh
  • Bài Tập Sql Cơ Bản
  • Một Số Bài Tập Mẫu Sql(Phần Iii)

    --- Bài mới hơn ---

  • Bài 7: Thiết Kế Mạch Đếm
  • Đề Thi Nghiệp Vụ Ngoại Thương Có Đáp Án
  • Bài Tập Chương Iii Otomat Hữu Hạn Và Biểu Thức Chính Quy
  • Bài Giảng Và Ngân Hàng Đề Thi Otomat
  • Giải Bài Tập Round Robin
  • CREATE TABLE ( (30) NOT NULL, (30) NULL, CONSTRAINT IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'’) AND type in (N’U’)) CREATE TABLE ( (30) NOT NULL, (30) NULL, (30) NULL, CONSTRAINT IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'’) AND type in (N’FN’, N’IF’, N’TF’, N’FS’, N’FT’)) execute dbo.sp_executesql @statement = N’CREATE FUNCTION (@ngay DATETIME) RETURNS INT AS BEGIN DECLARE @thang INT, @quy INT SET @thang = month(@ngay) IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'’) AND type in (N’U’)) CREATE TABLE ( (30) NOT NULL, (30) NULL, CONSTRAINT IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'’) AND type in (N’U’)) CREATE TABLE ( NOT NULL, NULL, (30) NULL, (30) NULL, CONSTRAINT IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'’) AND type in (N’U’)) CREATE TABLE ( (30) NOT NULL, (30) NULL, CONSTRAINT IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'’) AND type in (N’FN’, N’IF’, N’TF’, N’FS’, N’FT’)) execute dbo.sp_executesql @statement = N’create function (@SlsPerID nvarchar(10)) returns nvarchar(10) as begin declare @hienthi nvarchar(10) declare @name nvarchar(50) select @name = name from SalesPerson where @SlsPerID= SlsPerID from Customer where Name = @name) SET @hienthi = N”không” IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'’) AND type in (N’P’, N’PC’)) EXEC dbo.sp_executesql @statement = N’create PROCEDURE DECLARE contro CURSOR FOR select s.SlsPerID, s.Name, isnull(sum(x.OrdAmt), 0) as OrdAmt from xswSalesOrd x right join SalesPerson s on x.SlsPerID = s.SlsPerID where Year(x.OrderDate) = 2010 or x.OrderDate IS NULL group by s.SlsPerID, s.Name OPEN contro DECLARE @SlsPerID NVARCHAR(10) DECLARE @Name NVARCHAR(50) DECLARE @OrdAmt money declare @HienThi nvarchar(100) /*Bắt đầu duyệt qua các dòng trong kết quả truy vấn*/ FETCH NEXT FROM contro INTO @SlsPerID,@Name,@OrdAmt WHILE @@FETCH_STATUS=0 set @HienThi = N”Không Đạt Yêu Cầu Doanh Số” set @HienThi = N”Đạt Yêu Cầu Doanh Số” INSERT INTO #temp(SlsPerID, Name, OrdAmt, HienThi) SELECT @SlsPerID, @Name, @OrdAmt, @HienThi FETCH NEXT FROM contro INTO @SlsPerID,@Name,@OrdAmt /*Đóng con trỏ và giải phóng vùng nhớ*/ CLOSE contro DEALLOCATE contro select * from #temp drop table #temp IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'’) AND type in (N’FN’, N’IF’, N’TF’, N’FS’, N’FT’)) execute dbo.sp_executesql @statement = N’CREATE FUNCTION (@giaBan MONEY, @ngayBan DATETIME) SET @chietKhau = CASE dbo.fncQuy(@ngayBan) WHEN 1 THEN @giaBan*0.1 IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'’) AND type in (N’P’, N’PC’)) EXEC dbo.sp_executesql @statement = N’create proc (@startDate varchar(10)=null, @endDate varchar(10)=null) select @Start=Convert(datetime,@startDate,103) select @End=Convert(datetime,@endDate,103) print ”Loi: Ngay bat dau lon hon ngay ket thuc.”; SELECT xswSalesOrd.CustID, month(OrderDate) AS Thang, COUNT(xswSalesOrd.CustID) AS SoLanMuaHang FROM Customer INNER JOIN xswSalesOrd ON Customer.CustID=xswSalesOrd.CustID WHERE ((xswSalesOrd.OrderDate) BETWEEN @Start AND @End) GROUP BY xswSalesOrd.CustID,Month(OrderDate) IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'’) AND type in (N’P’, N’PC’)) EXEC dbo.sp_executesql @statement = N’create proc select @Start=Convert(datetime,”01-Jan-2010”,103) select @End=Convert(datetime,”31-Mar-2010”,103) select top 10 xswSlsOrdDet.InvtID, sum (LineAmt) as doanhso from (xswSalesOrd inner join xswSlsOrdDet on xswSalesOrd.OrderNbr= xswSlsOrdDet.OrderNbr) where ((OrderDate) between @Start and @End) group by xswSlsOrdDet.InvtID order by sum(LineAmt) desc IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'’) AND type in (N’FN’, N’IF’, N’TF’, N’FS’, N’FT’)) execute dbo.sp_executesql @statement = N’CREATE FUNCTION (@maHang NVARCHAR(10), @maDonHang NVARCHAR(10)) DECLARE @chietKhau MONEY, SELECT @ngayBan = OrderDate WHERE OrderNbr = @maDonHang WHERE OrderNbr = @maDonHang AND InvtID = @maHang SET @chietKhau = dbo.fncTinhChietKhau(@giaBan, @ngayBan) IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'’) AND parent_object_id = OBJECT_ID(N'’)) ALTER TABLE WITH CHECK ADD CONSTRAINT ) REFERENCES (... FOREIGN KEY(.) IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'’) AND parent_object_id = OBJECT_ID(N'’)) ALTER TABLE WITH CHECK ADD CONSTRAINT ) REFERENCES ([InvtID]) Câu 1:

    Hiển thị danh sách nhân viên bán hàng gồm:

    Chú ý: viết user-function để nhận biết nhân viên và khách hàng.

    Câu 2:

    Viết Store-procedure hiển thị danh sách nhân viên bán hàng cùng doanh số bán hàng trong năm 2010, trường hợp có doanh số <=100 triệu thì hiển thị “Ko đạt yêu cầu doanh số”, ngược lại hiển thị “Đạt yêu cầu doanh số”.

    Chú ý: sử dụng cursor.

    Câu 3:

    Viết user-function để tính toán chiết khấu cho mã hàng trong tất cả các đơn hàng trong năm 2010, mã hàng được truyền vào thông qua tham số của function.

    Cụ thể như sau:

    Chú ý: giá trị chiết khấu sau khi tính toán được update vào trường User3 trong table xswSlsOrdDet. Sử dụng transaction.

    –Them Column User3 vao table xswSlsOrdDet

    — Bắt đầu cập nhật BEGIN TRAN

    Câu 4:

    Viết store-procedure liệt kê 10 mặt hàng có doanh số cao nhất trong khoảng thời gian từ 01-Jan-2010 đến hết 31-Mar-2010.

    Câu 5:

    Viết store-procedure hiển thị danh sách những khách hàng có số lần mua hàng trong từng tháng bằng với giá trị truyền vào thông qua tham số của store-procedure trong khoảng thời gian từ ngày đến ngày cũng được truyền vào qua tham số của store-procedure.

    --- Bài cũ hơn ---

  • Transistor Trường Fet, Nguyễn Hoàng Hiệp
  • Bài Tập Cấu Trúc Dữ Liệu Và Giải Thuật Tổng Hợp
  • Hơn 100 Bài Tập Python Có Lời Giải (Code Mẫu)
  • Giải Thuật Và Lập Trình: §6. Cây (Tree)
  • Bài Tập Diode Có Lời Giải Bai Tap Diode 2 Doc
  • Bài Tập Tổng Hợp Sql Kèm Đáp Án

    --- Bài mới hơn ---

  • Một Số Bài Tập Mẫu Sql(Phân I)
  • Pp Mới Giải Một Lớp Bài Tập Khó Vê Giới Hạn Trong Ct Thpt
  • Luyện Tập Giới Hạn Hàm Số
  • Chuyên Đề Giới Hạn Của Dãy Số Và Hàm Số
  • Giải Bài Tập Về Định Giá Trái Phiếu
  • 2. 1 Cho biết danh sách các đối tác cung cấp hàng cho công ty.

    2. 2 Mã hàng, tên hàng và số lượng của các mặt hàng hiện có trong công ty.

    2. 3 Họ tên và điạ chỉ và năm bắt đầu làm việc của các nhân viên trong công ty.

    2. 4 địa chỉ và điện thoại của nhà cung cấp có tên giao dch VINAMILK là gì?

    2. 5 Cho biết mã và tên của các mặt hàng có giá lớn hơn 100000 và số lượng có ít hn

    2. 6 Cho biết mỗi mặt hàng trong công ty do ai cung cấp.

    2. 7 Công ty Vit Tin đã cung cp nhng mt hàng nào?

    2. 8 Loại hàng thực phẩm do những công ty nào cung cấp và địa chỉ của các công ty đó

    2. 9 Những khách hàng nào (tên giao dịch) đã đặt mua mặt hàng Sữa hộp XYZ của

    2. 10 đơn đặt hàng số 1 do ai đặt và do nhân viên nào lập, thi gian và địa điểm giao

    hàng là ở đâu?

    khachhang.dienthoai = nhacungcap.dienthoai, chúng tôi = nhacungcap.fax, khachhang.email = nhacungcap.email FROM nhacungcap WHERE khachhang.tencongty = nhacungcap.tencongty AND khachhang.tengiaodich = nhacungcap.tengiaodich 2.37 UPDATE nhanvien SET luongcoban=luongcoban*1.5 WHERE manhanvien = (SELECT manhanvien FROM dondathang INNER JOIN chitietdathang ON dondathang.sohoadon=chitietdathang.sohoadon WHERE manhanvien=nhanvien.manhanvien GROUP BY manhanvien 2.38 UPDATE nhanvien SET phucap=luongcoban/2 WHERE manhanvien IN (SELECT manhanvien FROM dondathang INNER JOIN chitietdathang ON dondathang.sohoadon=chitietdathang.sohoadon GROUP BY manhanvien (SELECT SUM(soluong) FROM dondathang INNER JOIN chitietdathang ON dondathang.sohoadon=chitietdathang.sohoadon GROUP BY manhanvien)) 2.39 UPDATE nhanvien SET luongcoban=luongcoban*0.85 WHERE NOT EXISTS (SELECT manhanvien FROM dondathang WHERE manhanvien=nhanvien.manhanvien) Tổng hợp SQL - SGL - Plassma : Software Group Leader SGL By Member: htplasma, Plassma :for Vn-zoom 2.40 UPDATE dondathang SET sotien = (SELECT SUM(soluong*giaban+soluong*giaban*mucgiamgia) FROM chitietdathang WHERE sohoadon=dondathang.sohoadon GROUP BY sohoadon) 2.41 DELETE FROM nhanvien 2.42 DELETE FROM dondathang WHERE ngaydathang<'1/1/2000' 2.43 DELETE FROM loaihang WHERE NOT EXISTS (SELECT mahang FROM mathang WHERE maloaihang=loaihang.maloaihang) 2.44 DELETE FROM khachhang WHERE NOT EXISTS (SELECT sohoadon FROM dondathang WHERE makhachhang=khachhang.makhachhang) 2.45 DELETE FROM mathang WHERE soluong=0 AND NOT EXISTS (SELECT sohoadon FROM chitietdathang WHERE mahang=mathang.mahang) Bài 4 Q1: Bổ sung ràng buộc thiết lập giá trị mặc định bằng 1 cho cột SOLUONG và bằng 0 cho cột MUCGIAMGIA trong bảng CHITIETDATHANG Q2: Bổ sung cho bảng DONDATHANG ràng buộc kiểm tra ngày giao hàng và ngày chuyển hàng phải sau hoặc bằng với ngày đặt hàng. Q3 Bổ sung ràng buộc cho bảng NHANVIEN để đảm bảo rằng một nhân viên chỉ có thể làm việc trong công ty khi đủ 18 tuổi và không quá 60 tuổi. Q4 Với các bảng đã tạo được, câu lệnh: DROP TABLE nhacungcap có thể thực hiện được không? Tại sao? Q5 Cho khung nhìn được định nghĩa như sau: CREATE VIEW view_donhang AS SELECT dondathang.sohoadon,makhachhang,manhanvien, ngaydathang,ngaygiaohang,ngaychuyenhang, noigiaohang,mahang, giaban,soluong,mucgiamgia FROM dondathang INNER JOIN chitietdathang ON dondathang.sohoadon = chitietdathang.sohoadon a. Có thể thông qua khung nhìn này để bổ sung dữ liệu cho bảng DONDATHANG được không? b. Có thể thông qua khung nhìn này để bổ sung dữ liệu cho bảng Tổng hợp SQL - SGL - Plassma : Software Group Leader SGL By Member: htplasma, Plassma :for Vn-zoom CHITIETDATHANG được không? Q6 Với khung nhìn được định ngha như sau: CREATE VIEW view_donhang AS SELECT dondathang.sohoadon,makhachhang,manhanvien, ngaydathang,ngaygiaohang,ngaychuyenhang, noigiaohang,mahang, giaban*soluong as thanhtien, mucgiamgia FROM dondathang INNER JOIN chitietdathang ON dondathang.sohoadon = chitietdathang.sohoadon a. Có thể thông qua khung nhìn này để xoá hay cập nhật dữ liệu trong bảng DONDATHANG được không? b. Có thể thông qua khung nhìn này để cập nhật dữ liệu trong bảng CHITIETDATHANG được không? Lời giải Q1 ALTER TABLE chitietdathang ADD CONSTRAINT df_chitietdathang_soluong DEFAULT(1) FOR soluong, CONSTRAINT df_chitietdathang_mucgiamgia DEFAULT(0) FOR Mucgiamgia Q2 ALTER TABLE dondathang ADD CONSTRAINT chk_dondathang_ngay Q3 ALTER TABLE nhanvien ADD CONSTRAINT chk_nhanvien_ngaylamviec CHECK (datediff(yy,ngaysinh,ngaylamviec) BETWEEN 18 AND 60) Q4 Câu lệnh không thực hiện được do bảng cần xoá đang được tham chiếu bởi bảng MATHANG Q5 a. Không. b. Không Q6 a.Có thể cập nhật nhưng không thể xoá b. Có thể được Bài Dụa trên cơ sở dữ liệu bài tập chương 2, thực hiện các yêu cầu sau: 5.1 Tạo thủ tục lưu trữ để thông qua thủ tục này có thể bổ sung thêm một bản ghi mới cho bảng MATHANG (thủ tục phải thực hiện kiểm tra tính hợp lệ cửa dữ liệu cần bổ sung: không trùng khoá chính và đảm bảo toàn vẹn tham chiếu) 5.2 Tạo thủ tục lưu trữ có chức năng thống kê tổng số lượng hàng bán được của một mặt hàng có mã bất kỳ (mã mặt hàng cần thống kê là tham số Tổng hợp SQL - SGL - Plassma : Software Group Leader SGL By Member: htplasma, Plassma :for Vn-zoom Của thủ tục). 5.3 Viết hàm trả về một bảng trong đó cho biết tổng số lượng hàng bán của mỗi mặt hàng. Sử dụng hàm này thống kê xem tổng số lượng hàng (hiện có và đã bán) của mỗi mặt hàng là bao nhiêu. 5.4 Viết trigger cho bảng CHITIETDATHANG theo yêu cầu sau: · Khi một bản ghi mới được bổ sung vào bảng này thì giảm số lượng hàng hiện có nếu số lượng hàng hiện có lớn hơn hoặc bằng số lượng hàng được bán ra. Ngược lại thì huỷ bỏ thao tác bổ sung. · Khi cập nhật lại số lượng hàng đươc bán, kiểm tra số lượng hàng được cập nhật lại có phù hợp hay không (số lượng hàng bán ra không Được vượt quá số lượng hàng hiện có và không được nhỏ hơn 1). Nếu dữ liệu hợp lệ thì giảm (hoặc tăng) số lượng hàng hiện có trong công ty, ngượ lại thì huỷ bỏ thao tác cập nhật. 5.5 Viết trigger cho bảng CHITIETDATHANG sao cho chỉ chấp nhận giá hàng bán ra phải nhỏ hơn hoặc bằng giá gốc (giá của mặt hàng trong bảng MATHANG) 5.6 quản lý các bản tin trong một Website, người ta sử dụng hai bảng sau: Bảng LOAIBANTIN (loại bản tin) CREATE TABLE loaibantin ( maphanloai INT NOT NULL PRIMARY KEY, tenphanloai NVARCHAR(100) NOT NULL , bantinmoinhat INT DEFAULT(0) ) Bng BANTIN (bn tin) CREATE TABLE bantin ( maso INT NOT NULL PRIMARY KEY, ngayduatin DATETIME NULL , tieude NVARCHAR(200) NULL , noidung NTEXT NULL , maphanloai INT NULL FOREIGN KEY REFERENCES loaibantin(maphanloai) ) Trong bng LOAIBANTIN, giá trị cột BANTINMOINHAT cho biết mã số của bản tin thuộc loại tương ứng mới nhất (dược bổ sung sau cùng). Hãy viết các trigger cho bảng BANTIN sao cho: · Khi một bản tin mới được bổ sung, cập nhật lại cột BANTINMOINHAT Của dòng tương ứng với loại bản tin vừa bổ sung. · Khi một bản tin bị xoá, cập nhật lại giá trị của cột BANTINMOINHAT trong bảng LOAIBANTIN của dòng ứng với loại bản tin vừa xóa là mã số của bản tin trước đó (dựa vào ngày đưa tin). Nếu không còn bản tin nào cùng loại thì giá trị của cột này bằng 0. Tổng hợp SQL - SGL - Plassma : Software Group Leader SGL By Member: htplasma, Plassma :for Vn-zoom · Khi cập nhật lại mã số của một bản tin và nếu nó là bản tin mới nhất thì cập nhật lại giá trị cột BANTINMOINHAT là mã số mới. Lời giải 5.1 CREATE PROCEDURE sp_insert_mathang( @mahang NVARCHAR(10), @tenhang NVARCHAR(50), @macongty NVARCHAR(10) = NULL, @maloaihang INT = NULL, @soluong INT = 0, @donvitinh NVARCHAR(20) = NULL, @giahang money = 0) AS IF NOT EXISTS(SELECT mahang FROM mathang WHERE [email protected]) IF (@macongty IS NULL OR EXISTS(SELECT macongty FROM nhacungcap WHERE [email protected])) AND (@maloaihang IS NULL OR EXISTS(SELECT maloaihang FROM loaihang WHERE [email protected])) INSERT INTO mathang VALUES(@mahang,@tenhang, @macongty,@maloaihang, @soluong,@donvitinh,@giahang) 5.2 CREATE PROCEDURE sp_thongkebanhang(@mahang NVARCHAR(10)) AS SELECT mathang.mahang,tenhang, SUM(chitietdathang.soluong) AS tongsoluong FROM mathang LEFT OUTER JOIN chitietdathang ON mathang.mahang=chitietdathang.mahang WHERE [email protected] GROUP BY mathang.mahang,tenhang 5.3 nh ngha hàm: CREATE FUNCTION func_banhang() RETURNS TABLE AS RETURN (SELECT mathang.mahang,tenhang, CASE WHEN sum(chitietdathang.soluong) IS NULL THEN 0 ELSE sum(chitietdathang.soluong) END AS tongsl Tổng hợp SQL - SGL - Plassma : Software Group Leader SGL By Member: htplasma, Plassma :for Vn-zoom FROM mathang LEFT OUTER JOIN chitietdathang ON mathang.mahang = chitietdathang.mahang GROUP BY mathang.mahang,tenhang) S dng hàm ã nh ngha: SELECT a.mahang,a.tenhang,soluong+tongsl FROM mathang AS a INNER JOIN dbo.func_banhang() AS b ON a.mahang=b.mahang 5.4 CREATE TRIGGER trg_chitietdathang_insert ON chitietdathang FOR INSERT AS BEGIN DECLARE @mahang NVARCHAR(100) DECLARE @soluongban INT DECLARE @soluongcon INT SELECT @mahang=mahang,@soluongban=soluong FROM inserted SELECT @soluongcon=soluong FROM mathang WHERE [email protected] UPDATE mathang SET [email protected] WHERE [email protected] ELSE ROLLBACK TRANSACTION END CREATE TRIGGER trg_chitietdathang_update_soluong ON chitietdathang FOR UPDATE AS IF UPDATE(soluong) BEGIN IF EXISTS(SELECT sohoadon FROM inserted WHERE soluong<0) ROLLBACK TRANSACTION ELSE BEGIN UPDATE mathang SET soluong=soluong- (SELECT SUM(inserted.soluong-deleted.soluong) FROM inserted INNER JOIN deleted ON inserted.sohoadon=deleted.sohoadon AND inserted.mahang=deleted.mahang WHERE inserted.mahang=mathang.mahang GROUP BY inserted.mahang) WHERE mahang IN (SELECT DISTINCT mahang Tổng hợp SQL - SGL - Plassma : Software Group Leader SGL By Member: htplasma, Plassma :for Vn-zoom FROM inserted) IF EXISTS(SELECT mahang FROM mathang WHERE soluong<0) ROLLBACK TRANSACTION END END 5.5 CREATE TRIGGER trg_chitietdathang_giaban ON chitietdathang FOR INSERT,UPDATE AS IF UPDATE(giaban) IF EXISTS(SELECT inserted.mahang FROM mathang INNER JOIN inserted ON mathang.mahang=inserted.mahang ROLLBACK TRANSACTION Tổng hợp SQL - SGL - Plassma :

    --- Bài cũ hơn ---

  • 25 Ví Dụ Về Ôn Tập Sql Quản Lý Sinh Viên
  • Bài Tập Sql Giải Đề Thi Tuyển Lập Trình Viên Của Fpt Fsoft
  • Tổng Hợp 10 Bài Tập Truy Vấn Sql Có Lời Giải Hay Cho Học Sinh
  • Bài Tập Sql Cơ Bản
  • Bai Tap Va Loi Giai Sql
  • Tài Liệu Bài Tập Về Diode Có Lời Giải, Bài Tập Diode Có Lời Giải

    --- Bài mới hơn ---

  • Des Là Gì? Code Ví Dụ Des Bằng Java
  • Hệ Mật Mã Khối Và Các Thuật Toán Mã Hóa Khối Kinh Điển: Des
  • Bài Tập Toán Lớp 2 Cơ Bản Và Nâng Cao Cho Bé
  • Đáp Án Bài Tập Csdl
  • Giới Hạn Của Hàm Hai Biến Số
  • Đang xem: Bài tập về diode có lời giải

    Share Like Download …

    3 Comments 33 Likes Statistics Notes

    12 hours ago   Delete Reply Block

    250 bai tap_kt_dien_tu_0295

    --- Bài cũ hơn ---

  • Bảo Hiểm Là Gì? Các Thuật Ngữ Cơ Bản Nhất Trong Bảo Hiểm Bạn Nên Biết
  • Đề Cương Ôn Tập Bảo Hiểm Xã Hội Có Đáp Án
  • Bài Tập Định Khoản Kế Toán Tiền Lương Có Lời Giải
  • 3 Mẫu Bài Tập Nghiệp Vụ Kế Toán Tiền Lương Có Lời Giải Đáp Án
  • Mức Hưởng Hàng Tháng 2022
  • Bài Tập Diode Có Lời Giải

    --- Bài mới hơn ---

  • Bài Tập Diode Có Lời Giải Bai Tap Diode 2 Doc
  • Giải Thuật Và Lập Trình: §6. Cây (Tree)
  • Hơn 100 Bài Tập Python Có Lời Giải (Code Mẫu)
  • Bài Tập Cấu Trúc Dữ Liệu Và Giải Thuật Tổng Hợp
  • Transistor Trường Fet, Nguyễn Hoàng Hiệp
  • TÓM TẮT LÝ THUYẾT VÀ BÀI TẬP PHẦN DIODE

    MÔN KỸ THUẬT ĐIỆN TỬ

    Quan hệ giữa dòng điện và điện áp

    với: IS: dòng điện (ngược) bão hòa

    VT: điện thế nhiệt

    η: hệ số thực tế, có giá trị từ 1 đến 2

    Hình 1-1 Đặc tuyến diode phân cực thuận

    Điện trở AC (điện trở động)

    Ngoài rD, còn tồn tại điện trở tiếp xúc (bulk) rB,thường có trị số rất nhỏ và được bỏ qua.

    Điện trở DC

    Phân tích mạch DC có diode

    Ta có thể thay thế diode trong mạch bởi một nguồn áp 0,7V (nếu là diode Si) hoặc 0,3V (nếu là diode Ge) bất cứ khi nào mà diode có dòng phân cực thuận phía trên điểm knee.

    Hình 1-2 Diode phân cực thuận (a) có thể thay thế bởi một nguồn áp (b)

    Vì vậy, để phân tích điện áp và dòng diện DC trong mạch có chứa diode, ta có thể thay thế đặc tuyến V-A như hình 1-3.

    Hình 1-3 Đặc tuyến lý tưởng hóa

    Ví dụ 1-1

    Giả sử rằng diode Si trên hình 1-4 đòi hỏi dòng tối thiểu là 1 mA để nằm trên điểm knee.

    Hình 1-4 (Ví dụ 1-1)

    1. Trị số R là bao nhiêu để dòng trong mạch là 5 mA?

    2. Với trị số R tính ở câu (1), giá trị tối thiểu của E là bao nhiêu để duy trì diode ở trên điểm knee?

    Giải

    1. Trị số của R

    2. Giá trị tối thiểu của E

    Phân tích mạch diode với tín hiệu nhỏ

    Một cách tổng quát, các linh kiện thể xem xét hoạt động ở hai dạng: tín hiệu nhỏ vá tín hiệu lớn. Trong các ứng dụng tín hiệu nhỏ, điện áp và dòng điện trên linh kiện một tầm rất giới hạn trên đặc tuyến V-A. Nói cách khác, đại lượng ΔV và ΔI rất nhỏ so với tầm điện áp và dòng điện mà linh kiện hoạt động.

    Ví dụ 1-2

    Giả sử rằng diode Si trên hình 1-5 được phân cực phía trên điểm knee và có rB là 0,1Ω, hãy xác định dòng điện và điện áp trên diode. Vẽ đồ thị dòng điện theo thời gian.

    Hình 1-5 (Ví dụ 1-2)

    Giải

    Ngắn mạch nguồn AC, xác định dòng DC:

    Do đó, điện trở AC là

    Dòng điện AC là

    Điện áp AC là

    Như vậy dòng và áp tổng cộng là

    Đồ thị dòng điện theo thời gian được cho ở hình 3-8

    Hình 1-6 Thành phần AC thay đổi ±7,37 mA xung quanh thành phần DC 19,63mA

    Đường tải (load line)

    Ta có thể thực hiện việc phân tích diode với tín hiệu nhỏ bằng cách sử dụng hình vẽ với đặc tuyến V-A của diode.

    Xét mạch cho ở hình 1-7. Đây chính là mạch tương đương về DC của mạch đã cho ở hình 1-5 (ngắn mạch nguồn áp). Ta xem điện áp trên diode là V (chứ không là hằng số).

    Hình 1-7 Dòng điện qua diode I và điệp áp trên diode V

    Theo định luật áp Kirchhoff, ta có

    Do đó, quan hệ giữa dòng và áp DC trên diode cho bởi phương trình

    Thay số vào, ta có

    Phương trình này có dạng y=ax+b và đồ thị của nó là một đường thẳng có độ dốc (slope) là -1/R và cắt trục I tại điểm E/R (và cắt trục V tại điểm Vo=E). Đường thẳng này được gọi là đường tải DC (DC Load Line).

    Đường tải DC của mạch cho ở hình 1-7 được vẽ trên hình 1-8. Đường tải này biểu diễn tất cả các tổ hợp có thể có của dòng điện qua diode I và điệp áp trên diode V với trị số E và R xác định. Giá trị hiện thời của I và V tùy thuộc vào diode được sử dụng trong mạch.

    Hình 1-8 Đường tải DC

    Đặc tính của đường tải DC là mọi tổ hợp có thể có của dòng điện I và điện áp V của mạch ở hình 1-7 là một điểm nằm tại một nơi nào đó trên đường thẳng. Cho trước một diode cụ thể (mà ta đã biết đặc tuyến V-A của nó), mục tiêu của ta là xác định tổ hợp dòng-áp hiện thời. Ta có thể tìm được điểm này bằng cách vẽ đường tải DC trên cùng hệ trục tọa độ của đặc tuyến Vôn-Ampe, giao điểm

    --- Bài cũ hơn ---

  • Bài Tập Hạch Toán Tiền Lương Có Lời Giải
  • Download Bai Tap Co Loi Giai Mon Ky Thuat So
  • Bài Tập Hiệu Điện Thế
  • Bài Tập Bjt Có Đáp Số
  • Bài Tập Tự Luận Arbitrage Quốc Tế Và Ngang Giá Lãi Suất (Có Đáp Án Tham Khảo)
  • Web hay
  • Links hay
  • Push
  • Chủ đề top 10
  • Chủ đề top 20
  • Chủ đề top 30
  • Chủ đề top 40
  • Chủ đề top 50
  • Chủ đề top 60
  • Chủ đề top 70
  • Chủ đề top 80
  • Chủ đề top 90
  • Chủ đề top 100
  • Bài viết top 10
  • Bài viết top 20
  • Bài viết top 30
  • Bài viết top 40
  • Bài viết top 50
  • Bài viết top 60
  • Bài viết top 70
  • Bài viết top 80
  • Bài viết top 90
  • Bài viết top 100