Bài tập function SQL có lời giải
Tổng hợp các bài viết thuộc chủ đề Bài Tập Sql Có Lời Giải xem nhiều nhất, được cập nhật mới nhất ngày 06/08/2022 trên website Caffebenevietnam.com. Hy vọng nội dung bài viết sẽ đáp ứng được nhu cầu của bạn, chúng tôi sẽ thường xuyên cập nhật mới nội dung Bài Tập Sql Có Lời Giải để bạn nhận được thông tin nhanh chóng và chính xác nhất. Cho đến thời điểm hiện tại, chủ đề này đã đạt được 16.236 lượt xem.
--- Bài mới hơn ---
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 mới hơn --- 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
II
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 ---
--- Bài mới hơ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 mới hơn --- 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 ---
--- Bài mới hơn --- 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 mahang=@mahang) IF (@macongty IS NULL OR EXISTS(SELECT macongty FROM nhacungcap WHERE macongty=@macongty)) AND (@maloaihang IS NULL OR EXISTS(SELECT maloaihang FROM loaihang WHERE maloaihang=@maloaihang)) 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 mathang.mahang=@mahang 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 mahang=@mahang UPDATE mathang SET soluong=soluong-@soluongban WHERE mahang=@mahang 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 ---
--- Bài mới hơn --- 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 Categories.CategoryID=@CategoryID) 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 ---
--- Bài mới hơn --- 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 mới hơn ---
Các cấp độ bài tập C Bài này cung cấp cho bạn danh sách các bài tập C có lời giải ở các cấp độ khác nhau để bạn thực hành khi học ngôn ngữ lập trình C:
1. Bài tập C kinh điển Bài 01: Viết một chương trình C in ra dãy số Fibonacci Code mẫu: In dãy số Fibonacci trong C không sử dụng đệ quy. /** * Tinh day so Fibonacci KHONG dung phuong phap de quy * * @author viettuts.vn */ /** * Tinh so Fibonacci thu n * * @param n: chi so cua so Fibonacci tinh tu 0 * vd: F0 = 0, F1 = 1, F2 = 1, F3 = 2 * @return So Fibonacci thu n */ int fibonacci(int n) { int f0 = 0; int f1 = 1; int fn = 1; int i; if (n < 0) { return -1; return n; } else { for (i = 2; i < n; i++) { f0 = f1; f1 = fn; fn = f0 + f1; } } return fn; } /** * Ham main */ int main() { int i; printf("10 so dau tien cua day so Fibonacci: n"); for (i = 0; i < 10; i++) { printf("%d ", fibonacci(i)); } } Kết quả: 10 so dau tien cua day so Fibonacci: 0 1 1 2 3 5 8 13 21 34 Bài 02: Viết một chương tình C kiểm tra số nguyên tố. /** * check so nguyen to trong C * * @author viettuts.vn * @param n: so nguyen duong * @return 1 la so nguyen so, * 0 khong la so nguyen to */ int isPrimeNumber(int n) { if (n < 2) { return 0; } int squareRoot = (int) sqrt(n); int i; for (i = 2; i <= squareRoot; i++) { if (n % i == 0) { return 0; } } return 1; } /** * Ham main */ int main() { int i; printf("Cac so nguyen to nho hon 100 la: n"); for (i = 0; i < 100; i++) { if (isPrimeNumber(i)) { printf("%d ", i); } } } Kết quả: Cac so nguyen to nho hon 100 la: 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 Bài 03: Viết một chương trình C tính giai thừa của một số bằng cách không sử dụng đệ quy và có sử dụng đệ quy. Code mẫu: Tính giai thừa trong C không sử dụng đệ quy. /** * Tinh giai thua KHONG dung phuong phap de quy * * @author viettuts.vn */ /** * tinh giai thua * * @author viettuts.vn * @param n: so nguyen duong * @return giai thua cua so n */ long tinhGiaithua(int n) { int i; long giai_thua = 1; return giai_thua; } else { for (i = 2; i <= n; i++) { giai_thua *= i; } return giai_thua; } } /** * Ham main */ int main() { int a = 5; int b = 0; int c = 10; printf("Giai thua cua %d la: %d n", a, tinhGiaithua(a)); printf("Giai thua cua %d la: %d n", b, tinhGiaithua(b)); printf("Giai thua cua %d la: %d", c, tinhGiaithua(c)); } Kết quả: Giai thua cua 5 la: 120 Giai thua cua 0 la: 1 Giai thua cua 10 la: 3628800 Bài 04: Viết một chương trình C để chuyển đổi số nguyên N sang hệ cơ số B (2 <= B <= 32) bất kỳ. Code mẫu: Chuyển đối hệ cơ số 10 sang hệ cơ số B /** * Chuong trinh chuyen doi he co so trong C * Bai tap nay su dung bang ASCII de chuyen doi so nguyen thanh kieu ky tu * Link tham khao: https://vi.wikipedia.org/wiki/ASCII * * @author viettuts.vn */ const char CHAR_55 = 55; const char CHAR_48 = 48; /** * chuyen doi so nguyen n sang he co so b * * @author viettuts.vn * @param n: so nguyen * @param b: he co so */ int convertNumber(int n, int b) { printf("He co so hoac gia tri chuyen doi khong hop le!"); return 0; } int i; char arr = (char) (m + CHAR_55); count++; } else { arr = (char) ((remainder % b) + CHAR_48); count++; } remainder = remainder / b; } printf("%c", arr; if (n % i == 0) { n = n / i; a = n; } for (i = 0; i < dem - 1; i++) { printf("%d x ", a); } /** * Ham main */ int main() { int n; printf("Nhap so nguyen duong n = "); scanf("%d", &n); phanTichSoNguyen(n); } Kết quả: Nhap so nguyen duong n = 120 2 x 2 x 2 x 3 x 5 Bài 07: Viết chương trình C tính tổng các chữ số của một số nguyên n. Ví dụ: 1234 = 1 + 2 + 3 + 4 = 10. const int DEC_10 = 10; /** * Ham main */ int main() { int n; printf("Nhap so nguyen duong n = "); scanf("%d", &n); printf("Tong cac chu so cua %d la: %d", n, totalDigitsOfNumber(n)); } /** * Tinh tong cac chu so cua mot so nguyen duong */ int totalDigitsOfNumber(int n) { int total = 0; do { total = total + n % DEC_10; n = n / DEC_10; return total; } Kết quả: Nhap so nguyen duong n = 1234 Tong cac chu so cua 1234 la: 10 Bài 08: Viết chương trình C tìm các số thuận nghịch có 6 chữ số. Một số được gọi là số thuận nghịch nếu ta đọc từ trái sang phải hay từ phải sang trái số đó ta vẫn nhận được một số giống nhau. Ví dụ 123321 là một số thuận nghịch. /** * Chuong trình li?t kê t?t c? các s? thu?n ngh?ch có 6 ch?a s?. * * @author viettuts.vn */ const int DEC_10 = 10; /** * main * * @param args */ int main() { int count = 0, i; for (i = 100000; i < 1000000; i++) { if (isThuanNghich(i)) { printf("%dn", i); count++; } } printf("Tong cac so thuan nghich co 6 chu so la: %d", count); } /** * kiem tra so thuan nghich * * @param n: so nguyen duong * @return 1: la so thuan nghich * 0: khong la so thuan nghich */ int isThuanNghich(int n) { int a = (n % DEC_10); n = n / DEC_10; for (i = 0; i < (dem/2); i++) { if (a) { return 0; } } return 1; } Kết quả: 100001 101101 102201 ... 997799 998899 999999 Tong cac so thuan nghich co 6 chu so la: 900 Bài 09: Nhập số tự nhiên n. Hãy liệt kê các số Fibonacci nhỏ hơn n là số nguyên tố. /** * Chuong trinh liet ke cac so Fibonacci nho hon n la so nguyen to. * * @author viettuts.vn */ /** * Ham main */ int main() { int n; printf("Nhap so nguyen duong = "); scanf("%d", &n); printf("Cac so fibonacci nho hon %d va la so nguyen to: ", n); int i = 0; while (fibonacci(i) < n) { int fi = fibonacci(i); if (isPrimeNumber(fi)) { printf("%d ", fi); } i++; } } /** * Tinh so fibonacci thu n * * @param n: chi so cua day fibonacci tinh tu 0 * vd: F0 = 0, F1 = 1, F2 = 1, F3 = 2 * @return so fibonacci thu n */ int fibonacci(int n) { if (n < 0) { return -1; return n; } else { return fibonacci(n - 1) + fibonacci(n - 2); } } /** * check so nguyen to * * @author viettuts.vn * @param n: so nguyen duong * @return 1: la so nguyen so, * 0: khong la so nguyen to */ int isPrimeNumber(int n) { if (n < 2) { return 0; } int i; int squareRoot = sqrt(n); for (i = 2; i <= squareRoot; i++) { if (n % i == 0) { return 0; } } return 1; } Kết quả: Nhap so nguyen duong = 100 Cac so fibonacci nho hon 100 va la so nguyen to: 2 3 5 13 89 3. Bài tập vòng lặp trong C Bài này tổng hợp các bài tập vòng lặp trong C giúp bạn làm quen cú pháp và cách sử dụng của các vòng lặp C cơ bản: vòng lặp for , vòng lặp while, vòng lặp do-while và vòng lặp lồng nhau. 4. Bài tập mảng trong C Mảng là một tập hợp dữ liệu có cùng kiểu. Mảng trong C là một cấu trúc dữ liệu cơ bản và quan trọng. 5. Bài tập mảng 2 chiều trong C 5. Bài tập chuỗi trong C Chuỗi (String) trong C là một mảng ký tự được kết thúc bởi (ký tự null). 6. Bài tập Đệ quy trong C 7. Bài tập về con trỏ (Pointer) trong C Trước khi bắt đầu, bạn có thể xem lại một số khái niệm cơ bản về Con trỏ (Pointer) trong bài Con trỏ trong C Con trỏ (Pointer) trong C là một biến, nó còn được gọi là locator hoặc indicator chỉ ra một địa chỉ của một giá trị. 8. Bài tập về các thuật toán sắp xếp trong C Bạn có thể xem các giải thuật sắp xếp trong phần cấu trúc dữ liệu và giải thuật: Giải thuật sắp xếp 9. Bài tập về Struct trong C Bạn có thể xem lại một số khái niệm cơ bản về Struct tại: Struct trong C 10. Bài tập về danh sách liên kết (linked-list) trong C Đang cập nhật… 11. Bài tập về File I/O trong C Bạn có thể xem lại một số chế độ được sử dụng khi mở một file trong C: EOF trong C là gì? Ký tự EOF, là viết tắt của End of File, xác định vị trí cuối cùng của file. Kiểm tra nếu gặp ký tự này thì tiến trình ghi dữ liệu vào file của chúng ta sẽ kết thúc. 12. Bài tập quản lý sinh viên trong C/C++ --- Bài cũ hơn ---
--- Bài mới hơn ---
Bài tập Java có lời giải Bài này cung cấp cho bạn danh sách các dạng bài tập khác nhau để bạn thực hành khi học java. 1. Bài tập java cơ bản Trong phần này, bạn phải nắm được các kiến thức về:
Bài 01: Viết chương trình tìm tất cả các số chia hết cho 7 nhưng không phải bội số của 5, nằm trong đoạn 10 và 200 (tính cả 10 và 200). Các số thu được sẽ được in thành chuỗi trên một dòng, cách nhau bằng dấu phẩy. package vn.viettuts.baitap; import java.util.ArrayList; import java.util.List; public class Bai01 { public static void main(String args) { System.out.print("Nhập số nguyên dương n = "); int n = scanner.nextInt(); System.out.println("Giai thừa của " + n + " là: " + tinhGiaithua(n)); } /** * tinh giai thua * * @author viettuts.vn * @param n: so nguyen duong * @return giai thua cua so n */ public static long tinhGiaithua(int n) { return n * tinhGiaithua(n - 1); } else { return 1; } } } Kết quả: Nhập số nguyên dương n = 8 Giai thừa của 8 là: 40320 Bài 03: Hãy viết chương trình để tạo ra một map chứa (i, i*i), trong đó i là số nguyên từ 1 đến n (bao gồm cả 1 và n), n được nhập từ bàn phím. Sau đó in map này ra màn hình. Ví dụ: Giả sử số n là 8 thì đầu ra sẽ là: {1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64}.
package vn.viettuts.baitap; import java.util.HashMap; import java.util.Map; import java.util.Scanner; public class Bai03 { private static Scanner scanner = new Scanner(System.in); public static void main(String args) { System.out.print("Nhập hệ số bậc 2, a = "); float a = scanner.nextFloat(); System.out.print("Nhập hệ số bậc 1, b = "); float b = scanner.nextFloat(); System.out.print("Nhập hằng số tự do, c = "); float c = scanner.nextFloat(); giaiPTBac2(a, b, c); } /** * Giải phương trình bậc 2: ax2 + bx + c = 0 * * @param a: hệ số bậc 2 * @param b: hệ số bậc 1 * @param c: số hạng tự do */ public static void giaiPTBac2(float a, float b, float c) { if (a == 0) { if (b == 0) { System.out.println("Phương trình vô nghiệm!"); } else { System.out.println("Phương trình có một nghiệm: " + "x = " + (-c / b)); } return; } float delta = b*b - 4*a*c; float x1; float x2; x1 = (float) ((-b + Math.sqrt(delta)) / (2*a)); x2 = (float) ((-b - Math.sqrt(delta)) / (2*a)); System.out.println("Phương trình có 2 nghiệm là: " + "x1 = " + x1 + " và x2 = " + x2); } else if (delta == 0) { x1 = (-b / (2 * a)); System.out.println("Phương trình có nghiệm kép: " + "x1 = x2 = " + x1); } else { System.out.println("Phương trình vô nghiệm!"); } } } Kết quả: Nhập hệ số bậc 2, a = 2 Nhập hệ số bậc 1, b = 1 Nhập hằng số tự do, c = -1 Phương trình có 2 nghiệm là: x1 = 0.5 và x2 = -1.0 Bài 05:
package vn.viettuts.baitap; import java.util.Scanner; public class ConvertNumber { public static final char CHAR_55 = 55; private static Scanner scanner = new Scanner(System.in); /** * main * * @author viettuts.vn * @param args */ public static void main(String args) { System.out.print("Nhập số nguyên dương n = "); int n = scanner.nextInt(); System.out.println(n + " số đầu tiên của dãy số fibonacci: "); for (int i = 0; i < n; i++) { System.out.print(fibonacci(i) + " "); } } /** * Tính số fibonacci thứ n * * @param n: chỉ số của số fibonacci tính từ 0 * vd: F0 = 0, F1 = 1, F2 = 1, F3 = 2 * @return số fibonacci thứ n */ public static int fibonacci(int n) { if (n < 0) { return -1; return n; } else { return fibonacci(n - 1) + fibonacci(n - 2); } } } Kết quả: Nhập số nguyên dương n = 12 12 số đầu tiên của dãy số fibonacci: 0 1 1 2 3 5 8 13 21 34 55 89 Bài 07: Viết chương trình tìm ước số chung lớn nhất (USCLN) và bội số chung nhỏ nhất (BSCNN) của hai số nguyên dương a và b nhập từ bàn phím. package vn.viettuts.baitap; import java.util.Scanner; public class USCLL_BSCNN_1 { private static Scanner scanner = new Scanner(System.in); /** * main * * @param args */ public static void main(String args) { System.out.print("Nhập n = "); int n = scanner.nextInt(); System.out.printf("Tất cả các số nguyên tố nhỏ hơn %d là: n", n); System.out.print(2); } for (int i = 3; i < n; i+=2) { if (isPrimeNumber(i)) { System.out.print(" " + i); } } } /** * check so nguyen to * * @author viettuts.vn * @param n: so nguyen duong * @return true la so nguyen so, * false khong la so nguyen to */ public static boolean isPrimeNumber(int n) { if (n < 2) { return false; } int squareRoot = (int) Math.sqrt(n); for (int i = 2; i <= squareRoot; i++) { if (n % i == 0) { return false; } } return true; } } Kết quả: Nhập n = 100 Tất cả các số nguyên tố nhỏ hơn 100 là: 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 Bài 09: Viết chương trình liệt kê n số nguyên tố đầu tiên trong java. Số nguyên dương n được nhập từ bàn phím. package vn.viettuts.baitap; import java.util.Scanner; /** * Chương trình liệt kê n số nguyên tố đầu tiên. * * @author viettuts.vn */ public class BaiTap09 { private static Scanner scanner = new Scanner(System.in); /** * main * * @param args */ public static void main(String args) { int count = 0; System.out.println("Liệt kê tất cả số nguyên tố có 5 chữ số:"); for (int i = 10001; i < 99999; i+=2) { if (isPrimeNumber(i)) { System.out.println(i); count++; } } System.out.println("Tổng các số nguyên tố có 5 chữ số là: " + count); } /** * check so nguyen to * * @author viettuts.vn * @param n: so nguyen duong * @return true la so nguyen so, * false khong la so nguyen to */ public static boolean isPrimeNumber(int n) { if (n < 2) { return false; } int squareRoot = (int) Math.sqrt(n); for (int i = 2; i <= squareRoot; i++) { if (n % i == 0) { return false; } } return true; } } Kết quả: Liệt kê tất cả số nguyên tố có 5 chữ số: 10007 10009 10037 ... 99971 99989 99991 Tổng các số nguyên tố có 5 chữ số là: 8363 Bài 11: Viết chương trình phân tích số nguyên n thành các thừa số nguyên tố trong java. Ví dụ: 100 = 2x2x5x5. package vn.viettuts.baitap; import java.util.ArrayList; import java.util.List; import java.util.Scanner; /** * Chương trình phân tích số nguyên n thành các thừa số nguyên tố. * Ví dụ: 12 = 2 x 2 x 3. * * @author viettuts.vn */ public class BaiTap11 { private static Scanner scanner = new Scanner(System.in); /** * main * * @param args */ public static void main(String args) { System.out.print("Nhập số nguyên dương n = "); int n = scanner.nextInt(); System.out.printf("Tổng của các chữ số " + "của %d là: %d", n, totalDigitsOfNumber(n)); } /** * Tính tổng của các chữ số của một số nguyên dương * * @param n: số nguyên dương * @return */ public static int totalDigitsOfNumber(int n) { int total = 0; do { total = total + n % DEC_10; n = n / DEC_10; return total; } } Kết quả: Nhập số nguyên dương n = 6677 Tổng của các chữ số của 6677 là: 26 Bài 13: Viết chương trình kiểm tra một số n là số thuận nghịch trong java. Số nguyên dương n được nhập từ bàn phím. package vn.viettuts.baitap; import java.util.Scanner; /** * Chương trình liệt kê tất cả các số thuận nghịch có 6 chữa số. * * @author viettuts.vn */ public class BaiTap13 { private static Scanner scanner = new Scanner(System.in); /** * main * * @param args */ public static void main(String args) { System.out.print("Nhập số tự nhiên n = "); int n = scanner.nextInt(); System.out.printf("Các số fibonacci nhỏ hơn %d và " + "là số nguyên tố: ", n); int i = 0; while (fibonacci(i) < 100) { int fi = fibonacci(i); if (isPrimeNumber(fi)) { System.out.print(fi + " "); } i++; } } /** * Tính số fibonacci thứ n * * @param n: chỉ số của số fibonacci tính từ 0 * vd: F0 = 0, F1 = 1, F2 = 1, F3 = 2 * @return số fibonacci thứ n */ public static int fibonacci(int n) { if (n < 0) { return -1; return n; } else { return fibonacci(n - 1) + fibonacci(n - 2); } } /** * check so nguyen to * * @author viettuts.vn * @param n: so nguyen duong * @return true la so nguyen so, * false khong la so nguyen to */ public static boolean isPrimeNumber(int n) { if (n < 2) { return false; } int squareRoot = (int) Math.sqrt(n); for (int i = 2; i <= squareRoot; i++) { if (n % i == 0) { return false; } } return true; } } Kết quả: Nhập số tự nhiên n = 100 Các số fibonacci nhỏ hơn 100 và là số nguyên tố: 2 3 5 13 89 Các bài tập khác:
2. Bài tập chuỗi trong Java Danh sách bài tập:
3. Bài tập mảng trong Java Các bài tập trong phần này thao tác với mảng một chiều và 2 chiều trong java, bạn có thể tham khảo bài học mảng (Array) trong java Danh sách bài tập:
4. Bài tập về các thuật toán sắp xếp trong Java Bạn có thể xem các giải thuật sắp xếp trong phần cấu trúc dữ liệu và giải thuật: Giải thuật sắp xếp 5. Bài tập java nâng cao Trong phần này, bạn phải nắm được các kiến thức về:
Bài tập quản lý sinh viên trong Java – console Đề bài: Viết chương trình quản lý sinh viên. Mỗi đối tượng sinh viên có các thuộc tính sau: id, name, age, address và gpa (điểm trung bình). Yêu cầu: tạo ra một menu với các chức năng sau: /****************************************/ 1. Add student. 2. Edit student by id. 3. Delete student by id. 4. Sort student by gpa. 5. Sort student by name. 6. Show student. 0. Exit. /****************************************/ Lời giải: Bài tập quản lý sinh viên trong java – giao diện dòng lệnh Bài tập quản lý sinh viên trong Java – Swing Lời giải: Bài tập quản lý sinh viên trong java bằng Swing --- Bài cũ hơn --- Bạn đang xem chủ đề Bài Tập Sql Có Lời Giải trên website Caffebenevietnam.com. Hy vọng những thông tin mà chúng tôi đã chia sẻ là hữu ích với bạn. Nếu nội dung hay, ý nghĩa bạn hãy chia sẻ với bạn bè của mình và luôn theo dõi, ủng hộ chúng tôi để cập nhật những thông tin mới nhất. Chúc bạn một ngày tốt lành!
Quảng Cáo
Chủ đề xem nhiều Bài viết xem nhiều Giải Tập Bản Đồ Địa Lí 11 Giải Tập Bản Đồ Địa Lí 11 – Bài 10: Tiết 3: Thực hành: Tìm hiểu sự thay đổi của nền kinh tế Trung Quốc giúp HS giải bài tập, các em sẽ có được những kiến thức phổ thông cơ bản, cần thiết về các môi trường địa lí, về hoạt động của con người trên Trái Đất và ở các châu lục: Bài 1 trang 49 Tập bản đồ Địa Lí 11: Dựa vào bảng số liệu 10.2 trong SGK, em hãy: Lời giải: – Tính tỉ trọng GDP của Trung Quốc so với thế giới (%). – Nhận xét... Soạn Anh 8: Unit 7. Write WRITE ( Trả lời câu hỏi trang 68 SGK Tiếng Anh 8) Chủ cửa hàng và cư dân đường Trần Phú HỌP BÀN VỀ ẢNH HƯỞNG CỦA TRUNG TÂM THƯƠNG MẠI MỚI Ngày: 20 tháng 5 Giờ: 8h tối Địa điểm: Cửa hàng thiết bị... Giải Bài Tập Sbt Toán Hình 6 Bài 8: Khi Nào Thì Am + Mb = Ab Giải bài tập SBT Toán hình 6 bài 8: Khi nào thì AM + MB = AB Giải bài tập môn Toán Hình lớp 6 Bài tập môn Toán lớp 6 được VnDoc sưu tầm và đăng tải, tổng hợp lý thuyết. Đây là lời giải hay cho các câu hỏi trong sách bài tập nằm trong chương trình giảng dạy môn Toán lớp 6. Hi vọng rằng đây sẽ là những tài liệu hữu ích trong công tác giảng dạy và học tập của quý thầy cô và các em học sinh. Giải bài tập SBT Toán hình 6 bài 6: Đoạn... Kỷ Niệm 62 Năm Chiến Thắng Điện Biên Phủ (7/5/1954 Trong những ngày đầu tháng 5 này, trên cả nước ta đã và đang diễn ra nhiều hoạt động hướng tới lễ kỷ niệm 62 năm Chiến thắng Điện Biên Phủ (7/5/1954 – 7/5/2016). Đã 62 năm trôi qua kể từ ngày quân và dân ta làm nên chiến thắng Điện Biên Phủ “lừng lẫy năm châu, chấn động địa cầu”, nhưng ý nghĩa và tầm vóc của sự kiện lịch sử trọng đại này không hề phai mờ, trái lại những bài học lịch sử vẫn còn nguyên giá trị trong sự nghiệp xây dựng và bảo vệ... Giải Vở Bài Tập Toán 3 Trang 53 Tập 2 Câu 1, 2, 3, 4 giải bài tập Toán lớp 3 tập 2 Giải bài tập Toán 3 trang 53 tập 1 câu 1, 2, 3, 4 Giải vở bài tập toán lớp 3 tập II trang 53 + Dành thời gian hướng dẫn con cách tham khảo sách như thế nào chứ không phải mua sách về và để con tự đọc. Nếu để con tự học với sách tham khảo rất dễ phản tác dụng. + Sách tham khảo rất đa dạng, có loại chỉ gợi ý, có loại giải chi tiết, có sách kết hợp cả hai. Dù là sách gợi ý... Giải Bài Tập Địa Lí Lớp 7 Bài 15: Hoạt Động Công Nghiệp Ở Đới Ôn Hòa Giải bài tập Địa lí lớp 7 Bài 15: Hoạt động công nghiệp ở đới ôn hòa (trang 51 sgk Địa Lí 7): – Quan sát hình 15.3, nhận xét sự phân bố các trung tâm công nghiệp chính ở đới ôn hòa. – Các trung tâm công nghiệp chính ở đới ôn hòa phân bố không đều, tập trung chủ yếu ở các khu vực: Đông Bắc Hoa Kì,Tây Nam và Đông Nam Hoa Kì, Tây Âu, Trung Âu, Nam Âu, Đông Á, phía Nam Ô – xtray – li – a Câu 1: Trình bày các ngành công... Soạn Anh 8: Unit 2. Communication Unit 2: Life in the countryside Communication (phần 1→3 trang 21 SGK Tiếng Anh 8 mới) 1.Read the posts on “Holidays in the Countryside”. (Đọc các bài đăng ở mục “Kì nghỉ ở miền quê”.) Không gian ở đây rộng quá! Chúng tớ có thể chạy quanh các cánh đồng và hét thật lớn mà không làm phiền bất cứ ai. Dennis đến từ Luân Đôn Bơi ở sông, hái quả mâm xôi, thu hoạch mật ong từ các tổ ong… Tớ chưa bao giờ có một kì nghỉ thú vị hơn thế. Julie đến từ Paris Không có nước máy. Không có điện. Còn trung... Unit 9: Getting Started Mai: Xin chào, Jim. Những thứ như thế nào? Bạn trông rất bận! Jim: Oh, tôi đang lướt net. Tôi đang cố gắng để tìm ra những lựa chọn có sẵn cho leavers trường học. Mai: Vậy bạn muốn làm gì sau khi tốt nghiệp trung học? Jim: Hmm …. tôi không biết, vì vậy tôi đang tìm kiếm các trang web cung cấp lời khuyên nghề nghiệp để tôi có thể đưa ra một kế hoạch. Jim: À, tôi muốn đi thẳng vào đại học, nhưng tôi cũng nghĩ đến việc xin việc tạm thời vào mùa hè. Mai: Bạn đang tìm kiếm công... Giải Bài Tập Sgk Toán Lớp 7 Bài 1: Thu Thập Số Liệu Thống Kê, Tần Số Giải bài tập SGK Toán lớp 7 bài 1 Giải bài tập Toán lớp 7 bài 1: Thu thập số liệu thống kê, tần số Giải bài tập SGK Toán lớp 7 bài 1: Thu thập số liệu thống kê, tần số với lời giải chi tiết, rõ ràng theo khung chương trình sách giáo khoa Toán lớp 7. Lời giải hay bài tập Toán 7 này gồm các bài giải tương ứng với từng bài học trong sách giúp cho các bạn học sinh ôn tập và củng cố các dạng bài tập, rèn luyện kỹ năng giải môn Toán. Mời... Các Chuyên Đề Bồi Dưỡng Học Sinh Giỏi Môn Toán Lớp 4 Bài tập toán nâng cao lớp 4 Chuyên đề bồi dưỡng học sinh giỏi Toán lớp 4 Các chuyên đề bồi dưỡng học sinh giỏi môn Toán lớp 4 là tài liệu tổng hợp các bài tập toán nâng cao lớp 4 hay, hữu ích. Toán lớp 4 nâng cao này bao gồm các bài toán về 11 chuyên đề, được sắp xếp từ dễ đến khó dành cho các em học sinh, phụ huynh và thầy cô giáo tham khảo và học tập. Chuyên đề bồi dưỡng học sinh giỏi môn Toán lớp 4 Chuyên đề 1: Tìm thành phần chưa biết... |