# SQL Queries

## Data Manipulation Language (DML) Queries

Starcounter 3.0 has the same SQL Query Processor as Starcounter 2.3.2. Please refer to the [original documentation](https://docs.starcounter.io/v/2.3.2/guides/sql) for the full specification.

## Data Definition Language (DDL) Queries

As of right now the following DDL statements are supported:

### Create / drop database index

```sql
CREATE INDEX IX_IndexName ON TableName (ColumnName)
```

```sql
DROP INDEX IX_IndexName ON TableName
```

### Create / drop database table

```sql
CREATE TABLE TableName
(
    BooleanColumn boolean,
    DecimalColumn decimal,
    DoubleColumn double,
    FloatColumn, float,
    IntColumn int,
    UIntColumn uint,
    TextColumn text
)
```

```sql
DROP TABLE TableName
```

#### Starcounter database vs .NET CLR data types

There is no one to one match between Starcounter database data types and .NET CLR data types.

Use the following table to translate .NET CLR data type names into Starcounter database SQL data type names.

| .NET CLR Data Type | Starcounter database data type |
| ------------------ | ------------------------------ |
| `Boolean`          | `boolean`                      |
| `Byte`             | `int`                          |
| `Byte[]`           | `binary`                       |
| `DateTime`         | `uint`                         |
| `Decimal`          | `decimal`                      |
| `Double`           | `double`                       |
| `Float`            | `float`                        |
| `Int16`            | `int`                          |
| `Int32`            | `int`                          |
| `Int64`            | `int`                          |
| `SByte`            | `int`                          |
| `String`           | `text`                         |
| `UInt16`           | `uint`                         |
| `UInt32`           | `uint`                         |
| `UInt64`           | `uint`                         |

### Create / drop database table column

```sql
ALTER TABLE TableName
DROP COLUMN ColumnName
```

```sql
ALTER TABLE TableName
ADD ColumnName (TextColumn text)
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.starcounter.io/sql.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
