---
title: "SQLColumn"
language: "en"
type: "Symbol"
summary: "SQLColumn[...] represents a column in an SQL table."
canonical_url: "https://reference.wolfram.com/language/DatabaseLink/ref/SQLColumn.html"
source: "Wolfram Language Documentation"
related_functions: 
  - 
    title: "SQLCreateTable"
    link: "https://reference.wolfram.com/language/DatabaseLink/ref/SQLCreateTable.en.md"
  - 
    title: "SQLColumns"
    link: "https://reference.wolfram.com/language/DatabaseLink/ref/SQLColumns.en.md"
  - 
    title: "SQLColumnNames"
    link: "https://reference.wolfram.com/language/DatabaseLink/ref/SQLColumnNames.en.md"
  - 
    title: "SQLColumnInformation"
    link: "https://reference.wolfram.com/language/DatabaseLink/ref/SQLColumnInformation.en.md"
related_tutorials: 
  - 
    title: "DatabaseLink User Guide"
    link: "https://reference.wolfram.com/language/DatabaseLink/tutorial/Overview.en.md"
  - 
    title: "Creating Tables in DatabaseLink User Guide"
    link: "https://reference.wolfram.com/language/DatabaseLink/tutorial/CreatingTables.en.md"
  - 
    title: "Column Structure in DatabaseLink User Guide"
    link: "https://reference.wolfram.com/language/DatabaseLink/tutorial/ColumnStructure.en.md"
  - 
    title: "Column Representation in DatabaseLink User Guide"
    link: "https://reference.wolfram.com/language/DatabaseLink/tutorial/ColumnStructure.en.md#2154"
---
## DatabaseLink\`

# SQLColumn

SQLColumn[…] represents a column in an SQL table.

## Details and Options

* To use ``SQLColumn``, you first need to load [*DatabaseLink*](https://reference.wolfram.com/language/DatabaseLink/guide/SQLDatabaseOperations.en.md) using ``Needs["DatabaseLink`"]``.

* The following options can be given:

|                 |       |                                         |
| --------------- | ----- | --------------------------------------- |
| "DataTypeName"  | None  | type of the entry                       |
| "DataLength"    | None  | maximum length for variable length data |
| "Default"       | None  | default value for column                |
| "Nullable"      | False | whether the entry can be null           |
| "PrimaryKey"    | False | indicates a primary key column          |

## Examples (6)

### Basic Examples (1)

```wl
In[1]:= Needs["DatabaseLink`"]
```

If you find that the examples in this section do not work as shown, you may need to install or restore the example database with the ``"DatabaseLink`DatabaseExamples`"`` package, as described in [Using the Example Databases](https://reference.wolfram.com/language/DatabaseLink/tutorial/UsingTheExampleDatabases.en.md).

Open a connection:

```wl
In[2]:= conn = OpenSQLConnection["demo"];
```

List the columns in a table:

```wl
In[3]:= SQLColumns[conn, "SAMPLETABLE1"]

Out[3]= {SQLColumn[{"SAMPLETABLE1", "ENTRY"}, "DataTypeName" -> "INTEGER", "DataLength" -> 32, "Default" -> Null, "Nullable" -> 1], SQLColumn[{"SAMPLETABLE1", "VALUE"}, "DataTypeName" -> "DOUBLE", "DataLength" -> 64, "Default" -> Null, "Nullable" -> 1], SQLColumn[{"SAMPLETABLE1", "NAME"}, "DataTypeName" -> "VARCHAR", "DataLength" -> 16, "Default" -> Null, "Nullable" -> 1]}
```

Select data matching a condition:

```wl
In[4]:= SQLSelect[conn, "SAMPLETABLE1", SQLColumn["VALUE"] > 6]

Out[4]= {{3, 7.2, "Day3"}, {4, 6.2, "Day4"}}
```

Use a prepared statement:

```wl
In[5]:= SQLExecute[conn, "SELECT `1` FROM `2`", {SQLArgument[SQLColumn["VALUE"], SQLColumn["NAME"]], SQLTable["SAMPLETABLE1"]}]

Out[5]= {{5.6, "Day1"}, {5.9, "Day2"}, {7.2, "Day3"}, {6.2, "Day4"}, {6., "Day5"}}

In[6]:= CloseSQLConnection[conn];
```

If you find that the examples in this section do not work as shown, you may need to install or restore the example database with the ``"DatabaseLink`DatabaseExamples`"`` package, as described in [Using the Example Databases](https://reference.wolfram.com/language/DatabaseLink/tutorial/UsingTheExampleDatabases.en.md).

### Options (5)

#### "DataTypeName" (1)

```wl
In[1]:= Needs["DatabaseLink`"]
```

Specify data types for columns:

```wl
In[2]:= conn = OpenSQLConnection["demo"];

In[3]:=
SQLCreateTable[conn, SQLTable["TEST"], 
	{
	SQLColumn["TINYINTCOL", "DataTypeName" -> "TINYINT"], 
	SQLColumn["SMALLINTCOL", "DataTypeName" -> "SMALLINT"], 
	SQLColumn["INTEGERCOL", "DataTypeName" -> "INTEGER"], 
	SQLColumn["BIGINTCOL", "DataTypeName" -> "BIGINT"], 
	SQLColumn["NUMERICCOL", "DataTypeName" -> "NUMERIC"], SQLColumn["DECIMALCOL", "DataTypeName" -> "DECIMAL"], 
	SQLColumn["FLOATCOL", "DataTypeName" -> "FLOAT"], 
	SQLColumn["REALCOL", "DataTypeName" -> "REAL"], 
	SQLColumn["DOUBLECOL", "DataTypeName" -> "DOUBLE"], SQLColumn["BITCOL", "DataTypeName" -> "BIT"], 
	SQLColumn["LONGVARBINARYCOL", "DataTypeName" -> "LONGVARBINARY"], 
	SQLColumn["VARBINARYCOL", "DataTypeName" -> "VARBINARY", "DataLength" -> 1000], 
	SQLColumn["BINARYCOL", "DataTypeName" -> "BINARY"], 
	SQLColumn["LONGVARCHARCOL", "DataTypeName" -> "LONGVARCHAR"], 
	SQLColumn["VARCHARCOL", "DataTypeName" -> "VARCHAR", "DataLength" -> 5], SQLColumn["CHARCOL", "DataTypeName" -> "CHAR", "DataLength" -> 3], 
	SQLColumn["DATECOL", "DataTypeName" -> "DATE"], SQLColumn["TIMECOL", "DataTypeName" -> "TIME"], 
	SQLColumn["TIMESTAMPCOL", "DataTypeName" -> "TIMESTAMP"], 
	SQLColumn["OBJECTCOL", "DataTypeName" -> "OBJECT"]
	}];

In[4]:= SQLDropTable[conn, "TEST"];

In[5]:= CloseSQLConnection[conn];
```

#### "DataLength" (1)

```wl
In[1]:= Needs["DatabaseLink`"]
```

Specify data lengths for appropriate types:

```wl
In[2]:= conn = OpenSQLConnection["demo"];

In[3]:= SQLCreateTable[conn, SQLTable["TEST"], {SQLColumn["X", "DataTypeName" -> "VARCHAR", "DataLength" -> 5], SQLColumn["Y", "DataTypeName" -> "CHAR", "DataLength" -> 3]}];

In[4]:= SQLDropTable[conn, "TEST"];

In[5]:= CloseSQLConnection[conn];
```

#### "Default" (1)

```wl
In[1]:= Needs["DatabaseLink`"]
```

Specify column defaults:

```wl
In[2]:= conn = OpenSQLConnection["demo"];

In[3]:= SQLCreateTable[conn, SQLTable["TEST"], {SQLColumn["X", "DataTypeName" -> "TINYINT", "Default" -> -1], SQLColumn["Y", "DataTypeName" -> "TIME", "Default" -> "00:00:00"]}];

In[4]:= SQLDropTable[conn, "TEST"];

In[5]:= CloseSQLConnection[conn];
```

#### "Nullable" (1)

```wl
In[1]:= Needs["DatabaseLink`"]
```

Allow nullable column values:

```wl
In[2]:= conn = OpenSQLConnection["demo"];

In[3]:= SQLCreateTable[conn, SQLTable["TEST"], {SQLColumn["A", "DataTypeName" -> "Integer", "Nullable" -> True], SQLColumn["B", "DataTypeName" -> "Integer", "Nullable" -> False]}];

In[4]:= SQLDropTable[conn, "TEST"];

In[5]:= CloseSQLConnection[conn];
```

#### "PrimaryKey" (1)

```wl
In[1]:= Needs["DatabaseLink`"]
```

Specify a primary key column:

```wl
In[2]:= conn = OpenSQLConnection[JDBC["SQLite(Memory)", "scratch"]];

In[3]:= SQLCreateTable[conn, SQLTable["TEST"], {SQLColumn["X", "DataTypeName" -> "INTEGER", "PrimaryKey" -> True], SQLColumn["Y", "DataTypeName" -> "CHAR", "DataLength" -> 3]}];

In[4]:= SQLTablePrimaryKeys[conn, "TEST", "ShowColumnHeadings" -> True]

Out[4]= {{"TABLE_CAT", "TABLE_SCHEM", "TABLE_NAME", "COLUMN_NAME", "KEY_SEQ", "PK_NAME"}, {Null, Null, "TEST", "X", 0, Null}}

In[5]:= SQLDropTable[conn, "TEST"];

In[6]:= CloseSQLConnection[conn];
```

## See Also

* [SQLCreateTable](https://reference.wolfram.com/language/DatabaseLink/ref/SQLCreateTable.en.md)
* [SQLColumns](https://reference.wolfram.com/language/DatabaseLink/ref/SQLColumns.en.md)
* [SQLColumnNames](https://reference.wolfram.com/language/DatabaseLink/ref/SQLColumnNames.en.md)
* [SQLColumnInformation](https://reference.wolfram.com/language/DatabaseLink/ref/SQLColumnInformation.en.md)

## Tech Notes

* [*DatabaseLink* User Guide](https://reference.wolfram.com/language/DatabaseLink/tutorial/Overview.en.md)
* [Creating Tables in *DatabaseLink* User Guide](https://reference.wolfram.com/language/DatabaseLink/tutorial/CreatingTables.en.md)
* [Column Structure in *DatabaseLink* User Guide](https://reference.wolfram.com/language/DatabaseLink/tutorial/ColumnStructure.en.md)
* [Column Representation in *DatabaseLink* User Guide](https://reference.wolfram.com/language/DatabaseLink/tutorial/ColumnStructure.en.md#2154)