Chúc các bạn NỮ một ngày lễ 20-10 tuyệt vời, happy...
Trang 1/2 12 CuốiCuối
Hiện kết quả từ 1 tới 20 của 24

Chủ đề: Bài tập tổng hợp SQL

  1. #1
    NIIT Student Avatar của cuongnt
    Tham gia ngày
    Dec 2008
    Bài gửi
    166

    Mặc định Bài tập tổng hợp SQL

    Đề bài :
    CSDL quan ly sinh vien
    1. Sinhvien
    MaSv PK
    TenSV
    Diachi
    SoDT
    KHoa
    LOP

    2. MOnhoc
    MaMon PK
    Tenmon
    Chuthich

    3. Diem
    Mahocki PK
    MaSV FK
    MaMon FK
    Diemlan1
    Diemlan2
    Diem ( de trong - tao mot trigger tu dong update diem cao nhat trong cac diem lan 1 va lan 2)
    DE bai
    1. Tao CSDL tren
    2. Chen du lieu cho cac bang ( >=5)
    3. Hien thi cac sinh vien den tu Ha Noi
    4. Hien thi tat cac cac sinh vien chua thi ( diem is null)
    5. Hien thi tat cac cac sinh vien thi qua mon: TOan
    6. Tao truy van xoa tat cac sv co diem lan 1, lan 2, diem <5
    7. Tao thu tuc tuc cho phep:
    a.nhap them sinhvien moi
    b. nhap diem
    c. nhap monhoc
    8. Tao thu tuc dung de hien thi
    a. Hien thi tat ca sinh vien
    b. Hien thi tat cac cac sinh vien thi qua
    c. Hien thi 2 sinh vien co diem cao nhat
    9. Tao trigger cho phep kiem tra cac thong tin khi nhap
    a. Nhap vao bang sinh vien ( tat cac truong phai nhap)
    b. Nhap vao bang Mon hoc ( tat cac truong phai nhap)
    10. Tao trigger khong cho phep update diem
    11. Tao trigger khong cho phep xoa mon hoc




    -- code demo
    usemaster
    drop
    database demo12
    go
    createdatabase demo12
    go
    use demo12
    go
    createtable diem
    (
    mahk intprimarykey,
    masv int,
    diemlan1 float,
    diemlan2 float,
    diem float
    )
    Go
    --- tao trigger cho phep chen vao diem cao nhat
    createtrigger trginsertDiem
    on Diem
    forinsert
    as
    declare
    **diemlan1 float
    declare
    **masv int
    declare
    **diemlan2 float
    select
    **diemlan1=inserted.diemlan1,
    **diemlan2=inserted.diemlan2,
    **masv=inserted.masv
    from inserted
    if(**diemlan2>**diemlan1)
    begin
    update diem
    set diem.diem=**diemlan2
    where masv=**masv
    select*from diem
    end
    else
    begin
    update diem
    set diem.diem=**diemlan1
    where masv=**masv
    select*from diem
    end
    ---- test
    insertinto Diem(mahk,diemlan1,diemlan2)
    values(1,3,3)
    ---
    insertinto Diem(mahk,masv,diemlan1,diemlan2)
    values(2,2,3,5)
    ---
    insertinto Diem(mahk,masv,diemlan1,diemlan2)
    values(3,3,7,5)
    --
    insertinto Diem(mahk,masv,diemlan1,diemlan2)
    values(4,3,7,5)
    Lần sửa cuối bởi cuongnt; 17-07-09 lúc 11:33 AM.
    Đă đọc rùi sao bạn ko cảm ơn

    ------------------------------------------
    Ai chiến thắng mà chưa từng chiến bại
    Ai lên khôn mà chưa dại một lần ?

  2. #2
    NIIT Student Avatar của cuongnt
    Tham gia ngày
    Dec 2008
    Bài gửi
    166

    Mặc định Ðề: Bài tập tổng hợp SQL

    đề bài : demo về trigger
    CREATE DATABASE TEST
    go
    Use Test
    Go
    Create table Kem
    (
    Makem int primary key,
    tenkem varchar(30),
    soluong int
    )
    Go
    create table khachhang
    (
    makh int primary key,
    tenkh varchar(30),
    diachikh varchar(30),
    soDt varchar(10)
    )
    Go
    create table hoadon
    (
    mahoadon int primary key,
    makh int foreign key references Khachhang(makh),
    makem int foreign key references Kem(makem),
    sldatmua int,
    chuthich varchar(255)
    )
    Go
    --- chen du lieu
    alter trigger trginsertKem
    on Kem
    for insert
    as
    Declare **soluong int
    select **soluong=inserted.soluong
    from inserted
    if (**soluong<0)
    begin
    print 'ban gia tri nhap sai'
    rollback transaction
    end
    else
    print 'ban da nhap thanh cong'
    G0
    insert into kem
    values(5,'kem trang tien 4',2000)
    --
    Go
    create trigger trginsertKem
    on Kem
    for insert
    as
    Declare **soluong int
    select **soluong=inserted.soluong
    from inserted
    if (**soluong<0)
    begin
    print 'ban khong the nhap so luong am'
    rollback transaction
    end
    Go
    insert into kem
    values(1,'kem dau tay',100)
    --tao trigger danh cho khach hang
    insert into khachhang
    values(1,'Dang Thuy Tram',NULL,NULL)
    Go
    SELECT * FROM KHACHHANG
    Go
    --
    create trigger trginsertKH
    on khachhang
    for insert
    as
    declare **tenkhach varchar(30)
    declare **diachi varchar(30)
    declare **sodt varchar(10)
    select **tenkhach=inserted.tenkh,
    **diachi=inserted.diachikh,
    **sodt=inserted.soDT
    From inserted
    if (**tenkhach is null) or (**diachi is null)
    or (**sodt is null)
    begin
    print 'them du lieu khong thanh cong'
    print 'ban phai nhap day du tat cac thong tin'
    rollback transaction
    end
    else
    print 'qua trinh chen dl thanh cong'
    ---
    Go
    INSERT INTO KHACHHANG
    VALUES(2,'Dang Ha Linh','Cao Nguyen Moc Chau SOn La','0983843380')
    Go
    SELECT * FROM KHACHHANG
    Go
    ---tao trigger cho bang hoa don
    CREATE TRIGGER trginserHoaDon
    On HoaDon
    For Insert
    as
    DECLARE **soluong int
    DECLARE **sldatmua int
    SELECT **soluong=kem.soluong
    FROM kem
    SELECT **sldatmua=inserted.sldatmua
    FROM Inserted
    if (**sldatmua>**soluong)
    begin
    print 'ban khong the mua so luong lon hon so luong dang co'
    rollback transaction
    end
    else
    print 'Hoa don da dc tao thanh cong'
    -- chen thu dl
    Go
    INSERT INTO HOADON
    VALUES(1,2,1,30,'mang den ngay 550 HQV')
    Go
    SELECT * FROM HOADON
    Go
    SELECT * FROM KEM
    Go
    --tao trigger ko cho phep xoa kh
    CREATE TRIGGER trgdelKhachhang
    on KhachHang
    For delete
    as
    begin
    print 'ban khong dc quyen xoa khach hang'
    rollback transaction
    end
    -- kiem tra
    Go
    SELECT * FROM KHACHHANG
    Go
    SELECT * FROM HOADON
    Go
    delete hoadon
    where mahoadon is not null
    GO
    delete khachhang
    where makh=2
    --
    Go
    SELECT * FROM KEM
    Go
    --- khong cho phep update khach hang
    create trigger trgupdatekem
    on kem
    for update
    as
    Declare **soluong int
    select **soluong=kem.soluong
    from kem
    if (**soluong >1000)
    begin
    print 'so luong toi da la 1000'
    rollback transaction
    end
    --
    Go
    update kem
    set soluong=soluong+1000
    Go
    --- sua lai trigger tao hoa don co cap nhat
    alter TRIGGER trginserHoaDon
    On HoaDon
    For Insert
    as
    DECLARE **soluong int
    DECLARE **sldatmua int
    SELECT **soluong=kem.soluong
    FROM kem
    SELECT **sldatmua=inserted.sldatmua
    FROM Inserted
    if (**sldatmua>**soluong)
    begin
    print 'ban khong the mua so luong lon hon so luong dang co'
    rollback transaction
    end
    else
    begin
    update kem
    set kem.soluong=kem.soluong-**sldatmua

    -- chi tiet hoa don
    select * from hoadon

    -- kiem tra so luong kem con lai
    select * from kem
    print 'Hoa don da dc tao thanh cong'

    end
    --kiem tra
    go
    select * from kem
    Go
    insert into hoadon
    values(4,1,1,10,'minh hoa 5')
    Đă đọc rùi sao bạn ko cảm ơn

    ------------------------------------------
    Ai chiến thắng mà chưa từng chiến bại
    Ai lên khôn mà chưa dại một lần ?

  3. #3
    NIIT Student Avatar của cuongnt
    Tham gia ngày
    Dec 2008
    Bài gửi
    166

    Mặc định Ðề: Bài tập tổng hợp SQL

    demo về Store procedure
    bang 1: SinhVien
    MaSV int PK
    HoTen varchar
    QueQuan varchar

    Bang 2: MonHoc
    Mamon int PK
    TenMon varchar
    ChuThich varchar
    Bang 3: Diem
    MaSV int FK
    Mamon int FK
    Diem float check (Diem>0)
    --- cau hoi
    1. Tao bang voi moi quan he nhu tren
    2. Nhap du lieu can thiet cho bang (5-10) ban ghi
    3. Tao store procedure de hien thi tat cac sinh vien
    4. Tao store procedure de hien thi tat cac mon hoc
    5.Tao store procedure de hien thi tat cac sinh vien den
    quequan="" . Voi que quan la mot tham so truyen vao
    6.SP Hien thi chi tiet sinh vien va diem
    7.SP hien thi cac sinh vien thi qua ( >=5)
    8. SP hien thi cac sinh vien hoc cung 1 mon hoc voi
    ten mon nhap tu ban phim
    9. SP vHien thi ten cac sinh vien dat hoc bong( diem>=8)
    10. Tao SP goi den sinh vien dat hoc bong va que quan den tu ( nhap tu ban phim)
    goi y:
    C1: tao SP voi 2 tham so truyen vao la diem va que quan
    C2: Goi SP voi mot tham truyen vao la que quan nhung
    truy van co diem >=8
    Đă đọc rùi sao bạn ko cảm ơn

    ------------------------------------------
    Ai chiến thắng mà chưa từng chiến bại
    Ai lên khôn mà chưa dại một lần ?

  4. #4
    NIIT Student Avatar của cuongnt
    Tham gia ngày
    Dec 2008
    Bài gửi
    166

    Mặc định Ðề: Bài tập tổng hợp SQL

    create database Sp1
    Go
    use Sp1
    create table Sinhvien
    (
    MaSV int primary key,
    HoTen varchar(20),
    QueQuan varchar(20)
    )
    Go
    create table Monhoc
    (
    Mamon int primary key,
    TenMon varchar(20),
    Chuthich varchar(20)
    )
    Go
    create table Diem
    (
    MaSV int foreign key references Sinhvien(MaSV),
    Mamon int foreign key references Monhoc(mamon),
    Diem int
    )
    Go
    --tao trigger cho su kien chen dl <0 >10 bao loi
    -- trong bang diem
    CREATE TRIGGER trginsertDiem
    ON Diem
    For insert
    as
    DECLARE **Diem int
    SELECT **Diem=inserted.Diem
    FROM Inserted
    IF (**Diem <0) or (**Diem >10)
    begin
    print 'Sai gia tri diem'
    Rollback transaction
    end
    else
    begin
    Print 'qua trinh chen dl thanh cong'
    end
    Go
    -- check
    INSERT INTO DIem
    VALUES (2,3,10)
    Go
    SELECT * FROM DIEM

    -- chen du lieu
    insert into Sinhvien
    values(1,'Dang Ha Linh','Son La')
    insert into Sinhvien
    values(2,'Ha Bao Chung','Phu Tho')
    insert into Sinhvien
    values(3,'Hoang Van Thai','Yen Bai')
    insert into Sinhvien
    values(4,'Do Manh Hoang','Ha Noi')
    insert into Sinhvien
    values(5,'Cao Quyet Chi','Hoa Binh')
    insert into Sinhvien
    values(6,'Cao Quyet Chi','Dalak')
    --- chen bang monhoc
    insert into Monhoc
    Values(1,'SQL','quarter 2')
    insert into Monhoc
    Values(2,'C#','quarter 3')
    insert into Monhoc
    Values(3,'Officer','quarter 1')
    --- chen vao bang diem
    insert into Diem
    values(1,1,7)
    insert into Diem
    values(1,2,6)
    insert into Diem
    values(1,3,4)
    insert into Diem
    values(2,1,6)
    insert into Diem
    values(2,2,9)
    insert into Diem
    values(3,1,7)
    insert into Diem
    values(3,3,6)
    ---- gia sp tao hien thi tat sinh vien
    create procedure HienThiSV
    as
    select * from Sinhvien
    --- hien thi
    execute HienThiSV
    exec HienthiSV
    HienThiSV
    --- hien thi theo que quan
    create proc Timkiem_quequan **quequan varchar(20)
    as
    SELECT * FROM Sinhvien
    where quequan=**quequan
    ---
    Timkiem_quequan 'Yen Bai'
    Timkiem_quequan 'Hoa Binh'
    Timkiem_quequan Dalak
    -- sua tim kiem de khong nhap vao du lieu van chay
    alter proc Timkiem_quequan **quequan varchar(20)=NULL
    as
    begin
    if **quequan is null
    begin
    print 'bat buoc phai nhap tham so que quan'
    return
    end
    print 'danh sach sv thoa man la'
    SELECT * FROM Sinhvien
    where quequan=**quequan
    end
    -- chay thu
    alter procedure timkiem2 **quequan varchar(20)
    as
    SELECT Hoten,Quequan,Diem
    FRom Sinhvien JOin DIem
    on SInhvien.masv=diem.masv
    Where Diem.masv=
    (select masv
    from sinhvien
    where quequan=**quequan)
    -- tao thu tuc goi den ca 2 ham tren
    Create proc prcgoica2 **quequan varchar(20)
    as
    begin
    exec timkiem_quequan **quequan
    exec timkiem2 **quequan
    end
    -- thuc thi ca 2 ham cung luc
    prcgoica2 'Son La'
    --Verify
    sp_helptext prcListContractRecruiter
    DECLARE **ReturnValue int
    EXEC **ReturnValue = prcPrintRecruitmentAgencyList 'Alexandria'
    SELECT **ReturnValue
    ----- cau 6 hien thi chi tiet sinh vien va diem
    create proc hienthisv_diem
    as
    SELECT SInhvien.masv,hoten,quequan,mamon,diem
    from sinhvien join diem
    on Sinhvien.masv=diem.masv
    --- cau 7
    create proc sv_pass
    as
    SELECT SInhvien.masv,hoten,quequan,mamon,diem
    from sinhvien join diem
    on Sinhvien.masv=diem.masv
    where diem>=5
    --- cau 8
    Đă đọc rùi sao bạn ko cảm ơn

    ------------------------------------------
    Ai chiến thắng mà chưa từng chiến bại
    Ai lên khôn mà chưa dại một lần ?

  5. #5
    NIIT Student Avatar của chunghb
    Tham gia ngày
    Feb 2009
    Đến từ
    1 chỗ nào đó...
    Bài gửi
    13

    Mặc định Đề: Bài tập tổng hợp SQL

    thưa thầy,em chạy câu lệnh thấy có chút vấn đề báo ở phần trginsertKem trong bài 'demo về trigger'
    có phải thầy nhầm câu lệnh 'creat' với 'alter' ko ạ??
    v́ em thấy thầy chưa tạo trigger mà đă có alter :U
    Lần sửa cuối bởi chunghb; 18-07-09 lúc 04:56 PM. Lư do: hehe nhầm chút,nhà hỏng bàn phím phải dùng phím ảo nên viết nhầm :P

  6. #6
    Moderators Avatar của blackpanther
    Tham gia ngày
    Nov 2008
    Đến từ
    Học Viện iNET
    Bài gửi
    656

    Mặc định Đề: Bài tập tổng hợp SQL

    Sai rồi, câu lệnh CREATE Chứ không phải là INSERT.
    CREATE trigger trginsertKem
    on Kem
    for insert
    as
    Declare **soluong int
    select **soluong=inserted.soluong
    from inserted
    if (**soluong<0)
    begin
    print 'ban gia tri nhap sai'
    rollback transaction
    end
    else
    print 'ban da nhap thanh cong'
    GO
    insert into kem values(5,'kem trang tien 4',2000)
    Luôn luôn lắng nghe:015:, lâu lâu mới hiểu :015:

    Hăy Thanks nếu bạn thấy bài viết có ích, xin vui ḷng không repply lại để spam.

  7. #7
    Moderators Avatar của blackpanther
    Tham gia ngày
    Nov 2008
    Đến từ
    Học Viện iNET
    Bài gửi
    656

    Mặc định Đề: Bài tập tổng hợp SQL

    --- tao trigger cho phep chen vao diem cao nhat
    createtrigger trginsertDiem
    on Diem
    forinsert
    as
    declare **diemlan1 float
    declare **masv int
    declare **diemlan2 float
    select **diemlan1=inserted.diemlan1,
    **diemlan2=inserted.diemlan2,
    **masv=inserted.masv
    from inserted
    if(**diemlan2>**diemlan1)
    begin
    update diem
    set diem.diem=**diemlan2
    where masv=**masv
    end
    else
    begin
    update diem
    set diem.diem=**diemlan1
    where masv=**masv
    end
    Đoạn code trigger trên khi chèn dữ liệu cho hai MaSV giống nhau th́ vẫn chèn vào được, nhưng khi mở ra xem dữ liệu th́ các bạn sẽ thấy một lỗi là có sinh viên nào thi có mặt hai lần trong bảng điểm th́ sẽ lấy vào trường diem kết quả của một lần thi, và giá trị của các trường khác cũng không đúng.Các bạn test thử xem.
    Và đây là kết quả ḿnh test.
    Chèn dữ liệu
    INSERT INTO Diem VALUES (1,1, 1, 7, 8, NULL )
    INSERT INTO Diem VALUES (2,2, 2, 9, 8, NULL )
    INSERT INTO Diem VALUES (3,3, 1, 5, 8, NULL )
    INSERT INTO Diem VALUES (5,4, 3, 7, 8, NULL )
    INSERT INTO Diem VALUES (6,5, 3, 7, 10, NULL )
    INSERT INTO Diem VALUES (7,5, 2, NULL, NULL, NULL )
    Kết quả:

    Các bạn thử nghĩ xem cách khắc phục lỗi này nhé, ḿnh đă t́m rồi, các cậu thử xem.
    Luôn luôn lắng nghe:015:, lâu lâu mới hiểu :015:

    Hăy Thanks nếu bạn thấy bài viết có ích, xin vui ḷng không repply lại để spam.

  8. #8
    NIIT Student Avatar của cuongnt
    Tham gia ngày
    Dec 2008
    Bài gửi
    166

    Mặc định Đề: Bài tập tổng hợp SQL

    usemaster
    Go
    dropdatabase Halinh
    Go
    createdatabase HaLinh
    Go
    use HaLinh
    Go
    --- C1 -tao bang
    createtable Sinhvien
    (
    Masv intprimarykey,
    tensv varchar(20),
    Dichi varchar(50),
    SoDT varchar(10),
    Khoa varchar(20),
    Lop varchar(10)
    )

    Go
    createtable Monhoc
    (
    Mamon intprimarykey,
    Tenmon varchar(20),
    chuthich varchar(255)
    )
    Go
    Createtable Diem
    (
    masv intforeignkeyreferences Sinhvien(masv),
    Mamon intforeignkeyreferences Monhoc(mamon),
    Mahk intcheck(mahk between 1 and 14),
    Diemlan1 float,
    diemlan2 float,
    diem float
    )
    Go
    --- nhap du lieu cho cac bang
    --- 9 a - tao trigger de tat cac truong trong bang sv phai nhap
    createtrigger trginsertSinhvien
    on Sinhvien
    forinsert
    as
    -- khai bao 5 bien luu tru
    Declare **tensv varchar(20)
    Declare **diachi varchar(50)
    Declare **soDT varchar(10)
    Declare **Khoa varchar(20)
    Declare **lop varchar(10)
    -- lay du lieu ra cac bien tu bang inserterd
    select **tensv=inserted.tensv,
    **diachi=inserted.dichi,
    **soDT=inserted.soDT,
    **khoa=inserted.khoa,
    **lop=inserted.lop
    From inserted
    if((**tensv isnull)or(**diachi isnull)
    or(**soDT isnull)or(**khoa isnull)or(**lop isnull))
    begin
    print'Ban phai day du cac thong'
    print'qua trinh them dl khong thanh cong'
    rollbacktransaction
    end
    else
    begin
    print'ban da them du lieu tc'
    -- kiem tra
    select*from sinhvien
    end
    Go
    -- tao trigger cho bang mon hoc de bat buoc phai nhap het cac thong tin trong bang
    createtrigger trgInsertMonhoc
    on Monhoc
    forinsert
    as
    --Khai bao bien
    declare **TenMon varchar(20)
    declare **chuthich varchar(255)
    --Lay du lieu tu bang inserted
    select **TenMon=inserted.TenMon,
    **Chuthich=inserted.Chuthich
    from inserted
    if((**TenMon isnull)or(**Chuthich isnull))
    begin
    print'Phai nhap day du cac thong tin'
    print'Nhap du lieu khong thanh cong'
    rollbacktransaction
    end
    else
    begin
    print'Nhap du lieu thanh cong'
    ---Kiem tra
    select*from Monhoc
    end
    Go
    --- chen du lieu
    insertinto sinhvien
    values(1,'Nguyen Van Hoa','Lang Son','090990999','2','NSE08101')
    insertinto sinhvien
    values(2,'Le Thanh Hai','Bim Son - Thanh Hoa','090990999','2','NSE08101')
    insertinto sinhvien
    values(3,'Nguyen Khanh Tra','Son La','090990889','2','NSE08101')
    insertinto sinhvien
    values(4,'Nguyen Ngoc Hai','Quang Binh','0909909879','2','NSE08101')
    insertinto sinhvien
    values(5,'Hoang Van Thai','Yen Bai','099999999','2','NSE08101')
    -- chen dl cho bang mon hoc
    Go
    insertinto Monhoc
    values(1,'Toan','Dai Cuong ki 1')
    insertinto Monhoc
    values(2,'Ly','Dai Cuong ki 1')
    insertinto Monhoc
    values(3,'Hoa','Dai Cuong ki 1')
    insertinto Monhoc
    values(4,'Lap trinh1','Dai Cuong ki 2')
    insertinto Monhoc
    values(5,'SQL','Dai Cuong ki 3')
    Go
    -- tao trigger update diem
    createtrigger trginsertDiem
    on Diem
    forinsert
    as
    begin
    declare **diemlan1 float
    declare **diemlan2 float
    declare **masv int
    declare **mamon int
    -- lay dl
    select **masv=inserted.masv,
    **mamon=inserted.mamon,
    **diemlan1=inserted.diemlan1,
    **diemlan2=inserted.diemlan2
    from inserted
    -- kiem tra
    if(**diemlan1>**diemlan2)
    begin
    update diem
    set diem=**diemlan1
    where diem.masv=**masv and diem.mamon=**mamon
    -----kiem tra
    select*from diem
    end
    else
    begin
    update diem
    set diem=**diemlan2
    where diem.masv=**masv and diem.mamon=**mamon
    -----kiem tra
    select*from diem
    end
    end
    --- chen dl cho bang diem
    Go
    insertinto Diem(masv,mamon,mahk,diemlan1,diemlan2)
    values(1,1,1,5,7)
    insertinto Diem(masv,mamon,mahk,diemlan1,diemlan2)
    values(1,2,1,8,5)
    insertinto Diem(masv,mamon,mahk,diemlan1,diemlan2)
    values(2,1,2,6,6)
    insertinto Diem(masv,mamon,mahk,diemlan1,diemlan2)
    values(2,3,1,5,9)
    insertinto Diem(masv,mamon,mahk,diemlan1,diemlan2)
    values(3,1,1,5,7)
    insertinto Diem(masv,mamon,mahk,diemlan1,diemlan2)
    values(3,1,2,6,7)
    insertinto Diem(masv,mamon,mahk,diemlan1,diemlan2)
    values(4,1,2,NULL,NUll)
    Go
    -- thuc hien cac cau truy van
    -- 3. hien thi tat cac sinh vien den tu Quang Binh
    select*from sinhvien
    where dichi='Quang Binh'
    --4 Hien thi tat cac sinh vien chua thi
    select SinhVien.masv,tensv,diemlan1,diemlan2,diem
    FROM SinhVien JOIN Diem
    on SinhVien.Masv=Diem.Masv
    Where(Diem isnull)
    ---5 hien thi tat ca cac sinh vien thi qua mon toan
    select*from sinhvien
    where masv in(
    selectdistinct masv from Diem
    where Diem>=5 and
    mamon in(
    select mamon from monhoc
    where tenmon='Toan')
    )
    Go
    -- 6 tao cac truy van xoa tat cac sv co diem thi <5
    --bo qua
    -- 7a. tao thu tuc cho phep nhap them mon moi
    createprocedure prcThemMonhoc
    **mamon int,
    **Tenmon varchar(20),
    **chuthich varchar(255)
    as
    begin
    Insertinto Monhoc
    values(**mamon,**tenmon,**chuthich)
    -- kiem tra
    select*from monhoc
    end
    Go
    --- kiem tra
    prcThemMonhoc 6 ,'Nghi giai lao','de hoc ca 2'
    Đă đọc rùi sao bạn ko cảm ơn

    ------------------------------------------
    Ai chiến thắng mà chưa từng chiến bại
    Ai lên khôn mà chưa dại một lần ?

  9. #9
    NIIT Student Avatar của cuongnt
    Tham gia ngày
    Dec 2008
    Bài gửi
    166

    Mặc định Ðề: Bài tập tổng hợp SQL

    USEMASTER
    GO
    DROPDATABASE MINHHOA1
    GO
    CREATEDATABASE MINHHOA1
    GO
    USE MINHHOA1
    GO
    CREATEFUNCTION XEPLICH(**NGAY INT)
    RETURNSVARCHAR(20)
    AS
    BEGIN
    DECLARE **XEPLICH VARCHAR(20)
    SELECT **XEPLICH=CASE **NGAY
    WHEN 2 THEN'THU 2'
    WHEN 3 THEN'THU 3'
    WHEN 4 THEN'THU 4'
    WHEN 5 THEN'THU 5'
    WHEN 6 THEN'THU 6'
    WHEN 7 THEN'THU 7'
    WHEN 8 THEN'CHU NHAT'
    ELSE
    'KHONG DUNG'
    end
    RETURN **XEPLICH
    END
    go
    --- ap dung vao bang
    createtable tuan
    (
    ngay int,
    thu as(dbo.XEPLICH(ngay))
    )
    --
    Go
    -- tao ham demo chen ngay
    alterprocedure taongay
    **ngay
    int
    as
    begin
    insertinto tuan(ngay)
    values(**ngay)
    --kiem
    select*from tuan
    end
    --
    Go
    taongay 2
    --
    insertinto tuan
    values(3)
    Đă đọc rùi sao bạn ko cảm ơn

    ------------------------------------------
    Ai chiến thắng mà chưa từng chiến bại
    Ai lên khôn mà chưa dại một lần ?

  10. #10
    NIIT Student Avatar của cuongnt
    Tham gia ngày
    Dec 2008
    Bài gửi
    166

    Mặc định Ðề: Bài tập tổng hợp SQL

    chen database hàng loat ( demo) dùng hàm
    declare **test int
    select
    **test=1
    while(**test<100)
    begin
    exec taongay **test
    select **test=**test+1
    end
    Đă đọc rùi sao bạn ko cảm ơn

    ------------------------------------------
    Ai chiến thắng mà chưa từng chiến bại
    Ai lên khôn mà chưa dại một lần ?

  11. #11
    NIIT Student Avatar của khanhkt72
    Tham gia ngày
    May 2009
    Đến từ
    Thống lĩnh của các trùm thống lĩnh!
    Bài gửi
    51

    Post Đề: Bài tập tổng hợp SQL

    Đây là một đề thi cuối khóa tại một trường ĐH, mọi người cùng tham khảo. Đề không được mang về nhưng do ai cũng học xong MCSA nên việc tuồng đề và CSDL ra ngoài là một vấn đề không khó đối với họ :009::B

    Database: Download
    Đề thi: Download (Office 2k7 sr v́ nhầm nên Save thành .docx) :D

    Đề up lại:B
    Câu 1: Tạo View hoặc SP thực hiện các yêu cầu sau:
    a.Cho biết (MaVT, TENVT) của các Vật tư chưa từng được bán.
    Tên: VT_chua_duoc_ban
    b.Liệt kê số lượng tồn của các Vật tư. Kết quả:
    MaVT TENVT TONGNHAP TONGXUAT SLTON
    Tên: Thongketonkho
    Câu 2: Viết các View sau:
    a.Liệt kê danh sách các user của CSDL QLVT
    b.Liệt kê danh sách các roles cảu CSDL QLVT
    c.Liệt kê danh sách user là thành viên của role trong CSDL QLVT
    Kết suất: USERNAME ROLENAME
    Câu 3: Tạo Trigger kiểm tra việc xóa 1 Nhân viên trong Table NHANVIEN phải đảm bảo tính toàn vẹn dữ liệu trong CSDL. Nếu Nhân viên muốn xóa có Mă số c̣n trong Table PHATSINH th́ in câu thông báo lỗi: “Khong the xoa Nhan vien co Ma so X vi se vi pham rang buoc ve khoa ngoai”. Trong đó, X là Mă Nhân viên mà ta đang thực hiện lệnh!
    :D
    Làm thân trai phải ngang tàng, ngạo nghễ!!!
    Sống trên đời phải hống hách, ba hoa!!!
    Dũng cảm bước qua hiện tại đau khổ,
    Ngang tàng đạp đổ tương lai mịt mù!!!

    YM: khanhkt72Skype: kudoitqn:004:


  12. #12
    NIIT Student Avatar của cuongnt
    Tham gia ngày
    Dec 2008
    Bài gửi
    166

    Mặc định Ðề: Bài tập tổng hợp SQL

    tao DB = lenh (demo)
    CREATEDATABASE Employee
    On
    (
    Name=employee_dat,
    Filename='C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\employee.mdf',
    SIZE=12,MAXSIZE=100,FILEGROWTH=2)
    LOGON
    (
    NAME='EMPLOYEE_LOG',
    FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\employee.ldf',
    SIZE=4 MB,MAXSIZE=50 MB,FILEGROWTH=2 MB)
    --- CHEN THEM FILE NDF
    ALTERDATABASE EMPLOYEE
    ADDFILE
    (
    NAME='Emp_file3',
    FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\Emp_file2.ndf',
    SIZE=4MB,MAXSIZE=50MB,
    FILEGROWTH=2MB
    )

    Đă đọc rùi sao bạn ko cảm ơn

    ------------------------------------------
    Ai chiến thắng mà chưa từng chiến bại
    Ai lên khôn mà chưa dại một lần ?

  13. #13
    NIIT Student Avatar của tacbephot
    Tham gia ngày
    Jul 2009
    Bài gửi
    11

    Mặc định Ðề: Bài tập tổng hợp SQL

    cho em hỏi, ở đây là dùng sql 2005 hay sql 2000 ạ, em mới tập làm thui nhưng copy query vào sql 2005 th́ báo lỗi tùm lum
    hay đây là bài tập t́m và sửa lỗi ạ :-s

  14. #14
    NIIT Student Avatar của chunghb
    Tham gia ngày
    Feb 2009
    Đến từ
    1 chỗ nào đó...
    Bài gửi
    13

    Mặc định Đề: Bài tập tổng hợp SQL

    Trích dẫn Nguyên văn bởi tacbephot Xem bài viết
    cho em hỏi, ở đây là dùng sql 2005 hay sql 2000 ạ, em mới tập làm thui nhưng copy query vào sql 2005 th́ báo lỗi tùm lum
    hay đây là bài tập t́m và sửa lỗi ạ :-s
    cái này th́ cậu vừa làm đồng thời t́m lỗi và chỉnh sửa luôn mới có hiệu quả chứ,copy về rồi execute th́ sao mà nhớ được :20:

  15. #15
    NIIT Student Avatar của khanhkt72
    Tham gia ngày
    May 2009
    Đến từ
    Thống lĩnh của các trùm thống lĩnh!
    Bài gửi
    51

    Post Đề: Bài tập tổng hợp SQL

    Học SQL mà bạn Copy rồi Paste th́ không thể nào học được đâu!
    Tốt nhất là ngồi tự gơ phím, sau đó nghiền ngẫm mới nhớ được lâu, SQL c̣n gắn liền với dân IT dài dài
    Nếu đầu tiên học th́ nên chọn 2k v́ giao diện dễ xài hơn 2k5 cũng như 2k8!
    SQL 2k so với các đời sau cũng giống như Off 2k3 so với 2k7 vậy thôi :015:
    Chúc thành công!


    :D
    Làm thân trai phải ngang tàng, ngạo nghễ!!!
    Sống trên đời phải hống hách, ba hoa!!!
    Dũng cảm bước qua hiện tại đau khổ,
    Ngang tàng đạp đổ tương lai mịt mù!!!

    YM: khanhkt72Skype: kudoitqn:004:


  16. #16
    NIIT Student Avatar của cuongnt
    Tham gia ngày
    Dec 2008
    Bài gửi
    166

    Mặc định Ðề: Bài tập tổng hợp SQL

    CREATEDATABASE NSE08101
    ON
    (
    NAME=NSE08101,
    FILENAME='C:\Demo SQL\NSE08101.MDF',
    SIZE=12,MAXSIZE=100,FILEGROWTH=2)
    LOGON
    (
    NAME='NSE0101_LOG',
    FILENAME='C:\Demo SQL\NSE08101.LDF',
    SIZE=2,MAXSIZE=10,FILEGROWTH=1
    )
    GO
    ALTERDATABASE NSE08101
    ADDFILE
    (
    NAME='NSE08101_FILE2',
    FILENAME='C:\Demo SQL\NSE08101.NDF',
    SIZE=5,MAXSIZE=100,FILEGROWTH=2
    )
    -------
    sql 2000 hoặc 2005 cũng chạy được em ah.
    Đă đọc rùi sao bạn ko cảm ơn

    ------------------------------------------
    Ai chiến thắng mà chưa từng chiến bại
    Ai lên khôn mà chưa dại một lần ?

  17. #17
    NIIT Student Avatar của cuongnt
    Tham gia ngày
    Dec 2008
    Bài gửi
    166

    Mặc định Đề: Bài tập tổng hợp SQL

    usemaster
    go
    dropdatabase QLSP
    go
    createdatabase QLSP
    go
    use QLSP
    go
    ---tao bang
    Createtable SP
    (
    MaSP intprimarykeyidentity,
    TenSP varchar(20),
    SL int,
    Ngaysx datetime
    )
    go
    -- tao trigger
    createtrigger trginsertSP
    on SP
    forinsert
    as
    begin
    Declare **TenSP varchar(20)
    Declare **SL int
    Declare **Ngaysx datetime
    -- lay dl
    select **TenSP=TenSP,
    **SL=SL,
    **Ngaysx=Ngaysx
    From inserted

    -- kiem tra dk
    if(( **TenSP isnull)or(**SL <0)or(**Ngaysx>getdate()))
    begin
    print'dl nhap vao ko thoa man dk'
    rollbacktransaction
    end
    else
    begin
    print'chen dl thang cong'
    -- kiem tra
    select*from sp
    end
    end
    go
    -- trigger cho update
    createtrigger trgupdateSP
    on SP
    forupdate
    as
    begin
    Declare **TenSP varchar(20)
    Declare **SL int
    Declare **Ngaysx datetime
    -- lay dl
    select **TenSP=TenSP,
    **SL=SL,
    **Ngaysx=Ngaysx
    From inserted
    -- kiem tra dk
    if(( **TenSP isnull)or(**SL <0)or(**Ngaysx>getdate()))
    begin
    print'dl nhap vao ko thoa man dk'
    rollbacktransaction
    end
    else
    begin
    print'chen dl thang cong'
    -- kiem tra
    select*from sp
    end
    end
    Go
    -- kiem tra trigger co hay ko
    sp_help trginsertSP
    go
    createtrigger trgdelete
    on SP
    fordelete
    as
    begin
    Print'Bang khong duoc xoa'
    rollbacktransaction
    end
    go
    createtable Hoadon
    (
    Mahd intprimarykeyidentity,
    MaSP intforeignkeyreferences SP(MaSP),
    SLDM int,
    Gia int,
    ThanhTien int
    )
    go
    --- phan tao trigger
    createtrigger trginsertHoadon
    on Hoadon
    forinsert
    as
    begin
    declare **SLDM int
    declare **Gia int
    Declare **ThanhTien int
    Declare **SL int
    declare **MaSP int
    -- lay dl
    select **SL=SL from SP

    Select **SLDM=SLDM,
    **Gia=Gia,
    **MaSP=MaSP
    From inserted
    -- kiem tra
    if((**SLDM <0)or(**SLDM>**SL)or(**Gia<0))
    begin
    print'hoa don sai'
    rollbacktransaction
    end
    else
    begin
    -- cap nhat kq
    update Hoadon
    set ThanhTien=**SLDM***Gia
    where MaSP=**MaSP
    -- kiem tra
    select*from Hoadon
    -- cap nhat cho ban sp
    update SP
    set SL=**SL-**SLDM
    where MaSP=**MaSP
    -- kiem tra
    select*from SP
    end
    end
    go
    insertinto SP(tensp,sl,ngaysx)
    values('kem',1000,getdate())
    insertinto SP(tensp,sl,ngaysx)
    values('sua chua',100,getdate()-7)
    go
    --- bang hoa don
    insertinto hoadon(masp,sldm,gia)
    values(2,20,1000)
    insertinto hoadon(masp,sldm,gia)
    values(7,80,2000)
    insertinto hoadon(masp,sldm,gia)
    values(4,5,1000)
    select*from SP
    Lần sửa cuối bởi iamkid; 01-09-09 lúc 12:46 PM.
    Đă đọc rùi sao bạn ko cảm ơn

    ------------------------------------------
    Ai chiến thắng mà chưa từng chiến bại
    Ai lên khôn mà chưa dại một lần ?

  18. #18
    Moderators Avatar của vuquangnghia
    Tham gia ngày
    Nov 2008
    Bài gửi
    9

    Mặc định Đề: Bài tập tổng hợp SQL

    Trích dẫn Nguyên văn bởi tacbephot Xem bài viết
    cho em hỏi, ở đây là dùng sql 2005 hay sql 2000 ạ, em mới tập làm thui nhưng copy query vào sql 2005 th́ báo lỗi tùm lum
    hay đây là bài tập t́m và sửa lỗi ạ :-s
    SQL 2005 và 2000 ko khác nhau là mấy, c̣n việc bạn copy và paste lại vào query báo sai là v́ khi copy lên 4r th́ có những câu lệnh bị viết liền nhau gây ra lỗi. Bạn cứ để ư câu lệnh Create database hay table nó đều viết liền mà đúng là phải cách ra
    VD:
    usemaster
    Go
    dropdatabase Halinh
    Go
    createdatabase HaLinh
    những câu lệnh đc gạch chân là nhg câu lệnh sai. Do quá trính copy lên 4r có những cái 4r ko hỉu đc nên đă tự sửa đổi và viết liền vào nhau.
    Những lỗi tương tự:
    Createtable SP
    (
    MaSP intprimarykeyidentity,
    TenSP varchar(20),
    SL int,
    Ngaysx datetime
    )
    hay createtrigger trgupdateSP
    Hăy để thế giới thay đổi ḿnh, rồi ḿnh sẽ thay đổi thế giới

  19. #19
    NIIT Student
    Tham gia ngày
    Jun 2009
    Bài gửi
    4

    Mặc định Đề: Bài tập tổng hợp SQL

    Ḿnh có 1 bài tập này post nên để hỏi ư kiến mọi người
    có 1 bảng như sau

    MaKQ tenHS MonHoc KQ
    1 Lă Thị Tèo Toan T
    2 Lă Thị Tèo Van Q
    3 Ng T Mộng Mai Toan Q
    4 Ng T Mộng Mai Van Q
    5 ....
    Bây giờ cần t́m ra học sinh nào ko trượt môn nào cả.

  20. #20
    Moderators Avatar của blackpanther
    Tham gia ngày
    Nov 2008
    Đến từ
    Học Viện iNET
    Bài gửi
    656

    Mặc định Đề: Đề: Bài tập tổng hợp SQL

    Trích dẫn Nguyên văn bởi universe1024 Xem bài viết
    Ḿnh có 1 bài tập này post nên để hỏi ư kiến mọi người
    có 1 bảng như sau

    MaKQ tenHS MonHoc KQ
    1 Lă Thị Tèo Toan T
    2 Lă Thị Tèo Van Q
    3 Ng T Mộng Mai Toan Q
    4 Ng T Mộng Mai Van Q
    5 ....
    Bây giờ cần t́m ra học sinh nào ko trượt môn nào cả.
    Oạch, cái bảng của cậu khó nh́n thế, ḿnh viết lại cho nó rơ ràng nhé. Lần sau post bài nên post rơ ràng vào.


    Giả sử bảng đó gọi là bảng điểm th́ ta sẽ có :
    create database quanlidiem
    go
    use quanlidiem
    go
    create table bangdiem
    (
    mahs int primary key,
    Tenhs varchar(30),
    MonHoc varchar(20),
    KetQua varchar (10)
    )

    insert into bangdiem values(1,'La Thi Teo', 'Toan','Truot')
    insert into bangdiem values(2,'La Thi Teo', 'Van','Qua')
    insert into bangdiem values(3,'nguyen thi mong mai ', 'Toán','Qua')
    insert into bangdiem values(4,'La Thi Teo', 'Van','Qua')

    select * from bangdiem
    where ketqua = 'Truot'

    Luôn luôn lắng nghe:015:, lâu lâu mới hiểu :015:

    Hăy Thanks nếu bạn thấy bài viết có ích, xin vui ḷng không repply lại để spam.

Quyền viết bài

  • Bạn không thể gửi chủ đề mới
  • Bạn không thể gửi trả lời
  • Bạn không thể gửi file đính kèm
  • Bạn không thể sửa bài viết của ḿnh
  •  
Marketing | Hoc SEO | Dao tao SEO | Internet Marketing | NIIT | Lap trinh vien | Lap trinh Di dong | Lap trinh Android | Lap trinh web | Hoc PHP