SQL là gì?
SQL là gì? Đó là viết tắt của Structured Query Language là ngôn ngữ truy vấn có cấu trúc. Nó là một ngôn ngữ, là tập hợp các lệnh để tương tác với cơ sở dữ liệu. Dùng để lưu trữ, thao tác và truy xuất dữ liệu được lưu trữ trong một cơ sở dữ liệu quan hệ. Trong thực tế, SQL là ngôn ngữ chuẩn được sử dụng hầu hết cho hệ cơ sở dữ liệu quan hệ. Tất cả các hệ thống quản lý cơ sở dữ liệu quan hệ (RDMS) như MySQL, MS Access, Oracle, Postgres và SQL Server… đều sử dụng SQL làm ngôn ngữ cơ sở dữ liệu chuẩn.
Hầu như công ty nào lớn cũng cần xây dựng một hệ thống để lưu trữ cơ sở dữ liệu. Mọi thứ trong cơ sở dữ liệu này sẽ được diễn tả ra thành nhiều bảng, có mối quan hệ với nhau. Để truy vấn và lấy dữ liệu từ các bảng này nhằm tổng hợp thành thông tin nào đó, người ta dùng đến SQL thông qua các câu query.
>>> Xem thêm: Phần 1: Giới thiệu Cơ Sở Dữ Liệu (CSDL) – Hệ Quản Trị CSDL
>>> Xem thêm: Phần 2: Giới thiệu xung quanh Cơ Sở Dữ Liệu(CSDL)
Nguồn gốc
SQL bắt đầu từ những năm 1970, khi các kỹ sư của IBM là Donald Chamberlin và Raymond Boyce thiết kế phiên bản đầu tiên để tương tác và lấy dữ liệu được lưu trữ trong hệ thống cơ sở dữ liệu của công ty. Họ gọi nó là SEQUEL, mặc dù sau đó họ buộc phải thay đổi nó do các vấn đề bản quyền.
Tại sao sử dụng SQL và nó lại quan trọng
SQL được sử dụng phổ biến vì nó có các ưu điểm sau:
- Cho phép truy cập dữ liệu trong các hệ thống quản lý cơ sở dữ liệu quan hệ.
- Cho phép mô tả dữ liệu.
- Cho phép xác định dữ liệu trong cơ sở dữ liệu và thao tác dữ liệu đó.
- Cho phép nhúng trong các ngôn ngữ khác sử dụng mô-đun SQL, thư viện và trình biên dịch trước.
- Cho phép tạo và thả các cơ sở dữ liệu và bảng.
- Cho phép tạo chế độ view, thủ tục lưu trữ, chức năng trong cơ sở dữ liệu.
- Cho phép thiết lập quyền trên các bảng, thủ tục và view.
Thường thì doanh nghiệp luôn cần một hệ thống để quản trị thông tin, họ phải thiết kế ra một cơ sở dữ liệu để lưu trữ thông tin. Nếu họ lưu trữ ở dạng giấy hoặc excel thì sẽ chứa nhiều rủi ro bảo mật thông tin như bị mất, sửa, xóa…
SQL sẽ giúp quản lý hiệu quả và truy vấn thông tin nhanh hơn, giúp bảo trì, bảo mật thông tin dễ dàng hơn.
Ví dụ: trước đây, trường đại học thường lưu trữ thông tin sinh viên bằng hồ sơ giấy. Sau đó, cất giữ hồ sơ trong kho. Khi cần tìm kiếm hoặc thêm/xóa/sửa thông tin nào đó, họ phải mất rất nhiều thời gian để lục tìm lại hồ sơ.
Trong khi, nếu lưu trữ thông tin vào một hệ thống cơ sở dữ liệu, họ chỉ cần gõ một câu lệnh SQL ngắn là đã có thể trích xuất được thông tin cần. Việc thêm/xóa/sửa cũng được thực hiện một cách dễ dàng, nhanh chóng.
Con đường sự nghiệp cho SQL Developer nói riêng và Database Developer
Hiện tại có 2 hướng phát triển như sau:
- Hướng đi thiên về kỹ thuật: có thể trở thành Data Architect – là người thiết kế ra cơ sở dữ liệu cho doanh nghiệp. Hiện nay, Data Scientist cũng là vị trí đang rất cần trong thời đại AI & Bigdata. Ngoài kiến thức về SQL, lập trình viên còn phải biết về xác suất thống kê và ngôn ngữ lập trình khác, thường là Python.
- Hướng đi về quản lý: đích đến sẽ là Business Analyst hoặc Project Manager.
Các câu lệnh SQL
Các lệnh SQL tiêu chuẩn để tương tác với cơ sở dữ liệu quan hệ là CREATE, SELECT, INSERT, UPDATE, DELETE và DROP. Các lệnh này có thể được phân thành các nhóm sau dựa trên bản chất của chúng
DDL – Ngôn ngữ định nghĩa dữ liệu (Data Definition Language)
Lệnh | Mô tả |
---|---|
CREATE | Tạo ra một bảng mới hoặc các đối tượng khác trong cơ sở dữ liệu. |
ALTER | Sửa đổi một đối tượng cơ sở dữ liệu hiện có, chẳng hạn như một bảng. |
DROP | Xoá toàn bộ một bảng hoặc các đối tượng khác trong cơ sở dữ liệu. |
DML – Ngôn ngữ thao tác dữ liệu(Data Manipulation Language)
Lệnh | Mô tả |
---|---|
SELECT | Lấy ra các bảng ghi nhất định từ một hoặc nhiều bảng. |
INSERT | Tạo một bảng ghi.. |
UPDATE | Chỉnh sửa bảng ghi. |
DELETE | Xóa bảng ghi. |
DCL – Ngôn ngữ điều khiển dữ liệu (Data Control Language)
Lệnh | Mô tả |
---|---|
GRANT | Cung cấp một quyền cho người dùng. |
REVOKE | Lấy lại các quyền được cấp từ người dùng. |
6 lý do bạn nên học SQL
1. Khai thác dữ liệu
Biết sử dụng SQL sẽ cho phép bạn khai thác dữ liệu với hiệu quả cao hơn. Chỉ cần sử dụng các truy vấn cơ bản là bạn có thể xác định được dữ liệu cụ thể theo yêu cầu của người dùng.
2. Nhu cầu lập trình viên SQL cao
Khi bạn là backend developer, khả năng sử dụng SQL là yêu cầu bắt buộc. Cho nên biết sử dụng và sử dụng thành thạo để tối ưu query db là một ưu điểm cực kỳ tốt. Xem thêm việc làm SQL.
3. Dữ liệu có ở mọi nơi
Mọi ứng dụng trên internet để cần lưu trữ dữ liệu. Ngay cả các ứng dụng desktop, laptop và mobile cũng cần phải lưu dữ liệu. Khi bạn đăng ký tài khoản trên ứng dụng web, bạn đang cung cấp thông tin cho ứng dụng.
4. Thao tác với dữ liệu dễ dàng
Với SQL, việc bạn muốn thêm, sửa, đọc hay xóa dữ liệu trở lên dễ dàng hơn bao giờ hết. Ví dụ, nếu bạn muốn lấy thông tin người dùng với email chứa gmail
trong đó bạn có thể chạy một câu lệnh duy nhất sau với MySQL.
mysql> select * from users where email like '%gmail%'
Thử tưởng tượng việc này sẽ khó khăn như thế nào nếu như bạn phải dùng một ngôn ngữ lập trình thông thường để đọc toàn bộ nội dung file và tìm ra dòng chữ có chứa ‘gmail’ trong đó.
5. SQL được sử dụng và hỗ trợ bởi nhiều công ty lớn
Mặc dù SQL là ngôn ngữ khá đơn giản, nhưng nắm vững được nó là một kỹ năng là một điều vô cùng cần thiết.
Tất cả các công ty lớn về công nghệ trên thế giới hiện nay như Microsoft, IBM, Oracle… đều hỗ trợ việc phát triển ngôn ngữ này và SQL được rất nhiều công ty lớn sử dụng.
6. SQL giúp công việc lập trình dễ dàng hơn
Nếu không xài DB để lưu trữ dữ liệu, bạn có thể lưu dữ liệu trên một file trên server. Tuy nhiên thử tưởng tượng trong ứng dụng của bạn có rất nhiều loại thông tin cần lưu và bạn quyết định sử dụng nhiều file để lưu mỗi loại dữ liệu.
Việc này lại khiến cho việc đọc dữ liệu trở lên phân tán và quy trình maintain không dễ dàng chút nào. Ngoài ra nếu bạn có nhiều ứng dụng khác nhau cần lưu thông tin thì việc quản lý dữ liệu lại càng trở lên khó khăn.
Với SQL, bạn có thể lưu nhiều dữ liệu cho nhiều ứng dụng khác nhau trên cũng một cơ sở dữ liệu và việc truy cập các cơ sở dữ liệu này trở lên đơn giản hơn nhờ một cách thức giống nhau đối với nhiều cơ sở dữ liệu.
Các câu hỏi thường gặp về SQL
Sau đây là 50 câu hỏi phỏng vấn sql là gì phổ biến và hữu ích để bạn có thể chuẩn bị cho cuộc phỏng vấn trong khi học SQL.
STT | Câu hỏi | Câu trả lời |
---|---|---|
1 | SQL là gì? | SQL là viết tắt của Structured Query Language – ngôn ngữ truy vấn mang tính cấu trúc. Nó được thiết kế để quản lý dữ liệu trong một hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS). SQL là ngôn ngữ cơ sở dữ liệu, được dùng để tạo, xóa, lấy các hàng và sửa đổi các hàng. |
2 | Làm thế nào để chọn tất cả bản ghi từ table? | Sử dụng cú pháp sau: Select * from table_name; |
3 | Định nghĩa JOIN và các loại JOIN khác nhau? | Từ khóa JOIN được sử dụng để nạp dữ liệu từ hai hay nhiều bảng liên quan. Khi cần truy vấn các cột dữ liệu từ nhiều bảng khác nhau để trả về trong cùng một tập kết quả, cần sử dụng từ khóa “JOIN” Loại JOIN là – INNER JOIN (Hoặc JOIN) LEFT OUTER JOIN (Hoặc LEFT JOIN) RIGHT OUTER JOIN (Hoặc RIGHT JOIN) FULL OUTER JOIN (Hoặc OUTER JOIN) CROSS JOIN SELF JOIN |
4 | Cú pháp để thêm bản ghi vào một bảng là gì? | Để thêm bản ghi trong một bảng cú pháp INSERT được sử dụng. Ví dụ: INSERT into table_name VALUES (value1, value2..); |
5 | Làm thế nào để bạn thêm một cột vào một bảng? | Để thêm một cột khác trong bảng sử dụng lệnh.ALTER TABLE table_name ADD (column_name); |
6 | Xác định câu lệnh Delete SQL. | Xóa được sử dụng để xóa hàng hoặc các hàng từ một bảng dựa trên điều kiện được chỉ định. Cú pháp cơ bản như sau:DELETE FROM table_name<br>WHERE<Condition> |
7 | Xác định COMMIT? | COMMIT lưu tất cả các thay đổi được thực hiện bởi các câu lệnh DML. DML cho phép thực thi các câu truy vấn, bao gồm cú pháp để cập nhật – sửa đổi, chèn thêm và xoá các mẩu tin. |
8 | Khóa chính (PRIMARY KEY ) là gì? | Khóa chính là cột có các giá trị xác định duy nhất mỗi hàng trong một bảng. Giá trị khóa chính không bao giờ được sử dụng lại. Một cột là PRIMARY KEY thì không được phép có giá trị NULL. Một bảng chỉ cho phép tối đa một PRIMARY KEY. Mỗi bảng đều cần có khóa chính. |
9 | Khóa ngoại (Foreign key) là gì? | Khi một trường khoá chính của một bảng được thêm vào các bảng có liên quan để tạo ra trường phổ biến có liên quan đến hai bảng, nó được gọi là khoá ngoại trong các bảng khác. Các ràng buộc khóa ngoại thực thi toàn vẹn tham chiếu. |
10 | CHECK Constraint – Ràng buộc CHECK là gì? | Một ràng buộc CHECK được sử dụng để giới hạn các giá trị hoặc loại dữ liệu có thể được lưu trữ trong một cột. Nếu bản ghi không đáp ứng được điều kiện này, thì sẽ không được lưu trữ vào trong bảng. |
11 | Một bảng có thể có nhiều hơn một khoá ngoại? | Đúng, một bảng có thể có nhiều khóa ngoài và chỉ có một khóa chính. |
12 | Trường dữ liệu BOOLEAN có giá trị nào? | Đối với trường dữ liệu BOOLEAN, có hai giá trị: -1 (TRUE) và 0 (FALSE). |
13 | Thủ tục lưu trữ (stored procedure) là gì? | Một thủ tục lưu trữ là một tập hợp các truy vấn SQL có thể lấy đầu vào và gửi lại đầu ra. |
14 | IDENTITY trong SQL là gì? | Một cột IDENTITY trong SQL sẽ tự động sinh ra các giá trị số tự tăng. Có thể định nghĩa giá trị bắt đầu và gia tăng của cột nhận dạng. |
15 | NORMALIZATION – Chuẩn hóa trong sql là gì? | Quá trình thiết kế bảng để giảm thiểu sự thừa số liệu được gọi là chuẩn hóa. Chúng ta cần phải chia một cơ sở dữ liệu thành hai hay nhiều bảng và xác định các mối quan hệ giữa chúng. |
16 | Trigger là gì ? | Trigger là một thủ tục dược thực thi từ phía máy chủ CSDL khi một sự kiện bảng xảy ra (Chèn, cập nhật hoặc xóa lệnh thực hiện đối với một bảng cụ thể) . |
17 | Làm thế nào để lấy ra các hàng ngẫu nhiên từ một bảng? | Sử dụng mệnh đề SAMPLE chúng ta có thể chọn các hàng ngẫu nhiên. Ví dụ: SELECT * FROM table_name SAMPLE (10); |
18 | Cổng TCP / IP nào mà SQL Server chạy? | Mặc định SQL Server chạy trên cổng 1433. |
19 | Viết một truy vấn SELECT SQL mà trả về mỗi bản ghi chỉ một lần từ một bảng? | Để có được mỗi tên một lần duy nhất, chúng ta cần phải sử dụng từ khoá DISTINCT.SELECT DISTINCT name FROM table_name; |
20 | DML và DDL trong sql là gì? | DML là viết tắt của Ngôn ngữ Thao tác Dữ liệu ( Data Manipulation Language): INSERT, UPDATE và DELETE là các câu lệnh DML. DDL là viết tắt của Ngôn ngữ Định nghĩa Dữ liệu (Data Definition Language): CREATE, ALTER, DROP, RENAME là các câu lệnh DDL. |
21 | Lệnh nào để đổi tên một cột trong đầu ra của truy vấn SQL? | Có sử dụng cú pháp sau đây.:SELECT column_name AS new_name FROM table_name; |
22 | Thứ tự của SQL SELECT? | Thứ tự các mệnh đề SQL SELECT là: SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY. Trong đó SELECT và FROM là bắt buộc. |
23 | Giả sử một cột Student có hai cột, Name và Marks. Làm thế nào để có được Name và Marks của ba sinh viên top đầu. | SELECT Name, Marks FROM Student s1 where 3 <= (SELECT COUNT(*) FROM Students s2 WHERE s1.marks = s2.marks) |
24 | SQL comments là gì? | Khi muốn ghi chú thích vào câu truy vấn SQL, để làm cho câu truy vấn ấy trở nên rõ ràng và dễ hiểu hơn, thì sử dụng SQL comment. SQL comments có thể được đặt bởi hai dấu nối liên tiếp (-) hoặc /* …. */ Khi câu truy vấn được thực thi thì trình biên dịch sẽ tự động bỏ qua những dòng có comment. |
25 | Sự khác biệt giữa các lệnh TRUNCATE, DELETE và DROP? | DELETE xóa một hoặc tất cả các hàng từ một bảng dựa trên điều kiện và có thể được phục hồi lại. TRUNCATE xóa tất cả các hàng từ một bảng bằng cách phân bổ các trang bộ nhớ và không thể phục hồi lại DROP xóa hoàn toàn một bảng từ cơ sở dữ liệu. |
26 | Các thuộc tính của một giao dịch là gì? | Nói chung các thuộc tính này được gọi là thuộc tính ACID bao gồm: Tính nguyên tử (Atomicity) Tính nhất quán (Consistency) Cô lập (Isolation) Độ bền (Durability). |
27 | ROWID nghĩa là gì? | Đó là một cột giả dài 18 ký tự gắn liền với mỗi hàng của một bảng. |
28 | Xác định UNION, MINUS, UNION ALL, INTERSECT? | MINUS – sử dụng để kết hợp 2 câu lệnh SELECT, nó trả về tất cả các bản ghi chỉ thuộc vào bảng của câu truy vấn SELECT đầu tiên, những bản ghi giao nhau và những bản ghi của câu truy vấn SELECT thứ 2 thì không được lấy vào kết quả.. UNION – Bạn viết hai hay nhiều câu truy vấn SELECT khác nhau nhưng bạn muốn nó trả về một danh sách kết quả duy nhất thì bạn phải sử dụng toán tử UNION UNION ALL – trả về tất cả các hàng được chọn bởi một trong hai truy vấn, giữ lại các kết quả trùng INTERSECT – lấy ra những bản ghi nào mà nó hiện diện ở trong cả 2 bảng (có trong bảng này và cũng có trong bảng kia) |
29 | Giao dịch ( transaction) là gì? | Một giao dịch là một dãy mã chạy trên cơ sở dữ liệu. Cần có cơ sở dữ liệu từ một trạng thái nhất quán sang trạng thái khác. |
30 | Sự khác nhau giữa UNIQUE và PRIMARY KEY constraints là gì? | Một bảng có thể chỉ có một PRIMARY KEY và có thể không có hoặc có mộ hay nhiều UNIQUE keys. PRIMARY KEY không thể chứa giá trị Null , UNIQUE có thể chứa giá trị Null. |
31 | Khóa tổng hợp (Composite primary key) là gì? | Khóa chính được tạo trên nhiều cột được gọi là khóa chính tổng hợp. |
32 | Index là gì? | Index (Chỉ mục) là bảng tra cứu đặc biệt mà Database Search Engine có thể sử dụng để tăng nhanh thời gian và hiệu suất thực hiện các truy vấn. Index có thể được tạo ra trên một hoặc nhiều cột của một bảng. |
33 | Subquery là gì? | Truy vấn con (còn được gọi truy vấn phụ hay truy vấn lồng nhau) là một truy vấn bên trong truy vấn SQL khác và được nhúng bên trong mệnh đề WHERE. |
34 | Tối ưu hoá truy vấn là gì? | Tối ưu hóa truy vấn là một quá trình trong đó hệ thống cơ sở dữ liệu so sánh các chiến lược truy vấn khác nhau và chọn truy vấn với chi phí thấp nhất. |
35 | Collation là gì? | Bộ quy tắc định nghĩa cách dữ liệu được lưu trữ, cách phân biệt chữ hoa chữ thường và ký tự Kana có thể được xử lý như thế nào. |
36 | Tính toàn vẹn tham chiếu là gì? | Tập các quy tắc hạn chế các giá trị của một hoặc nhiều cột của các bảng dựa trên các giá trị của khóa chính hoặc khóa duy nhất của bảng tham chiếu. |
37 | Hàm Case là gì? | Trường hợp tạo điều kiện logic kiểu if-then-else trong SQL. Nó đánh giá một danh sách các điều kiện và trả về một trong nhiều biểu thức kết quả tốt. |
38 | Xác định một bảng tạm thời? | Một bảng tạm là một cấu trúc lưu trữ tạm thời để lưu trữ dữ liệu tạm thời. |
39 | Làm thế nào chúng ta có thể tránh trùng lặp hồ sơ trong một truy vấn? | Bằng cách sử dụng từ khoá DISTINCT sao chép hồ sơ trong một truy vấn có thể tránh được. |
40 | Giải thích sự khác nhau giữa Đổi tên (Rename) và Bí danh (Alias)? | Đổi tên là một tên thường xuyên cho một bảng hoặc cột Bí danh là tên tạm thời cho một bảng hoặc cột. |
41 | View là gì? | Một khung nhìn là một bảng ảo chứa dữ liệu từ một hoặc nhiều bảng. Lượt xem hạn chế quyền truy cập dữ liệu của bảng bằng cách chỉ chọn các giá trị được yêu cầu và thực hiện các truy vấn phức tạp một cách dễ dàng. |
42 | Lợi ích của Views là gì? | Ưu điểm của Views: Chế độ xem hạn chế quyền truy cập vào dữ liệu vì chế độ xem có thể hiển thị các cột được chọn từ bảng. Có thể sử dụng chế độ xem để truy vấn các kết quả tìm kiếm phức tạp. Ví dụ: chế độ xem có thể được sử dụng để truy vấn thông tin từ nhiều bảng mà không có sự hiểu biết của người dùng. |
43 | Liệt kê các đặc quyền khác nhau mà người dùng có thể cấp cho người dùng khác? | SELECT, CONNECT, RESOURCES. |
44 | Schema trong sql là gì? | Lược đồ là tập hợp các đối tượng cơ sở dữ liệu của Người dùng. |
45 | Bảng trong sql là gì? | Một bảng là đơn vị cơ bản của lưu trữ dữ liệu trong hệ thống quản lý cơ sở dữ liệu. Dữ liệu bảng được lưu trữ trong hàng và cột. |
46 | Chế độ xem (View) có chứa dữ liệu không? | Không, View là cấu trúc ảo. |
47 | Chế độ xem có thể dựa trên chế độ xem khác không? | Chế độ xem dựa trên một Chế độ xem khác. |
48 | Sự khác biệt giữa mệnh đề Having và mệnh đề Where? | Cả hai đều chỉ định điều kiện tìm kiếm nhưng mệnh đề Having chỉ được sử dụng với câu lệnh SELECT và thường được sử dụng với mệnh đề GROUP BY. Nếu mệnh đề GROUP BY không được sử dụng thì Havingn sử dụng giống như mệnh đề WHERE. |
49 | Sự khác nhau giữa bảng tạm cục bộ (Local) và bảng tạm toàn cầu (Global) là gì? | Nếu được định nghĩa bên trong câu lệnh hợp chất, Một bảng tạm thời cục bộ tồn tại trong 1 kết nối. Khi kết thúc kết nối thì bảng tạm này sẽ tự động được xóa. Tên của bảng tạm kiểu Local được bắt đầu bằng ký tử # Một bảng tạm thời toàn cầu tồn tại vĩnh viễn trong db nhưng các hàng của nó biến mất khi kết nối được đóng lại. Tên bảng tạm kiểu Global được bắt đầu bằng ##. |
50 | CTE trong sql là gì? | Biểu thức bảng CTE ( Common Table Expression) hoặc bảng chung là một biểu thức có chứa tập kết quả tạm thời được định nghĩa trong câu lệnh SQL. |
- Có thể bạn muốn xem thêm: