Tự học SQL: Sao lắm loại SQL vậy? (Phần 1)

Tự học SQL: Sao lắm loại SQL vậy? (Phần 1)
Tôi sinh viên năm 2 vật lộn với SQL

Mysql, SQL SERVER, MS SQL, POSTPRESQL, ORACLE,….

Có một điều mà mình cảm thấy bối rối khi bắt đầu tim hiểu SQL ( khá lâu rồi khoảng năm 2 đại học thì phải ) thì đó chính là tại sao có tùm lum kiểu SQL vậy. Khi mở Hacker Rank lên ( 1 trang làm test SQL/ một số ngôn ngữ khác) thì khi code SQL chúng ta có vô cùng nhiều lựa chọn, mỗi cái lại có 1 cú pháp khác nhau, có cái thì đòi ” ; ” có cái thì không, lệnh từ bên này thì không nhập vào bên kia được.

Quá trời nhiều SQL =))

Nhưng khi người ta nói làm Data, thì lại bảo ” học SQL đi “. Ơ hay, thế học SQL là học SQL nàoooo!!!!!

Để giúp các bạn không phải gặp khó khăn như vậy, mình xin chia sẻ tường tận ( tất nhiên là có giản lược ) về SQL, định nghĩa SQL và 1 chút mở rộng về định nghĩa “ngôn ngữ” để vấn đề này sáng tỏ.

SQL trước cái đã!

SQL viết tắt của Structured Query Language ( Ngôn ngữ truy vấn có cấu trúc mà hình như cái này người ta chém ra chứ ban đầu IBM đặt đại thì phải ), quá trực quan, dễ hiểu, nghe là biết dùng cho việc thống kê, tính toán rồi.

Kể từ ngày sinh ra 197x ( không nhớ rõ lắm ) đến nay, SQL đã trở thành tiêu chuẩn cho rất nhiều hệ thống khai thác dữ liệu, bigdata,… Biết SQL không sợ thiếu việc ( chỉ sợ làm việc vặt ), vì người biết SQL có thể giao tiếp được với hầu hết cơ sở dữ liệu và sử dụng các tính toán đơn giản để tạo ra báo cáo.

Vì lí do đó cho nên, khi bất kì ai muốn học data, lại có 1 bạn suggest “học SQL đi”. Thế nhưng đa số các bạn này chỉ nói đến thế, còn học SQL nào, học cụ thể ra sao, thì các bạn không nói ( =)) !??? ).

Vậy thực sự SQL là gì

Các bước để máy đọc được SQL

SQL là một ngôn ngữ bậc cao, trước khi server có thể hiểu được câu lệnh của bạn, nó sẽ được biên dịch ra mã máy (nhị phân 1010100000100…. ) và mã máy này sẽ được bỏ vào server để tính toán sau đó in ra kết quả. Như vậy việc SQL được hiểu như thế nào sẽ phụ thuộc vào bước “Biên dịch” vì bộ máy này sẽ quy ước tất cả cấu trúc và ngôn ngữ của câu lệnh đầu vào.

Như vậy, đối với máy thì mã nhị phân là như nhau (beep boop 010101). Cho nên, điểm khác biệt duy nhất ở quá trình này đó chính là bộ máy “biên dịch”, nếu máy biên dịch có nhiều tính năng thì SQL có nhiều tính năng và ngược lại.

Các bộ máy biên dịch này đều là cấu thành của một bộ database management system. Để cạnh tranh với nhau, ở mỗi loại DBMS sẽ có khác biệt một chút về tính năng. Thêm, bớt những tính năng mà nhà sản xuất DBMS tin rằng sẽ tốt hơn. Từ điều này dẫn tới sự khác biệt về câu lệnh SQL.

Thế tại sao lại vẫn gọi là SQL, không gọi là PostgreLang/ BigqueryLanguage gì gì đó ?

Trường hợp tiếng Việt

Mối liên hệ của tiếng ba miền

Như các bạn có thể thấy ở biểu đồ trên, dù là người Bắc, Trung, Nam, chúng ta có một số tiếng bản địa, từ ngữ địa phương khác nhau. Tuy nhiên, xét về gốc nhìn tổng thể, tất cả khi nói chuyện với nhau đều có các điểm chung ở chính giữa. Điều này làm cho người miền bắc vẫn có thể hiểu được người miền nam và ngược lại.

Nhìn chung dù có sự khác biệt chúng ta vẫn gọi ngôn ngữ là “Tiếng Việt” chứ không phải người việt không nói tiếng việt mà nói tiếng bắc,… . Chúng ta có trường hợp tương tự cho SQL.

Trường hợp SQL

3 miền SQL

Tương tự như trường hợp tiếng Việt, trường hợp SQL cũng vậy. Dù có nhiều điểm khác nhau khi sử dụng MySQL, Postgre hay Bigquery, cả 3 ngôn ngữ SQL trên các loại DBMS này đều chia sẽ một số điểm chính ví dụ như.

  • SElECT dùng để lấy dữ liệu
  • FROM dùng để chỉ định dữ liệu sẽ được lấy ra từ những bảng nào, và các bảng đó quan hệ với nhau như thế nào.
  • WHERE dùng để xác định những bản ghi nào sẽ được lấy ra, hoặc áp dụng với GROUP BY.
  • GROUP BY dùng để kết hợp các bản ghi có những giá trị liên quan với nhau thành các phần tử của một tập hợp nhỏ hơn các bản ghi.
  • HAVING dùng để xác định những bản ghi nào, là kết quả từ từ khóa GROUP BY, sẽ được lấy ra.
  • ORDER BY dùng để xác định dữ liệu lấy ra sẽ được sắp xếp theo những cột nào.

Tuỳ lí do, mục đích sử dụng của từng loại DBMS thì nhà sản xuất sẽ bổ sung thêm các câu lệnh khác nhau ( ví dụ như postgre hỗ trợ extract json từ rất sớm, hoặc bigquery phân biệt upper lower case ). Tuy nhiên, nhìn tổng thể, một người biết SQL có thể thực hiện được một số lệnh cơ bản mà chưa cần đụng tới chi tiết của từng loại.

Vậy tự học như thế nào?

Như vậy, việc quan trọng nhất khi học tiếng Việt là học những cái căn bản của tiếng Việt. Tương tự đối với SQL, chúng ta cũng phải học những “từ” căn bản của SQL trước khi học ngôn ngữ “địa phương”. Để việc học từ căn bản dễ dàng hơn chúng ta nên chọn những bản SQL nhẹ, dễ dựng lên trong laptop và dễ convert từ file excel hay csv.

Mình suggest các bạn mới bắt đầu nên lên Kaggle tìm một bộ dữ liệu, và học cách convert nó sang SQLite, và bắt đầu học từ DBMS đơn giản này.

Các bạn có thể search google để tìm hiểu thêm về các bước trên.

Kết

Có nhiều bạn sẽ thắc mắc vì sao mình không đụng tới SQL ANSI, ISO hay các quy tắt chung. Mình nghĩ viết đến đây cũng có thể đủ để giúp các bạn beginner hiểu được trừu tượng vì sao có nhiều loại SQL đến vậy. Trong các phần tiếp theo mình sẽ đi sâu hơn nữa về mặt kĩ thuật vì sao có nhiều loại SQL, thậm chí cho các cơ sở dữ liệu “noSQL”. Đón xem nhé, cảm ơn các bạn.

Xem phần tiếp theo —–> Phần 2: Các thuật ngữ Database hay gặp

Support Tuan | Analytic

Trả lời