Top 1 # Bài Tập Function Sql Có Lời Giải Xem Nhiều Nhất, Mới Nhất 1/2023 # Top Trend | Caffebenevietnam.com

Sql Server – Function Và Trigger

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)…

Tổng Hợp 10 Bài Tập Truy Vấn Sql Có Lời Giải Hay Cho Học Sinh

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’ .

Một Số Bài Tập Mẫu Sql(Phần Iii)

CREATE TABLE [dbo].[SalesPerson]( [SlsPerID] [varchar](30) NOT NULL, [Name] [varchar](30) NULL, CONSTRAINT [pk_salesperson] PRIMARY KEY CLUSTERED )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Inventory]’) AND type in (N’U’)) CREATE TABLE [dbo].[Inventory]( [InvtID] [varchar](30) NOT NULL, [Descr] [varchar](30) NULL, [StkBasePrc] [varchar](30) NULL, CONSTRAINT [pk_inventory] PRIMARY KEY CLUSTERED )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[fncQuy]’) AND type in (N’FN’, N’IF’, N’TF’, N’FS’, N’FT’)) execute dbo.sp_executesql @statement = N’CREATE FUNCTION [dbo].[fncQuy](@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'[dbo].[Customer]’) AND type in (N’U’)) CREATE TABLE [dbo].[Customer]( [CustID] [varchar](30) NOT NULL, [Name] [varchar](30) NULL, CONSTRAINT [pk_customer] PRIMARY KEY CLUSTERED )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[xswSalesOrd]’) AND type in (N’U’)) CREATE TABLE [dbo].[xswSalesOrd]( [OrderNbr] [int] NOT NULL, [OrderDate] [datetime] NULL, [SlsPerID] [varchar](30) NULL, [CustID] [varchar](30) NULL, CONSTRAINT [pk_ordernbr] PRIMARY KEY CLUSTERED )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[xswSlsOrdDet]’) AND type in (N’U’)) CREATE TABLE [dbo].[xswSlsOrdDet]( [OrderNbr] [varchar](30) NOT NULL, [InvtID] [varchar](30) NULL, CONSTRAINT [pk_xswslsorddet] PRIMARY KEY CLUSTERED )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Hienthi]’) AND type in (N’FN’, N’IF’, N’TF’, N’FS’, N’FT’)) execute dbo.sp_executesql @statement = N’create function [dbo].[Hienthi](@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'[dbo].[sp_HienThiDoanhSoCuaNhanVien2010]’) AND type in (N’P’, N’PC’)) EXEC dbo.sp_executesql @statement = N’create PROCEDURE [dbo].[sp_HienThiDoanhSoCuaNhanVien2010] 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'[dbo].[fncTinhChietKhau]’) AND type in (N’FN’, N’IF’, N’TF’, N’FS’, N’FT’)) execute dbo.sp_executesql @statement = N’CREATE FUNCTION [dbo].[fncTinhChietKhau](@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'[dbo].[danhsachkhachhang]’) AND type in (N’P’, N’PC’)) EXEC dbo.sp_executesql @statement = N’create proc [dbo].[danhsachkhachhang] (@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'[dbo].[danhsachmathang2010]’) AND type in (N’P’, N’PC’)) EXEC dbo.sp_executesql @statement = N’create proc [dbo].[danhsachmathang2010] 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'[dbo].[fncChietKhauCuaMatHang]’) AND type in (N’FN’, N’IF’, N’TF’, N’FS’, N’FT’)) execute dbo.sp_executesql @statement = N’CREATE FUNCTION [dbo].[fncChietKhauCuaMatHang](@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'[dbo].[fk1]’) AND parent_object_id = OBJECT_ID(N'[dbo].[xswSalesOrd]’)) ALTER TABLE [dbo].[xswSalesOrd] WITH CHECK ADD CONSTRAINT [fk1] FOREIGN KEY([SlsPerID]) REFERENCES [dbo].[SalesPerson] ([SlsPerID]) IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[fk2]’) AND parent_object_id = OBJECT_ID(N'[dbo].[xswSalesOrd]’)) ALTER TABLE [dbo].[xswSalesOrd] WITH CHECK ADD CONSTRAINT [fk2] FOREIGN KEY([CustID]) REFERENCES [dbo].[Customer] ([CustID]) IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[fk3]’) AND parent_object_id = OBJECT_ID(N'[dbo].[xswSlsOrdDet]’)) ALTER TABLE [dbo].[xswSlsOrdDet] WITH CHECK ADD CONSTRAINT [fk3] FOREIGN KEY([InvtID]) REFERENCES [dbo].[Inventory] ([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 Tập Diode Có Lời Giải

TÓM TẮT LÝ THUYẾT VÀ BÀI TẬP PHẦN DIODEMÔ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ó diodeTa 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óaVí dụ 1-1Giả 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ải1. 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-2Giả 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ảiNgắ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 VTheo đị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