> ## Documentation Index
> Fetch the complete documentation index at: https://villagesql.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Quickstart

> Get up and running with VillageSQL Server.

Get a VillageSQL Server instance running, connect to it, and try out the extension system.

## Step 1: Install VillageSQL

### Option A: Shell Script (Recommended)

Install VillageSQL using the official installation script:

```bash theme={null}
curl https://villagesql.com/shell | sh
```

This script will download and install the latest VillageSQL binary for your platform.

### Option B: Build from Source

For development or custom builds, follow the [Clone and Build from Source Guide](/docs/mysql-8.4/0.0.2/source) to compile from the latest code.

## Step 2: Connect to the Server

Once your server is running, you can connect to it using any standard MySQL client.

```bash theme={null}
mysql -u root -p
```

## Step 3: Install Your First Extension

You can dynamically load extensions to add new data types and features.

Install the `vsql_complex` extension to add support for complex numbers.

1. **Check currently installed extensions:**
   ```sql theme={null}
   SELECT extension_name, extension_version
   FROM INFORMATION_SCHEMA.EXTENSIONS;
   ```

2. **Install the extension:**
   ```sql theme={null}
   INSTALL EXTENSION vsql_complex;
   ```

3. **Verify installation:**
   ```sql theme={null}
   SELECT extension_name, extension_version
   FROM INFORMATION_SCHEMA.EXTENSIONS;
   ```
   You should see `vsql_complex` listed.

## Step 4: Use Extended Data Types

Now that the extension is active, you can use the `COMPLEX` data type in your tables just like native types.

```sql theme={null}
-- Create a database and use it
CREATE DATABASE demo;
USE demo;

-- Create a table using the new COMPLEX type
CREATE TABLE electronic_components (
    id INT PRIMARY KEY,
    name VARCHAR(50),
    impedance COMPLEX
);

-- Insert complex number values (using string literals)
INSERT INTO electronic_components VALUES
    (1, 'Resistor', '(100,0)'),
    (2, 'Inductor', '(0,50)'),
    (3, 'Capacitor', '(25,-75)');

-- Query the data
SELECT * FROM electronic_components;

-- Use extension functions
SELECT
    name,
    impedance,
    complex_abs(impedance) AS magnitude,
    complex_real(impedance) AS resistance,
    complex_imag(impedance) AS reactance
FROM electronic_components;
```

## Next Steps

Now that you have VillageSQL running and have verified the extension system, explore more:

<CardGroup cols={2}>
  <Card title="Managing Extensions" icon="puzzle-piece" href="/docs/mysql-8.4/0.0.2/install">
    Learn how to install and manage other extensions.
  </Card>

  <Card title="Create an Extension" icon="code" href="/docs/mysql-8.4/0.0.2/create">
    Learn how to build your own extensions for VillageSQL.
  </Card>
</CardGroup>
