Each major SQL database includes custom features beyond standard SQL:
Use these extensions for performance, flexibility, and advanced capabilities.
-- Array Data Type
SELECT ARRAY[1, 2, 3];
-- JSONB Data Type
SELECT '{"name": "Alice"}'::jsonb;
-- Full-Text Search
SELECT * FROM docs WHERE to_tsvector(content) @@ to_tsquery('python');
-- PL/pgSQL Function
CREATE FUNCTION add(a INT, b INT) RETURNS INT AS $$
BEGIN
RETURN a + b;
END;
$$ LANGUAGE plpgsql;
-- Extensions Management
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
SELECT uuid_generate_v4();
-- AUTO_INCREMENT
CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY);
-- ENUM Type
CREATE TABLE shirts (size ENUM('S', 'M', 'L'));
-- REPLACE INTO (Upsert)
REPLACE INTO users (id, name) VALUES (1, 'Alice');
-- User-defined Variables
SET @total = 0;
SELECT @total := SUM(price) FROM products;
-- IDENTITY Property
CREATE TABLE users (id INT IDENTITY(1,1) PRIMARY KEY);
-- Variable Declaration
DECLARE @name NVARCHAR(50);
SET @name = 'Alice';
-- TRY_CAST and TRY_CONVERT
SELECT TRY_CAST('123' AS INT), TRY_CONVERT(INT, 'abc');
-- OUTPUT Clause
UPDATE products SET price = price * 1.1
OUTPUT inserted.*;
Type | PostgreSQL | MySQL | SQL Server |
---|---|---|---|
Integer | INTEGER , SERIAL | INT , AUTO_INCREMENT | INT , IDENTITY |
String | TEXT , VARCHAR | VARCHAR , TEXT | NVARCHAR , VARCHAR |
Boolean | BOOLEAN | TINYINT(1) | BIT |
JSON | JSON , JSONB | JSON | NVARCHAR (manual) |
UUID | UUID (extension) | CHAR(36) | UNIQUEIDENTIFIER |
Array | ARRAY | β Not supported | β Not supported |
Date/Time | TIMESTAMP , INTERVAL | DATETIME , TIMESTAMP | DATETIME , DATETIME2 |