Tải bản đầy đủ (.pdf) (245 trang)

sql information technology

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.53 MB, 245 trang )

<span class='text_page_counter'>(1)</span><div class='page_container' data-page=1>

©NIIT <sub>Giới thiệu hệ quản trị cơ sở dữ liệu </sub> Bài 1 / Slide 1 of 26

<b> </b>

<b>Bài 1: Giới thiệu hệ quản trị cơ sở dữ liệu và mơ hình </b>



<b>dữ liệu </b>



<b> Định nghĩa hệ quản trị cơ sở dữ liệu (CSDL). </b>
<b> Người dùng của hệ quản trị cơ sở dữ liệu. </b>
<b> Mô tả sự cần thiết của cơ sở dữ liệu. </b>


<b> Các thành phần trong CSDL. </b>


<b> Xác </b> <b>định sự cần thiết của việc lên kế hoạch phát triển </b>


<b>CSDL. </b>


<b> Xác định các giai đoạn phát triển cơ sở dữ liệu. </b>


<b> Xác định hậu quả của việc phân tích thiết kế CSDL nếu thực </b>


<b>hiện không tốt. </b>


</div>
<span class='text_page_counter'>(2)</span><div class='page_container' data-page=2>

<b> </b>

<b>Giới thiệu về hệ quản trị cơ sở dữ liệu </b>



 <b>Cơ sở dữ liệu là tập hợp các bản ghi (record) thông tin. Một </b>


<b>trong những nhiệm vụ quan trọng của hệ thống máy tính là </b>
<b>lưu trữ và xử lý dữ liệu. </b>


<b> Hệ quản trị cơ sở dữ liệu (Database Management System </b>


<b>DBMS) được thiết kế để quản lý khối lượng dữ liệu rất lớn. </b>


<b>Mục đích chính của hệ quản trị CSDL là: </b>


<b>• Cung cấp mơi trường và công cụ để lưu trữ và truy xuất </b>


<b>dữ liệu từ cơ sở dữ liệu một cách hiệu quả. </b>


• <b>Lưu giữ thông tin về người dùng của hệ quản trị cơ sở </b>


</div>
<span class='text_page_counter'>(3)</span><div class='page_container' data-page=3>

©NIIT <sub>Giới thiệu hệ quản trị cơ sở dữ liệu </sub> Bài 1 / Slide 3 of 26

<b>Các </b>

<b>loại người dùng trong hệ quản trị CSDL </b>



<b>Có 3 loại người dùng cho hệ quản trị cơ sở dữ liệu: </b>


 <b>Người lập trình ứng dụng (Application Programmer): là </b>


<b>người phát triển ứng dụng để người dùng cuối có thể sử </b>
<b>dụng để tương tác với cơ sở dữ liệu. </b>


 <b>Người dùng cuối (End User): Người dùng cuối có thể </b>


<b>tương tác với cơ sở dữ liệu thơng qua chương trình ứng </b>
<b>dụng. </b>


 <b>Người quản trị cơ sở dữ liệu (Database administrator DBA): </b>


</div>
<span class='text_page_counter'>(4)</span><div class='page_container' data-page=4>

<b>Lý do dùng </b>

<b>hệ quản trị CSDL để lưu trữ </b>



 <b>Đầu tiên để lưu trữ dữ liệu người ta dùng hệ thống tập tin </b>


<b>để lưu trữ. Cách lưu trữ này thể hiện một số nhược điểm </b>


<b>sau: </b>


• <b>Dữ liệu lưu trữ bị dư thừa: Cùng một dữ liệu lưu ở </b>


<b>nhiều hơn 1 nơi khơng cần thiết. </b>


• <b>Dữ liệu khơng nhất qn: Do dữ liệu được lưu ở nhiều </b>


</div>
<span class='text_page_counter'>(5)</span><div class='page_container' data-page=5></div>
<span class='text_page_counter'>(6)</span><div class='page_container' data-page=6>

<b>Lý do dùng </b>

<b>hệ quản trị CSDL lưu trữ (tiếp theo) </b>


<b>Dùng hệ quản trị CSDL để lưu trữ có các ưu điểm như sau: </b>
<b>Giảm thiểu sự dư thừa dữ liệu </b>


<b> Tránh được sự không đồng nhất về dữ liệu </b>
 <b>Dữ liệu được chia sẻ. </b>


 <b>Dữ liệu sẽ được bảo mật an toàn hơn. </b>


</div>
<span class='text_page_counter'>(7)</span><div class='page_container' data-page=7>

©NIIT <sub>Giới thiệu hệ quản trị cơ sở dữ liệu </sub> Bài 1 / Slide 7 of 26


<b>Các thành </b>

<b>phần chức năng của hệ quản trị </b>


<b>CSDL </b>



<b>Hệ quản trị cơ sở dữ liệu có các thành phần chức năng như </b>
<b>sau: </b>


<b> Database manager: đây là thành phần chính của hệ quản trị </b>


<b>cơ sở dữ liệu. Thành phần này có nhiệm vụ đáp ứng các </b>
<b>lệnh truy vấn dữ liệu từ người dùng và đảm bảo tính nhất </b>
<b>quán của cơ sở dữ liệu. </b>



<b> File Manager: Thành phần này sẽ chịu trách nhiệm phục vụ </b>


<b>tất cả các yêu cầu về dữ liệu. Nó sẽ liên hệ với disk </b>
<b>manager để lấy các khối dữ liệu từ đĩa. </b>


<b> Disk Manager: đây là phần thực hiện việc quản lý dữ liệu ở </b>


</div>
<span class='text_page_counter'>(8)</span><div class='page_container' data-page=8></div>
<span class='text_page_counter'>(9)</span><div class='page_container' data-page=9>

©NIIT <sub>Giới thiệu hệ quản trị cơ sở dữ liệu </sub> Bài 1 / Slide 9 of 26

<b>Ngôn </b>

<b>ngữ truy vấn dữ liệu </b>



 <b>Để tương tác với dữ liệu được lưu trữ bên trong cơ sở dữ </b>


<b>liệu người dùng có thể dùng ngôn ngữ truy vấn dữ liệu </b>
<b>(Query language). Ngôn </b> <b>ngữ truy vấn dữ liệu có 3 dạng </b>
<b>sau: </b>


<b>• Ngơn ngữ định nghĩa dữ liệu ( Data Definition Language </b>


<b>DDL) </b>


<b>• Ngôn </b> <b>ngữ xử lý dữ liệu (Data Manipulation Language </b>


<b>DML) </b>


<b>• Ngơn </b> <b>ngữ điều khiển dữ liệu (Data Control Language </b>


</div>
<span class='text_page_counter'>(10)</span><div class='page_container' data-page=10>

<b>Lên </b>

<b>kế hoạch phát triển cơ sở dữ liệu </b>



<b> Lên kế hoạch phát triển cho hệ quản trị cơ sở dữ liệu là quá </b>



<b>trình </b> <b>chiến lược để tìm xem những thơng tin nào mà tổ </b>
<b>chức sẽ cần thiết cho thời gian tới. </b>


 <b>Lợi ích của việc lên kế hoạch phát triển database: </b>


<b>• Cho thấy rõ được tình trạng hiện tại của thơng tin được </b>


<b>lưu trong tổ chức. </b>


<b>• Tìm và điều chỉnh lại các yêu cầu về tài nguyên cho tổ </b>


<b>chức. </b>


<b>• Giúp cho phát </b> <b>triển được hệ quản trị CSDL đáp ứng </b>


<b>được các yêu cầu của tổ chức. </b>


<b>• Giúp cho việc lên kế hoạch hành động để đạt được các </b>


</div>
<span class='text_page_counter'>(11)</span><div class='page_container' data-page=11>

©NIIT <sub>Giới thiệu hệ quản trị cơ sở dữ liệu </sub> Bài 1 / Slide 11 of 26

<b>Quy trình phát </b>

<b>triển cơ sở dữ liệu</b>

<b> </b>



<b>Quy trình phát triển cơ sở dữ liệu bao gồm 6 giai đoạn: </b>


<b> Lên kế hoạch ban đầu: Trong giai đoạn này, công ty sẽ thu </b>


<b>thập thông tin về các ứng dụng đang dùng. </b>


<b> Nghiên cứu về tính khả thi: Trong giai đoạn này sẽ nghiên </b>



<b>cứu về tính khả thi của kỹ thuật, kinh tế và cách vận hành </b>
<b>CSDL. </b>


 <b>Định nghĩa các yêu cầu về CSDL: Giai đoạn này xác định </b>


</div>
<span class='text_page_counter'>(12)</span><div class='page_container' data-page=12>

<b>Quy trình phát </b>

<b>triển CSDL (tiếp theo) </b>



 <b>Thiết kế ở mức luận lý: Trong giai đoạn này sẽ thiết kế lược </b>


<b>đồ CSDL ở mức luận lý. </b>


 <b>Hiện thực: Trong giai đoạn này ta sẽ chọ hệ quản trị CSDL </b>


<b>và chuyển thiết kế từ mức luận lý sang hiện thực trên hệ </b>
<b>quản trị CSDL vừa chọn. </b>


 <b>Đánh giá và bảo trì cơ sở dữ liệu: sau khi thiết kế và hiện </b>


</div>
<span class='text_page_counter'>(13)</span><div class='page_container' data-page=13>

©NIIT <sub>Giới thiệu hệ quản trị cơ sở dữ liệu </sub> Bài 1 / Slide 13 of 26

<b>Hậu quả của việc phân tích, thiết kế và hiện thực </b>



<b>CSDL không </b>

<b>tốt </b>



 <b>Nếu ta phân tích, thiết kế và hiện thực CSDL khơng tốt, cơ </b>


<b>sở dữ liệu sẽ không hoạt động giống như ta mong đợi. Một </b>
<b>số nguyên nhân thường dẫn đến CSDL hoạt động sai như: </b>


• <b>Người dùng trực tiếp của CSDL không được xác định </b>



<b>đầy đủ khi phân tích và thiết kế. </b>


• <b>Dữ liệu được thu thập quá ít. </b>


• <b>Cơ sở dữ liệu khơng dễ dàng thay đổi để đáp ứng với </b>


</div>
<span class='text_page_counter'>(14)</span><div class='page_container' data-page=14>

<b>Mơ hình </b>

<b>dữ liệu </b>



<b> Mơ hình </b> <b>dữ liệu mô tả cách tổ chức dữ liệu bên trong </b>


<b>CSDL. </b>


<b> Mơ hình dữ liệu cịn mơ tả mối quan hệ dữ liệu và các ràng </b>


<b>buộc được định nghĩa trên dữ liệu đó. </b>


<b> Mơ hình dữ liệu được dùng rộng rãi nhất là mơ hình thực </b>


</div>
<span class='text_page_counter'>(15)</span><div class='page_container' data-page=15>

©NIIT <sub>Giới thiệu hệ quản trị cơ sở dữ liệu </sub> Bài 1 / Slide 15 of 26

<b>Mô hình </b>

<b>thực thể mối liên kết </b>



<b> Mơ hình thực thể mối liên kết dựa trên sự mô tả các đối tượng </b>


<b>trong thế giới thực gọi là các thực thể và các mối liên kết giữa </b>
<b>chúng. </b>


 <b>Sơ đồ dùng để hiện thực mơ hình thực thể mối liên kết gọi là sơ </b>


<b>đồ thực thể mối liên kết ERD (Entity Relationship Diagram). </b>



<b> Các thành phần của sơ đồ ERD: </b>
• <b>Thực thể </b>


</div>
<span class='text_page_counter'>(16)</span><div class='page_container' data-page=16></div>
<span class='text_page_counter'>(17)</span><div class='page_container' data-page=17>

©NIIT <sub>Giới thiệu hệ quản trị cơ sở dữ liệu </sub> Bài 1 / Slide 17 of 26

<b>Thực thể (Entity) </b>



 <b>Thực thể là các đối tượng, nơi chốn, con người… mà cần </b>


<b>lưu giữ thông tin. </b>


 <b>Thực thể được đặt tên và được vẽ trong hình chữ nhật. </b>


 <b>Thực thể có 2 loại là thực thể độc lập và thực thể phụ </b>


<b>thuộc. </b>


 <b>Thực thể phụ thuộc còn được gọi là thực thể yếu là thực </b>


<b>thể mà sự tồn tại của nó phụ thuộc vào một thực thể khác. </b>


 <b>Thực thể yếu được mơ tả bằng hình chữ nhật có các cạnh </b>


</div>
<span class='text_page_counter'>(18)</span><div class='page_container' data-page=18></div>
<span class='text_page_counter'>(19)</span><div class='page_container' data-page=19></div>
<span class='text_page_counter'>(20)</span><div class='page_container' data-page=20>

<b>Mối quan hệ </b>



 <b>Mối quan hệ thể hiện sự cộng tác giữa 2 thực thể. </b>


 <b>Mối quan hệ được thể hiện bằng hình thoi chính giữa có </b>


<b>tên quan hệ đó. </b>



 <b>Mối quan hệ có thể được tồn tại trên 2 thực thể hoặc trên </b>


<b>cùng 1 </b> <b>thực thể. Giữa hai thực thể có thể có nhiều mối </b>
<b>quan hệ. </b>


 <b>Mối quan hệ có 3 dạng </b>
<b>• Quan hệ 1 – 1 </b>


</div>
<span class='text_page_counter'>(21)</span><div class='page_container' data-page=21></div>
<span class='text_page_counter'>(22)</span><div class='page_container' data-page=22></div>
<span class='text_page_counter'>(23)</span><div class='page_container' data-page=23></div>
<span class='text_page_counter'>(24)</span><div class='page_container' data-page=24></div>
<span class='text_page_counter'>(25)</span><div class='page_container' data-page=25></div>
<span class='text_page_counter'>(26)</span><div class='page_container' data-page=26></div>
<span class='text_page_counter'>(27)</span><div class='page_container' data-page=27>

©NIIT <sub>Giới thiệu hệ quản trị cơ sở dữ liệu </sub> Bài 1 / Slide 27 of 26

<b>Thuộc tính </b>



 <b>Thuộc tính thể hiện đặt điểm của thực thể. </b>


 <b>Thuộc tính được thể hiện bằng hình elipse, với tên thuộc </b>


<b>tính được vẽ bên trong hình. Thuộc tính khóa được gạch </b>
<b>dưới. </b>


</div>
<span class='text_page_counter'>(28)</span><div class='page_container' data-page=28></div>
<span class='text_page_counter'>(29)</span><div class='page_container' data-page=29>

©NIIT <sub>Giới thiệu hệ quản trị cơ sở dữ liệu </sub> Bài 1 / Slide 29 of 26

<b>Tóm </b>

<b>tắt </b>



<b>Trong bài này bạn đã được học: </b>


<b> Định nghĩa hệ quản trị cơ sở dữ liệu (CSDL). </b>
<b> Người dùng của hệ quản trị cơ sở dữ liệu. </b>
<b> Mô tả sự cần thiết của cơ sở dữ liệu. </b>


<b> Các thành phần trong CSDL. </b>



<b> Xác định sự cần thiết của việc lên kế hoạch phát triển </b>


<b>CSDL. </b>


<b> Xác định các giai đoạn phát triển cơ sở dữ liệu. </b>


<b> Xác định hậu quả của việc phân tích thiết kế CSDL nếu </b>


<b>thực hiện không tốt. </b>


</div>
<span class='text_page_counter'>(30)</span><div class='page_container' data-page=30>

<b>Tóm tắt (tiếp theo) </b>



</div>
<span class='text_page_counter'>(31)</span><div class='page_container' data-page=31>

©NIIT <sub>Thiết kế cơ sở dữ liệu </sub> Bài 2 / Slide 1 of 26


<b> </b>

<b>Bài 2: Thiết kế cơ sở dữ liệu </b>



<b> </b>

<b>Giới thiệu hệ quản trị cơ sở dữ liệu quan hệ </b>



<b> </b>

<b>Một số hệ quản trị cơ sở dữ liệu quan hệ phổ biến </b>


<b> </b>

<b>Thiết kế cơ sở dữ liệu quan hệ từ sơ đồ ERD </b>



</div>
<span class='text_page_counter'>(32)</span><div class='page_container' data-page=32>

<b>Giới thiệu về hệ quản trị cơ sở dữ liệu quan hệ </b>



Một trong những phương pháp mơ hình hóa dữ liệu


được sử dụng thơng dụng là mơ hình quan hệ.



Trong mơ hình quan

hệ dữ liệu được lưu trữ ở cấu trúc


dạng bảng, mỗi bảng có nhiều dịng và cột.



</div>
<span class='text_page_counter'>(33)</span><div class='page_container' data-page=33>

©NIIT <sub>Thiết kế cơ sở dữ liệu </sub> Bài 2 / Slide 3 of 26



</div>
<span class='text_page_counter'>(34)</span><div class='page_container' data-page=34>

<b>Cấu trúc mơ hình quan hệ </b>



<b>Một bảng được gọi là một quan hệ (relation). </b>



<b>Một dòng trong bản được gọi là một bộ (tuple) </b>



<b>Một cột trong bảng gọi là một thuộc tính ( attribute). </b>


<b>Số lượng các cột trong bảng được gọi là bậc </b>



<b>(degree) </b>

<b>của bảng. </b>



<b>Một cột hoặc tập hợp một số cột xác định duy nhất </b>



</div>
<span class='text_page_counter'>(35)</span><div class='page_container' data-page=35>

©NIIT <sub>Thiết kế cơ sở dữ liệu </sub> Bài 2 / Slide 5 of 26


<b>Cấu trúc mô hình quan hệ (tiếp theo) </b>



<b>Miền trị (domain) của một cột là tập hợp các giá </b>



<b>trị mà cột đó có thể chứa. </b>



<b> Trong RDBMS, </b>

<b>nếu một cột không chứa bất kỳ </b>



</div>
<span class='text_page_counter'>(36)</span><div class='page_container' data-page=36></div>
<span class='text_page_counter'>(37)</span><div class='page_container' data-page=37>

©NIIT <sub>Thiết kế cơ sở dữ liệu </sub> Bài 2 / Slide 7 of 26


<b>Cấu trúc mơ hình quan hệ (tiếp theo) </b>



<b>Mối quan hệ giữa hai bảng được thể hiện bằng </b>




<b>dữ liệu giống nhau được lưu trữ ở hai bảng. </b>



<b>Nếu dữ liệu được lưu trữ trong một cột giống với </b>



<b>dữ liệu của cột là khóa chính trong bảng khác thì </b>


<b>cột này được gọi là khóa ngoại (foreign key). </b>



<b>Cặp khóa chính – khóa ngoại hình thành nên </b>



<b>quan </b>

<b>hệ cha và con giữa các bảng. </b>



<b> Hình </b>

<b>vẽ sau mơ tả mối quan hệ giữa khóa chính </b>



</div>
<span class='text_page_counter'>(38)</span><div class='page_container' data-page=38></div>
<span class='text_page_counter'>(39)</span><div class='page_container' data-page=39></div>
<span class='text_page_counter'>(40)</span><div class='page_container' data-page=40>

<b>Một số hệ quản trị cơ sở dữ liệu quan hệ </b>


 Oracle



 Microsoft SQL Server


 DB2



</div>
<span class='text_page_counter'>(41)</span><div class='page_container' data-page=41>

©NIIT <sub>Thiết kế cơ sở dữ liệu </sub> Bài 2 / Slide 11 of 26


<b>Chuyển đổi sơ đồ ER sang bảng </b>



<b>Một cơ sở dữ liệu được thiết kế bằng sơ đồ ER </b>



<b>sẽ được chuyển sang dạng bảng để hiện thực. </b>



<b>Sơ đồ ER bao gồm các phần tử: </b>


<b>Thực thể thường </b>




</div>
<span class='text_page_counter'>(42)</span><div class='page_container' data-page=42>

<b>Chuyển đổi sơ đồ ER sang bảng (tiếp theo) </b>


<b>Một thực thể được chuyển sang thành một bảng </b>


<b> Các </b>

<b>thuộc tính của thực thể chuyển sang thành </b>



</div>
<span class='text_page_counter'>(43)</span><div class='page_container' data-page=43>

©NIIT <sub>Thiết kế cơ sở dữ liệu </sub> Bài 2 / Slide 13 of 26

<b>Chuyển đổi sơ đồ ER sang bảng (tiếp theo) </b>



<b>Mối quan hệ trong sơ đồ ER được chuyển sang </b>



</div>
<span class='text_page_counter'>(44)</span><div class='page_container' data-page=44>

<b>Chuyển đổi sơ đồ ER sang bảng (tiếp theo) </b>



</div>
<span class='text_page_counter'>(45)</span><div class='page_container' data-page=45>

©NIIT <sub>Thiết kế cơ sở dữ liệu </sub> Bài 2 / Slide 15 of 26

<b>Chuyển đổi sơ đồ ER sang bảng (tiếp theo) </b>



</div>
<span class='text_page_counter'>(46)</span><div class='page_container' data-page=46>

<b>Chuyển đổi sơ đồ ER sang bảng (tiếp theo) </b>



</div>
<span class='text_page_counter'>(47)</span><div class='page_container' data-page=47>

©NIIT <sub>Thiết kế cơ sở dữ liệu </sub> Bài 2 / Slide 17 of 26

<b>Chuyển đổi sơ đồ ER sang bảng (tiếp theo) </b>



<b> Khóa chính cho </b>

<b>bảng mới sinh ra trong quan hệ </b>



</div>
<span class='text_page_counter'>(48)</span><div class='page_container' data-page=48>

<b>Chuyển đổi sơ đồ ER sang bảng (tiếp theo) </b>



</div>
<span class='text_page_counter'>(49)</span><div class='page_container' data-page=49>

©NIIT <sub>Thiết kế cơ sở dữ liệu </sub> Bài 2 / Slide 19 of 26

<b>Chuyển đổi sơ đồ ER sang bảng (tiếp theo) </b>



</div>
<span class='text_page_counter'>(50)</span><div class='page_container' data-page=50>

<b>Các </b>

<b>điều cần chú ý khi thiết kế cơ sở dữ liệu </b>



 Không

đưa ra thêm các thuộc tính mới khơng cần thiết.


Nếu có các thực thể nào có cùng thuộc tính thì ta có thể




</div>
<span class='text_page_counter'>(51)</span><div class='page_container' data-page=51></div>
<span class='text_page_counter'>(52)</span><div class='page_container' data-page=52>

<b>Các </b>

<b>điều cần chú ý khi thiết kế cơ sở dữ liệu (tiếp theo) </b>



</div>
<span class='text_page_counter'>(53)</span><div class='page_container' data-page=53>

©NIIT <sub>Thiết kế cơ sở dữ liệu </sub> Bài 2 / Slide 23 of 26


<b>Tóm </b>

<b>tắt </b>



Trong bài này

bạn đã được học:



Mơ hình

dữ liệu quan hệ



Hệ quản trị cơ sở dữ liệu quan hệ



Một số hệ quản trị cơ sở dữ liệu quan hệ


Khái

niệm khóa chính, khóa ngoại.



</div>
<span class='text_page_counter'>(54)</span><div class='page_container' data-page=54>

<b>Bài </b>

<b>tập </b>



Bài 1: Shopping Spree là

một cửa hàng bán hàng lưu


niệm ở New York, cửa hàng này có nhiều khách hàng


đến để mua hàng. Cửa hàng cần phải lưu thông tin


khách hàng và các giao

dịch mà khách hàng đã giao


dịch với cửa hàng. Hãy vẽ sơ đồ ER và chuyển sang


dạng bảng tương ứng.



</div>
<span class='text_page_counter'>(55)</span><div class='page_container' data-page=55>

©NIIT <sub>Truy vấn cơ sở dữ liệu </sub> Bài 3 / Slide 1 of 25


<b> </b>

<b>Bài 3: Truy vấn cơ sở dữ liệu </b>



<b>Mục tiêu: </b>



<b> </b>


 Các đặt điểm của mơ hình client – server
 Xác định dữ liệu vào của câu truy vấn


 Lên kế hoạch và tạo định dạng cho kết quả của câu truy vấn
 Dùng câu lệnh Select với tóan tử quan hệ


 Dùng câu lệnh Select với tóan tử luận lý


 Dùng câu lệnh Select với toán tử so sánh phần tử trong miền trị
 Dùng câu lệnh Select với toán tử so sánh phần tử với danh sách
 Dùng các hàm nhóm


</div>
<span class='text_page_counter'>(56)</span><div class='page_container' data-page=56>

<b>Đặt điểm của mơ hình client – server </b>



<b> Trong mơ hình Client – Server (Mơ hình khách – chủ) chức </b>


<b>năng của ứng dụng được chia làm 2 quá trình: quá trình </b>
<b>client và quá trình server. </b>


<b> Quá trình client xử lý dữ liệu nhập và giao diện người dùng </b>
<b> Quá trình server thực hiện tất cả những tác vụ liên quan về </b>


</div>
<span class='text_page_counter'>(57)</span><div class='page_container' data-page=57>

©NIIT <sub>Truy vấn cơ sở dữ liệu </sub> Bài 3 / Slide 3 of 25


<b>Ưu điểm của mơ hình client – server </b>



<b> Chia sẽ dữ liệu: Dữ liệu được lưu trữ tập trung tại một máy </b>



<b>chủ và được dùng chung cho toàn bộ người dùng của hệ </b>
<b>thống này. </b>


 <b>Giảm thiểu được sự dư thừa dữ liệu và thời gian bảo trì: Vì </b>


</div>
<span class='text_page_counter'>(58)</span><div class='page_container' data-page=58>

<b>Giới thiệu Microsoft SQL Server </b>



<b> MS SQL Server được Microsoft hiện thực dựa trên mơ hình </b>


<b>client – server. </b>


<b> MS SQL Server cung cấp rất nhiều đặt điểm cần thiết để </b>


<b>quản lý dữ liệu. Các đặt điểm nổi bậc là: </b>


• Hỗ trợ cơ chế truy xuất dữ liệu từ web.


• Dễ dàng mở rộng và nâng cấp khi dữ liệu cần lưu trữ lớn.
• Có độ tin cậy cao.


</div>
<span class='text_page_counter'>(59)</span><div class='page_container' data-page=59>

©NIIT <sub>Truy vấn cơ sở dữ liệu </sub> Bài 3 / Slide 5 of 25


<b>Giới thiệu về SQL Server (tiếp theo) </b>



<b> SQL Server cung cấp ngôn ngữ để truy xuất và quản lý dữ </b>


<b>liệu được lưu trữ trong SQL Server. Ngôn ngữ này được </b>
<b>gọi là Ngôn Ngữ truy vấn có cấu trúc (Structured Query </b>
<b>Language - SQL) </b>



<b> MS SQL Server còn cung cấp thêm các chức năng mở rộng </b>


<b>của ngôn ngữ SQL gọi là ngôn ngữ T-SQL (Transact SQL). </b>


<b> Các kiểu dữ liệu trong SQL Server: SQL Server lưu giữ dữ </b>


</div>
<span class='text_page_counter'>(60)</span><div class='page_container' data-page=60>

<b>Truy </b>

<b>vấn dữ liệu hiển thị một số cột trong bảng </b>



 Ví

dụ minh họa:



Các thông tin chi tiết về tuyển dụng được lưu trữ trên cơ sở dữ
liệu RECRUITMENT trong SQL Server. Các bảng chứa các
thông tin về ứng viên, về bằng cấp, địa chỉ liên lạc, thông tin về
vị trí cơng việc cần tuyển dụng, và các thơng tin khác được yêu
cầu bởi nhân viên tuyển dụng.


Hãy tạo ra một báo cáo bao gồm tên, thành phố, và số điện
thoại của các ứng viên bên ngịai cơng ty.


</div>
<span class='text_page_counter'>(61)</span><div class='page_container' data-page=61>

©NIIT <sub>Truy vấn cơ sở dữ liệu </sub> Bài 3 / Slide 7 of 25

<b>Các </b>

<b>bước để truy vấn dữ liệu </b>



<b> Xác định cấu trúc của kết quả câu lệnh truy vấn </b>
 <b>Viết câu truy vấn </b>


 <b>Thực thi câu truy vấn </b>


</div>
<span class='text_page_counter'>(62)</span><div class='page_container' data-page=62>

<b>Các </b>

<b>bước để truy vấn dữ liệu (tiếp theo) </b>



</div>
<span class='text_page_counter'>(63)</span><div class='page_container' data-page=63>

©NIIT <sub>Truy vấn cơ sở dữ liệu </sub> Bài 3 / Slide 9 of 25


<b>Các </b>

<b>bước để truy vấn dữ liệu (tiếp theo) </b>



<b>Viết câu truy vấn: </b>

Câu lệnh SQL để truy vấn dữ liệu có cú
pháp như sau:


SELECT [ALL | DISTINCT] select_column_list
[INTO [new_table_name]]


[FROM {table_name | view_name}[(optimizer_hints)]


[[,{table_name2 | view_name2}[(optimizer_hints)]
[WHERE clause]


</div>
<span class='text_page_counter'>(64)</span><div class='page_container' data-page=64>

<b>Các </b>

<b>bước để truy vấn dữ liệu (tiếp theo) </b>


<b>Viết câu truy vấn: </b>



SELECT vFirstName, vLastName, cCity, cPhone
FROM ExternalCandidate


<b>Chạy câu lệnh truy vấn: demo trên SQL Server. </b>



</div>
<span class='text_page_counter'>(65)</span><div class='page_container' data-page=65>

©NIIT <sub>Truy vấn cơ sở dữ liệu </sub> Bài 3 / Slide 11 of 25


<b>Hiển thị tên cột thân thiện </b>



<b> Ví </b>

<b>dụ minh họa: Viết câu query hiển thị tên của </b>



<b>nhà </b>

<b>tuyển dụng và mức phí để thuê nhà tuyển </b>


<b>dụng này làm việc. </b>




</div>
<span class='text_page_counter'>(66)</span><div class='page_container' data-page=66>

<b>Hiển thị tên cột thân thiện </b>



<b> Trong yêu cầu trên, kết quả của câu truy vấn dữ liệu có </b>


<b>hiển thị tên cột của bảng ở dạng thân thiện với người dùng. </b>


<b> Có hai cách để hiển thị dữ liệu ở dạng thân thiện: </b>
<i>• Cách 1: </i>


<i>SELECT column_heading=column_name[,column name…] </i>
<i>FROM table_name </i>


<i>• Method 2: </i>


<i>SELECT column_name column_heading </i>
<i>[,column_name…] </i>


</div>
<span class='text_page_counter'>(67)</span><div class='page_container' data-page=67>

©NIIT <sub>Truy vấn cơ sở dữ liệu </sub> Bài 3 / Slide 13 of 25


<b>Hiển thị tên cột thân thiện </b>



<b>Viết câu truy vấn yêu cầu theo hai cách đã học: </b>



• Cách 1:


SELECT 'Recruiter Name' = cName, 'Hire Charge' =


siPercentageCharge FROM ContractRecruiter



• Method 2:



SELECT cName 'Recruiter Name', siPercentageCharge


'Hire Charge' FROM ContractRecruiter



</div>
<span class='text_page_counter'>(68)</span><div class='page_container' data-page=68>

<b>Hiển thị một số dòng trong bảng </b>



 Viết câu truy vấn hiển thị danh sách các trường Đại Học và Cao
Đẳng trong bang California.


</div>
<span class='text_page_counter'>(69)</span><div class='page_container' data-page=69>

©NIIT <sub>Truy vấn cơ sở dữ liệu </sub> Bài 3 / Slide 15 of 25


<b>Hiển thị một số dòng trong bảng </b>



 Để giới hạn các dòng trả về trong SQL Server sử dụng câu lệnh
Select … From … Where. Câu lệnh này có cấu trúc như sau:


<i>SELECT column_list </i>
<i>FROM table_name </i>


<i>WHERE search_condition </i>


 Trong <i>đó chỉ có những dịng thỏa mãn điều kiện search_condition </i>
thì mới được trả về.


 Câu truy vấn được viết:


</div>
<span class='text_page_counter'>(70)</span><div class='page_container' data-page=70>

<b>Các toán </b>

<b>tử dùng trong mệnh đề Where </b>



 Trong SQL Server, điều kiện tìm kiếm trong mệnh đề WHERE có
thể dùng các tốn tử như sau:



• Tốn tử quan hệ: >, <, >=, <= …
• Tốn tử luận lý: and, or, not.


• Tốn tử trong so sánh trong miền trị: between … and


</div>
<span class='text_page_counter'>(71)</span><div class='page_container' data-page=71>

©NIIT <sub>Truy vấn cơ sở dữ liệu </sub> Bài 3 / Slide 17 of 25


<b>Hiển thị các dòng thỏa mãn nhiều điều kiện </b>



 Viết câu truy vấn hiển thị danh sách các ứng viên có điểm thi nằm
trong khỏang 80 -100.


</div>
<span class='text_page_counter'>(72)</span><div class='page_container' data-page=72>

©NIIT <sub>Truy vấn cơ sở dữ liệu </sub> Bài 3 / Slide 18 of 25


<b>Hiển thị các dòng thỏa mãn nhiều điều kiện </b>



 Cú pháp của câu lệnh truy vấn có dùng tóan luận lý:


<i>SELECT column_list </i>
<i>FROM table_name </i>


<i>WHERE conditional_expression{AND/OR} [NOT] </i>
<i>conditional_expression </i>


 Câu truy vấn theo yêu cầu được viết như sau:
SELECT vFirstName, vLastName, siTestScore
FROM ExternalCandidate


</div>
<span class='text_page_counter'>(73)</span><div class='page_container' data-page=73>

©NIIT <sub>Truy vấn cơ sở dữ liệu </sub> Bài 3 / Slide 19 of 25



<b>Toán </b>

<b>tử quan hệ </b>



 Toán tử quan hệ được dùng trong mệnh đề Where theo cú pháp
như sau:


SELECT column_list FROM table_name


WHERE expression1 comparison_operator expression2


 Ví dụ hiển thị mã các nhân viên có thu nhập hàng năm lớn hơn
40.000.


<b> select cEmployeeCode </b>


from AnnualSalary


</div>
<span class='text_page_counter'>(74)</span><div class='page_container' data-page=74>

©NIIT <sub>Truy vấn cơ sở dữ liệu </sub> Bài 3 / Slide 20 of 25

<b>Toán tử trong so sánh trong miền trị </b>



 Tốn tử so sánh trong miền trị có hai toán tử: BETWEEN và NOT
BETWEEN.


 Toán tử trong so sánh trong miền trị được dùng trong mệnh đề
Where theo cú pháp như sau:


SELECT column_list FROM table_name


WHERE expression1 range_operator expression2 AND expression3


 Ví dụ hiển thị mã các nhân viên có thu nhập hàng năm trong


khỏang 30.000 đến 40.000


select cEmployeeCode
from AnnualSalary


</div>
<span class='text_page_counter'>(75)</span><div class='page_container' data-page=75>

©NIIT <sub>Truy vấn cơ sở dữ liệu </sub> Bài 3 / Slide 21 of 25

<b>Toán tử trong so sánh phần tử với danh sách </b>



 Toán tử so sánh phần tử với danh sách có hai toán tử: IN và NOT
IN.


 Toán tử so sánh phần tử với danh sách có cú pháp như sau:
SELECT column_list FROM table_name


WHERE expression list_operator (‘value_list‘)


 Ví dụ: Hãy hiển thị thơng tin các trường Đại học thuộc 2 bang New
York và Texas:


select * from college



</div>
<span class='text_page_counter'>(76)</span><div class='page_container' data-page=76>

©NIIT <sub>Truy vấn cơ sở dữ liệu </sub> Bài 3 / Slide 22 of 25

<b>Sử dụng các hàm nhóm trong SQL </b>



 Yêu cầu: Viết câu truy vấn cho biết số lượng các báo đã từng
quảng cáo tuyển dụng cho công ty.


 SQL hỗ trợ các hàm tương tác với một tập hợp các giá trị trả về
của một cột. Các hàm này được gọi là hàm nhóm.



 Có một số các hàm nhóm như sau: AVG, SUM, COUNT, MAX,
MIN.


 Câu truy vấn dùng hàm count:


</div>
<span class='text_page_counter'>(77)</span><div class='page_container' data-page=77>

©NIIT <sub>Truy vấn cơ sở dữ liệu </sub> Bài 3 / Slide 23 of 25

<b>Chia kết quả trả về thành nhóm </b>



 Yêu cầu: Viết câu truy vấn cho biết số lần quảng cáo trên mỗi tờ
báo?


 SQL hỗ trợ chia kết quả ra làm nhiều nhóm nhỏ bằng mệnh đề
group by.


 Mệnh đề group by được sử dụng như sau:


<i>SELECT 'Newspaper Code' = cNewspaperCode, </i>
<i>'No. Of Advts. Placed' = COUNT(cNewspaperCode) </i>
<i>FROM NewsAd </i>


</div>
<span class='text_page_counter'>(78)</span><div class='page_container' data-page=78>

<b>Tóm </b>

<b>tắt </b>



Trong bài này

bạn đã được học:



<b> Các </b>đặt điểm của mơ hình client – server
 Xác định dữ liệu vào của câu truy vấn


 Lên kế hoạch và tạo định dạng cho kết quả của câu truy vấn
 Dùng câu lệnh Select với tóan tử quan hệ



 Dùng câu lệnh Select với tóan tử luận lý


 Dùng câu lệnh Select với toán tử so sánh phần tử trong miền trị
 Dùng câu lệnh Select với toán tử so sánh phần tử với danh sách
 Dùng các hàm nhóm


</div>
<span class='text_page_counter'>(79)</span><div class='page_container' data-page=79>

©NIIT <sub>Truy vấn cơ sở dữ liệu </sub> Bài 3 / Slide 25 of 25


<b>Bài </b>

<b>tập </b>



1. Kết nối vào database GlobalToyz.


2. Hiển thị thông tin chi tiết của tất cả các đồ chơi trong bảng toys.
3. Hiển thị thông tin chi tiết của tất cả những người mua hàng.


4. Hiển thị tên, họ, và e-mail ID của tất cả người đi mua hàng.
5. Hiển thị tên và giá của tất cả các đồ chơi.


6. Hiển thị tên, địa chỉ, và mã vùng của tất cả những người nhận
đồ chơi


7. Hiển thị họ và tên của những người mua hàng sống ở California.
8. Hiển thị chi tiết các hóa đơn có giá trị lớn hơn 75$.


</div>
<span class='text_page_counter'>(80)</span><div class='page_container' data-page=80>

<b> </b>

<b>Bài 4: Hàm và các kiểu kết nối và câu truy </b>


<b>vấn con </b>



<b>Mục tiêu: </b>


<b> </b>



 Cách dùng hàm xử lý chuỗi trong câu truy vấn
 Cách dùng hàm xử lý thời gian trong câu truy vấn
 Cách dùng hàm xử lý toán học trong câu truy vấn
 Sử dụng các kiểu kết nối inner join


 Sử dụng các kiểu kết nối outter join
 Sử dụng các kiểu kết nối self join
 Sử dụng câu truy vấn con


</div>
<span class='text_page_counter'>(81)</span><div class='page_container' data-page=81>

©NIIT <sub>Hàm và truy vấn dữ liệu </sub> Bài 4 / Slide 2 of 25


<b>Hiển thị kết quả câu truy vấn bằng chữ hoa </b>



 Trong SQL, nếu ta muốn kết quả của câu truy vấn được chuyển
sang toàn chữ hoa thì ta có thể dùng hàm upper.


 Cách dùng hàm trong câu lệnh select có cú pháp như sau:
SELECT function_name (parameters)


 Ví dụ demo:


Viết câu truy vấn hiển thị tên của tờ báo, tên người liên lạc và
số điện thoại liên lạc để công ty liên hệ quảng cáo. Tên của tờ
báo phải được hiển thị bằng chữ hoa.


</div>
<span class='text_page_counter'>(82)</span><div class='page_container' data-page=82>

<b>Một số hàm xử lý chuỗi cơ bản </b>



<b>ASCII </b> <b>STR </b> <b>REVERSE </b>


<b>NCHAR </b> <b>DIFFERENCE </b> <b>UNICODE </b>



<b>SOUNDEX </b> <b>QUOTENAME </b> <b>LOWER </b>


<b>CHAR </b> <b>STUFF </b> <b>RIGHT </b>


<b>PATINDEX </b> <b>LEFT </b> <b>UPPER </b>


<b>SPACE </b> <b>REPLICATE </b> <b>LTRIM </b>


<b>CHARINDEX </b> <b>SUBSTRING </b> <b>RTRIM </b>


</div>
<span class='text_page_counter'>(83)</span><div class='page_container' data-page=83>

©NIIT <sub>Hàm và truy vấn dữ liệu </sub> Bài 4 / Slide 4 of 25

<b>Hàm </b>

<b>xử lý ngày giờ (Datetime function) </b>



 Hàm xử lý ngày tháng được dùng để xử lý các giá trị về thời gian, thực
hiện một số phép tóan như cộng trừ thời gian hoặc có các hàm để lấy
một phần thơng tin của thời gian như: ngày, tháng, năm.


 Cách dùng hàm datetime trong câu <sub>lệnh select có cú pháp như sau: </sub>
SELECT datetime_function (parameters)


 Ví dụ demo:


Ngày hết hạn dự kiến tuyển dụng là 10 ngày từ khi bắt đầu quá trình
tuyển dụng. Viết câu truy vấn dữ liệu hiển thị mã trường, ngày bắt đầu
tuyển dụng, ngày hết hạn cho tất cả các trường mà công ty định tuyển
sinh viên.


SELECT cCollegeCode, dRecruitmentStartDate, 'Proposed Deadline' =
DATEADD(dd, 10, dRecruitmentStartDate)



</div>
<span class='text_page_counter'>(84)</span><div class='page_container' data-page=84>

<b>Một số hàm xử lý datetime </b>



<b>Tên hàm </b> <b>Tham số </b>


DATEADD (datepart, number, date)


DATEDIFF (datepart, date1, date2)


DATENAME (datepart, date)


DATEPART (datepart, date)


</div>
<span class='text_page_counter'>(85)</span><div class='page_container' data-page=85>

©NIIT <sub>Hàm và truy vấn dữ liệu </sub> Bài 4 / Slide 6 of 25


<b>Hàm toán </b>

<b>học </b>



 Hàm toán học dùng để thực hiện các phép tính trên giá trị trả về
của câu truy vấn


 Cách dùng hàm toán học trong câu lệnh select có cú pháp như
sau:


SELECT function_name (parameters)
 Ví dụ demo:


Viết câu truy vấn hiển thị tên, số điện thoại và điểm phỏng vấn
của ứng viên có tên là Helen. Điểm phải được làm tròn.


SELECT vFirstName, cPhone,'Score'= ROUND(79.9,0)


FROM ExternalCandidate


</div>
<span class='text_page_counter'>(86)</span><div class='page_container' data-page=86>

Một số hàm toán học cơ bản



<b>Tên hàm </b> <b>Tham số </b>


ABS (numeric_expression)


ACOS, ASIN,
<b>ATAN </b>


(float_expression)


COS, SIN,
<b>COT, TAN </b>


(float_expression)


<b>ROUND </b> (numeric_expression,


<b>length) </b>


</div>
<span class='text_page_counter'>(87)</span><div class='page_container' data-page=87>

©NIIT <sub>Hàm và truy vấn dữ liệu </sub> Bài 4 / Slide 8 of 25


<b>Kết nối (Join) </b>



 Toán

tử JOIN được dùng trong các câu truy vấn lấy


dữ liệu từ nhiều bảng trong cùng thời điểm.



 Cú pháp cho toán

tử JOIN như sau:




SELECT column_name, column_name [,column_name]


FROM table_name [CROSS|INNER|[LEFT | RIGHT]OUTER] JOIN
table_name


[ON table_name.ref_column_name join_operator
table_name.ref_column_name]


</div>
<span class='text_page_counter'>(88)</span><div class='page_container' data-page=88>

Join

(Tiếp theo)



 Có

nhiều kiểu kết nối khác nhau:



</div>
<span class='text_page_counter'>(89)</span><div class='page_container' data-page=89>

©NIIT <sub>Hàm và truy vấn dữ liệu </sub> Bài 4 / Slide 10 of 25


Hiển thị dữ liệu từ hai bảng dùng inner join



 Inner join được dùng để hiển thị dữ liệu từ hai hay nhiều bảng bằng
cách so sách giá trị của những cột giống nhau, nếu dòng nào có giá trị
của hai cột trên bằng nhau thì sẽ được hiển thị.


 Ví dụ minh họa:


Viết câu truy vấn hiển thị tên của ứng viên và tên của văn phòng tuyển
dụng ứng viên này?


SELECT 'Candidate Name'=vFirstName,'Recruitment Agency' = cName
FROM ExternalCandidate JOIN RecruitmentAgencies


ON



</div>
<span class='text_page_counter'>(90)</span><div class='page_container' data-page=90>

Kết nối dữ liệu dùng outter join



 Outter join hiển thị tất cả các dòng trên 1 bảng, riêng bảng còn lại chỉ hiển thị
những dịng được so trùng với bảng kia.


 Ví dụ minh họa:


Viết câu truy vấn hiển thị tên của ứng viên bên ngòai và tên của văn phòng
tuyển dụng cho ứng viên này nếu có.


SELECT vFirstName, vLastName, cName
FROM ExternalCandidate


LEFT OUTER JOIN RecruitmentAgencies ON


</div>
<span class='text_page_counter'>(91)</span><div class='page_container' data-page=91>

©NIIT <sub>Hàm và truy vấn dữ liệu </sub> Bài 4 / Slide 12 of 25


Kết nối dữ liệu trong cùng một bảng (Self Join)



 Self Join là kiểu kết nối mà một hàng trong bảng kết nối với hàng
khác trong cùng một bảng.


 Ví dụ minh họa:


SELECT t1.title,t2.title , t1.price


</div>
<span class='text_page_counter'>(92)</span><div class='page_container' data-page=92>

Câu truy

vấn con (Sub query)



 Câu truy vấn được dùng trong các lệnh SQL như SELECT, UPDATE,


INSERT và DELETE được gọi là câu truy vấn con.


 Câu truy <sub>vấn con được dùng để truy xuất dữ liệu từ một hoặc nhiều bảng </sub>
nên được dùng để thay thế toán tử Join.


 Câu truy vấn con còn được sử dụng trong các mệnh đề WHETE và
HAVING.


</div>
<span class='text_page_counter'>(93)</span><div class='page_container' data-page=93>

©NIIT <sub>Hàm và truy vấn dữ liệu </sub> Bài 4 / Slide 14 of 25


dụ minh họa câu truy vấn con



 Hãy viết câu truy vấn hiển thị tên các nhà tuyển dụng sống cùng thành phố
với ứng viên từ bên ngồi có tên: Barbara Johnson.


SELECT cName


FROM ContractRecruiter
WHERE cCity =


(SELECT cCity FROM ExternalCandidate


</div>
<span class='text_page_counter'>(94)</span><div class='page_container' data-page=94>

Câu truy

vấn con với mệnh đề IN



 Nếu câu truy vấn con trả về hơn 1 giá trị thì người ta phải dùng mệnh đề IN
thay cho tốn tử so sánh bằng (=)


 Ví dụ minh họa: Viết câu truy vấn trả về mã tác giã có sách bán được?
SELECT Au_Id



FROM TitleAuthor


</div>
<span class='text_page_counter'>(95)</span><div class='page_container' data-page=95>

©NIIT <sub>Hàm và truy vấn dữ liệu </sub> Bài 4 / Slide 16 of 25


Câu truy

vấn con với mệnh đề EXISTS



 Câu truy vấn con được dùng với mệnh đề EXISTS để kiểm tra sự
tồn tại của một dữ liệu nào đó hay khơng? Mệnh đề EXISTS trả về 2
giá trị TRUE hoặc FALSE.


 Ví dụ minh họa: Viết câu truy vấn trả về tên nhà xuất bản có xuất bản
sách thuộc thể loại business.


SELECT Pub_Name
FROM Publishers


</div>
<span class='text_page_counter'>(96)</span><div class='page_container' data-page=96>

Câu truy

vấn con được dùng với hàm nhóm



 Câu truy vấn con được dùng với hàm nhóm


 Ví dụ minh họa: Hiển thị tên các sách có tiền đặt trước lớn hơn số
tiền đặt trước trung bình của thể loại ‘Business’.


SELECT Title
FROM Titles


WHERE Advance > (SELECT AVG(Advance)
FROM Titles


</div>
<span class='text_page_counter'>(97)</span><div class='page_container' data-page=97>

©NIIT <sub>Hàm và truy vấn dữ liệu </sub> Bài 4 / Slide 18 of 25



Lưu kết quả câu truy vấn vào bảng



 Kết quả của câu truy vấn có thể được lưu vào bảng bằng mệnh đề
SELECT … INTO


 Ví dụ minh họa: Hãy viết câu truy vấn lưu thông tin các ứng viên bên
ngoài trong tháng 5 năm 2006 vào bảng tạm có tên là


TempExternalCandidate


SELECT * INTO tempExternalCandidate
FROM ExternalCandidate


</div>
<span class='text_page_counter'>(98)</span><div class='page_container' data-page=98>

Tóm

tắt



Trong bài này bạn đã học:


 Cách dùng hàm xử lý chuỗi trong câu truy vấn
 Cách dùng hàm <sub>xử lý thời gian trong câu truy vấn </sub>
 Cách dùng hàm xử lý toán học trong câu truy vấn
 <sub>Sử dụng các kiểu kết nối inner join </sub>


 Sử dụng các kiểu kết nối outter join
 <sub>Sử dụng các kiểu kết nối self join </sub>
 Sử dụng câu truy vấn con


 Sử dụng câu truy vấn con với mệnh đề IN
 <sub>Sử dụng câu truy vấn con với mệnh đề EXITS </sub>
 Sử dụng câu truy vấn con với hàm nhóm



</div>
<span class='text_page_counter'>(99)</span><div class='page_container' data-page=99>

©NIIT <sub>Hàm và truy vấn dữ liệu </sub> Bài 4 / Slide 20 of 25


Bài

tập



Bài 1: Viết câu truy vấn hiển thị tên, mô tả và đánh giá cho tất cả các đồ chơi trẻ
em, tuy nhiên chỉ hiển thị 40 ký tự đầu tiên của phần mô tả.


Bài 2: Viết câu truy vấn hiển thị các thông tin về trình trạng giao hàng theo mẩu
sau:


</div>
<span class='text_page_counter'>(100)</span><div class='page_container' data-page=100>

Bài

tập



Bài 4: Viết câu truy vấn hiển thị tên của tất cả các loại đồ chơi và tên
của thể loại mà nó thuộc về.


</div>
<span class='text_page_counter'>(101)</span><div class='page_container' data-page=101>

©NIIT <sub>Tạo bảng và các ràng buộc dữ liệu </sub> Bài 5 / Slide 1 of 25

<b> </b>

<b>Bài 5: Tạo bảng và các ràng buộc toàn vẹn dữ liệu </b>



<b>Mục tiêu của bài 5 </b>


 Tạo bảng


 Thêm dữ liệu vào bảng
 Xóa bảng


 Các kiểu ràng buộc tồn vẹn dữ liệu
 Các ràng buộc:


</div>
<span class='text_page_counter'>(102)</span><div class='page_container' data-page=102>

<b>Tạo bảng trong SQL </b>




 Trong SQL Server, bảng là một đối tượng của cơ sở dữ liệu
dùng để lưu trữ dữ liệu.


 Dữ liệu trong bảng được tổ chức thành dòng và cột.


 Mỗi dòng trong bảng thể hiện một bộ dữ liệu duy nhất và mỗi
cột thể hiện thuộc tính của bộ dữ liệu.


 Một bảng trong MS SQL có tối đa là 1024 cột.


</div>
<span class='text_page_counter'>(103)</span><div class='page_container' data-page=103>

©NIIT <sub>Tạo bảng và các ràng buộc dữ liệu </sub> Bài 5 / Slide 3 of 25


<b>Tạo bảng trong SQL (Tiếp theo) </b>



 Để tạo bảng trong SQL Server ta dùng câu lệnh CREATE
TABLE. Lệnh này có cú pháp như sau:


CREATE TABLE Tên_bảng
(


Tên_cột kiểu_dữ_liệu [NULL | NOT NULL]
[IDENTITY (SEED, INCREMENT)],


Tên_cột kiểu_dữ_liệu …
)[


</div>
<span class='text_page_counter'>(104)</span><div class='page_container' data-page=104>

<b>Tạo bảng trong SQL (Tiếp theo) </b>



 Ví dụ:



CREATE TABLE Sales
(


ItemCode char(4) NOT NULL,
ItemName char(10) NULL,
QtySold int NOT NULL,


</div>
<span class='text_page_counter'>(105)</span><div class='page_container' data-page=105>

©NIIT <sub>Tạo bảng và các ràng buộc dữ liệu </sub> Bài 5 / Slide 5 of 25


<b>Tạo bảng trong SQL (Tiếp theo) </b>



</div>
<span class='text_page_counter'>(106)</span><div class='page_container' data-page=106>

<b>Tạo bảng trong SQL (Tiếp theo) </b>



 Câu lệnh:


CREATE TABLE NewsPaper
(


</div>
<span class='text_page_counter'>(107)</span><div class='page_container' data-page=107>

©NIIT <sub>Tạo bảng và các ràng buộc dữ liệu </sub> Bài 5 / Slide 7 of 25


<b>Kiểm tra thông tin của bảng vừa tạo </b>



 Trong MS SQL Server, bạn có thể kiểm tra thông tin của bảng
vừa được tạo ra bằng câu lệnh:


sp_Help tên_bảng.


</div>
<span class='text_page_counter'>(108)</span><div class='page_container' data-page=108>

<b>Thêm </b>

<b>dữ liệu vào bảng </b>




 Sau khi tạo bảng, dữ liệu có thể được thêm vào bảng bằng câu
<b>lệnh INSERT </b>


 Cú pháp của câu lệnh INSERT như sau:
INSERT [INTO] tên_bảng [column_list]
VALUES (values_list)


 Câu lệnh thêm dữ liệu vào:
 INSERT Newspaper


VALUES('0001' ,'Texas Times', 'Texas', 'General', 'Jackson


</div>
<span class='text_page_counter'>(109)</span><div class='page_container' data-page=109>

©NIIT <sub>Tạo bảng và các ràng buộc dữ liệu </sub> Bài 5 / Slide 9 of 25


<b>Xóa </b>

<b>bảng ra khỏi cơ sở dữ liệu </b>



 Xóa bảng ra khỏi cơ sở dữ liệu dùng câu lệnh DROP TABLE.
Cú pháp của câu lệnh này như sau:


DROP TABLE Table_name


 Ví dụ: Xóa bảng Newspaper vừa mới tạo ra:
DROP TABLE newspaper


</div>
<span class='text_page_counter'>(110)</span><div class='page_container' data-page=110>

<b>Ràng </b>

<b>buộc toàn vẹn dữ liệu </b>



 Ràng buộc tồn vẹn đảm bảo tính nhất qn và đúng đắn của
dữ liệu được lưu trữ bên trong cơ sở dữ liệu. Ràng buộc toàn
vẹn được phân thành 4 loại:



• Ràng buộc thực thể.
• Ràng buộc miền trị


• Ràng buộc tham chiếu.


</div>
<span class='text_page_counter'>(111)</span><div class='page_container' data-page=111>

©NIIT <sub>Tạo bảng và các ràng buộc dữ liệu </sub> Bài 5 / Slide 11 of 25


<b>Ràng </b>

<b>buộc toàn vẹn dữ liệu (Tiếp theo) </b>



 Ràng buộc thực thể:


Là ràng buộc đảm bảo rằng một dòng được xác định duy nhất
bởi một hoặc nhiều thuộc tính gọi là khóa chính. Ràng buộc
thực thể được hiện thực bằng ràng buộc PRIMARY KEY.


 Ràng buộc miền trị:


</div>
<span class='text_page_counter'>(112)</span><div class='page_container' data-page=112>

<b>Ràng </b>

<b>buộc toàn vẹn dữ liệu (Tiếp theo) </b>



 Ràng buộc tham chiếu:


Là ràng buộc đảm bảo rằng giá trị của khóa ngoại được lưu trữ
phải là khóa chính trong bảng khác. Ràng buộc này được hiện
thực bằng ràng buộc PRIMARY KEY và FOREIGN KEY.


 Ràng buộc do người dùng định nghĩa:


</div>
<span class='text_page_counter'>(113)</span><div class='page_container' data-page=113>

©NIIT <sub>Tạo bảng và các ràng buộc dữ liệu </sub> Bài 5 / Slide 13 of 25


<b>Tạo ràng buộc </b>




 Ràng buộc được dùng để đảm bảo tính tồn vẹn của dữ liệu.
 Ràng buộc định nghĩa những luật mà dữ liệu phải tuân theo


nhằm đảo bảo tính nhất quán và đúng đắn của dữ liệu được lưu
trữ.


 Ràng buộc có thể được tạo ra khi bảng được tạo ra hoặc có thể
được thêm vào sau khi bảng đã được tạo ra.


 Ràng buộc có thể ở 2 tầm vực
• Tầm vực cột


</div>
<span class='text_page_counter'>(114)</span><div class='page_container' data-page=114>

<b>Tạo ràng buộc (Tiếp theo) </b>



 Cú pháp của câu lệnh tạo ràng buộc như sau:
CREATE TABLE tên_bảng


tên_cột CONSTRAINT tên_ràng buộc loại_ràng_buộc
[,CONSTRAINT tên_ràng_buộc loại_ràng_buộc]


 Cú pháp của câu lệnh thêm vào ràng buộc vào bảng đã có như
sau:


ALTER TABLE tên_bảng


</div>
<span class='text_page_counter'>(115)</span><div class='page_container' data-page=115>

©NIIT <sub>Tạo bảng và các ràng buộc dữ liệu </sub> Bài 5 / Slide 15 of 25


<b>Tạo ràng buộc (Tiếp theo) </b>




 Ví dụ:


ALTER TABLE Sales WITH NOCHECK


ADD CONSTRAINT chkQtySold CHECK (QtySold >0)


 Xóa ràng buộc dùng câu lệnh có cú pháp như sau:
ALTER TABLE tên_bảng


</div>
<span class='text_page_counter'>(116)</span><div class='page_container' data-page=116>

©NIIT <sub>Tạo bảng và các ràng buộc dữ liệu </sub> Bài 5 / Slide 16 of 25


<b>Tạo ràng buộc Primary Key </b>



 Ràng buộc PRIMARY KEY được định nghĩa trên một hay nhiều
cột mà giá trị của nó xác định duy nhất một dòng trong bảng.
 Cú pháp của ràng buộc này như sau:


[CONSTRAINT tên_ràng_buộc PRIMARY KEY
[CLUSTERED|NONCLUSTERED]


(tên_cột [, tên_cột [, tên_cột [, …]]])]
 Ví dụ:


CREATE TABLE Employee


</div>
<span class='text_page_counter'>(117)</span><div class='page_container' data-page=117>

©NIIT <sub>Tạo bảng và các ràng buộc dữ liệu </sub> Bài 5 / Slide 17 of 25


<b>Tạo ràng buộc UNIQUE </b>



 Ràng buộc UNIQUE dùng để đảm bảo tính duy nhất của một


cột hay nhiều cột cho các thuộc tính khơng phải là khóa chính.
 Có thể có nhiều ràng buộc UNIQUE được định nghĩa trên một


bảng.


 Ràng buộc UNIQUE có cú pháp như sau:


[CONSTRAINT tên_ràng_buộc UNIQUE [CLUSTERED |
NONCLUSTERED]


(tên_cột [, tên_cột[, tên_cột[, …]]])
 Ví dụ:


ALTER TABLE Employee


</div>
<span class='text_page_counter'>(118)</span><div class='page_container' data-page=118>

<b>Tạo ràng buộc FOREIGN KEY </b>



 Ràng buộc FOREIGN KEY được dùng để đảm bảo tính nhất
quán của hai bảng khi dữ liệu của bảng này phụ thuộc vào dữ
liệu của bảng kia.


 Cú pháp:


[CONSTRAINT tên_ràng_buộc FOREIGN KEY (tên_cột [,
tên_cột [, …]])


REFERENCES tên_bảng (column_name [, tên_cột [, …]])]
 Ví dụ:


ALTER TABLE Employee



ADD CONSTRAINT fkDepartmentCode FOREIGN KEY
(cDepartmentCode) REFERENCES


</div>
<span class='text_page_counter'>(119)</span><div class='page_container' data-page=119>

©NIIT <sub>Tạo bảng và các ràng buộc dữ liệu </sub> Bài 5 / Slide 19 of 25


<b>Tạo ràng buộc CHECK </b>



 Ràng buộc CHECK dùng để đảm bảo giá trị của cột thuộc về
một miền trị cho trước.


 Cú pháp:


[CONSTRAINT tên_ràng_buộc] CHECK (expression)
 Ví dụ:


CREATE TABLE ContractRecruiter
(…


cCity char(15) CONSTRAINT chkCity CHECK (cCity IN
('Berkeley', 'Boston', 'Chicago', 'Dallas', 'München', 'New
Jersey', 'NewYork', 'Paris', 'Washington'))


</div>
<span class='text_page_counter'>(120)</span><div class='page_container' data-page=120>

<b>Tạo ràng buộc DEFAULT </b>



 Ràng buộc DEFAULT dùng để gán giá trị mặt định cho cột khi
giá trị của cột đó khơng được xác định.


 Trên một cột, chỉ có tối đa 1 ràng buộc DEFAULT.
 Cú pháp:



[CONSTRAINT tên_ràng_buộc] DEFAULT
(constant_expression | NULL)


 Ví dụ:


ALTER TABLE Employee


</div>
<span class='text_page_counter'>(121)</span><div class='page_container' data-page=121>

©NIIT <sub>Tạo bảng và các ràng buộc dữ liệu </sub> Bài 5 / Slide 21 of 25


<b>Ví </b>

<b>dụ tạo ràng buộc </b>



 Hãy viết câu lệnh SQL tạo bảng Newspaper ở trên với một số
yêu cầu như sau:


• Thuộc tính cNewspaperCode phải là khóa chính.


• Thuộc tính cPhone có giá trị:
([0-9][0-9][0-9])[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]


• Thuộc tính cCountryCode có giá trị mặc định là ‘001’


 Trong bảng NewAd hãy sửa lại thuộc tính của bảng này như
sau:


• Thuộc tính cNewsAdNo là khóa chính


</div>
<span class='text_page_counter'>(122)</span><div class='page_container' data-page=122>

<b>Ví dụ tạo ràng buộc: </b>
CREATE TABLE Newspaper
(



cNewspaperCode typNewspaperCode CONSTRAINT
pkNewspaperCode PRIMARY KEY,


cNewspaperName char(20) NOT NULL,
vRegion varchar(20),
vTypeOfNewspaper varchar(20),
vContactPerson varchar(35),
vHOAddress varchar(35),
cCity char(20),
cState char(20),
cZip char(10),


cCountryCode char(3) CONSTRAINT defCountryCode
DEFAULT('001'),


cFax char(15),


cPhone char(15) CONSTRAINT chkPhone CHECK(cPhone
LIKE('([0-9][0- LIKE('([0-9][0-9])[0-LIKE('([0-9][0-LIKE('([0-9][0-9]-[0-LIKE('([0-9][0-LIKE('([0-9][0-LIKE('([0-9][0-9]'))


</div>
<span class='text_page_counter'>(123)</span><div class='page_container' data-page=123>

©NIIT <sub>Tạo bảng và các ràng buộc dữ liệu </sub> Bài 5 / Slide 23 of 25


<b>Ví </b>

<b>dụ tạo ràng buộc </b>



ALTER TABLE NewsAd


ADD CONSTRAINT pkNewsAdNo PRIMARY KEY
(cNewsAdNo)



ALTER TABLE NewsAd


ADD CONSTRAINT fkNewspaperCode FOREIGN KEY
(cNewspaperCode)REFERENCES


</div>
<span class='text_page_counter'>(124)</span><div class='page_container' data-page=124>

<b>Tóm </b>

<b>tắt </b>



Trong bài này bạn được học
 Tạo bảng


 Thêm dữ liệu vào bảng
 Xóa bảng


 Các kiểu ràng buộc tồn vẹn dữ liệu
 Các ràng buộc:


</div>
<span class='text_page_counter'>(125)</span><div class='page_container' data-page=125>

©NIIT <sub>Tạo bảng và các ràng buộc dữ liệu </sub> Bài 5 / Slide 25 of 25


<b>Tóm </b>

<b>tắt (Tiếp theo) </b>



Trong bài này bạn được học


 Tạo ràng buộc PRIMARY KEY
 Tạo ràng buộc FOREIGN KEY
 Tạo ràng buộc UNIQUE


</div>
<span class='text_page_counter'>(126)</span><div class='page_container' data-page=126>

<b>Bài </b>

<b>tập </b>



</div>
<span class='text_page_counter'>(127)</span><div class='page_container' data-page=127>

©NIIT <sub>Tạo bảng và các ràng buộc dữ liệu </sub> Bài 5 / Slide 27 of 25



<b>Bài </b>

<b>tập </b>



Bài 2: Tạo lại bảng colleges theo u cầu như sau:
• cCollegeCode phải là khóa chính


• Phone number phải có dạng
([0-9][0-9][0-9])[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]


• cCity phải có giá trị mặt định là New Orleans'


Bài 3: Tạo bảng CampusRecruitment (cCampusRecruitmentCode
char(4), cCollegeCode char(4), dRecruitmentStartDate


datetime, dRecruitmentEndDate datetime) thỏa mãn các điều
kiện:


• cCampusRecruitmentCode là khóa chính


</div>
<span class='text_page_counter'>(128)</span><div class='page_container' data-page=128>

<b>Ngơn ngữ lập trình- </b>


<b>Các Khái niệm, Giải thuật & Lưu đồ </b>



<b>Nội dung chính </b>



 Khái niệm chương trình và ngơn ngữ lập trình


 Chức năng của trình biên dịch, bộ liên kết và trình thơng dịch
 Cách chọn Ngơn ngữ lập trình


 Giải thuật và Lưu đồ



</div>
<span class='text_page_counter'>(129)</span><div class='page_container' data-page=129>

©NIIT


<b>Ngơn ngữ lập trình- </b>


<b>Các Khái niệm, Giải thuật & Lưu đồ </b>



Thế giới lập trình Bài 1 / Slide 2 of 23


<b>Chương trình</b>

<b> </b>


 Máy tính được thiết kế để nhận dữ liệu (Input), xử lý (Process) và
đưa ra kết quả (Output). Quá trình này còn được gọi là I-P-O.


 Tập hợp các lệnh để thực hiện một công việc được gọi là
chương trình (program).


 Nhiều chương trình kết hợp với nhau thành một ứng dụng
(application).


Input Output


</div>
<span class='text_page_counter'>(130)</span><div class='page_container' data-page=130>

<b>Ngơn ngữ lập trình- </b>


<b>Các Khái niệm, Giải thuật & Lưu đồ </b>



<b>Ngơn </b>

<b>ngữ lập trình </b>



 Ngơn ngữ lập trình là phương tiện truyền thơng giữa Lập trình viên và
máy tính.


</div>
<span class='text_page_counter'>(131)</span><div class='page_container' data-page=131>

©NIIT



<b>Ngơn ngữ lập trình- </b>


<b>Các Khái niệm, Giải thuật & Lưu đồ </b>



Thế giới lập trình Bài 1 / Slide 4 of 23


<b>Ngôn ngữ lập trình (tiếp theo) </b>


 Ngơn ngữ lập trình được chia làm 3 loại:
1. Ngơn ngữ máy:


• Từ vựng được tạo nên từ mã nhị phân 0-1 để tạo ra các câu lệnh, các chỉ dẫn nhằm yêu cầu


máy tính thực hiện một cơng việc nào đó.


• Các lệnh được máy tính thực hiện trực tiếp (khơng qua mã trung gian).


• Ngồi ngơn ngữ máy, các NNLT khác đều cần được dịch ra mã trung gian trước khi thực thi.


2. Ngôn ngữ Assembly:


• Cịn gọi là ngơn ngữ máy tính thế hệ thứ 2 là ngơn ngữ sử dụng bảng mã chữ cái và các ký


hiệu để đưa ra các chỉ dẩn


3. Ngôn ngữ cấp cao:


• Đây là ngơn ngữ thân thiện với người sử dụng vì dùng những từ ngữ thơng dụng tiếng Anh


</div>
<span class='text_page_counter'>(132)</span><div class='page_container' data-page=132>

<b>Ngơn ngữ lập trình- </b>


<b>Các Khái niệm, Giải thuật & Lưu đồ </b>




<b>Trình biên </b>

<b>dịch </b>



</div>
<span class='text_page_counter'>(133)</span><div class='page_container' data-page=133>

©NIIT


<b>Ngơn ngữ lập trình- </b>


<b>Các Khái niệm, Giải thuật & Lưu đồ </b>



Thế giới lập trình Bài 1 / Slide 6 of 23


<b>Trình biên </b>

<b>dịch (tiếp theo) </b>



</div>
<span class='text_page_counter'>(134)</span><div class='page_container' data-page=134>

<b>Ngôn ngữ lập trình- </b>


<b>Các Khái niệm, Giải thuật & Lưu đồ </b>



<b>Trình biên </b>

<b>dịch (tiếp theo) </b>



 Khi trình biên dịch dịch một chương trình, nó sẽ kiểm tra Từ vựng và Cú
pháp các câu lệnh.


 Nếu trình biên dịch tìm thấy lỗi trong chương trình nguồn thì nó sẽ hiển
thị danh sách các lỗi.


</div>
<span class='text_page_counter'>(135)</span><div class='page_container' data-page=135>

©NIIT


<b>Ngơn ngữ lập trình- </b>


<b>Các Khái niệm, Giải thuật & Lưu đồ </b>



Thế giới lập trình Bài 1 / Slide 8 of 23



<b>Bộ liên kết </b>



 <sub>Mỗi NNLT sẽ có các thư viện chứa các từ khóa với các chức năng được định </sub>
nghĩa trước. Người lập trình sẽ sử dụng những từ khóa này kết hợp với các cú
pháp để viết chương trình.


 Khi dịch, trình biên dịch sẽ sinh ra mã trung gian.


 Để sinh mã thực thi từ mã trung gian thì chức năng của các từ khóa (lưu trong
các thư viện) và các thư viện cũng cần được đưa vào mã trung gian.


</div>
<span class='text_page_counter'>(136)</span><div class='page_container' data-page=136>

<b>Ngơn ngữ lập trình- </b>


<b>Các Khái niệm, Giải thuật & Lưu đồ </b>



<b>Bộ liên kết (tiếp theo) </b>



</div>
<span class='text_page_counter'>(137)</span><div class='page_container' data-page=137>

©NIIT


<b>Ngơn ngữ lập trình- </b>


<b>Các Khái niệm, Giải thuật & Lưu đồ </b>



Thế giới lập trình Bài 1 / Slide 10 of 23


<b>Trình thơng dịch </b>


 <sub>Một số ngơn ngữ lập trình cấp cao sử dụng cơ chế dịch khác gọi là thông dịch. </sub>
Chương trình dịch theo cơ chế này được gọi là trình thơng dịch.


 Trình thơng <sub>dịch sẽ đọc một lệnh được viết bằng ngơn ngữ lập trình cấp cao, </sub>
chuyển sang mã máy, thực thi câu lệnh này và khơng lưu mã trung gian.



 Chương trình thực thi dùng trình thơng dịch sẽ tiết kiệm được thời gian hơn
trình biên dịch.


 Trình thơng dịch cũng giúp cho việc dị tìm lỗi dễ dàng hơn vì nó chỉ ra chính
xác những dịng nào phát sinh lỗi.


</div>
<span class='text_page_counter'>(138)</span><div class='page_container' data-page=138>

<b>Ngơn ngữ lập trình- </b>


<b>Các Khái niệm, Giải thuật & Lưu đồ </b>



<b>Ví </b>

<b>dụ về các ngơn ngữ lập trình cấp cao </b>



 Một số ngơn ngữ lập trình cao cấp là:
• BASIC


• Pascal
• C


• Java
ã C#


</div>
<span class='text_page_counter'>(139)</span><div class='page_container' data-page=139>

âNIIT


<b>Ngụn ng lp trỡnh- </b>


<b>Các Khái niệm, Giải thuật & Lưu đồ </b>



Thế giới lập trình Bài 1 / Slide 12 of 23


<b>Lựa chọn ngôn ngữ lập trình </b>



 <sub>Một số các yếu tố khi lựa chọn ngơn ngữ lập trình: </sub>


• Tiêu chí 1: lựa chọn đầu tiên là tùy thuộc vào loại ứng dụng cần phát triển.
Ví dụ:


- Tạo ra chương trình thực hiện các phép tốn đơn giản (+ - * /) ta có thể sử
dụng Pascal.


- Để phát triển ứng dụng dùng trong gia đình hoặc doanh nghiệp nhỏ có thể
dùng Visual BASIC


• Tiêu chí 2: Nếu có nhiều ngơn ngữ phù hợp để phát triển ứng dụng thì bạn nên
chọn ngôn ngữ mà bạn thông thạo nhất.


</div>
<span class='text_page_counter'>(140)</span><div class='page_container' data-page=140>

<b>Ngơn ngữ lập trình- </b>


<b>Các Khái niệm, Giải thuật & Lưu đồ </b>



<b>Giải thuật và Lưu đồ </b>



 Giải thuật là một trình tự thực hiện cơng việc nào đó.
 Lưu đồ là sự biểu diễn đồ hoạ của giải thuật.


</div>
<span class='text_page_counter'>(141)</span><div class='page_container' data-page=141>

©NIIT


<b>Ngơn ngữ lập trình- </b>


<b>Các Khái niệm, Giải thuật & Lưu đồ </b>



Thế giới lập trình Bài 1 / Slide 14 of 23


<b>Giải thuật và Lưu đồ (tt) </b>




<b> Các ký hiệu được sử dụng trong lưu đồ: </b>
• Nhập – Input


• Xử lý – Process


• Quyết định – Decision
• Thủ tục – Procedure


</div>
<span class='text_page_counter'>(142)</span><div class='page_container' data-page=142>

<b>Ngơn ngữ lập trình- </b>


<b>Các Khái niệm, Giải thuật & Lưu đồ </b>



<b>Giải thuật và Lưu đồ (tt) </b>



<b> Các ký hiệu được sử dụng trong lưu đồ (tt): </b>
• Bắt đầu và Kết thúc – Start and Stop


• Kết nối trên cùng một trang – On page connector
• Kết nối ở trang khác – Off page connector


</div>
<span class='text_page_counter'>(143)</span><div class='page_container' data-page=143>

©NIIT


<b>Ngơn ngữ lập trình- </b>


<b>Các Khái niệm, Giải thuật & Lưu đồ </b>



Thế giới lập trình Bài 1 / Slide 16 of 23


<b>Giải thuật và Lưu đồ (tiếp </b>


<b>theo) </b>




</div>
<span class='text_page_counter'>(144)</span><div class='page_container' data-page=144>

<b>Ngơn ngữ lập trình- </b>


<b>Các Khái niệm, Giải thuật & Lưu đồ </b>



<b>Giải thuật và Lưu đồ </b>


<b>(tiếp theo) </b>



</div>
<span class='text_page_counter'>(145)</span><div class='page_container' data-page=145>

©NIIT


<b>Ngơn ngữ lập trình- </b>


<b>Các Khái niệm, Giải thuật & Lưu đồ </b>



</div>
<span class='text_page_counter'>(146)</span><div class='page_container' data-page=146>

<b>Ngơn ngữ lập trình- </b>


<b>Các Khái niệm, Giải thuật & Lưu đồ </b>



<b>Các qui </b>

<b>tắc vẽ lưu đồ </b>



 American National Standards Institute (ANSI) đề nghị một số qui luật cần
phải tuân theo khi vẽ lưu đồ như sau:


• Tồn bộ lưu đồ nên được biểu diễn bằng ký hiệu chuẩn.
• Lưu đồ nên rõ ràng, chính xác và dễ theo dõi.


• Lưu đồ chỉ nên có một điểm bắt đầu và một điểm kết thúc.


</div>
<span class='text_page_counter'>(147)</span><div class='page_container' data-page=147>

©NIIT


<b>Ngơn ngữ lập trình- </b>


<b>Các Khái niệm, Giải thuật & Lưu đồ </b>



Thế giới lập trình Bài 1 / Slide 20 of 23



<b>Các qui </b>

<b>tắc vẽ lưu đồ (tiếp theo) </b>



• Ký hiệu bắt đầu và kết thúc chỉ nên có một đường kết nối duy nhất.
• Ký hiệu nhập dữ liệu, xử lý, xuất dữ liệu, hiển thị nên có hai đường


kết nối để nối ký hiệu đứng trước và đứng sau chúng.


• Ký hiệu quyết định nên có một đường kết nối với ký hiệu trước nó và
có hai đường kết nối đến hai ký hiệu đứng sau nó.


</div>
<span class='text_page_counter'>(148)</span><div class='page_container' data-page=148>

<b>Ngơn ngữ lập trình- </b>


<b>Các Khái niệm, Giải thuật & Lưu đồ </b>



<b>Điểm mạnh của lưu đồ </b>



 Lưu đồ là phương pháp tốt để truyền đạt lập luận của giải thuật.
 Lưu đồ giúp phân tích vấn đề một cách hiệu quả.


 <sub>Lưu đồ đóng vai trị như người hướng dẫn trong giai đoạn phát triển </sub>
chương trình.


 Dễ tìm và sửa lỗi bằng lưu đồ.


</div>
<span class='text_page_counter'>(149)</span><div class='page_container' data-page=149>

©NIIT


<b>Ngơn ngữ lập trình- </b>


<b>Các Khái niệm, Giải thuật & Lưu đồ </b>



Thế giới lập trình Bài 1 / Slide 22 of 23



<b>Điểm yếu của lưu đồ </b>



 Lưu đồ dài có thể trãi ra trên nhiều trang, làm giảm tính dễ đọc.


 Việc vẽ lưu đồ bằng các công cụ đồ hoạ là việc làm tốn nhiều thời gian.
 Thay <sub>đổi chỉ một bước nào đó có thể dẫn đến việc vẽ lại toàn bộ lưu đồ. </sub>
 Lưu đồ biểu diễn giải thuật phức tạp có thể chứa rất nhiều đường kết


</div>
<span class='text_page_counter'>(150)</span><div class='page_container' data-page=150>

<b>Ngôn ngữ lập trình- </b>


<b>Các Khái niệm, Giải thuật & Lưu đồ </b>



<b>Tóm tắt </b>


 Tập hợp các lệnh để thực hiện một công việc được gọi là chương trình


(program).


 <sub>Một số các chương trình kết hợp với nhau thành một ứng dụng (application). </sub>


 Ngơn <sub>ngữ lập trình là phương tiện giao tiếp giữa người lập trình và máy tính. </sub>


 Trình biên <sub>dịch là chương trình dịch chương trình nguồn viết bằng ngôn ngữ cấp </sub>


cao sang ngôn ngữ máy.


 <sub>Bộ liên kết thực hiện việc kết nối chức năng của các từ khóa và các thư viện </sub>


được dùng vào mã trung gian.



 Trình thơng dịch là chương trình dịch từng câu lệnh trong chương trình nguồn


sang mã máy, thực thi câu lệnh và không lưu mã trung gian.


</div>
<span class='text_page_counter'>(151)</span><div class='page_container' data-page=151>

©NIIT


<b>Ngơn ngữ lập trình- </b>


<b>Các Khái niệm, Giải thuật & Lưu đồ </b>



Thế giới lập trình Bài 1 / Slide 24 of 23


<b>Bài </b>

<b>tập đề nghị: </b>



<b>1. Bài 1 </b>


Vẽ lưu đồ nhập vào họ tên và tuổi của sinh viên, nếu số tuổi nhập vào
âm hay bằng khơng thì thơng báo “Tuổi khơng thể <= 0”,


Nếu tuổi là dương thì hiển thị tên và tuổi của Sinh viên đó
<b>2. Bài 2 </b>


</div>
<span class='text_page_counter'>(152)</span><div class='page_container' data-page=152>

<b>Ngơn ngữ lập trình- </b>


<b>Các Khái niệm, Giải thuật & Lưu đồ </b>



<b>Địa chỉ nhận nội dung bài giảng và bài tập: </b>



<b> </b>


<b>Góp ý hoặc trao đổi: </b>




</div>
<span class='text_page_counter'>(153)</span><div class='page_container' data-page=153>

©NIIT


<b>Ngơn ngữ lập trình - </b>


<b>Mã giả, Biến và Toán tử </b>



Thế giới lập trình Bài 2 / Slide 1 of 23


<b>Nội dung chính </b>



 Khái niệm mã giả - pseudocode
 Biến và vai trò của biến


 Mô tả các kiểu dữ liệu khác nhau


</div>
<span class='text_page_counter'>(154)</span><div class='page_container' data-page=154>

<b>Ngơn ngữ lập trình - </b>


<b>Mã giả, Biến và Toán tử </b>



<b>Khái </b>

<b>niệm Mã giả (</b>

<b>pseudocode</b>

<b>) </b>



 Mã

giả là cách sử dụng các từ ngữ tiếng Anh đơn



giản để mô tả thuật tốn



 Mã

giả có thể dùng để thay thế lưu đồ



 Các câu

lệnh trong Mã giả sử dụng từ tiếng Anh đơn



giản và thể hiện trình tự cơng việc thực hiện



Những từ khóa của Mã giả:




<b> begin…end </b>
<b> accept </b>


</div>
<span class='text_page_counter'>(155)</span><div class='page_container' data-page=155>

©NIIT


<b>Ngơn ngữ lập trình - </b>


<b>Mã giả, Biến và Tốn tử </b>



Thế giới lập trình Bài 2 / Slide 3 of 23


<b>Giới thiệu về biến </b>


 Bộ nhớ máy tính dùng để lưu dữ liệu người sử dụng cung cấp,
các lệnh của chương trình sẽ xử lý dữ liệu này và sinh ra kết
quả tương ứng.


 Bộ nhớ trong bao gồm nhiều vị trí khác nhau, và ở mỗi vị trí này
sẽ chứa dữ liệu được lưu trữ tương ứng.


</div>
<span class='text_page_counter'>(156)</span><div class='page_container' data-page=156>

<b>Ngơn ngữ lập trình - </b>


<b>Mã giả, Biến và Toán tử </b>


<b>Giới thiệu về biến ( tiếp theo ) </b>



Dữ liệu lưu trong bộ nhớ mà khơng thay đổi lúc



chương trình thực hiện gọi là hằng trị (literal)



Hằng trị được phân thành hai loại chính:




• Ký số, ví dụ như 20, 15 và 89.25.


</div>
<span class='text_page_counter'>(157)</span><div class='page_container' data-page=157>

©NIIT


<b>Ngơn ngữ lập trình - </b>


<b>Mã giả, Biến và Tốn tử </b>



Thế giới lập trình Bài 2 / Slide 5 of 23


<b>Giới thiệu về biến (tiếp theo) </b>


</div>
<span class='text_page_counter'>(158)</span><div class='page_container' data-page=158>

<b>Ngơn ngữ lập trình - </b>


<b>Mã giả, Biến và Toán tử </b>



<b>Kiểu dữ liệu </b>


 Số bytes trong bộ nhớ được dùng để lưu trữ biến tùy thuộc vào
kiểu dữ liệu chứa trong biến. Kiểu của dữ liệu chứa trong biến
<i>được gọi là kiểu dữ liệu. </i>


 Có hai kiểu dữ liệu cơ bản là:


• Kiểu số (Numeric): Biến thuộc kiểu Numeric chỉ có thể chứa
được giá trị số.


</div>
<span class='text_page_counter'>(159)</span><div class='page_container' data-page=159>

©NIIT


<b>Ngơn ngữ lập trình - </b>


<b>Mã giả, Biến và Toán tử </b>




Thế giới lập trình Bài 2 / Slide 7 of 23


<b>Khai báo </b>

<b>biến </b>



Biến phải được khai báo trước khi được sử dụng.



 Khi khai báo

biến, trình biên dịch sẽ thực hiện các



hành

động như sau:



• Cấp phát vị trí bộ nhớ cho biến.
• Gán tên cho biến.


</div>
<span class='text_page_counter'>(160)</span><div class='page_container' data-page=160>

<b>Ngơn ngữ lập trình - </b>


<b>Mã giả, Biến và Toán tử </b>


<b>Khai báo </b>

<b>biến ( tiếp theo) </b>



 Khi khai báo

biến bạn phải đặt tên cho biến, sau đây



một số gợi ý thông thường mà bạn nên tuân thủ



khi

đặt tên biến:



• Ký tự đầu tiên của tên biến nên mô tả kiểu dữ liệu của biến,
nếu là kiểu numeric thì ký tự đầu tiên là n, nếu là kiểu
Character thì ký tự đầu tiên là c. Ví dụ nAge, cName.


</div>
<span class='text_page_counter'>(161)</span><div class='page_container' data-page=161>

©NIIT


<b>Ngơn ngữ lập trình - </b>



<b>Mã giả, Biến và Toán tử </b>



Thế giới lập trình Bài 2 / Slide 9 of 23


<b>Khai báo </b>

<b>biến ( tiếp theo ) </b>



• Tên biến khơng nên có các ký tự đặc biệt như ! @ # $ % ^ &
* ( ) { } [ ] . , : ; “ ‘ / và \. Nếu tên biến có khoảng trắng, bạn có
thể dùng dấu gạch dưới để nối hai từ lại với nhau ví dụ như
nBasic_Salary.


</div>
<span class='text_page_counter'>(162)</span><div class='page_container' data-page=162>

<b>Ngơn ngữ lập trình - </b>


<b>Mã giả, Biến và Toán tử </b>


<b>Gán giá </b>

<b>trị vào biến </b>



Tất cả các biến đều phải được gán cho giá trị trước



khi

sử dụng.



Bạn phải đảm bảo rằng biến phải được gán giá trị



phù

hợp với kiểu dữ liệu đã khai báo.



 Có hai

phương thức gán giá trị cho biến là gán trực



</div>
<span class='text_page_counter'>(163)</span><div class='page_container' data-page=163>

©NIIT


<b>Ngơn ngữ lập trình - </b>


<b>Mã giả, Biến và Toán tử </b>




Thế giới lập trình Bài 2 / Slide 11 of 23


<b>Gán giá </b>

<b>trị cho biến </b>



 Gán

trực tiếp:



• Giá trị được gán trực tiếp vào biến bằng dấu =, lệnh gán
trực tiếp có cú pháp như sau: variable_name=value.


• Ví dụ: nAge=18, cName=“Nguyen Van Nam”.


 Câu

lệnh Accept:



• Giá trị của biến có thể được gán bằng câu lệnh accept, câu
lệnh accept có cú pháp như sau: accept variable_name.


</div>
<span class='text_page_counter'>(164)</span><div class='page_container' data-page=164>

<b>Ngơn ngữ lập trình - </b>


<b>Mã giả, Biến và Tốn tử </b>



<b>Ví dụ: Vẽ lưu đồ và viết mã giả </b>


nhập vào hai số từ người dùng,
sau đó hiển thị tổng của hai số
đó


Begin


Numeric nNumber1, nNumber2,
nSum



Accept nNumber1
Accept nNumber2


nSum=nNumber1 + nNumber2
Display nSum


</div>
<span class='text_page_counter'>(165)</span><div class='page_container' data-page=165>

©NIIT


<b>Ngơn ngữ lập trình - </b>


<b>Mã giả, Biến và Tốn tử </b>



Thế giới lập trình Bài 2 / Slide 13 of 23


<b>Toán </b>

<b>tử </b>



 Toán

tử thể hiện loại phép toán bạn muốn thực hiện



trên các

phần tử của một biểu thức.



 Trong

một biểu thức, phần tử mà toán tử tác động



lên

được gọi là toán hạng.



 Toán

tử được chia làm ba thể loại:



• Tốn tử tốn học
• Tốn tử logic


</div>
<span class='text_page_counter'>(166)</span><div class='page_container' data-page=166>

<b>Ngơn ngữ lập trình - </b>


<b>Mã giả, Biến và Toán tử </b>



<b>Toán </b>

<b>tử toán học </b>



<b> Toán </b>

tử toán học dùng để thực hiện các phép tốn,



có các tốn

tử tốn học như sau:



• Tốn tử cộng (+): 4 + 5 = 9
• Tốn tử trừ (-): 10 – 2 = 8
• Tốn tử nhân (*): 2 * 3 = 6
• Tốn tử chia (/): 10 / 2 = 5


</div>
<span class='text_page_counter'>(167)</span><div class='page_container' data-page=167>

©NIIT


<b>Ngơn ngữ lập trình - </b>


<b>Mã giả, Biến và Tốn tử </b>



Thế giới lập trình Bài 2 / Slide 15 of 23


<b>Toán </b>

<b>tử quan hệ </b>



 Toán

tử quan hệ dùng để so sánh hai toán hạng, kết



quả trả về của toán tử quan hệ là Đúng hay Sai



(TRUE hay FALSE). Các toán

tử quan hệ bao gồm:



</div>
<span class='text_page_counter'>(168)</span><div class='page_container' data-page=168>

<b>Ngơn ngữ lập trình - </b>


<b>Mã giả, Biến và Toán tử </b>


<b>Toán </b>

<b>tử luận lý </b>




 Toán

tử luận lý dùng để nối kết quả của hai toán tử



quan

hệ trong biểu thức.



 Toán

tử luận lý bao gồm:



</div>
<span class='text_page_counter'>(169)</span><div class='page_container' data-page=169>

©NIIT


<b>Ngơn ngữ lập trình - </b>


<b>Mã giả, Biến và Toán tử </b>



Thế giới lập trình Bài 2 / Slide 17 of 23


<b>Tốn tử luận lý (tiếp theo) </b>


Bảng chân trị cho toán tử AND và OR


<b>Biểu thức 1 Biểu thức 2 </b> <b>Giá trị biểu thức kết hợp </b>


<b>AND </b> <b>OR </b>


True True True True


True False False True


False True False True


</div>
<span class='text_page_counter'>(170)</span><div class='page_container' data-page=170>

<b>Ngơn ngữ lập trình - </b>


<b>Mã giả, Biến và Toán tử </b>


<b>Độ ưu tiên của các toán tử </b>




Mỗi toán tử sẽ có độ ưu tiên nhất định. Độ ưu tiên



này

sẽ quyết định thứ tự thực thi của các toán tử



trong cùng

một biểu thức nếu biểu thức có nhiều hơn



một tốn tử



 Tốn

tử có độ ưu tiên cao hơn sẽ được ưu tiên thực



</div>
<span class='text_page_counter'>(171)</span><div class='page_container' data-page=171>

©NIIT


<b>Ngơn ngữ lập trình - </b>


<b>Mã giả, Biến và Tốn tử </b>



Thế giới lập trình Bài 2 / Slide 19 of 23


<b>Độ ưu tiên của các toán tử ( tiếp theo ) </b>



 Các tốn

tử có độ ưu tiên bằng nhau sẽ được thực



hiện từ trái sang phải.



Độ ưu tiên của các tốn tử có thể thay đổi nếu ta



dùng

dấu (). Biểu thức trong dấu () sẽ được ưu tiên



</div>
<span class='text_page_counter'>(172)</span><div class='page_container' data-page=172>

<b>Ngơn ngữ lập trình - </b>


<b>Mã giả, Biến và Toán tử </b>




<b>Độ ưu tiên của các tốn tử (tiếp theo) </b>


<b>Tốn tử </b> <b>Mơ tả </b> <b>Độ ưu tiên </b>


() Dấu ngoặc 1


! Toán tử phủ định 2
* Toán tử nhân


3
/ Toán tử chia


% Toán tử chia lấy dư


</div>
<span class='text_page_counter'>(173)</span><div class='page_container' data-page=173>

©NIIT


<b>Ngơn ngữ lập trình - </b>


<b>Mã giả, Biến và Tốn tử </b>



Thế giới lập trình Bài 2 / Slide 21 of 23


<b>Độ ưu tiên của các tốn tử (tiếp theo) </b>


<b>Tốn tử </b> <b>Mơ tả </b> <b>Độ ưu tiên </b>


< Toán tử bé hơn


5
<= Toán tử bé hơn hoặc bằng



> Toán tử lớn hơn


>= Toán tử lớn hơn hoặc bằng
= Toán tử bằng


6
!= Tốn tử khơng bằng


AND Tốn tử AND 7


</div>
<span class='text_page_counter'>(174)</span><div class='page_container' data-page=174>

<b>Ngơn ngữ lập trình - </b>


<b>Mã giả, Biến và Toán tử </b>


<b>Ví </b>

<b>dụ: </b>



Vẽ lưu đồ giải thuật và viết mã giả để kiểm tra một



sinh viên

bất kỳ có đủ điều kiện tham gia khóa học về



vi sinh hay không?



Dữ liệu nhập vào của giải thuật là tên sinh viên, điểm



môn sinh

học, điểm mơn vật lý và điểm mơn hóa học.



Điều kiện để tham gia khóa học về vi sinh là điểm



trung bình

phải lớn hơn 75 và điểm môn sinh học



</div>
<span class='text_page_counter'>(175)</span><div class='page_container' data-page=175>

©NIIT



<b>Ngơn ngữ lập trình - </b>


<b>Mã giả, Biến và Tốn tử </b>



</div>
<span class='text_page_counter'>(176)</span><div class='page_container' data-page=176>

<b>Ngơn ngữ lập trình - </b>


<b>Mã giả, Biến và Toán tử </b>



Mã giả


Begin


Character cName


Numeric nBioMarks, nPhyMarks, nChemMarks, nAverage
Display “Enter student Name”


Accept cName


Display “Enter marks of biology, physics and chemictry”
Accept nBioMarks, nPhyMarks, nChemMarks


nAverage=(nBioMarks+nPhyMarks+nChemMarks)/3
if nAverage > 75 and nBioMarks>75 then


Display “Eligible for bio-informatics course”
else


</div>
<span class='text_page_counter'>(177)</span><div class='page_container' data-page=177>

©NIIT


<b>Ngơn ngữ lập trình - </b>



<b>Mã giả, Biến và Toán tử </b>



Thế giới lập trình Bài 2 / Slide 25 of 23


<b>Tóm </b>

<b>tắt </b>



Biến là tên của một vị trí nhớ trong bộ nhớ máy tính.



 Quá trình khai báo

biến là xác định kiểu dữ liệu và



tên

của biến.



Biến phải được gán giá trị trước khi sử dụng.



 Toán

tử xác định loại phép tính mà bạn muốn thực



</div>
<span class='text_page_counter'>(178)</span><div class='page_container' data-page=178>

<b>Ngơn ngữ lập trình - </b>


<b>Mã giả, Biến và Tốn tử </b>



<b>Tóm tắt ( tiếp theo ) </b>


 Có ba loại tốn tử: tốn tử tốn học, tốn tử quan hệ và toán tử
luận lý.


 Toán tử toán học dùng để thực hiện các phép toán


 Toán tử quan hệ dùng để so sách hai toán hạng, kết quả trả về
là TRUE hay FALSE.


</div>
<span class='text_page_counter'>(179)</span><div class='page_container' data-page=179>

©NIIT



<b>Ngơn ngữ lập trình - </b>


<b>Mã giả, Biến và Toán tử </b>



Thế giới lập trình Bài 2 / Slide 27 of 23


<b>Tóm </b>

<b>tắt (tiếp theo) </b>



 Tốn

tử có độ ưu tiên bằng nhau sẽ được thực hiện



từ trái sang phải.



</div>
<span class='text_page_counter'>(180)</span><div class='page_container' data-page=180>

<b>Ngơn ngữ lập trình - </b>


<b>Mã giả, Biến và Toán tử </b>


<b>Bài </b>

<b>tập đề nghị </b>



Bài 1:

Vẽ lưu đồ và viết mã giả chương trình nhập vào



3

số và cho biết số lớn nhất trong 3 số đó.



Bài 2:

Vẽ lưu đồ và viết mã giả chương trình nhập vào



điểm trung bình của học viên và cho biết học



viên

đó đạt loại gì?



Bài 3:

Vẽ lưu đồ và viết mã giả chương trình tính điểm



trung bình các môn

học. Dữ liệu nhập vào là




</div>
<span class='text_page_counter'>(181)</span><div class='page_container' data-page=181>

©NIIT


<b>Cấu trúc Quyết định </b>



Thế giới lập trình Bài 2 / Slide 1 of 16


<b>Nội dung chính </b>



 Giới thiệu cấu trúc quyết định
 Cấu trúc if


</div>
<span class='text_page_counter'>(182)</span><div class='page_container' data-page=182>

<b>Cấu trúc Quyết định </b>



 <sub>Cấu trúc quyết định cho phép chọn lựa thực hiện các lệnh dựa vào </sub>
việc đánh giá một điều kiện.


 Cấu trúc quyết định được dùng trong giải thuật l:
ã Cu trỳc if


</div>
<span class='text_page_counter'>(183)</span><div class='page_container' data-page=183>

âNIIT


<b>Cu trúc Quyết định </b>



Thế giới lập trình Bài 2 / Slide 3 of 16


<b>Cấu trúc if </b>



 Theo sau cấu trúc if là một biểu thức điều kiện, trong đó dữ liệu
được so sánh.



 Dựa vào kết quả của việc so sánh, một quyết định được thực hiện.
 Có nhiều kiểu cấu trúc if, ba kiểu chính là:


</div>
<span class='text_page_counter'>(184)</span><div class='page_container' data-page=184>

<b>Cấu trúc Quyết định </b>


<b>Cấu trúc if đơn giản </b>



 Nếu điều kiện được chỉ định trong cấu trúc if đơn giản đúng thì các
lệnh trong khối if sẽ được thực hiện.


 Cú pháp:


if (điều kiện)
begin


</div>
<span class='text_page_counter'>(185)</span><div class='page_container' data-page=185>

©NIIT


<b>Cấu trúc Quyết định </b>



Thế giới lập trình Bài 2 / Slide 5 of 16


 Ví <sub>dụ bài tốn nhập một số lớn hơn 10 và in câu </sub>
thơng báo thích hợp:


begin


numeric nNum1


display “Enter any number”
accept nNum1



if (nNum1 > 10)
begin


display nNum1


display “The number is greater than 10”
end


</div>
<span class='text_page_counter'>(186)</span><div class='page_container' data-page=186>

<b>Cấu trúc Quyết định </b>


<b>Cấu trúc if...else </b>



 Nếu điều kiện được chỉ định trong cấu trúc if…else đúng thì các
lệnh trong khối if sẽ được thực hiện. Nếu điều kiện sai thì các lệnh
trong khối else sẽ được thực hiện.


 Cú pháp:


if (điều kiện)
begin


các lệnh được thực hiện nếu điều kiện đúng
end


else
begin


</div>
<span class='text_page_counter'>(187)</span><div class='page_container' data-page=187>

©NIIT


<b>Cấu trúc Quyết định </b>




Thế giới lập trình Bài 2 / Slide 7 of 16


Ví dụ: chương trình nhập hai số, tính tổng hai số
và cho biết tổng là chẵn hay lẻ.


begin


numeric nNum1, nNum2, nResult


display “Enter number1 and number2”
accept nNum1


accept nNum2


nResult = nNum1 + nNum2 //adds the values
and stores the result


//in nResult


if (nResult % 2 = 0)
begin


display nResult


display “The sum is even”
end


else
begin



display nResult


display “The sum is odd”
end


</div>
<span class='text_page_counter'>(188)</span><div class='page_container' data-page=188>

<b>Cấu trúc Quyết định </b>



<b>Cấu trúc if lồng nhau </b>


 Bạn có thể dùng cấu trúc if bên trong một cấu trúc if khác. Cấu trúc này
được gọi là cấu trúc if lồng nhau.


 Cú pháp:


if (điều kiện)
begin


if (điều kiện)
begin


các lệnh được thực hiện nếu điều kiện đúng
end


else
begin


</div>
<span class='text_page_counter'>(189)</span><div class='page_container' data-page=189>

©NIIT


<b>Cấu trúc Quyết định </b>




Thế giới lập trình Bài 2 / Slide 9 of 16


<b>Ví dụ: </b>


<b> xét giải thuật nhập điểm hai môn học của sinh viên và tính </b>
<b>điểm phần trăm. Giải thuật sẽ hiển thị điểm phần trăm cùng </b>
<b>với nhận xét “Pass”, “Fail” và “Distinction”. </b>


<b> Tiêu chuẩn để đưa ra nhận xét như sau: </b>


<b>• Distinction nếu điểm phần trăm lớn hơn 75. </b>
<b>• Pass nếu điểm phần trăm lớn hơn 50. </b>


</div>
<span class='text_page_counter'>(190)</span><div class='page_container' data-page=190>

<b>Cấu trúc Quyết định </b>


begin


numeric nSub1, nSub2, nPercent


display “Enter the marks scored in two subjects”
accept nSub1, nSub2


nPercent = ((nSub1 + nSub2)/200)*100
if (nPercent > 50)


begin //if the condition is true, the following
//statements are executed


if (nPercent > 75)
begin



display nPercent
display “Distinction”
end


else //if the value of nPercent is less than
75,


//the following statements are executed
begin


display nPercent
display “Good”
end


end


else //if the value of nPercent is less than 50, the
//following statements are executed


begin


</div>
<span class='text_page_counter'>(191)</span><div class='page_container' data-page=191>

©NIIT


<b>Cấu trúc Quyết định </b>



Thế giới lập trình Bài 2 / Slide 11 of 16


<b>Cấu trúc switch…case </b>



 Cấu trúc switch…case


cho phép bạn thực hiện
quyết định bằng cách
chọn một trường hợp
trong nhiều trường hợp
được đưa ra.




 Cú pháp:


switch (biểu thức)


begin


case hằng 1:


nhóm lệnh 1


break


case hằng 2:


nhóm lệnh 2


break


case hằng 3:


nhóm lệnh 3



break
default:


nhóm lệnh default


</div>
<span class='text_page_counter'>(192)</span><div class='page_container' data-page=192>

<b>Cấu trúc Quyết định </b>



dụ:



</div>
<span class='text_page_counter'>(193)</span><div class='page_container' data-page=193>

©NIIT


<b>Cấu trúc Quyết định </b>



</div>
<span class='text_page_counter'>(194)</span><div class='page_container' data-page=194>

<b>Cấu trúc Quyết định </b>



begin


numeric nCall


display “If you want to get connected to Marketing department,
press 1, Finance department press 2, Customer Care department
press 3, HR department press 4. If you are not sure press any
number other than 1 to 4, the call will be transferred to


Information department”
accept nCall


switch (nCall)
begin



Case 1: //case 1 begins


Transfer call to the Marketing department
break


Case 2: //case 2 begins


Transfer call to the Finance department
break


Case 3: //case 3 begins


Transfer call to the Customer Care department
break


Case 4: //case 4 begins


Transfer call to the HR department
break


default: //if none of the cases match, the following line is executed
Transfer call to the Information department


</div>
<span class='text_page_counter'>(195)</span><div class='page_container' data-page=195>

©NIIT


<b>Cấu trúc Quyết định </b>



Thế giới lập trình Bài 2 / Slide 15 of 16


<b>Tóm </b>

<b>tắt </b>




Trong bài học này chúng ta đã học:


 Cấu trúc quyết định cho phép chọn lựa thực hiện các lệnh dựa vào
việc đánh giá một điều kiện.


 Cấu trúc quyết định được dùng trong giải thuật là:
• Cấu trúc if


• Cấu trúc switch…case


 Có nhiều kiểu cấu trúc if, ba kiểu chính là:
• Cấu trúc if đơn giản


• Cấu trúc if…else
• Cấu trúc if lồng nhau


</div>
<span class='text_page_counter'>(196)</span><div class='page_container' data-page=196>

<b>Cấu trúc Quyết định </b>



<b>Bài </b>

<b>tập </b>



 Bài 1: Viết chương trình nhập tên và giới tính của một người sau
đó hiển thị câu chào hỏi phù hợp. Nếu là nam thì chào anh, nếu là
nữ thì chào chị.


 Bài 2: Viết chương trình nhập điểm thi cho sinh viên và in nhận xét.
Nếu điểm dưới 5 thì “Hỏng”, nếu điểm lớn hơn 5 và nhỏ hơn 8 thì
“Đậu”, nếu điểm lớn hơn hay bằng 8 thì “Giỏi”.


</div>
<span class='text_page_counter'>(197)</span><div class='page_container' data-page=197>

©NIIT



<b>Cấu Trúc Lặp </b>



Thế giới lập trình Bài 4 / Slide 1 of 16


<b>Nội dung chính </b>



 Giới thiệu cấu trúc lặp
 Vòng lặp while


 Vòng lặp repeat … until
 Vòng lặp for


</div>
<span class='text_page_counter'>(198)</span><div class='page_container' data-page=198>

<b>Cấu Trúc Lặp </b>


<b>Cấu trúc lặp </b>



 Cấu trúc lặp là cấu trúc cho phép thực thi một đoạn mã trong
chương trình nhiều lần.


 Quá trình lặp của đoạn mã này được điều khiển bằng một điều kiện
gọi là điều kiện lặp. Trong khi điều kiện lặp cịn đúng thì vịng lặp
sẽ được lặp lại. Khi điều kiện lặp là sai thì vịng lặp sẽ kết thúc và
lệnh ngay phía sau vịng lặp sẽ được thực thi.


</div>
<span class='text_page_counter'>(199)</span><div class='page_container' data-page=199>

©NIIT


<b>Cấu Trúc Lặp </b>



</div>
<span class='text_page_counter'>(200)</span><div class='page_container' data-page=200>

<b>Cấu Trúc Lặp </b>


<b>Cấu trúc lặp </b>




 Có 4 vịng lặp cơ bản
• Vịng lặp while


• Vịng lặp repeat – until
• Vịng lặp for


</div>

<!--links-->

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×