SQL – Wikipedia tiếng Việt

Related Articles

SQL ( ,[4] hoặc ;[5] viết tắt của Structured Query Language[6][7][8][9]), dịch là Ngôn ngữ truy vấn mang tính cấu trúc, là một loại ngôn ngữ máy tính phổ biến để tạo, sửa, và lấy dữ liệu từ một hệ quản trị cơ sở dữ liệu quan hệ. Ngôn ngữ này phát triển vượt xa so với mục đích ban đầu là để phục vụ các hệ quản trị cơ sở dữ liệu đối tượng-quan hệ. Nó là một tiêu chuẩn ANSI/ISO.

Từ một bài báo tham dự hội thảo khoa học A Relational Model of Data for Large Share Data Banks (tạm dịch là “Mô hình quan hệ cho dữ liệu dùng trong ngân hàng dữ liệu chia sẻ có khối lượng lớn”) của tiến sĩ Edgar F. Codd xuất bản tháng 6 năm 1970 trong tạp chí Communications of the ACM của Hiệp hội ACM[10], một mô hình đã được chấp nhận rộng rãi là mô hình tiêu chuẩn dùng cho hệ thống quản lý cơ sở dữ liệu quan hệ[11][12].

Giữa những năm 1970, một nhóm những nhà tăng trưởng tại TT nghiên cứu và điều tra của IBM tại San Jose tăng trưởng mạng lưới hệ thống cơ sở tài liệu ” Hệ thống R ” dựa trên quy mô của Codd. Structured English Query Language, viết tắt là ” SEQUEL ” ( tạm dịch là ” Ngôn ngữ truy vấn tiếng Anh có cấu trúc ” ), được phong cách thiết kế để quản trị và truy lục dữ liệu được tàng trữ trong Hệ thống R. Sau này, tên viết tắt SEQUEL được rút gọn thành SQL để tránh việc tranh chấp thương hiệu ( từ SEQUEL đã được một công ty máy bay của UK là Hawker-Siddeley ĐK ). Mặc dù SQL bị ảnh hưởng tác động bởi khu công trình của tiến sỹ Codd nhưng nó không do tiến sỹ Codd phong cách thiết kế ra. Ngôn ngữ SEQUEL được phong cách thiết kế bởi Donald D. Chamberlin và Raymond F. Boyce tại IBM, và khái niệm của họ được thông dụng để tăng sự chú ý quan tâm về SQL .

Phiên bản cơ sở dữ liệu quan hệ phi thương mại, không hỗ trợ SQL đầu tiên được phát triển năm 1974.(Ingres from U.C. Berkeley.)

Năm 1978, việc thử nghiệm chiêu thức được khởi đầu tại một cơ sở thử nghiệm của người mua. Cuộc thử nghiệm đã chứng tỏ được sự có ích và tính thực tiễn của mạng lưới hệ thống và đã chứng tỏ sự thành công xuất sắc của IBM. Dựa vào hiệu quả đó, IBM khởi đầu tăng trưởng những mẫu sản phẩm thương mại bổ trợ thêm SQL dựa trên nguyên mẫu Hệ thống R gồm có System / 38 ( Hệ thống / 38 ) ( được công bố năm 1978 và được kinh doanh thương mại hóa tháng 8 năm 1979, SQL / DS ( được ra mắt vào năm 1981 ) và DB2 ( năm 1983 ) .Cùng thời gian đó Relational Software, Inc. ( giờ đây là Oracle Corporation ) đã nhận thấy tiềm năng của những khái niệm được Chamberlin and Boyce đưa ra và đã tăng trưởng phiên bản Hệ quản trị cơ sở dự liệu quan hệ riêng của họ cho Navy, CIA và những tổ chức triển khai khác. Vào mùa hè năm 1979, Relational Software, Inc. ra mắt Oracle V2 ( Phiên bản 2 ), phiên bản thương mại tiên phong tương hỗ SQL cho máy tính VAX. Oracle liên tục được nhắc tới một cách không tráng lệ vì đã tiến công thị trường của IBM trong 2 năm, nhưng việc táo bạo nhất trong quan hệ công chúng của họ là tiến công một phiên bản của IBM System / 38 chỉ trong có vài tuần. Tương lai của Oracle đã được bảo vệ vì có sự chăm sóc đáng kể của công chúng sau đó mới tăng trưởng, trong khi đã có nhiều phiên bản của những nhà sản xuất khác .IBM đã quá chậm trong việc tăng trưởng SQL và những mẫu sản phẩm quan hệ, có lẽ rằng vì bắt đầu nó không dùng được trong thiên nhiên và môi trường Unix và máy tính lớn ( Mainframe ), và họ sợ nó sẽ làm giảm doanh thu thu được từ việc bán những mẫu sản phẩm cơ sở tài liệu IMS ( những loại sản phẩm dựa trên quy mô cơ sở tài liệu khuynh hướng chứ không phải cơ sở tài liệu quan hệ ) của mình. Trong lúc đó, Oracle vẫn đang tăng trưởng, IBM đang tăng trưởng System / 38, được mong đợi là hệ cơ sở tài liệu quan hệ tiên phong của họ. Với năng lượng và phong cách thiết kế tiên tiến và phát triển của nó, người ta cho rằng nó hoàn toàn có thể sẽ sửa chữa thay thế cho mạng lưới hệ thống Unix và máy tính lớn .SQL được thừa nhận là tiêu chuẩn của ANSI ( American National Standards Institute ) vào năm 1986 và ISO ( International Organization for Standardization ) năm 1987. ANSI đã công bố cách phát âm chính thức của SQL là ” ess kyoo ell “, nhưng rất nhiều những chuyên gia cơ sở tài liệu nói tiếng Anh vẫn gọi nó là sequel. Một ý niệm sai khác cũng được thông dụng thoáng rộng đó là ” SQL ” là chữ viết tắt của ” Structured Query Language ” ( Ngôn ngữ truy vấn có cấu trúc ). Thực tế không phải như vậy !Tiêu chuẩn SQL đã trải qua một số ít phiên bản :

Năm

Tên

Tên khác

Chú giải

1986

SQL-86

SQL-87

Được công bố đầu tiên bởi ANSI. Được phê chuẩn bởi ISO năm 1987.

1989

SQL-89

Thay đổi nhỏ.

1992

SQL-92

SQL2

Thay đổi lớn.

1999

SQL:1999

SQL3

2003

SQL:2003

Các từ khóa SQL[sửa|sửa mã nguồn]

Từ khóa SQL chia thành nhiều nhóm :

Lấy tài liệu[sửa|sửa mã nguồn]

Thao tác sử dụng nhiều nhất trong một cơ sở tài liệu dựa trên thanh toán giao dịch là thao tác lấy tài liệu .

  • SELECT được sử dụng để lấy dữ liệu từ một hoặc nhiều bảng trong cơ sở dữ liệu, SELECT là lệnh thường dùng nhất của ngôn ngữ sửa đổi dữ liệu (tạm dịch) (tiếng Anh: Data Manipulation Language – DML). Trong việc tạo ra câu truy vấn SELECT, người sử dụng phải đưa ra mô tả cho những dữ liệu mình muốn lấy ra chứ không chỉ ra những hành động vật lý nào bắt buộc phải thực hiện để lấy ra kết quả đó. Hệ thống cơ sở dữ liệu, hay chính xác hơn là bộ tối ưu hóa câu truy vấn sẽ dịch từ câu truy vấn sang kế hoạch truy vấn tối ưu.
  • Những từ khóa liên quan tới SELECT bao gồm:
      • 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.

Ví dụ sau về việc sử dụng câu lệnh SELECT để lấy danh sách những cuốn sách có giá trị. Câu truy vấn này sẽ truy lục tất cả các bản ghi trong bảng books với giá trị của cột price lớn hơn 100.00. Kết quả sẽ được sắp xếp theo thứ tự tăng dần của các giá trị trong cột title. Dấu (*) trong phần select list cho biết tất cả các cột của bảng books sẽ được lấy ra và thể hiện ở kết quả.

SELECT *
FROM books
WHERE price > 100.00
ORDER BY title;

Ví dụ sau lý giải cách link nhiều bảng, tập hợp những bản ghi trong câu truy vấn SQL, nó sẽ trả về list những cuốn sách và số tác giả của từng cuốn sách .

SELECT books.title, count(*) AS Authors
FROM books
JOIN book_authors
ON books.isbn = book_authors.isbn
GROUP BY books.title;

Kết quả của ví dụ trên giống như sau :

Title Authors
---------------------- -------
SQL Examples and Guide 3
The Joy of SQL 1
How to use Wikipedia 2
Pitfalls of SQL 1
How SQL Saved my Dog 1

( Ký tự gạch chân ” _ ” thường được sử dụng trong tên bảng và tên cột để ngăn cách những từ vì những ký tự khác hoàn toàn có thể xích míc với cú pháp SQL. Ví dụ như, dấu ” – ” hoàn toàn có thể được hiểu là dấu trừ. )

Với điều kiện cột isbn là cột chung duy nhất của hai bảng và cột title chỉ tồn tại trong bảng books thì câu truy vấn trên có thể được viết lại theo mẫu sau:

SELECT title, count(*) AS Authors
FROM books
NATURAL JOIN book_authors
GROUP BY title;

Tuy nhiên nhiều nhà phân phối không tương hỗ những thức này, hoặc nó nhu yếu một số ít quy ước về tên cột nào đó. Như vậy, câu truy vấn trên không được phổ cập .

Sửa đổi tài liệu[sửa|sửa mã nguồn]

Ngôn ngữ sửa đổi tài liệu ( Data Manipulation Language – DML ), là một phần nhỏ của ngôn từ, có những thành phần tiêu chuẩn dùng để thêm, update và xóa dữ liệu delete data .

  • INSERT dùng để thêm dữ liệu vào một bảng đã tồn tại.
  • UPDATE dùng để thay đổi giá trị của một tập hợp các bản ghi trong một bảng.
  • MERGE dùng để kết hợp dữ liệu của nhiều bảng. Nó được dùng như việc kết hợp giữa hai phần tử INSERTUPDATE.
  • DELETE xóa những bản ghi tồn tại trong một bảng.
  • TRUNCATE Xóa toàn bộ dữ liệu trong một bảng (không phải là tiêu chuẩn, nhưng là một lệnh SQL phổ biến).

Giao dịch, nếu có, dùng để bảo phủ những thao tác sửa đổi tài liệu. Giao dịch ( transaction ) là một tập những thao tác đi cùng với nhau. Trên môi trường tự nhiên khách / chủ ( client / server ) hay môi trường tự nhiên cơ sở tài liệu phân tán việc bảo vệ tính đúng đắn của tài liệu rất quan trọng. Ví dụ : Một người rút tiền khỏi thông tin tài khoản tại ngân hàng nhà nước, thì tại thời gian rút tiền, thao tác rút tiền khác phải bị khước từ. Các thao tác trên thông tin tài khoản đó hoàn toàn có thể tưởng tượng như sau :

 Thao tác 1:  Thao tác 2: hiện thao tác rút tiền> Thao tác 3: 

Để bảo vệ những thao tác 1-3 phải đi liền với nhau thì phải đưa vào trong một transaction

 Thao tác 1:  Thao tác 2:  Thao tác 3: 

Các lệnh tương quan đến thanh toán giao dịch :

  • BEGIN WORK (hoặc START TRANSACTION, tùy theo các ngôn ngữ SQL khác nhau) được sử dụng để đánh dấu việc bắt đầu một giao dịch dữ liệu (giao dịch dữ liệu đó có kết thúc hoàn toàn hay không).
  • COMMIT dùng để lưu lại những thay đổi trong giao dịch.
  • ROLLBACK dùng để quay lại thời điểm sử dụng lệnh COMMIT cuối cùng.

Là một cách chèn đoạn lệnh SQL vào để triển khai việc vượt qua sự kiểm tra của mệnh đề WHERE. Ví dụ một câu truy vấn lấy thông tin tài khoản người dùng :

 SELECT ID, NAME FROM USERS WHERE USERNAME=' JONH ' AND PASSWORD=' 1234 '

Câu trên chỉ có thể đúng nếu cặp USERNAME và PASSWORD tồn tại trong cơ sở dữ liệu. Câu trên có thể viết injection như sau:

thay cụm từ JONH thành: ' OR 1=1 or''=' (lưu ý ký tự nháy đơn ‘) khi đó câu SQL sẽ trở thành:

 SELECT ID, NAME FROM USERS WHERE USERNAME=' ' OR 1=1 or' '=' ' AND PASSWORD=

'1234'

đoạn mã này hoạt động giải trí với bất kỳ password nào. Việc phòng chống SQL Injection cũng không khó, chỉ cần chú ý quan tâm khi viết là hoàn toàn có thể chống lại được .

Định nghĩa tài liệu[sửa|sửa mã nguồn]

Ngôn ngữ định nghĩa dữ liệu (Data Definition Language, viết tắt là DDL) là một trong những phần chính của ngôn ngữ truy vấn. Các câu lệnh này dùng để định nghĩa cấu trúc của cơ sở dữ liệu, bao gồm định nghĩa các hàng, các cột, các bảng dữ liệu, các chỉ số và một số thuộc tính khác liên quan đến cơ sở dữ liệu như vị trí của file. Các câu lệnh ngôn ngữ định nghĩa dữ liệu là thành phần chính trong các hệ quản lý dữ liệu và có sự khác biệt rất nhiều giữa các ngôn ngữ truy vấn trên các hệ khác nhau.

Điều khiển tài liệu[sửa|sửa mã nguồn]

Hệ thống cơ sở tài liệu sử dụng SQL[sửa|sửa mã nguồn]

More on this topic

Comments

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Advertismentspot_img

Popular stories