Danh sách câu hỏi của đề

Câu hỏi: PRP201c Lập trình Python – Bộ ôn tập cuối kỳ số 2

46 câu trắc nghiệm kèm lời giải của môn PRP201c - Lập trình Python, xếp đúng thứ tự trong đề. Trang 3/3 — câu 41–46.

Danh sách câu hỏi

46/46 câuHết danh sách
AThe rows of the left table are connected to the rows in the right table when their primary key matches
BYou get no rows at all
CYou get all of the rows of the left table in the JOIN and NULLs in all of the columns of the right table
DThe number of rows you get is the number of rows in the first table times the number of rows in the second table
ELeaving out the ON clause when joining two tables in SQLite is a syntax error
Lời giải
Đáp án đúng: "The number of rows you get is the number of rows in the first table times the number of rows in the second table". JOIN không có ON thì không có điều kiện ghép, nên SQLite ghép mọi dòng bảng trái với mọi dòng bảng phải, tạo tích Đề-các (Cartesian product), tương đương CROSS JOIN: bảng 3 dòng ghép bảng 4 dòng cho 12 dòng. Mệnh đề ON chính là bộ lọc giữ lại những cặp có khoá ngoại khớp khoá chính. "The rows of the left table are connected to the rows in the right table when their primary key matches" mô tả JOIN có ON, ví dụ ON Track.album_id = Album.id. "You get no rows at all" sai vì thiếu điều kiện thì mọi cặp đều được giữ chứ không cặp nào bị loại. "You get all of the rows of the left table in the JOIN and NULLs in all of the columns of the right table" gần với kết quả của LEFT JOIN khi không có dòng nào khớp, không phải trường hợp này. "Leaving out the ON clause when joining two tables in SQLite is a syntax error" sai vì SQLite cho phép JOIN không ON và coi như CROSS JOIN.
Mở trang câu hỏi này →
AJOIN
BCONNECT
CBETWEEN
DAND
Lời giải
Đáp án đúng: "JOIN". Từ khoá JOIN ghép các dòng của hai (hoặc nhiều) bảng thành dòng kết quả, thường kèm mệnh đề ON để chỉ điều kiện nối, ví dụ khoá ngoại của bảng này bằng khoá chính của bảng kia: SELECT Track.title, Album.title FROM Track JOIN Album ON Track.album_id = Album.id. Thiếu ON thì JOIN tạo mọi cặp dòng có thể (tích Descartes). "CONNECT" sai vì SQL chuẩn không có từ khoá ghép bảng tên này; kết nối tới cơ sở dữ liệu là việc của hàm như sqlite3.connect phía Python. "BETWEEN" sai vì nó lọc giá trị nằm trong một khoảng ở mệnh đề WHERE. "AND" sai vì nó chỉ nối hai điều kiện logic, không tự ghép dòng của hai bảng.
Mở trang câu hỏi này →
AGROUP BY
BORDER BY
CWHERE
DSORT
Lời giải

Đáp án đúng: "ORDER BY". Mệnh đề ORDER BY đứng cuối câu SELECT để sắp xếp tập kết quả theo một hay nhiều cột, tăng dần với ASC (mặc định) hoặc giảm dần với DESC, ví dụ SELECT title FROM Album ORDER BY title; thiếu nó thì cơ sở dữ liệu không bảo đảm thứ tự dòng trả về. "GROUP BY" gom các dòng có cùng giá trị thành nhóm để tính hàm tổng hợp như COUNT, SUM, AVG; chuẩn SQL không cam kết kết quả nhóm có thứ tự, nên muốn sắp xếp vẫn phải thêm ORDER BY. "WHERE" lọc dòng theo điều kiện, chỉ quyết định dòng nào được lấy chứ không đổi thứ tự. "SORT" không phải từ khoá SQL; nó gợi nhớ phương thức sort() của list hay hàm sorted() trong Python, dùng để sắp xếp dữ liệu sau khi đã lấy về.

Mở trang câu hỏi này →
Ab
Ba
Cn
DIndexError
Lời giải
Đáp án đúng: "a". Chuỗi trong Python hỗ trợ chỉ số âm (negative index) đếm từ cuối: fruit[-1] là ký tự cuối cùng, fruit[-2] là ký tự áp cuối, và cứ thế. Chuỗi banana gồm sáu ký tự b, a, n, a, n, a ở các chỉ số 0 tới 5, nên fruit[-1] tương đương fruit[len(fruit) - 1], tức fruit[5], là chữ a cuối chuỗi. Phương án "b" là ký tự đầu tiên, lấy bằng fruit[0] hoặc fruit[-6]. Phương án "n" là ký tự ở fruit[-2] hoặc fruit[4], áp cuối chứ không phải cuối. Phương án "IndexError" sai vì -1 luôn là chỉ số hợp lệ với một chuỗi không rỗng; IndexError chỉ xảy ra khi chỉ số vượt ra ngoài độ dài, như fruit[6] hoặc fruit[-7].
Mở trang câu hỏi này →
AUsing a dictionary with characters as keys and counters as values
BUsing a list with 26 elements, one for each letter of the alphabet
CUsing a set to store characters
DUsing 26 variables, one for each letter of the alphabet
Lời giải
Đáp án đúng: "Using a set to store characters". Đếm tần suất ký tự nghĩa là với mỗi ký tự phải nhớ nó xuất hiện bao nhiêu lần. Set (tập hợp) chỉ lưu mỗi phần tử một lần và không gắn kèm con số nào, nên thêm 'a' lần thứ hai cũng không thay đổi gì; set chỉ cho biết những ký tự nào có mặt chứ không cho biết số lần, vì vậy đây là cách KHÔNG đếm được. "Using a dictionary with characters as keys and counters as values" đếm được và là cách gọn nhất, như counts[c] = counts.get(c, 0) + 1. "Using a list with 26 elements, one for each letter of the alphabet" cũng đếm được: đổi chữ cái thành vị trí bằng ord(c) - ord('a') rồi tăng phần tử tương ứng. "Using 26 variables, one for each letter of the alphabet" đếm được nhưng rất vụng, cần một chuỗi if dài để chọn biến cần tăng; cách dùng list và cách dùng biến chỉ áp cho 26 chữ cái tiếng Anh, còn dict áp cho mọi ký tự. Ba cách này đều đếm được nên không được chọn ở câu hỏi phủ định.
Mở trang câu hỏi này →
Afield
Brow
Cattribute
Drelation
Lời giải
Đáp án đúng: "relation". Trong mô hình quan hệ (relational model) do Edgar F. Codd đề xuất, một bảng được gọi là quan hệ (relation): tập các bộ (tuple) có cùng cấu trúc thuộc tính; chính từ đó mà có tên cơ sở dữ liệu quan hệ. "field" sai vì trường (field) là một cột, tức một ô dữ liệu trong mỗi dòng, không phải cả bảng. "row" sai vì dòng tương ứng với bộ (tuple) hay bản ghi (record), là một phần tử của bảng. "attribute" sai vì thuộc tính (attribute) là tên gọi khác của cột hay trường. Nhóm tương ứng cần nhớ: relation ứng với table, tuple ứng với row, attribute ứng với column.
Mở trang câu hỏi này →