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 (5.22 MB, 56 trang )
<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">
<i><small>TS. Lê Thị Lan</small></i>
<i><small></small></i>
</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2"><small>Thi-Lan Le, MICA HUST</small>
Các thành phần của SQL
Ngôn ngữ định nghĩa dữ liệu Ngôn ngữ thao tác dữ liệu Kết luận và bài tập
</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3"><small>Thi-Lan Le, MICA HUST</small>
Kiểm tra dạng chuẩn sử dụng trong hệ QT CSDL SQL:
Tham khảo:
<small></small> www.learn-sql-tutorial.com
<small></small> www.w3schools.com/SQL/sql_syntax.asp
</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5"><small></small>
<small></small>
<small>Thi-Lan Le, MICA HUST</small>
<small></small> Sơ đồ đối với mỗi bảng
<small></small> Kiểu dữ liệu hay miền giá trị <small></small> Các ràng buộc toàn vẹn
<small></small> Tập các chỉ dẫn
<small></small> Thơng tin an tồn và ủy quyền đối với từng bảng <small></small> Cấu trúc lưu trữ vật lý
</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7"><small>Thi-Lan Le, MICA HUST</small>
<b>CREATE TABLE <tên</b> bảng> (<tên cột> <kiểu dữ liệu>
<b>[NOT NULL], [CONSTRAINT <tên ràng</b> buộc> <kiểu ràng <b>buộc> …])</b>
</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9"><small>Thi-Lan Le, MICA HUST</small>
<b>Cú pháp: DROP TABLE relation_name</b>
<b>Ví dụ: DROP TABLE branch</b>
</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12"><small>Thi-Lan Le, MICA HUST</small>
Ví dụ: Bảng student lưu các thơng tin về sinh viên
<b><small>Thuộc tính Kiểu dữ liệu Độ rộng Giải thích</small></b>
<i><small>id</small></i> <small>numeric4Số hiệu sinh viên</small>
<i><small>name</small></i> <small>character10Tên sinh viên</small>
<i><small>dob</small></i> <small>date8Ngày tháng năm sinh</small>
<i><small>sex</small></i> <small>character1Giới tính (M / F)</small>
<i><small>remission</small></i> <small>logical1Quyền nhập học (T, F)</small>
</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14"><small>Thi-Lan Le, MICA HUST</small>
<small>idnamedobsexclassmtesthcodedcode remission</small>
</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15"> Thêm một bộ dữ liệu (~ 1 dòng) vào 1 bảng trong CSDL
Cách 1:
<b>INSERT INTO Table_name</b>
<b>VALUES (value 1, value 2</b>, …, value n) Cách 2:
<b>INSERT INTO Table_name (column 1, column 2, </b>
…, column n)
<b>VALUES (value 1, value 2</b>, …, value n)
Câu hỏi: Đánh giá đặc điểm cũng như ưu, nhược điểm của từng cách
</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16"><small>Thi-Lan Le, MICA HUST</small>
<i>Truy vấn lựa chọn các dòng trên các bảng có tên tablename</i>
và trả kết quả dưới dạng bảng <small></small> <i><b><small>Biểu thức expr1, expr2 có thể : </small></b></i>
<small>•một cột hoặc</small>
<small>•một biểu thức gồm các hàm và các trường</small>
<small>col1, col2 là tên các cột trong bảng kết quả</small>
<small>DISTINCT: bỏ hết các bộ lặp trong kết quả trong khi từ khóa ALL thì dữ lại tồn bộ các bộ lặp</small>
<small></small> <i><b><small>condition</small></b></i> <small>có thể là :</small>
<small>•Tốn tử so sánh >, <, = hoặc</small>
<small>•Tốn tử so sánh xâu</small>
<small>•Tốn từ logic AND, OR, NOT</small>
<b>SELECT * FROM student</b>
<small>idnamedobsexclassmtesthcodedcode remission</small>
</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18"><small>Thi-Lan Le, MICA HUST</small>
Yêu cầu 2: Liệt kê tên , mã nhà và lớp của sinh viên
</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19"> Yêu cầu 3: Liệt kê mã quận của sinh viên có mã nhà
</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20"><small>Thi-Lan Le, MICA HUST</small>
Yêu cầu 4: Liệt kê tên của các nữ sinh lớp 1B Câu truy vấn:
<small>1) Liệt kê tên nữ sinh của lớp 1A và 1B</small>
<small>2) Liệt kê tên nữ sinh của lớp 1 A và nam sinh lớp 1 B</small>
</div><span class="text_page_counter">Trang 21</span><div class="page_container" data-page="21"> Yêu cầu 5: Liệt kê tên, id của sinh viên không được miễn phí đăng ký của lớp 1A
Câu truy vấn:
<small>Thi-Lan Le, MICA HUST</small>
<small></small> <i><small>expr IN ( value1, value2, value3)</small></i>
<small></small> <i><small>expr BETWEEN value1 AND value2</small></i>
<small></small> <i><small>expr LIKE "%_"</small></i>
</div><span class="text_page_counter">Trang 23</span><div class="page_container" data-page="23"> Yêu cầu 6: Liệt kê các sinh viên sinh vào thứ tư hoặc thứ bảy
Câu truy vấn:
Trong đó:
<small>CDOW (): trả về tên ngày trong tuần của 1 ngày</small>
<small>DOW (): trả về thứ của 1 ngày trong tuần dưới dạng số (Day of </small>
</div><span class="text_page_counter">Trang 24</span><div class="page_container" data-page="24"><small>Thi-Lan Le, MICA HUST</small>
Yêu cầu 7: Liệt kê các sinh viên không sinh vào
</div><span class="text_page_counter">Trang 25</span><div class="page_container" data-page="25"> Yêu cầu 8: Liệt kê sinh viên lớp 1A có điểm kiểm tra toán từ 80 đến 90
Câu truy vấn:
<small>Thi-Lan Le, MICA HUST</small>
Nhóm dữ liệu:
<small></small> <i><b><small>groupexpr</small></b><small>xác định các dịng liên quan sẽ được nhóm lại</small></i>
<small></small> <i><b><small>WHERE condition</small></b></i> <small>xác định điều kiện cho từng dòng trước khi nhóm</small>
<small></small> <i><b><small>HAVING requirement</small></b></i> <small>xác định điều kiện tương đương đến tồn bộ nhóm</small>
Yêu cầu 9: Xác định tổng số sinh viên của mỗi lớp Câu truy vấn:
<small>Thi-Lan Le, MICA HUST</small>
Yêu cầu 10: Liệt kê điểm tốn trung bình của từng
</div><span class="text_page_counter">Trang 29</span><div class="page_container" data-page="29"><small>Tính điểm trung bình của nữ sinh của tất cả các lớp</small>
<small>Tính điểm trung bình của nữ sinh của từng lớp</small>
</div><span class="text_page_counter">Trang 30</span><div class="page_container" data-page="30"><small>Thi-Lan Le, MICA HUST</small>
Yêu cầu 11: Xác định số sinh viên nữ của từng quận Câu truy vấn:
Yêu cầu 12: Xác định điểm kiểm tra cao nhất và thấp nhất của sinh viên ở từng quận
Câu truy vấn:
<b><small>max_mtestmin_mtestdcode</small></b>
</div><span class="text_page_counter">Trang 32</span><div class="page_container" data-page="32"><small>Thi-Lan Le, MICA HUST</small>
Yêu cầu 13: Xác định điểm tốn trung bình của nam sinh viên trong mỗi lớp với điều kiện lớp đó có ít nhất 3 nam sinh viên
Câu truy vấn:
Đưa ra tên lớp, điểm tốn trung bình của nam sinh viên trong mỗi lớp, số sinh viên nam của lớp với điều kiện lớp đó có ít nhất 3 nam sinh viên
</div><span class="text_page_counter">Trang 34</span><div class="page_container" data-page="34"><small>Thi-Lan Le, MICA HUST</small>
Sắp xếp kết quả trả về:
SELECT ... FROM ... WHERE ...
<i>ORDER BY colname [ASC / DESC]</i>
</div><span class="text_page_counter">Trang 35</span><div class="page_container" data-page="35"> Yêu cầu 14: Liệt kê nam sinh viên của lớp 1 A theo tên
Câu truy vấn:
<small>Thi-Lan Le, MICA HUST</small>
Yêu cầu 15: Liệt kê sinh viên lớp 2A theo mã quận Câu truy vấn:
<b><small>nameidclassdcode</small></b>
</div><span class="text_page_counter">Trang 37</span><div class="page_container" data-page="37"> Yêu cầu 16: Liệt kê số lượng sinh viên của mỗi quận theo chiều giảm dần
Câu truy vấn:
<small>Thi-Lan Le, MICA HUST</small>
Yêu cầu: Liệt kê theo thứ tự giảm dần về điểm của sinh viên nữ có điểm thi lớn hơn điểm trung bình của các sinh viên nữ
</div><span class="text_page_counter">Trang 39</span><div class="page_container" data-page="39"> Yêu cầu 17: Liệt kê nam sinh viên trong một nhà theo trật tự mã quận và tên lớp
Câu truy vấn:
<small>Thi-Lan Le, MICA HUST</small>
<b><small>namehcode class</small></b>
</div><span class="text_page_counter">Trang 41</span><div class="page_container" data-page="41"><small>Hợp của A và B (A B)</small>
<small>Một bảng bao gồm tất cả các dòng của A và B.</small>
</div><span class="text_page_counter">Trang 42</span><div class="page_container" data-page="42"><small>Thi-Lan Le, MICA HUST</small>
<small>Giao của A và B (A B)</small>
<small>Một bảng bao gồm các dòng vừa tồn tại trong A vừa tồn tại trong B</small>
</div><span class="text_page_counter">Trang 43</span><div class="page_container" data-page="43"><small>Hiệu của A và B</small>
<small>Bảng bao gồm các dòng ở trong A nhưng không ở trong B</small>
</div><span class="text_page_counter">Trang 44</span><div class="page_container" data-page="44"><small>Thi-Lan Le, MICA HUST</small>
Bảng lưu trữ các thành viên của Bridge và Chess có cùng cấu trúc như sau:
<b><small>Thuộc tính Kiểu dữ liệu Độ rộngÝ nghĩa</small></b>
<small>sexcharacter1Giới tính (M / F)</small>
</div><span class="text_page_counter">Trang 45</span><div class="page_container" data-page="45"> Yêu cầu 17: Xác định hợp của 2 câu lạc bộ Câu truy vấn:
SELECT * FROM bridge UNION SELECT * FROM chess ORDER BY class, name
<small>SELECT ... FROM ... WHERE ... ;UNION ;</small>
<small>SELECT ... FROM ... WHERE ...</small>
</div><span class="text_page_counter">Trang 46</span><div class="page_container" data-page="46"><small>Thi-Lan Le, MICA HUST</small>
Yêu cầu 18: In danh sách các sinh viên tham gia cả 2 câu lạc bộ
Câu truy vấn:
SELECT * FROM bridge WHERE id IN ( SELECT id FROM chess)
<i><small>SELECT ... FROM table1 ;</small></i>
<i><small>WHERE col IN ( SELECT col FROM table2 )</small></i>
</div><span class="text_page_counter">Trang 47</span><div class="page_container" data-page="47"> Yêu cầu 19: Xác định danh sách các sinh viện tham gia câu lạc bộ Bridge nhưng không tham gia câu lạc bộ Chess
Câu truy vấn:
SELECT * FROM bridge WHERE id NOT IN (SELECT id FROM chess )
<i><small>SELECT ... FROM table1 ;</small></i>
<i><small>WHERE col NOT IN ( SELECT col FROM table2 )</small></i>
</div><span class="text_page_counter">Trang 48</span><div class="page_container" data-page="48"><small>Thi-Lan Le, MICA HUST</small>
Bảng Music lưu trữ thông tin về nhạc cụ của sinh viên
<b><small>Thuộc tính Kiểu dữ liệu Độ rộng Ý nghĩa</small></b>
<small>idnumeric4mã hiệu sinh viêntypecharacter10kiểu nhạc cụ</small>
</div><span class="text_page_counter">Trang 49</span><div class="page_container" data-page="49"><small>Kết nối tự nhiên (Natural Join) hay (Inner joint): là một thao tác kết nối 2 bảng bằng các cột chung.</small>
<small>Kết nối ngoài (outer join): </small>
<small>tất cả các dòng ở trong bảng đầu tiên sau FROM ngay cả khi nó khơng có trong bảng thứ hai. </small>
</div><span class="text_page_counter">Trang 50</span><div class="page_container" data-page="50"><small>Thi-Lan Le, MICA HUST</small>
Cú pháp 1:
<i>SELECT a.comcol, a.col1, b.col2, expr1, expr2 FROM table1 a JOIN table2 b</i>
ON a.comcol = b.comcol Cú pháp 2:
<i>SELECT a.comcol, a.col1, b.col2, expr1, expr2 FROM table1 a, table2 b </i>
<i>WHERE a.comcol = b.comcol</i>
</div><span class="text_page_counter">Trang 51</span><div class="page_container" data-page="51"> Yêu cầu 20: Xác định danh sách các sinh viên và nhạc cụ sinh viên đó học
Câu truy vấn:
<small>Thi-Lan Le, MICA HUST</small>
Yêu cầu 20: Xác định số sinh viên học piano trong mỗi lớp
Câu truy vấn:
Yêu cầu 21: Xác định danh sách sinh viên chưa lựa chọn nhạc cụ
Câu truy vấn:
<small>Thi-Lan Le, MICA HUST</small>
Yêu cầu 22: Tạo danh sách các sinh viên với danh sách nhạc cụ sinh viên đó học. Danh sách này phải bao gồm cả sinh viên chưa đăng ký nhạc cụ
Câu truy vấn:
<small>Sinh viên tự đề xuất các câu truy vấn khác để thực hiện yêu cầu 22</small>
</div><span class="text_page_counter">Trang 56</span><div class="page_container" data-page="56"><small>Thi-Lan Le, MICA HUST</small>
Cho bảng thông tin:
<small>Viết câu truy vấn liệt kê tên khách hàng và tổng số tiền mà họ đã sử dụng</small>
</div>