# SQL, creating a table

> Learn how to create a table in a SQL database with the CREATE TABLE command, defining column names and data types like INT, VARCHAR, DATE, and TEXT.

Author: [Flavio Copes](https://flaviocopes.com/about/) | Published: 2020-03-26 | Topics: [Database](https://flaviocopes.com/tags/database/) | Canonical: https://flaviocopes.com/sql-create-table/

A database is composed by one or more tables.

Creating a table in SQL is done using the `CREATE TABLE` command.

At creation time you need to specify the table columns names, and the type of data they are going to hold.

SQL defines several kinds of data.

The most important and the ones you'll see more often are:

- `CHAR`
- `TEXT`
- `VARCHAR`
- `DATE`
- `TIME`
- `DATETIME`
- `TIMESTAMP`

Numeric types include 

- `TINYINT` 1 byte
- `INT` 4 bytes
- `BIGINT` 8 bytes
- `SMALLINT` 2 bytes
- `DECIMAL`
- `FLOAT`

They all hold numbers. What changes is the size that this number can be.

A TINYINT goes goes 0 to 255. An INT from -2^31 to +2^31. 

The bigger the size in bytes, the more space will be needed in storage.

This is the syntax to create a `people` table with 2 columns, one an integer and the other a variable length string:

```sql
CREATE TABLE people (
  age INT,
  name CHAR(20)
);
```

If you use an ORM, I built a free [schema converter](https://flaviocopes.com/tools/schema-converter/) that turns `CREATE TABLE` statements into Prisma or Drizzle schemas (and back).
