Как создать таблицу в SQL?sql-11

Основной синтаксис создания таблицы

Создание таблицы в SQL выполняется командой CREATE TABLE. Вот базовый синтаксис:

CREATE TABLE table_name (
    column1 datatype constraints,
    column2 datatype constraints,
    ...,
    table_constraints
);

Полный пример создания таблицы

CREATE TABLE employees (
    employee_id INT PRIMARY KEY,
    first_name VARCHAR(50) NOT NULL,
    last_name VARCHAR(50) NOT NULL,
    email VARCHAR(100) UNIQUE,
    hire_date DATE DEFAULT CURRENT_DATE,
    salary DECIMAL(10,2) CHECK (salary > 0),
    department_id INT,
    CONSTRAINT fk_department
        FOREIGN KEY (department_id)
        REFERENCES departments(department_id)
);

Основные компоненты создания таблицы

1. Указание имени таблицы

  • Имена таблиц должны быть уникальными в пределах схемы базы данных
  • Рекомендуется использовать осмысленные имена в единственном числе

2. Определение столбцов

Каждый столбец определяется:

  • Именем (например, employee_id)
  • Типом данных (например, INT, VARCHAR(50))
  • Ограничениями (например, NOT NULL)

3. Типы данных

Основные типы данных:

4. Ограничения столбцов

CREATE TABLE products (
    product_id INT PRIMARY KEY,
    product_name VARCHAR(100) NOT NULL,
    price DECIMAL(10,2) CHECK (price > 0),
    category_id INT REFERENCES categories(category_id),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    UNIQUE (product_name, category_id)
);

Основные ограничения:

  • PRIMARY KEY - первичный ключ
  • FOREIGN KEY - внешний ключ
  • NOT NULL - запрет NULL значений
  • UNIQUE - уникальные значения
  • CHECK - проверка условия
  • DEFAULT - значение по умолчанию

5. Внешние ключи

Два способа определения:

  1. Встроенное определение:
CREATE TABLE orders (
    order_id INT PRIMARY KEY,
    customer_id INT REFERENCES customers(customer_id),
    ...
);
  1. Отдельное ограничение:
CREATE TABLE order_items (
    order_item_id INT PRIMARY KEY,
    order_id INT,
    product_id INT,
    CONSTRAINT fk_order
        FOREIGN KEY (order_id)
        REFERENCES orders(order_id),
    CONSTRAINT fk_product
        FOREIGN KEY (product_id)
        REFERENCES products(product_id)
);

Дополнительные возможности

1. Создание таблицы на основе запроса

CREATE TABLE high_paid_employees AS
SELECT * FROM employees WHERE salary > 100000;

2. Временные таблицы

-- Локальная временная таблица (SQL Server)
CREATE TABLE #temp_products (
    product_id INT,
    name VARCHAR(100)
);

-- Глобальная временная таблица (SQL Server)
CREATE TABLE ##global_temp (
    id INT
);

-- Временная таблица (PostgreSQL)
CREATE TEMP TABLE temp_users AS
SELECT * FROM users WHERE last_login > CURRENT_DATE - INTERVAL '30 days';

3. Условное создание таблицы

-- Создать только если не существует (многие СУБД)
CREATE TABLE IF NOT EXISTS customers (
    id INT PRIMARY KEY,
    name VARCHAR(100)
);

4. Партиционирование таблиц

CREATE TABLE sales (
    sale_id SERIAL,
    sale_date DATE NOT NULL,
    amount DECIMAL(10,2),
    region VARCHAR(50)
) PARTITION BY RANGE (sale_date);

Особенности для разных СУБД

MySQL/MariaDB

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB;

Oracle

CREATE TABLE employees (
    emp_id NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
    emp_name VARCHAR2(100) NOT NULL,
    hire_date DATE DEFAULT SYSDATE
) TABLESPACE users;

SQL Server

CREATE TABLE dbo.products (
    product_id INT IDENTITY(1,1) PRIMARY KEY,
    product_name NVARCHAR(100) NOT NULL,
    price MONEY CHECK (price > 0)
);

Резюмируем

Создание таблиц в SQL включает:

  1. Определение структуры (столбцы с типами данных)
  2. Указание ограничений целостности
  3. Настройку связей между таблицами
  4. Учет особенностей конкретной СУБД

Лучшие практики:

  • Используйте осмысленные имена таблиц и столбцов
  • Всегда определяйте первичный ключ
  • Добавляйте ограничения для сохранения целостности данных
  • Используйте подходящие типы данных
  • Учитывайте требования к производительности

Правильно спроектированные таблицы - основа эффективной базы данных.

/table>
Тип данныхОписаниеПример
INTЦелое числоemployee_id INT
VARCHAR(n)Строка переменной длиныname VARCHAR(100)
CHAR(n)Строка фиксированной длиныgender CHAR(1)
DECIMAL(p,s)Число с фиксированной точностьюsalary DECIMAL(10,2)
DATEДатаhire_date DATE
BOOLEANЛогическое значениеis_active BOOLEAN
TEXTДлинный текстdescription TEXT