Cấu trúc lệnh SQL

NGÔN NGỮ SQL: QUẢN LÝ DỮ LIỆU

TRONG BÀI GIẢNG NÀY...

· Mục đích của Ngôn ngữ truy vấn cấu trúc (SQL) và vai trò đặc biệt của nó khi làm việc với cơ sở dữ liệu.

· Lịch sử hình thành và phát triển của ngôn ngữ SQL.

· Viết câu lệnh SQL.

· Lấy thông tin từ cơ sở dữ liệu bằng câu lệnh SELECT.

· Xây dựng các câu lệnh SQL có đặc điểm sau:

· sử dụng cấu trúc WHERE để chọn các hàng thỏa mãn các điều kiện khác nhau;

· sắp xếp kết quả truy vấn bằng cách sử dụng cấu trúc ORDER BY;

· sử dụng các hàm tổng hợp SQL;

· nhóm dữ liệu đã chọn bằng cách sử dụng cấu trúc GROUP BY;

· sử dụng các truy vấn phụ;

· sử dụng các phép nối bảng;

· ứng dụng các phép toán với tập hợp (UNION, INTERSECT, EXCEPT).

· Thực hiện các thay đổi đối với cơ sở dữ liệu bằng các câu lệnh INSERT, UPDATE và DELETE.

Một trong những ngôn ngữ nổi lên nhờ sự phát triển của mô hình dữ liệu quan hệ là SQL, ngôn ngữ này hiện đã trở nên rất phổ biến và thực sự đã trở thành ngôn ngữ tiêu chuẩn cho cơ sở dữ liệu quan hệ. Tiêu chuẩn ngôn ngữ SQL được Viện Tiêu chuẩn Quốc gia Hoa Kỳ (ANSI) phát hành vào năm 1986 và vào năm 1987, Tổ chức Tiêu chuẩn hóa Quốc tế (ISO) đã thông qua tiêu chuẩn này làm tiêu chuẩn quốc tế. Hiện tại, ngôn ngữ SQL được hỗ trợ bởi hàng trăm loại DBMS khác nhau, được phát triển cho nhiều nền tảng điện toán khác nhau, từ máy tính cá nhân đến máy tính lớn.

Bài giảng này sử dụng định nghĩa ISO của SQL.

Giới thiệu về ngôn ngữ SQL

Trong phần này, chúng ta sẽ xem xét mục đích của ngôn ngữ SQL, làm quen với lịch sử của nó và phân tích lý do tại sao giờ đây nó trở nên quan trọng đối với các ứng dụng cơ sở dữ liệu.

Mục đích của ngôn ngữ SQL

Bất kỳ ngôn ngữ nào được thiết kế để làm việc với cơ sở dữ liệu đều phải cung cấp cho người dùng những khả năng sau:

· tạo cơ sở dữ liệu và bảng biểu với mô tả đầy đủ về cấu trúc của chúng;



· Thực hiện các thao tác thao tác dữ liệu cơ bản như chèn, sửa và xóa dữ liệu khỏi bảng;

· Thực hiện các truy vấn đơn giản và phức tạp.

Ngoài ra, ngôn ngữ cơ sở dữ liệu phải giải quyết tất cả các vấn đề trên với nỗ lực tối thiểu từ phía người dùng, đồng thời cấu trúc và cú pháp các lệnh của nó phải khá đơn giản và dễ học.

Và cuối cùng, ngôn ngữ phải có tính phổ quát, tức là. đáp ứng một số tiêu chuẩn được công nhận, điều này sẽ cho phép sử dụng cùng cú pháp và cấu trúc lệnh khi chuyển từ DBMS này sang DBMS khác. Tiêu chuẩn ngôn ngữ SQL hiện đại đáp ứng hầu hết tất cả các yêu cầu này.

SQL là một ví dụ về ngôn ngữ chuyển đổi dữ liệu hoặc ngôn ngữ được thiết kế để làm việc với các bảng nhằm chuyển đổi dữ liệu đầu vào thành dạng đầu ra mong muốn. Ngôn ngữ SQL, được xác định theo tiêu chuẩn ISO, có hai thành phần chính:

· Ngôn ngữ định nghĩa dữ liệu (DDL), được thiết kế để xác định cấu trúc cơ sở dữ liệu và kiểm soát quyền truy cập vào dữ liệu;

· Ngôn ngữ thao tác dữ liệu (DML), được thiết kế để truy xuất và cập nhật dữ liệu.

Trước khi tiêu chuẩn SQL3 ra đời, SQL chỉ bao gồm các lệnh để xác định và thao tác dữ liệu; nó thiếu bất kỳ lệnh nào để kiểm soát tiến trình tính toán. Nói cách khác, ngôn ngữ này không có IF ... THEN ... ELSE, GO TO, DO ... WHILE và bất kỳ lệnh nào khác được thiết kế để kiểm soát tiến trình của quá trình tính toán. Những nhiệm vụ như vậy phải được giải quyết theo chương trình, sử dụng ngôn ngữ lập trình hoặc kiểm soát tác vụ hoặc tương tác, do chính người dùng thực hiện. Do tính chưa hoàn thiện này, từ quan điểm tổ chức quá trình tính toán, ngôn ngữ SQL có thể được sử dụng theo hai cách. Công việc tương tác đầu tiên liên quan đến việc người dùng nhập các câu lệnh SQL riêng lẻ từ thiết bị đầu cuối. Thứ hai là nhúng các câu lệnh SQL vào các chương trình ngôn ngữ thủ tục.

Ưu điểm của ngôn ngữ SQL3, định nghĩa chính thức được thông qua vào năm 1999:

· Ngôn ngữ SQL tương đối dễ học.

· Đây là ngôn ngữ phi thủ tục nên cần xác định thông tin nào cần lấy chứ không phải cách lấy thông tin. Nói cách khác, ngôn ngữ SQL không yêu cầu chỉ định các phương thức truy cập dữ liệu.

· Giống như hầu hết các ngôn ngữ hiện đại, SQL hỗ trợ một định dạng miễn phí để viết câu lệnh. Điều này có nghĩa là các phần tử toán tử riêng lẻ không được liên kết với các vị trí cố định trên màn hình khi bạn nhập.

· Cấu trúc lệnh được xác định bằng một tập hợp các từ khóa là các từ tiếng Anh thông dụng như CREATE TABLE - Tạo bảng, INSERT - Insert, SELECT - Select.

Ví dụ:

TẠO BẢNG [Doanh số] ( (S), [Tên đối tượng] VARCHAR(15), [Chi phí] DECIMAL(7,2));

CHÈN VÀO [Đối tượng] GIÁ TRỊ ("SG16", "Nâu", 8300);

CHỌN , [Tên đối tượng], [Chi phí];

TỪ [Bán hàng]

Ở ĐÂU [Chi phí] > 10000;

· Ngôn ngữ SQL có thể được sử dụng bởi nhiều người dùng, bao gồm quản trị viên cơ sở dữ liệu (DBA), nhân viên quản lý công ty, lập trình viên ứng dụng và nhiều người dùng cuối khác thuộc nhiều danh mục khác nhau.

Hiện tại, có các tiêu chuẩn quốc tế dành cho ngôn ngữ SQL chính thức xác định nó là ngôn ngữ tiêu chuẩn để tạo và thao tác cơ sở dữ liệu quan hệ.

Lịch sử của ngôn ngữ SQL

Lịch sử của mô hình dữ liệu quan hệ và gián tiếp là ngôn ngữ SQL, bắt đầu vào năm 1970 với việc xuất bản một bài báo chuyên đề của E. F. Codd, người lúc đó đang làm việc tại phòng thí nghiệm nghiên cứu của IBM ở San Jose. Năm 1974, D. Chamberlain, người làm việc trong cùng phòng thí nghiệm, đã xuất bản định nghĩa về một ngôn ngữ có tên là “Ngôn ngữ truy vấn tiếng Anh có cấu trúc”, hay SEQUEL. Phiên bản sửa đổi của ngôn ngữ này, SEQUEL/2, được phát hành năm 1976; sau đó tên của nó phải được đổi thành SQL vì lý do pháp lý - chữ viết tắt SEQUEL đã được các nhà ngữ văn sử dụng. Nhưng cho đến ngày nay, nhiều người vẫn phát âm từ viết tắt SQL là "sequel", mặc dù chính thức khuyến nghị đọc nó là "es-qu-el".

Năm 1976, IBM phát hành một DBMS nguyên mẫu dựa trên ngôn ngữ SEQUEL/2, được gọi là "System R". Mục đích của thử nghiệm này là để kiểm tra tính khả thi của việc triển khai mô hình quan hệ. Trong số các khía cạnh tích cực khác, kết quả quan trọng nhất của dự án này có thể được coi là sự phát triển của chính ngôn ngữ SQL. Tuy nhiên, nguồn gốc của ngôn ngữ này bắt nguồn từ ngôn ngữ SQUARE (Chỉ định truy vấn dưới dạng biểu thức Rational), tiền thân của ngôn ngữ này. Dự án System R. Ngôn ngữ SQUARE được phát triển như một công cụ nghiên cứu để triển khai đại số quan hệ thông qua các cụm từ được viết bằng tiếng Anh.

Vào cuối những năm 1970, công ty hiện nay đã trở thành Tập đoàn Oracle đã phát hành Oracle DBMS. Có lẽ đây là triển khai thương mại đầu tiên của một DBMS quan hệ được xây dựng bằng ngôn ngữ SQL.

Một lát sau, INGRES DBMS xuất hiện, sử dụng ngôn ngữ truy vấn QUEL.

Ngôn ngữ này có cấu trúc chặt chẽ hơn SQL, nhưng ngữ nghĩa của nó ít gần với tiếng Anh thông thường hơn. Sau này, khi SQL được sử dụng làm ngôn ngữ tiêu chuẩn cho cơ sở dữ liệu quan hệ, INGRES DBMS đã được chuyển đổi hoàn toàn để sử dụng nó. Năm 1981, IBM phát hành DBMS quan hệ thương mại đầu tiên, được gọi là SQL/DS (dành cho môi trường DOS/VSE). Năm 1982, một phiên bản của hệ thống này đã được phát hành cho môi trường VM/CMS và vào năm 1983 - cho môi trường MVS, nhưng đã có tên là DB2.

Năm 1982, Viện Tiêu chuẩn Quốc gia Hoa Kỳ (ANSI) bắt đầu nghiên cứu Ngôn ngữ Cơ sở dữ liệu Quan hệ (RDL), được hướng dẫn bởi các tài liệu khái niệm nhận được từ Tập đoàn IBM. Năm 1983, Tổ chức Tiêu chuẩn hóa Quốc tế (ISO) đã tham gia vào công việc này. Những nỗ lực chung của cả hai tổ chức đã đạt đến đỉnh cao trong việc phát hành tiêu chuẩn ngôn ngữ SQL. Tên RDL đã bị loại bỏ vào năm 1984 và ngôn ngữ dự thảo đã được thiết kế lại để gần hơn với các triển khai ngôn ngữ SQL hiện có.

Phiên bản gốc của tiêu chuẩn này được ISO ban hành vào năm 1987 đã thu hút một làn sóng chỉ trích. Đặc biệt, Date, một nhà nghiên cứu nổi tiếng trong lĩnh vực này, đã chỉ ra rằng tiêu chuẩn này bỏ qua các chức năng quan trọng, bao gồm kiểm soát tính toàn vẹn tham chiếu và một số toán tử quan hệ.

Ngoài ra, ông còn lưu ý đến sự dư thừa quá mức của ngôn ngữ - cùng một yêu cầu có thể được viết bằng nhiều phiên bản khác nhau. Hầu hết những lời chỉ trích đều được công nhận là công bằng và những điều chỉnh cần thiết đã được thực hiện đối với tiêu chuẩn trước khi xuất bản. Tuy nhiên, người ta đã quyết định rằng điều quan trọng hơn là phải phát hành tiêu chuẩn càng nhanh càng tốt để nó có thể dùng làm cơ sở chung để cả ngôn ngữ và cách triển khai của nó có thể được phát triển hơn nữa, thay vì đợi cho đến khi tất cả các tính năng khác nhau các chuyên gia được coi là bắt buộc đã được xác định và thống nhất cho một ngôn ngữ tương tự.

Năm 1989, ISO đã công bố bản sửa đổi tiêu chuẩn xác định các chức năng toàn vẹn dữ liệu. Năm 1992, phiên bản sửa đổi đáng kể đầu tiên của tiêu chuẩn ISO, đôi khi được gọi là SQL2 hoặc SQL-92, đã được phát hành. Mặc dù một số hàm được định nghĩa lần đầu tiên trong tiêu chuẩn này nhưng nhiều hàm trong số đó đã được triển khai toàn bộ hoặc một phần trong một hoặc nhiều triển khai thương mại của ngôn ngữ SQL.

Và phiên bản tiếp theo của tiêu chuẩn này, thường được gọi là SQL3, chỉ được phát hành vào năm 1999. Phiên bản này cung cấp hỗ trợ bổ sung cho các tính năng quản lý dữ liệu hướng đối tượng.

Các chức năng được các nhà phát triển triển khai thương mại thêm vào tiêu chuẩn ngôn ngữ được gọi là phần mở rộng. Ví dụ: tiêu chuẩn ngôn ngữ SQL xác định sáu loại dữ liệu khác nhau có thể được lưu trữ trong cơ sở dữ liệu. Trong nhiều triển khai, danh sách này được bổ sung bằng nhiều phần mở rộng khác nhau. Mỗi lần thực hiện một ngôn ngữ được gọi là một phương ngữ. Không có hai phương ngữ hoàn toàn giống nhau, cũng như hiện tại không có phương ngữ nào hoàn toàn tuân thủ tiêu chuẩn ISO.

Hơn nữa, khi các nhà phát triển cơ sở dữ liệu thêm chức năng mới vào hệ thống của họ, họ liên tục mở rộng các phương ngữ SQL, khiến các phương ngữ riêng lẻ ngày càng trở nên khác biệt với nhau. Tuy nhiên, cốt lõi cơ bản của ngôn ngữ SQL ít nhiều vẫn được chuẩn hóa trong tất cả các triển khai.

Mặc dù các khái niệm ban đầu về ngôn ngữ SQL được IBM phát triển nhưng tầm quan trọng của nó đã sớm thúc đẩy các nhà phát triển khác tạo ra các triển khai của riêng họ. Hiện tại, có hàng trăm sản phẩm có sẵn trên thị trường được xây dựng bằng ngôn ngữ SQL và chúng tôi liên tục nghe về việc ngày càng có nhiều phiên bản mới được phát hành,

cơ sở dữ liệu có thể hoạt động trên nhiều hệ thống máy tính thuộc nhiều loại khác nhau. Thật vậy, với sự trợ giúp của nó, người dùng có thể thao tác dữ liệu bất kể họ đang làm việc trên máy tính cá nhân, máy trạm mạng hay máy tính lớn.

Một trong những ngôn ngữ nổi lên nhờ sự phát triển của mô hình dữ liệu quan hệ là ngôn ngữ SQL (Ngôn ngữ truy vấn có cấu trúc), hiện đã trở nên rất phổ biến và thực sự đã trở thành ngôn ngữ ngôn ngữ chuẩn Cơ sở dữ liệu quan hệ. Tiêu chuẩn SQL được Viện Tiêu chuẩn Quốc gia Hoa Kỳ (ANSI) phát hành vào năm 1986 và được Tổ chức Tiêu chuẩn Quốc tế (ISO) áp dụng trên phạm vi quốc tế vào năm 1987. Tiêu chuẩn SQL hiện tại được gọi là SQL/92.

Việc sử dụng bất kỳ tiêu chuẩn nào không chỉ liên quan đến nhiều ưu điểm khá rõ ràng mà còn có những nhược điểm nhất định. Trước hết, các tiêu chuẩn chỉ đạo sự phát triển của ngành liên quan theo một hướng nhất định; Trong trường hợp ngôn ngữ SQL, việc có các nguyên tắc cơ bản vững chắc cuối cùng sẽ dẫn đến khả năng tương tác giữa các triển khai khác nhau của nó và góp phần tăng tính di động của phần mềm và cơ sở dữ liệu nói chung cũng như tính linh hoạt của quản trị viên cơ sở dữ liệu. Mặt khác, các tiêu chuẩn hạn chế tính linh hoạt và chức năng của việc triển khai cụ thể. Dưới thực hiện ngôn ngữ SQL đề cập đến sản phẩm phần mềm SQL của nhà sản xuất tương ứng. Để mở rộng chức năng, nhiều nhà phát triển tuân thủ các tiêu chuẩn được chấp nhận sẽ thêm vào ngôn ngữ chuẩn SQL mở rộng khác nhau. Cần lưu ý rằng các tiêu chuẩn yêu cầu bất kỳ triển khai ngôn ngữ SQL có những đặc điểm nhất định và phản ánh rộng rãi các xu hướng chính không chỉ dẫn đến khả năng tương thích giữa tất cả các triển khai cạnh tranh mà còn giúp tăng giá trị của người lập trình và người dùng SQL Cơ sở dữ liệu quan hệ trong thị trường phần mềm hiện đại.

Tất cả cụ thể triển khai ngôn ngữ có phần khác nhau. Điều quan tâm nhất của nhà sản xuất là đảm bảo rằng việc triển khai của họ đáp ứng các tiêu chuẩn ANSI hiện tại về tính di động và trải nghiệm người dùng. Tuy nhiên, mỗi triển khai SQL đều có những cải tiến để đáp ứng các yêu cầu của một máy chủ cơ sở dữ liệu cụ thể. Những cải tiến hoặc phần mở rộng này cho ngôn ngữ SQL là các lệnh và tùy chọn bổ sung là phần bổ sung cho gói tiêu chuẩn và có sẵn trong quá trình triển khai cụ thể đó.

Hiện tại, ngôn ngữ SQL được hỗ trợ bởi hàng chục DBMS thuộc nhiều loại khác nhau, được phát triển cho nhiều nền tảng điện toán khác nhau, từ máy tính cá nhân đến máy tính lớn.

Tất cả các ngôn ngữ thao tác dữ liệu được tạo cho nhiều DBMS trước khi ra đời Cơ sở dữ liệu quan hệ, tập trung vào các hoạt động với dữ liệu được trình bày dưới dạng bản ghi tệp logic. Tất nhiên, điều này đòi hỏi người dùng phải có kiến ​​thức chi tiết về tổ chức lưu trữ dữ liệu và nỗ lực nghiêm túc để xác định dữ liệu nào là cần thiết, vị trí của nó và cách lấy dữ liệu đó.

Ngôn ngữ SQL đang được xem xét tập trung vào các hoạt động với dữ liệu được trình bày dưới dạng các tập hợp bảng quan hệ được liên kết với nhau một cách logic. Đặc điểm quan trọng nhất của cấu trúc của nó là tập trung vào kết quả cuối cùng của quá trình xử lý dữ liệu chứ không phải vào quy trình xử lý này. Bản thân ngôn ngữ SQL xác định vị trí của dữ liệu, chỉ mục và thậm chí cả chuỗi hoạt động hiệu quả nhất sẽ được sử dụng để thu được kết quả, do đó không cần thiết phải chỉ định các chi tiết này trong truy vấn cơ sở dữ liệu.

Giới thiệu công nghệ client-server

Cùng với việc mở rộng thị trường dịch vụ thông tin, các nhà sản xuất phần mềm bắt đầu sản xuất các hệ thống phần mềm ngày càng thông minh và do đó có số lượng lớn. Nhiều tổ chức và người dùng cá nhân thường không thể đặt sản phẩm đã mua trên máy tính của họ. Để trao đổi và phân phối thông tin, các mạng máy tính đã được tạo ra và các chương trình và dữ liệu tổng quát bắt đầu được cài đặt trên các máy chủ tệp đặc biệt.

Nhờ các DBMS làm việc với các máy chủ tập tin, nhiều người dùng có quyền truy cập vào cùng một cơ sở dữ liệu. Việc phát triển các hệ thống quản lý tự động khác nhau cho các tổ chức được đơn giản hóa. Tuy nhiên, với cách tiếp cận này, tất cả việc xử lý yêu cầu từ các chương trình hoặc từ thiết bị đầu cuối của máy tính người dùng đều được thực hiện trên chúng, do đó, để thực hiện ngay cả một yêu cầu đơn giản, cần phải đọc hoặc ghi toàn bộ tệp từ máy chủ tệp và điều này dẫn đến xung đột. tình trạng quá tải mạng. Để khắc phục những nhược điểm này người ta đã đề xuất công nghệ client-server, nhưng đồng thời cần có một ngôn ngữ thống nhất để giao tiếp với máy chủ - sự lựa chọn thuộc về SQL.

Công nghệ máy khách-máy chủ nghĩa là cách tương tác của các thành phần phần mềm trong đó chúng tạo thành một hệ thống duy nhất. Đúng như tên gọi, có một quy trình máy khách nhất định yêu cầu một số tài nguyên nhất định, cũng như quá trình máy chủ, nơi cung cấp các tài nguyên này. Không nhất thiết họ phải ở trên cùng một máy tính. Thông thường, người ta thường đặt máy chủ trên một nút của mạng cục bộ và máy khách trên các nút khác.

Trong ngữ cảnh cơ sở dữ liệu, máy khách kiểm soát logic và giao diện người dùng của ứng dụng, hoạt động như một máy trạm chạy các ứng dụng cơ sở dữ liệu. Máy khách chấp nhận yêu cầu từ người dùng, kiểm tra cú pháp và tạo truy vấn cơ sở dữ liệu bằng SQL hoặc ngôn ngữ cơ sở dữ liệu khác phù hợp với logic ứng dụng. Sau đó, nó sẽ gửi một tin nhắn đến máy chủ, chờ phản hồi và định dạng dữ liệu nhận được để trình bày cho người dùng. Máy chủ nhận và xử lý các yêu cầu tới cơ sở dữ liệu, sau đó gửi kết quả lại cho máy khách. Quá trình xử lý này bao gồm xác minh thông tin xác thực của khách hàng, đảm bảo các yêu cầu về tính toàn vẹn cũng như thực hiện yêu cầu và cập nhật dữ liệu. Ngoài ra, kiểm soát đồng thời và phục hồi được hỗ trợ.

Kiến trúc client-server có một số lợi thế.

Bạn là người mới làm quen với lập trình hay đơn giản là bạn đã tránh học SQL trước đây? Sau đó, bạn đã đến đúng địa chỉ, vì bất kỳ nhà phát triển nào cuối cùng cũng phải đối mặt với nhu cầu biết ngôn ngữ truy vấn này. Bạn có thể không phải là người thiết kế cơ sở dữ liệu chính nhưng gần như không thể tránh khỏi việc làm việc với họ. Tôi hy vọng phần tổng quan ngắn gọn về cú pháp truy vấn SQL cơ bản này sẽ giúp ích cho nhà phát triển quan tâm và bất kỳ ai khác cần nó.

Cơ sở dữ liệu SQL là gì?

Structured Query Language ( S có cấu trúc Q uery L anguage) là một tiêu chuẩn giao tiếp cơ sở dữ liệu được ANSI hỗ trợ. Phiên bản mới nhất là SQL-99, mặc dù một tiêu chuẩn mới đã được phát triển. Hầu hết các cơ sở dữ liệu đều tuân thủ chặt chẽ tiêu chuẩn ANSI-92. Đã có nhiều cuộc thảo luận về việc giới thiệu các tiêu chuẩn hiện đại hơn, nhưng các nhà cung cấp cơ sở dữ liệu thương mại đang dần loại bỏ điều này bằng cách phát triển các khái niệm mới của riêng họ để lưu trữ dữ liệu được lưu trữ. Hầu hết mọi cơ sở dữ liệu đều sử dụng một số bộ cú pháp duy nhất, mặc dù rất giống với tiêu chuẩn ANSI. Trong hầu hết các trường hợp, cú pháp này là phần mở rộng của tiêu chuẩn cơ sở, mặc dù có những trường hợp cú pháp này tạo ra các kết quả khác nhau cho các cơ sở dữ liệu khác nhau. Việc xem lại tài liệu cơ sở dữ liệu luôn là một ý tưởng hay, đặc biệt nếu bạn nhận được kết quả không mong muốn.

Nếu bạn mới làm quen với SQL, có một số khái niệm cơ bản bạn cần hiểu.

Nói chung, "cơ sở dữ liệu" là tên chung cho hệ thống quản lý cơ sở dữ liệu quan hệ(RDBMS). Đối với một số hệ thống, "cơ sở dữ liệu" cũng đề cập đến một nhóm bảng, dữ liệu hoặc thông tin cấu hình vốn là một phần tách biệt với các cấu trúc tương tự khác. Trong trường hợp này, mỗi lần cài đặt cơ sở dữ liệu SQL có thể bao gồm một số cơ sở dữ liệu. Trong các hệ thống khác, chúng được gọi là bảng.

Bảng là một cấu trúc cơ sở dữ liệu bao gồm cột chứa đựng dòng dữ liệu. Thông thường, các bảng được tạo để chứa thông tin liên quan. Nhiều bảng có thể được tạo trong cùng một cơ sở dữ liệu.

Mỗi cột đại diện cho một thuộc tính hoặc tập hợp thuộc tính của đối tượng, chẳng hạn như số nhận dạng nhân viên, chiều cao, màu xe, v.v. Thuật ngữ thường được sử dụng để chỉ một cột là cánh đồng cho biết tên, ví dụ "trong trường Tên". Trường hàng là phần tử tối thiểu của bảng. Mỗi cột trong bảng có tên, kiểu dữ liệu và kích thước cụ thể. Tên cột phải là duy nhất trong bảng.

Mỗi hàng (hoặc bản ghi) đại diện cho một tập hợp các thuộc tính của một đối tượng cụ thể, ví dụ: một hàng có thể chứa mã số nhận dạng của nhân viên, mức lương, năm sinh của anh ta, v.v. Các hàng của bảng không có tên. Để truy cập vào một hàng cụ thể, người dùng phải chỉ định một số thuộc tính (hoặc tập hợp thuộc tính) để xác định duy nhất nó.

Một trong những thao tác quan trọng nhất được thực hiện khi làm việc với dữ liệu là truy xuất thông tin được lưu trữ trong cơ sở dữ liệu. Để làm điều này, người dùng phải thực thi lời yêu cầu(truy vấn).

Bây giờ chúng ta hãy xem các loại truy vấn cơ sở dữ liệu chính tập trung vào thao tác dữ liệu trong cơ sở dữ liệu. Vì mục đích của chúng tôi, tất cả các ví dụ đều được cung cấp ở dạng SQL tiêu chuẩn để phù hợp với mọi môi trường.

Các loại truy vấn dữ liệu

Có bốn loại truy vấn dữ liệu chính trong SQL, được gọi là ngôn ngữ thao tác dữ liệu(Ngôn ngữ thao tác dữ liệu hoặc DML):

  • LỰA CHỌN– chọn các hàng từ bảng;
  • CHÈN– thêm hàng vào bảng;
  • CẬP NHẬT– thay đổi các hàng trong bảng;
  • XÓA BỎ– xóa các hàng trong bảng;

Mỗi truy vấn này có các toán tử và hàm khác nhau được sử dụng để thực hiện một số hành động trên dữ liệu. Truy vấn SELECT có số lượng tùy chọn lớn nhất. Ngoài ra còn có các loại truy vấn bổ sung được sử dụng cùng với CHỌN, chẳng hạn như THAM GIA và UNION. Nhưng hiện tại, chúng tôi sẽ chỉ tập trung vào các truy vấn cơ bản.

Sử dụng truy vấn CHỌN để chọn dữ liệu bạn muốn

Để truy xuất thông tin được lưu trữ trong cơ sở dữ liệu, truy vấn SELECT được sử dụng. Hiệu ứng cơ bản của truy vấn này được giới hạn ở một bảng duy nhất, mặc dù có những thiết kế cho phép bạn chọn từ nhiều bảng cùng một lúc. Để lấy tất cả các hàng dữ liệu cho các cột cụ thể, một truy vấn như sau sẽ được sử dụng:

CHỌN cột1, cột2 TỪ tên_bảng;

Bạn cũng có thể lấy tất cả các cột từ một bảng bằng ký tự đại diện *:

CHỌN * TỪ tên_bảng;

Điều này có thể hữu ích khi bạn định chọn dữ liệu bằng mệnh đề WHERE cụ thể. Truy vấn sau sẽ trả về tất cả các cột từ tất cả các hàng trong đó "cột1" chứa giá trị "3":

Ngoài = (bằng), còn có các toán tử điều kiện sau:

Ngoài ra, bạn có thể sử dụng điều kiện BITWEEN và THÍCH để so sánh với điều kiện WHERE cũng như sự kết hợp của toán tử AND và OR.

Ý nghĩa trong bản dịch tiếng Nga: chọn tất cả các hàng từ bảng table_name, trong đó giá trị của cột tuổi lớn hơn hoặc bằng 18 và giá trị của cột Họ nằm trong phạm vi bảng chữ cái từ Ivanov đến Sidorov hoặc giá trị của cột Công ty là Motorola.

Sử dụng truy vấn INSERT để chèn dữ liệu mới

Truy vấn INSERT được sử dụng để sự sáng tạo dòng dữ liệu mới. Để cập nhật dữ liệu hiện có hoặc các trường hàng trống, bạn phải sử dụng truy vấn CẬP NHẬT.

Ví dụ cú pháp truy vấn INSERT:

XÁC NHẬN VÀO tên_bảng (cột1, cột2, cột3) GIÁ TRỊ ("data1", "data2", "data3");

Nếu bạn định chèn tất cả các giá trị theo thứ tự xuất hiện của các cột trong bảng, bạn có thể bỏ qua tên cột, mặc dù điều này tốt hơn để dễ đọc. Ngoài ra, nếu liệt kê các cột, bạn không nhất thiết phải liệt kê chúng theo thứ tự xuất hiện trong cơ sở dữ liệu, miễn là các giá trị bạn nhập khớp với thứ tự đó. Bạn không nên liệt kê những cột không chứa thông tin.

Thông tin hiện có trong cơ sở dữ liệu được thay đổi theo cách rất giống nhau.

CẬP NHẬT Truy vấn và điều kiện WHERE

CẬP NHẬT được sử dụng để thay đổi các giá trị hiện có hoặc giải phóng một trường trong một hàng, do đó các giá trị mới phải khớp với kiểu dữ liệu hiện có và cung cấp các giá trị được chấp nhận. Nếu không muốn thay đổi giá trị ở tất cả các hàng thì bạn cần sử dụng mệnh đề WHERE.

Bạn có thể sử dụng WHERE trên bất kỳ cột nào, kể cả cột bạn muốn thay đổi. Điều này được sử dụng khi cần thay thế một giá trị cụ thể bằng một giá trị khác.

Hãy cẩn thận! Truy vấn DELETE xóa toàn bộ hàng

Truy vấn DELETE sẽ xóa hoàn toàn một hàng khỏi cơ sở dữ liệu. Nếu bạn muốn xóa một trường duy nhất thì bạn cần sử dụng yêu cầu CẬP NHẬT và đặt trường này thành giá trị tương tự như NULL trong chương trình của bạn. Hãy cẩn thận giới hạn truy vấn DELETE của bạn ở mệnh đề WHERE, nếu không bạn có thể mất toàn bộ nội dung của bảng.

Sau khi một hàng đã bị xóa khỏi cơ sở dữ liệu của bạn, nó sẽ không thể được khôi phục lại, vì vậy bạn nên có một cột có tên là "IsActive" hoặc cột tương tự mà bạn có thể thay đổi thành null, điều này sẽ cho biết rằng chế độ xem dữ liệu từ hàng đó đã bị khóa.

Bây giờ bạn đã biết kiến ​​thức cơ bản về truy vấn SQL

SQL là ngôn ngữ cơ sở dữ liệu và chúng tôi đã đề cập đến các lệnh cơ bản và quan trọng nhất được sử dụng trong truy vấn dữ liệu. Có rất nhiều khái niệm cốt lõi chưa được đề cập đến (ví dụ: SUM và COUNT), nhưng một số lệnh mà chúng tôi liệt kê ở trên sẽ khuyến khích bạn chủ động và tìm hiểu sâu hơn về ngôn ngữ truy vấn tuyệt vời có tên SQL.

Ngày nay, các khóa học SQL “dành cho người mới bắt đầu” đang ngày càng trở nên phổ biến. Điều này có thể được giải thích rất đơn giản, bởi vì trong thế giới hiện đại, ngày càng có nhiều cái gọi là dịch vụ web “động”. Chúng được phân biệt bằng lớp vỏ khá linh hoạt và dựa trên Tất cả các lập trình viên mới quyết định dành các trang web, trước hết hãy đăng ký các khóa học SQL “dành cho người mới bắt đầu”.

Tại sao nên học ngôn ngữ này?

Trước hết, SQL được dạy để tiếp tục tạo ra nhiều ứng dụng khác nhau cho một trong những công cụ blog phổ biến nhất hiện nay - WordPress. Sau khi hoàn thành một số bài học đơn giản, bạn sẽ có thể tạo các truy vấn ở bất kỳ mức độ phức tạp nào, điều này chỉ xác nhận tính đơn giản của ngôn ngữ này.

SQL là gì?

Hoặc một ngôn ngữ truy vấn có cấu trúc, được tạo ra cho một mục đích duy nhất: xác định, cung cấp quyền truy cập và xử lý chúng trong khoảng thời gian khá ngắn. Nếu bạn biết ý nghĩa của SQL thì bạn sẽ hiểu rằng máy chủ này được phân loại là ngôn ngữ được gọi là ngôn ngữ “phi thủ tục”. Nghĩa là, khả năng của nó chỉ bao gồm mô tả về bất kỳ thành phần hoặc kết quả nào mà bạn muốn thấy trong tương lai trên trang web. Nhưng khi nào thì không cho biết chính xác kết quả sẽ thu được là gì. Mỗi yêu cầu mới trong ngôn ngữ này giống như một “cấu trúc thượng tầng” bổ sung. Theo thứ tự chúng được nhập vào cơ sở dữ liệu, các truy vấn sẽ được thực hiện.

Những thủ tục nào có thể được thực hiện bằng ngôn ngữ này?

Mặc dù đơn giản nhưng cơ sở dữ liệu SQL cho phép bạn tạo nhiều truy vấn khác nhau. Vậy bạn có thể làm gì nếu học ngôn ngữ lập trình quan trọng này?

  • tạo nhiều loại bảng;
  • nhận, lưu trữ và sửa đổi dữ liệu nhận được;
  • thay đổi cấu trúc bảng theo ý của bạn;
  • kết hợp thông tin nhận được thành các khối duy nhất;
  • tính toán dữ liệu nhận được;
  • đảm bảo bảo vệ thông tin đầy đủ.

Lệnh nào phổ biến nhất trong ngôn ngữ này?

Nếu bạn quyết định tham gia khóa học SQL for Dummies thì bạn sẽ nhận được thông tin chi tiết về các lệnh được sử dụng khi tạo truy vấn bằng khóa học đó. Phổ biến nhất hiện nay là:

  1. DDL là lệnh xác định dữ liệu. Nó được sử dụng để tạo, sửa đổi và xóa nhiều loại đối tượng trong cơ sở dữ liệu.
  2. DCL là lệnh thao tác dữ liệu. Nó được sử dụng để cung cấp cho những người dùng khác nhau quyền truy cập vào thông tin trong cơ sở dữ liệu, cũng như sử dụng các bảng hoặc dạng xem.
  3. TCL là nhóm quản lý nhiều giao dịch khác nhau. Mục đích chính của nó là xác định tiến độ của một giao dịch.
  4. DML - thao tác dữ liệu nhận được. Nhiệm vụ của nó là cho phép người dùng di chuyển nhiều thông tin khác nhau từ cơ sở dữ liệu hoặc nhập thông tin đó vào đó.

Các loại đặc quyền tồn tại trong máy chủ này

Đặc quyền đề cập đến những hành động mà một người dùng cụ thể có thể thực hiện theo trạng thái của mình. Tất nhiên, tối thiểu nhất là đăng nhập thường xuyên. Tất nhiên, đặc quyền có thể thay đổi theo thời gian. Những cái cũ sẽ bị xóa và những cái mới sẽ được thêm vào. Ngày nay, tất cả những người tham gia khóa học SQL Server “dành cho người mới bắt đầu” đều biết rằng có một số loại hành động được phép:

  1. Loại đối tượng - người dùng chỉ được phép thực hiện bất kỳ lệnh nào liên quan đến một đối tượng cụ thể nằm trong cơ sở dữ liệu. Đồng thời, các đặc quyền khác nhau đối với các đối tượng khác nhau. Chúng cũng được gắn không chỉ với một người dùng cụ thể mà còn với các bảng. Nếu ai đó sử dụng khả năng của mình để tạo ra một cái bàn thì người đó được coi là chủ sở hữu của nó. Vì vậy, anh ta có quyền gán những đặc quyền mới cho những người dùng khác liên quan đến thông tin trong đó.
  2. Loại hệ thống được gọi là bản quyền dữ liệu. Người dùng đã nhận được các đặc quyền như vậy có thể tạo nhiều đối tượng khác nhau trong cơ sở dữ liệu.

Lịch sử của SQL

Ngôn ngữ này được Phòng thí nghiệm nghiên cứu IBM tạo ra vào năm 1970. Lúc đó tên của nó có hơi khác một chút (SEQUEL) nhưng sau vài năm sử dụng thì được đổi, rút ​​ngắn lại một chút. Mặc dù vậy, thậm chí ngày nay nhiều chuyên gia lập trình nổi tiếng thế giới vẫn phát âm cái tên này theo cách lỗi thời. SQL được tạo ra với một mục đích duy nhất - phát minh ra một ngôn ngữ đơn giản đến mức ngay cả người dùng Internet bình thường cũng có thể học nó mà không gặp bất kỳ vấn đề gì. Một sự thật thú vị là vào thời điểm đó SQL không phải là ngôn ngữ duy nhất như vậy. Ở California, một nhóm chuyên gia khác đã phát triển một loại Ingres tương tự nhưng nó chưa bao giờ trở nên phổ biến. Trước năm 1980, có một số biến thể của SQL chỉ khác nhau một chút. Để tránh nhầm lẫn, một phiên bản tiêu chuẩn đã được tạo ra vào năm 1983, phiên bản này vẫn còn phổ biến cho đến ngày nay. Các khóa học SQL "dành cho người mới bắt đầu" cho phép bạn tìm hiểu thêm về dịch vụ và nghiên cứu đầy đủ về dịch vụ này trong vài tuần.

Ngôn ngữ truy vấn có cấu trúc hoặc SQL là ngôn ngữ lập trình khai báo để sử dụng trong cơ sở dữ liệu gần như quan hệ. Nhiều tính năng ban đầu của SQL được lấy từ phép tính bộ dữ liệu, nhưng các phần mở rộng gần đây của SQL bao gồm ngày càng nhiều đại số quan hệ.
SQL ban đầu được IBM tạo ra, nhưng nhiều nhà cung cấp đã phát triển ngôn ngữ riêng của họ. Nó được Viện Tiêu chuẩn Quốc gia Hoa Kỳ (ANSI) áp dụng làm tiêu chuẩn vào năm 1986 và ISO vào năm 1987. Trong tiêu chuẩn ngôn ngữ lập trình SQL, ANSI tuyên bố rằng cách phát âm chính thức của SQL là "es q el". Tuy nhiên, nhiều chuyên gia cơ sở dữ liệu đã sử dụng cách phát âm tiếng lóng "Sequel", phản ánh tên ban đầu của ngôn ngữ, Sequel, sau này đã được thay đổi do xung đột nhãn hiệu và tên với IBM. Lập trình cho người mới bắt đầu.
Ngôn ngữ lập trình SQLđược sửa đổi vào năm 1992 và phiên bản này được gọi là SQL-92. 1999 sau đó được sửa lại thành SQL:1999 (AKA SQL3). Lập trình cho người giả. SQL 1999 hỗ trợ các đối tượng mà trước đây không được hỗ trợ trong các phiên bản khác, nhưng tính đến cuối năm 2001, chỉ có một số hệ thống quản lý cơ sở dữ liệu hỗ trợ triển khai SQL: SQL 1999.
SQL, mặc dù được định nghĩa là ANSI và ISO, có nhiều biến thể và phần mở rộng, hầu hết trong số đó có các đặc điểm riêng, chẳng hạn như cách triển khai "PL/SQL" của Oracle Corporation hoặc cách triển khai của Sybase và Microsoft có tên là "Transact-SQL", có thể gây nhầm lẫn cho người sử dụng. những người quen với kiến ​​thức cơ bản về lập trình. Cũng không có gì lạ khi việc triển khai thương mại bỏ qua việc hỗ trợ các tính năng chính của tiêu chuẩn, chẳng hạn như các kiểu dữ liệu như ngày và giờ, ưu tiên một số biến thể của riêng chúng. Kết quả là, không giống như ANSI C hoặc ANSI Fortran thường có thể được chuyển từ nền tảng này sang nền tảng khác mà không có những thay đổi lớn về cấu trúc, các truy vấn ngôn ngữ lập trình SQL hiếm khi có thể được chuyển giữa các hệ thống cơ sở dữ liệu khác nhau mà không có sửa đổi đáng kể. Hầu hết mọi người trong ngành cơ sở dữ liệu tin rằng sự thiếu tương thích này là có chủ ý, nhằm cung cấp cho mỗi nhà phát triển hệ thống quản lý cơ sở dữ liệu của riêng họ và ràng buộc người mua với một cơ sở dữ liệu cụ thể.
Đúng như tên gọi của nó, ngôn ngữ lập trình SQL được thiết kế cho các mục đích cụ thể và có giới hạn - truy vấn dữ liệu có trong cơ sở dữ liệu quan hệ. Như vậy, nó là một tập hợp các hướng dẫn ngôn ngữ lập trình để tạo mẫu dữ liệu, chứ không phải là ngôn ngữ thủ tục như C hoặc BASIC, được thiết kế để giải quyết nhiều vấn đề hơn. Các phần mở rộng ngôn ngữ như "PL/SQL" được thiết kế để giải quyết hạn chế này bằng cách thêm các phần tử thủ tục vào SQL trong khi vẫn duy trì các lợi ích của SQL. Một cách tiếp cận khác là nhúng các lệnh ngôn ngữ lập trình thủ tục vào các truy vấn SQL và tương tác với cơ sở dữ liệu. Ví dụ: Oracle và những hãng khác hỗ trợ Java trong cơ sở dữ liệu, trong khi PostgreSQL cho phép viết các hàm bằng Perl, Tcl hoặc C.
Một câu nói đùa về SQL: "SQL không phải là một cấu trúc cũng như một ngôn ngữ." Điểm của trò đùa là SQL không phải là ngôn ngữ Turing. .

Chọn * từ T
C1 C2
1 Một
2 b
C1 C2
1 Một
2 b
Chọn C1 từ T
C1
1
2
C1 C2
1 Một
2 b
Chọn * từ T trong đó C1=1
C1 C2
1 Một

Cho một bảng T, truy vấn Select * from T sẽ hiển thị tất cả các phần tử của tất cả các hàng trong bảng.
Từ cùng một bảng, truy vấn Select C1 from T sẽ hiển thị các phần tử từ cột C1 của tất cả các hàng trong bảng.
Từ cùng một bảng, truy vấn Chọn * từ T trong đó C1=1 sẽ hiển thị tất cả các phần tử của tất cả các hàng trong đó giá trị của cột C1 là "1".

từ khóa SQL

Các từ SQL được chia thành một số nhóm.

Điều thứ nhất là Ngôn ngữ thao tác dữ liệu hoặc DML(ngôn ngữ quản lý dữ liệu). DML là tập hợp con của ngôn ngữ được sử dụng để truy vấn cơ sở dữ liệu và thêm, cập nhật và xóa dữ liệu.

  • SELECT là một trong những lệnh DML được sử dụng phổ biến nhất và cho phép người dùng chỉ định một truy vấn dưới dạng mô tả tập hợp của kết quả mong muốn. Truy vấn không chỉ định cách sắp xếp kết quả - dịch truy vấn sang dạng có thể được thực thi trong cơ sở dữ liệu là công việc của hệ thống cơ sở dữ liệu, cụ thể hơn là trình tối ưu hóa truy vấn.
  • INSERT được sử dụng để thêm các hàng (bộ chính thức) vào bảng hiện có.
  • UPDATE được sử dụng để thay đổi giá trị dữ liệu trong một hàng của bảng hiện có.
  • DELETE chỉ định các hàng hiện có sẽ bị xóa khỏi bảng.

Ba từ khóa khác có thể nói là thuộc nhóm DML:

  • BEGIN WORK (hoặc START TRANSACTION, tùy thuộc vào phương ngữ SQL) có thể được sử dụng để đánh dấu sự bắt đầu của một giao dịch cơ sở dữ liệu sẽ hoàn thành tất cả hoặc hoàn toàn không thực hiện.
  • CAM KẾT tuyên bố rằng tất cả các thay đổi dữ liệu được thực hiện sau khi thực hiện các thao tác đều được lưu lại.
  • ROLLBACK chỉ định rằng tất cả các thay đổi dữ liệu sau lần xác nhận hoặc khôi phục cuối cùng phải bị hủy, cho đến thời điểm được ghi trong cơ sở dữ liệu dưới dạng “khôi phục”.

COMMIT và ROLLBACK được sử dụng trong các lĩnh vực như kiểm soát giao dịch và khóa. Cả hai hướng dẫn đều hoàn thành tất cả các giao dịch hiện tại (tập hợp các thao tác trên cơ sở dữ liệu) và loại bỏ tất cả các khóa thay đổi dữ liệu trong bảng. Sự hiện diện hay vắng mặt của câu lệnh BEGIN WORK hoặc câu lệnh tương tự phụ thuộc vào việc triển khai SQL cụ thể.

Nhóm từ khóa thứ 2 thuộc nhóm Ngôn ngữ định nghĩa dữ liệu hoặc DDL (Ngôn ngữ định nghĩa dữ liệu). DDL cho phép người dùng xác định các bảng mới và các phần tử liên quan của chúng. Hầu hết các cơ sở dữ liệu SQL thương mại đều có phần mở rộng DDL riêng cho phép kiểm soát các phần tử không chuẩn nhưng thường quan trọng của một hệ thống cụ thể.
Điểm chính của DDL là các lệnh tạo và xóa.

  • CREATE chỉ định các đối tượng (chẳng hạn như bảng) sẽ được tạo trong cơ sở dữ liệu.
  • DROP chỉ định những đối tượng hiện có trong cơ sở dữ liệu sẽ bị xóa, thường là vĩnh viễn.
  • Một số hệ thống cơ sở dữ liệu cũng hỗ trợ lệnh ALTER, cho phép người dùng sửa đổi một đối tượng hiện có theo nhiều cách khác nhau, chẳng hạn như thêm các cột vào bảng hiện có.

Nhóm từ khóa SQL thứ ba là Ngôn ngữ kiểm soát dữ liệu hoặc DCL (Ngôn ngữ kiểm soát dữ liệu). DCL chịu trách nhiệm về quyền truy cập dữ liệu và cho phép người dùng kiểm soát ai có quyền truy cập để xem hoặc thao tác dữ liệu trong cơ sở dữ liệu. Có hai từ khóa chính ở đây:

  • GRANT - cho phép người dùng thực hiện các thao tác
  • REVOKE - Loại bỏ hoặc hạn chế khả năng thực hiện các thao tác của người dùng.

Hệ thống cơ sở dữ liệu sử dụng SQL

  • liên cơ sở
  • MySQL
  • Lời tiên tri
  • PostgreSQL
  • Máy chủ SQL

Làm thế nào để trở thành một chuyên gia phát triển trang web và bắt đầu kiếm tiền? Các khóa học video không tốn kém với phần giới thiệu giới thiệu.