Chúng tôi đang học được rằng hầu hết các ngôn ngữ được phân loại là một trong hai, "dựa trên quan hệ" hoặc "mức độ cao".
Những khái niệm này là trực giao. "Dựa trên mối quan hệ" có nghĩa là ngữ nghĩa của ngôn ngữ dựa trên khái niệm về mối quan hệ, nghĩa là, mối quan hệ nhiều-nhiều giữa hai bộ (quan hệ là nền tảng toán học đằng sau các bảng SQL). "Cấp cao" có nghĩa là ngôn ngữ chứa nhiều trừu tượng ẩn nhiều chi tiết kỹ thuật cơ bản (như vị trí bộ nhớ, thanh ghi CPU, truy cập đĩa, hoạt động theo bit, v.v.). SQL chắc chắn dựa trên mối quan hệ, vì mục đích chính của nó là mô tả dữ liệu quan hệ và các hoạt động dựa trên nó. SQL cũng ở mức khá cao; nó không cung cấp bất kỳ phương tiện nào để truy cập trực tiếp các byte trên đĩa và nó không cho bạn biết bất kỳ chi tiết nào về cách lưu trữ dữ liệu của nó (ít nhất là SQL tiêu chuẩn không;
Trong thực tế, có nhiều trục khác theo đó các ngôn ngữ lập trình (và dữ liệu) có thể được phân loại; một điều đặc biệt thú vị là khai báo so với mệnh lệnh . Ngôn ngữ khai báo mô tả một cái gì đó là gì ; ngôn ngữ bắt buộc mô tả làm thế nào để làm một cái gì đó. DDL một phần của SQL là chủ yếu là khai báo, mặc dù các từ khóa bắt buộc-looking (" CREATE TABLE
", ' DROP DATABASE
', vv), và thậm chí cả phần thao tác dữ liệu ( SELECT
, UPDATE
, INSERT
, DELETE
) là vẫn còn khá tường thuật. Một thuộc tính rất thú vị của SQL là nó không hoàn thành Turing: bạn không thể viết một vòng lặp không giới hạn trong SQL ANSI tiêu chuẩn đơn giản.
Các trung tâm lập trình chức năng xung quanh một vài ý tưởng cốt lõi:
- các hàm là các công dân hạng nhất (nghĩa là chúng có thể được sử dụng làm giá trị, làm đầu vào cho các chức năng khác và làm đầu ra từ các chức năng khác)
- các hàm bậc cao hơn (các hàm hoạt động trên các hàm hoặc các hàm trả về các hàm)
- độ tinh khiết (một hàm thuần túy là một hàm không có tác dụng phụ; một hàm thuần túy không thể thực hiện bất kỳ I / O nào, nó không thể đọc hay sửa đổi bất kỳ trạng thái toàn cầu nào và nó không thể lấy các đối số tham chiếu không phải là hằng số. luôn luôn tạo ra cùng một đầu ra với cùng một đầu vào)
SQL chắc chắn không xoay quanh các chức năng như là công cụ chính để mô hình hóa mọi thứ, nhưng nó phần nào nắm lấy ý tưởng thuần túy - cùng một truy vấn chạy trên cùng một cơ sở dữ liệu sẽ mang lại kết quả tương tự, mọi lúc (trừ khi đặt hàng). Gọi SQL là ngôn ngữ 'chức năng' là một chút khó khăn mặc dù IMO.