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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Giới Hạn Của Hàm Hai Biến Số
  • 143 Bài Tập Giới Hạn Dãy Số
  • Chuyên Đề Vecto Trong Không Gian Quan Hệ Vuông Góc
  • Bài Tập Hóa Học Nâng Cao Môn Hóa Lớp 8
  • Bài Tập Cân Bằng Phản Ứng Oxi Hóa Khử
  • Lưu ý, có nhiều lời giải cho một bài toán. Nên, nếu câu truy vấn của bạn và của mình có khác biệt, hay kiểm tra thử kết quả của chúng. Trong một số lời giải, mình sẽ thay đổi một xíu, để lồng ghép cái gì đó vào. Các bạn hãy chú ý.

    1, Liệt kê các nhân viên của cửa hàng.

    1

    2

    SELECT

    CONCAT

    (

    FirstName

    ,

    ‘ ‘

    ,

    LastName

    )

    AS

    FullName

    ,

    Title

    FROM

    Employee

    ;

    2, Tìm các nhân viên tên có chứa ít nhất 1 chữ ‘a’.

    1

    2

    3

    SELECT

    CONCAT

    (

    FirstName

    ,

    ‘ ‘

    ,

    LastName

    )

    AS

    FullName

    ,

    Title

    FROM

    Employee

    WHERE

    FirstName

    LIKE

    ‘%a%’

    ;

    1

    2

    3

    SELECT

    *

    FROM

    Genre

    ORDER

    BY

    Name

    ;

    4, Đếm số lượng thể loại.

    1

    2

    SELECT

    COUNT

    (

    GenreId

    )

    AS

    NoG

    FROM

    Genre

    ;

    5, Liệt kê các track theo từng yêu cầu.

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    6, Liệt kê các thành phố xuất hiện trong bảng khách hàng (customers).

    1

    2

    3

    SELECT

    DISTINCT

    City

    FROM

    Customer

    ORDER

    BY

    City

    ;

    7, Liệt kê 10 hóa đơn có giá trị cao nhất.

    1

    2

    3

    SELECT

    TOP

    (

    10

    )

    *

    FROM

    Invoice

    ORDER

    BY

    Total

    DESC

    ;

    8, Truy vấn hóa đơn thứ 100 (sắp xếp theo ngày).

    1

    2

    3

    4

    5

    SELECT

    *

    FROM

    Invoice

    ORDER

    BY

    InvoiceDate

    OFFSET

    99

    ROWS

    FETCH

    FIRST

    1

    ROW

    ONLY

    ;

    9, Liệt kê các bài hát thuộc một trong hai album: ‘Supernatural’, ‘Use Your Illusion I’.

    1

    2

    3

    4

    5

    SELECT

    *

    FROM

    Track

    INNER

    JOIN

    Album

    ON

    Track

    .

    AlbumId

    =

    Album

    .

    AlbumId

    WHERE

    Album

    .

    Title

    =

    ‘Supernatural’

    OR

    Album

    .

    Title

    =

    ‘Use Your Illusion I’

    ;

    10, Liệt kê các hóa đơn trong tháng 2 năm 2011.

    1

    2

    3

    SELECT

    *

    FROM

    Invoice

    WHERE

    InvoiceDate

    BETWEEN

    ‘2011-02-01’

    AND

    ‘2011-02-28’

    ;

    1

    2

    3

    SELECT

    *

    FROM

    InvoiceLine

    WHERE

    InvoiceId

    =

    47

    ;

    12, Liệt kê các bài hát thuộc thể loại ‘Jazz’, ‘Blues’ và ‘Pops’.

    1

    2

    3

    4

    SELECT

    *

    FROM

    Track

    INNER

    JOIN

    Genre

    ON

    Track

    .

    GenreId

    =

    Genre

    .

    GenreId

    WHERE

    Genre

    .

    Name

    IN

    (

    ‘Jazz’

    ,

    ‘Blues’

    ,

    ‘Pops’

    )

    ;

    13, Liệt kê các bài hát không xác định tác giả.

    1

    2

    3

    SELECT

    *

    FROM

    Track

    WHERE

    Composer

    IS

    NULL

    ;

    14, Đếm số lượng bài hát trong Album có id = 1.

    1

    2

    3

    4

    SELECT

    AlbumId

    ,

    COUNT

    (

    TrackId

    )

    AS

    Track_no

    FROM

    Track

    GROUP

    BY

    AlbumId

    HAVING

    AlbumId

    =

    10

    ;

    15, Liệt kê các Album có từ 18 đến 20 bài hát, sắp xếp theo thứ tự AlbumId tăng dần.

    1

    2

    3

    4

    5

    SELECT

    AlbumId

    ,

    COUNT

    (

    TrackId

    )

    FROM

    Track

    GROUP

    BY

    AlbumId

    HAVING

    COUNT

    (

    TrackId

    )

    BETWEEN

    18

    AND

    20

    ORDER

    BY

    AlbumId

    ;

    16, Liệt kê tất cả các khách hàng, được các nhân viên có mã PostalCode bắt đầu bằng ‘T2P’.

    1

    2

    3

    4

    5

    6

    7

    SELECT

    CustomerId

    ,

    CONCAT

    (

    FirstName

    ,

    ‘ ‘

    ,

    LastName

    )

    AS

    Customer_Name

    FROM

    Customer

    WHERE

    SupportRepId

    IN

    (

    SELECT

    EmployeeId

    FROM

    Employee

    WHERE

    PostalCode

    LIKE

    ‘T2P%’

    )

    ;

    17, Tính dung lượng trung bình của mỗi Album.

    1

    2

    3

    4

    5

    6

    SELECT

    AVG

    (

    MyAlbum

    .

    Size

    )

    FROM

    (

    SELECT

    SUM

    (

    CAST

    (

    Bytes

    AS

    BIGINT

    )

    )

    AS

    Size

    FROM

    Track

    GROUP

    BY

    AlbumId

    )

    AS

    MyAlbum

    ;

    18, Liệt kê Id, tiêu đề và số bài hát trong mỗi Album. Sắp xếp theo số lượng bài hát giảm dần.

    1

    2

    3

    4

    5

    6

    7

    8

    SELECT

    AlbumId

    ,

    Title

    ,

    (

    SELECT

    COUNT

    (

    TrackId

    )

    FROM

    Track

    WHERE

    Track

    .

    AlbumId

    =

    Album

    .

    AlbumId

    )

    AS

    Track_Count

    FROM

    Album

    ORDER

    BY

    Track_Count

    DESC

    ;

    19, Liệt kê CustomerId, FirstName, LastName và Country của các khách hàng.

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    20, Truy vấn thông tin InvoiceId, FirstName, LastName, InvoiceDate và Total các hóa đơn của khách hàng tại Brazil. Sắp xếp kết quả theo thứ tự giảm dần giá trị hóa đơn.

    1

    2

    3

    4

    5

    6

    7

    8

    9

    SELECT

        

    I

    .

    InvoiceId

    ,

        

    CONCAT

    (

    C

    .

    FirstName

    ,

    ‘ ‘

    ,

    C

    .

    LastName

    )

    AS

    ‘FullName’

    ,

        

    I

    .

    InvoiceDate

    ,

        

    I

    .

    Total

    FROM

    Invoice

    AS

    I

    INNER

    JOIN

    Customer

    AS

    C

        

    ON

    I

    .

    CustomerId

    =

    C

    .

    CustomerId

    WHERE

    C

    .

    Country

    =

    ‘Brazil’

    ORDER

    BY

    I

    .

    Total

    DESC

    21, Liệt kê các nhân viên kinh doanh.

    1

    2

    3

    SELECT

    CONCAT

    (

    FirstName

    ,

    ‘ ‘

    ,

    LastName

    )

    AS

    ‘FullName’

    FROM

    Employee

    WHERE

    Title

    LIKE

    ‘%Sale%’

    22, Tính tổng giá trị hóa đơn trong năm 2009, 2010, 2011.

    1

    2

    3

    4

    5

    6

    SELECT

    YEAR

    (

    InvoiceDate

    )

    AS

    InvoiceYear

    ,

    SUM

    (

    Total

    )

    AS

    Total

    FROM

    Invoice

    WHERE

    YEAR

    (

    InvoiceDate

    )

    IN

    (

    2009

    ,

    2010

    ,

    2011

    )

    GROUP

    BY

    YEAR

    (

    InvoiceDate

    )

    23, Đếm số lượng items trong hóa đơn có id = 37.

    1

    2

    3

    SELECT

    COUNT

    (

    *

    )

    FROM

    InvoiceLine

    WHERE

    InvoiceId

    =

    37

    ;

    24, Đếm số lượng items của từng hóa đơn. Sắp xếp theo số lượng item giảm dần.

    1

    2

    3

    4

    SELECT

    InvoiceId

    ,

    COUNT

    (

    *

    )

    AS

    Items

    FROM

    InvoiceLine

    GROUP

    BY

    InvoiceId

    ORDER

    BY

    COUNT

    (

    *

    )

    DESC

    1

    2

    3

    4

    5

    26, Liệt kê tên Playlist và số lượng bài hát trong từng playlist

    1

    2

    3

    4

    SELECT

    Playlist

    .

    Name

    ,

    COUNT

    (

    PlaylistTrack

    .

    TrackId

    )

    AS

    Track_No

    FROM

    Playlist

    INNER

    JOIN

    PlaylistTrack

    ON

    Playlist

    .

    PlaylistId

    =

    PlaylistTrack

    .

    PlaylistId

    GROUP

    BY

    Playlist

    .

    Name

    27, Truy vấn thông tin nhân viên kinh doanh có doanh thu lớn nhất vào năm 2010.

    1

    2

    3

    4

    5

    6

    SELECT

    TOP

    (

    1

    )

    E

    .

    EmployeeId

    ,

    SUM

    (

    I

    .

    Total

    )

    AS

    Sales

    FROM

    Employee

    AS

    E

    INNER

    JOIN

    Customer

    AS

    C

    ON

    E

    .

    EmployeeId

    =

    C

    .

    SupportRepId

    INNER

    JOIN

    Invoice

    AS

    I

    ON

    C

    .

    CustomerId

    =

    I

    .

    CustomerId

    WHERE

    YEAR

    (

    I

    .

    InvoiceDate

    )

    =

    2010

    GROUP

    BY

    E

    .

    EmployeeId

    28, Truy vấn EmployeeId, FirstName, LastName và số lượng khách hàng của mỗi nhân viên.

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    SELECT

    EmployeeId

    ,

    CONCAT

    (

    FirstName

    ,

    ‘ ‘

    ,

    LastName

    )

    AS

    Fullname

    ,

    Support

    .

    Clients

    FROM

    Employee

    INNER

    JOIN

    (

    SELECT

    SupportRepId

    ,

    COUNT

    (

    *

    )

    AS

    Clients

    FROM

    Customer

    GROUP

    BY

    SupportRepId

    )

    AS

    Support

    ON

    Employee

    .

    EmployeeId

    =

    Support

    .

    SupportRepId

    29, Truy vấn thông tin 3 khách hàng chi tiêu nhiều nhất trong năm 2012.

    1

    2

    3

    4

    5

    6

    7

    8

    9

    SELECT

    *

    FROM

    Customer

    WHERE

    CustomerId

    IN

    (

    SELECT

    TOP

    (

    3

    )

    CustomerId

    FROM

    Invoice

    WHERE

    YEAR

    (

    InvoiceDate

    )

    =

    2012

    GROUP

    BY

    CustomerId

    ORDER

    BY

    SUM

    (

    Total

    )

    DESC

    )

    30, Truy vấn 3 thể loại được ưa chuộng nhất của cửa hàng.

    1

    2

    3

    4

    5

    6

    SELECT

    TOP

    (

    3

    )

    Genre

    .

    Name

    ,

    COUNT

    (

    *

    )

    AS

    Sales

    FROM

    InvoiceLine

    INNER

    JOIN

    Track

    ON

    InvoiceLine

    .

    TrackId

    =

    Track

    .

    TrackId

    INNER

    JOIN

    Genre

    ON

    Genre

    .

    GenreId

    =

    Track

    .

    GenreId

    GROUP

    BY

    Genre

    .

    Name

    ORDER

    BY

    Sales

    DESC

    31, Liệt kê tất cả thông tin trong bảng “Playlist”.

    1

    2

    SELECT

    *

    FROM

    Playlist

    32, Liệt kê tất cả các quốc tra trong bảng “Customer”. Mỗi giá trị chỉ in ra 1 lần duy nhất.

    1

    2

    SELECT

    DISTINCT

    Country

    FROM

    Customer

    33, Liệt kê tất cả các Track có tên tác giả (Composer) có từ ‘smith’ VÀ genreId = 3.

    1

    2

    3

    SELECT

    *

    FROM

    Track

    WHERE

    Composer

    LIKE

    ‘%smith%’

    AND

    GenreId

    =

    3

    34, Liệt kê thông tin của 5 hóa đơn có giá trị cao nhất trong năm 2012.

    1

    2

    3

    4

    SELECT

    TOP

    (

    5

    )

    *

    FROM

    Invoice

    WHERE

    YEAR

    (

    InvoiceDate

    )

    =

    2012

    ORDER

    BY

    Total

    DESC

    35, Tính tổng doanh thu của cửa hàng trong năm 2012.

    1

    2

    3

    SELECT

    SUM

    (

    total

    )

    AS

    ‘Total Income 2012’

    FROM

    Invoice

    WHERE

    YEAR

    (

    InvoiceDate

    )

    =

    2012

    36, Đếm số lượng bài hát của từng thể loại.

    1

    2

    3

    4

    SELECT

    Genre

    .

    Name

    AS

    Genre

    ,

    COUNT

    (

    *

    )

    AS

    Track

    _

    No

    FROM

    Track

    INNER

    JOIN

    Genre

    ON

    Track

    .

    GenreId

    =

    Genre

    .

    GenreId

    GROUP

    BY

    Genre

    .

    Name

    37, Liệt kê tất cả các bài hát (Track) thuộc thể loại nhạc ‘Rock’.

    1

    2

    3

    4

    SELECT

    Track

    .

    *

    FROM

    Track

    INNER

    JOIN

    Genre

    ON

    Track

    .

    GenreId

    =

    Genre

    .

    GenreId

    WHERE

    Genre

    .

    Name

    =

    ‘Rock’

    38, Liệt kê tên tất cả Album của Artist “AC/DC”.

    1

    2

    3

    4

    SELECT

    Album

    .

    Title

    AS

    Album

    ,

    Artist

    .

    Name

    AS

    Artist

    FROM

    Album

    INNER

    JOIN

    Artist

    ON

    Album

    .

    ArtistId

    =

    Artist

    .

    ArtistId

    WHERE

    Artist

    .

    Name

    =

    ‘AC/DC’

    39, Liệt kê tất cả thể loại.

    1

    2

    SELECT

    *

    FROM

    Genre

    40, Liệt kê tất cả các playlist.

    1

    2

    SELECT

    *

    FROM

    Playlist

    41, Liệt kê tất cả các nghệ sĩ.

    1

    2

    SELECT

    *

    FROM

    Artist

    42, Liệt kê tất cả các thành phố trong bảng Invoice. Mỗi giá trị chỉ được hiển thị 1 lần duy nhất.

    1

    2

    SELECT

    DISTINCT

    BillingCity

    FROM

    Invoice

    43, Liệt kê tất cả các quốc gia trong bảng Invoice. Mỗi giá trị chỉ được hiển thị 1 lần duy nhất

    1

    2

    SELECT

    DISTINCT

    BillingCountry

    FROM

    Invoice

    44, Liệt kê tất cả các quốc gia trong bảng Customer. Mỗi giá trị chỉ được hiển thị 1 lần duy nhất.

    1

    2

    SELECT

    DISTINCT

    Country

    FROM

    Customer

    45, Liệt kê tất cả các khách hàng tại ‘USA’ hoặc ‘Brazil’.

    1

    2

    3

    SELECT

    *

    FROM

    Customer

    WHERE

    Country

    =

    ‘USA’

    OR

    Country

    =

    ‘Brazil’

    46, Liệt kê tất cả các khách hàng tại thành phố ‘Toronto’, ‘Canada’.

    1

    2

    3

    SELECT

    *

    FROM

    Customer

    WHERE

    City

    =

    ‘Toronto’

    AND

    Country

    =

    ‘Canada’

    47, Liệt kê tất cả khách hàng có FirstName bắt đầu bằng chữ ‘h’ hoặc chữ ‘k’.

    1

    2

    3

    SELECT

    *

    FROM

    Customer

    WHERE

    FirstName

    LIKE

    ‘h%’

    OR

    FirstName

    LIKE

    ‘k%’

    48, Liệt kê các hóa đơn trong tháng 5 năm 2012.

    1

    2

    3

    SELECT

    *

    FROM

    Invoice

    WHERE

    InvoiceDate

    BETWEEN

    ‘2012-05-01’

    AND

    ‘2012-05-31’

    49, Liệt kê các hóa đơn có giá trị từ 5 – 10 USD.

    1

    2

    3

    SELECT

    *

    FROM

    Invoice

    WHERE

    Total

    BETWEEN

    5

    AND

    10

    50, Liệt kê các hóa đơn từ một trong những thành phố: ‘New York’, ‘Chicago’ và ‘Toronto’.

    1

    2

    3

    SELECT

    *

    FROM

    Invoice

    WHERE

    BillingCity

    IN

    (

    ‘New York’

    ,

    ‘Chicago’

    ,

    ‘Toronto’

    )

    51, Liệt kê 5 hóa đơn có giá trị lớn nhất.

    1

    2

    3

    SELECT

    TOP

    (

    5

    )

    *

    FROM

    Invoice

    ORDER

    BY

    Total

    DESC

    52, Liệt kê 5 bài hát có giá cao nhất.

    1

    2

    3

    SELECT

    TOP

    (

    5

    )

    *

    FROM

    Track

    ORDER

    BY

    UnitPrice

    DESC

    53, Liệt kê 5 bài hát có thời lượng dài nhất.

    1

    2

    3

    SELECT

    TOP

    (

    5

    )

    *

    FROM

    Track

    ORDER

    BY

    Milliseconds

    DESC

    54, Tính giá trị trung bình các hóa đơn.

    1

    2

    SELECT

    AVG

    (

    Total

    )

    FROM

    invoice

    55, Tính giá tiền trung bình các bài hát.

    1

    2

    SELECT

    AVG

    (

    UnitPrice

    )

    FROM

    Track

    56, Đếm tổng số lượng khách hàng.

    1

    2

    SELECT

    COUNT

    (

    *

    )

    FROM

    Customer

    57, Đếm số lượng bài hát theo từng AlbumId.

    1

    2

    3

    SELECT

    AlbumId

    ,

    COUNT

    (

    *

    )

    FROM

    Track

    GROUP

    BY

    AlbumId

    58, Đếm số lượng bài hát theo từng GenreId.

    1

    2

    3

    SELECT

    GenreId

    ,

    COUNT

    (

    *

    )

    FROM

    Track

    GROUP

    BY

    GenreId

    59, Đếm số lượng bài hát theo từng MediaTypeId.

    1

    2

    3

    SELECT

    MediaTypeId

    ,

    COUNT

    (

    *

    )

    FROM

    Track

    GROUP

    BY

    MediaTypeId

    60, Liệt kê tất cả bài hát thuộc thể loại nhạc ‘Pop’.

    1

    2

    3

    4

    SELECT

    *

    FROM

    Track

    INNER

    JOIN

    Genre

    ON

    Track

    .

    GenreId

    =

    Genre

    .

    GenreId

    WHERE

    Genre

    .

    Name

    =

    ‘Pop’

    61, Liệt kê tất cả bài hát thuộc album ‘Big Ones’.

    1

    2

    3

    4

    SELECT

    *

    FROM

    Track

    INNER

    JOIN

    Album

    ON

    Track

    .

    AlbumId

    =

    Album

    .

    AlbumId

    WHERE

    Album

    .

    Title

    =

    ‘Big Ones’

    62, Liệt kê tất cả bài hát có định dạng Media là ‘MPEG audio file’.

    1

    2

    3

    4

    SELECT

    *

    FROM

    Track

    INNER

    JOIN

    MediaType

    ON

    Track

    .

    MediaTypeId

    =

    MediaType

    .

    MediaTypeId

    WHERE

    MediaType

    .

    Name

    =

    ‘MPEG audio file’

    63, Liệt kê tất cả bài hát kèm theo tên Album tương ứng.

    1

    2

    3

    SELECT

    *

    FROM

    Track

    INNER

    JOIN

    Album

    ON

    Track

    .

    AlbumId

    =

    Album

    .

    AlbumId

    64, Liệt kê tất cả các Album kèm theo tên nghệ sĩ tương ứng.

    1

    2

    3

    SELECT

    *

    FROM

    Album

    INNER

    JOIN

    Artist

    ON

    Album

    .

    ArtistId

    =

    Album

    .

    AlbumId

    65, Liệt kê tất cả các hóa đơn kèm theo thông tin khách hàng tương ứng.

    1

    2

    3

    SELECT

    *

    FROM

    Invoice

    INNER

    JOIN

    Customer

    ON

    Invoice

    .

    CustomerId

    =

    Customer

    .

    CustomerId

    66, Liệt kê các thể loại (kèm số lượng bài hát tương ứng) có số lượng bài hát lớn hơn 100.

    1

    2

    3

    4

    5

    67, Liệt kê tên album (kèm số lượng bài hát tương ứng) có số lượng bài hát lớn hơn 15.

    1

    2

    3

    4

    5

    68, Liệt tên các loại Media (kèm số lượng bài hát tương ứng) có số lượng bài hát lớn hơn 200.

    1

    2

    3

    4

    5

     

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

  • Bài Tập Toán Lớp 2 Cơ Bản Và Nâng Cao Cho Bé
  • Hệ Mật Mã Khối Và Các Thuật Toán Mã Hóa Khối Kinh Điển: Des
  • Des Là Gì? Code Ví Dụ Des Bằng Java
  • Tài Liệu Bài Tập Về Diode Có Lời Giải, Bài Tập Diode Có Lời Giải
  • Bảo Hiểm Là Gì? Các Thuật Ngữ Cơ Bản Nhất Trong Bảo Hiểm Bạn Nên Biết
  • Bài Tập Sql Cơ Bản

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

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

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

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

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

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

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

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

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

    I

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

    II

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Câu 2:

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

    Chú ý: sử dụng cursor.

    Câu 3:

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

    Cụ thể như sau:

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

    –Them Column User3 vao table xswSlsOrdDet

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

    Câu 4:

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

    Câu 5:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    hàng là ở đâu?

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

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

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

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

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

    Share Like Download …

    3 Comments 33 Likes Statistics Notes

    12 hours ago   Delete Reply Block

    250 bai tap_kt_dien_tu_0295

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

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

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

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

    1. Hàm – Functions

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

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

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

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

    CREATE FUNCTION Ten_Ham ( [Danh_Sach_Cac_Tham_So] ) 

    RETURNS Kieu_Du_Lieu_Tra_Ve_Cua_Ham

    AS 

    BEGIN

       Cac_Cau_Lenh_Cua_Ham

    END

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

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

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

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

    CREATE  FUNCTION dbo.fuGetCurrYear () 

    RETURNS int

    AS 

    BEGIN

     RETURN   YEAR(getdate())

    END

     

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

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

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

     

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

    CREATE FUNCTION fuThu

    (

     @ngay DATETIME

    )

    RETURNS NVARCHAR(10)

    AS

         BEGIN

              DECLARE @KetQua NVARCHAR(10)

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

                            WHEN 1 THEN N’Chủ nhật’

                            WHEN 2 THEN N’Thứ hai’

                            WHEN 3 THEN N’Thứ ba’

                            WHEN 4 THEN N’Thứ tư’

                            WHEN 5 THEN N’Thứ năm’

                            WHEN 6 THEN N’Thứ sáu’

                            ELSE N’Thứ bảy’

                          END   

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

    END

    SELECT e.FirstName, e.LastName,

    dbo.fuThu(e.BirthDate) AS ThuOfBirth 

    FROM Employees e

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

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

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

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

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

    CREATE FUNCTION fuGetProducts

    (

     @CategoryID int

    )RETURNS TABLE

     AS

      RETURN

      (

       SELECT    

      Categories.CategoryID,

      Categories.CategoryName,

      Products.ProductName,

      Products.QuantityPerUnit,

      Products.UnitPrice

     FROM        

      Categories INNER JOIN

      Products ON Categories.CategoryID = Products.CategoryID

      WHERE Categories.Categor[email protected])

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

    SELECT CategoryID,

    CategoryName,

    ProductName,

    QuantityPerUnit,

    UnitPrice

    FROM  dbo.fuGetProducts(1)

     

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

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

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

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

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

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

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

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

    VT: điện thế nhiệt

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

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

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

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

    Điện trở DC

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

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

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

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

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

    Ví dụ 1-1

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

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

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

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

    Giải

    1. Trị số của R

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

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

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

    Ví dụ 1-2

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

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

    Giải

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

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

    Dòng điện AC là

    Điện áp AC là

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

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

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

    Đường tải (load line)

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

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

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

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

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

    Thay số vào, ta có

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

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

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

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

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

  • Bài Tập Hạch Toán Tiền Lương Có Lời Giải
  • Download Bai Tap Co Loi Giai Mon Ky Thuat So
  • Bài Tập Hiệu Điện Thế
  • Bài Tập Bjt Có Đáp Số
  • Bài Tập Tự Luận Arbitrage Quốc Tế Và Ngang Giá Lãi Suất (Có Đáp Án Tham Khảo)
  • Bài Tập C Có Lời Giải

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

  • Địa Chỉ Các Trang Web Hướng Dẫn Giải Bài Tập Cho Học Sinh Hay Nhất
  • Giải Sbt Toán 12 Bài 2: Mặt Cầu
  • Giải Sbt Toán 11 Bài 2: Dãy Số
  • Giải Sbt Toán 11 Bài 4: Cấp Số Nhân
  • Giải Sbt Toán 11 Bài 1: Quy Tắc Đếm
  • 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.
    2. Bài tập C cơ bản.
    3. Bài tập vòng lặp trong C.
    4. Bài tập C về mảng một chiều và mảng 2 chiều (ma trận).
    5. Bài tập C về chuỗi trong C.
    6. Bài tập C về đệ quy.
    7. Bài tập C về con trỏ.
    8. Bài tập C về các thuật toán sắp xếp.
    9. Bài tập C về Struct (Cấu trúc).
    10. Bài tập C về danh sách liên kết (Linked List).
    11. Bài tập C về đọc ghi file.

    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) { // so nguyen n < 2 khong phai la so nguyen to 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; } // hien thi he co so printf("%c", arr; // phan tich if (n % i == 0) { n = n / i; a = n; } // in ket qua ra man hinh 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); // phan tich so nguyen duong 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; // in ra man hinh cac so thuan nghich co 6 chu so 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; // kiem tra tinh thuan nghich 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) { // so nguyen n < 2 khong phai la so nguyen to 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 ---

  • Học Jquery Cơ Bản Và Nâng Cao
  • Bài Tập C/c++ Có Lời Giải Pdf
  • Tổng Hợp Bài Tập Javascript Có Code Mẫu
  • Tổng Hợp Các Bài Tập Javascript Cơ Bản Có Lời Giải 2022
  • Tổng Hợp Bài Tập Java Có Đáp Án Chi Tiết
  • Web hay
  • Links hay
  • Push
  • Chủ đề top 10
  • Chủ đề top 20
  • Chủ đề top 30
  • Chủ đề top 40
  • Chủ đề top 50
  • Chủ đề top 60
  • Chủ đề top 70
  • Chủ đề top 80
  • Chủ đề top 90
  • Chủ đề top 100
  • Bài viết top 10
  • Bài viết top 20
  • Bài viết top 30
  • Bài viết top 40
  • Bài viết top 50
  • Bài viết top 60
  • Bài viết top 70
  • Bài viết top 80
  • Bài viết top 90
  • Bài viết top 100