Удаление таблицы
Что такое удаление таблицы: определение, основные принципы, примеры и практические советы. Изучайте SQL для тестировщиков с подробными объяснениями для начинающих специалистов.
Удаление таблицы.
Удаление таблицы производится при помощи оператора DROP TABLE.
Пример DROP:
DROP TABLE [IF EXISTS] имя_таблицы;
Практические примеры:
-- Удаление таблицы (если она существует)
DROP TABLE IF EXISTS temp_table;
-- Удаление таблицы пользователей
DROP TABLE IF EXISTS users;
-- Удаление таблицы с полным именем
DROP TABLE IF EXISTS database_name.table_name;
-- Принудительное удаление таблицы (без проверки существования)
DROP TABLE old_table;
-- Удаление таблицы с каскадным удалением зависимостей
DROP TABLE IF EXISTS users CASCADE;
-- Удаление таблицы с ограничением (RESTRICT)
DROP TABLE IF EXISTS important_table RESTRICT;
-- Удаление таблицы с полным именем и проверкой существования
DROP TABLE IF EXISTS online_store.temp_table;
-- Удаление таблицы с каскадным удалением зависимостей (PostgreSQL)
DROP TABLE IF EXISTS users CASCADE;
-- Удаление таблицы с ограничением (RESTRICT) - MySQL
DROP TABLE IF EXISTS important_table RESTRICT;
-- Удаление таблицы с полным именем и проверкой существования
DROP TABLE IF EXISTS task_manager.temp_table;
-- Удаление таблицы с полным именем и проверкой существования
DROP TABLE IF EXISTS blog_system.draft_posts;
-- Удаление таблицы с каскадным удалением зависимостей (PostgreSQL)
DROP TABLE IF EXISTS users CASCADE;
-- Удаление таблицы с ограничением (RESTRICT) - MySQL
DROP TABLE IF EXISTS important_table RESTRICT;
-- Удаление таблицы с полным именем и проверкой существования
DROP TABLE IF EXISTS task_manager.temp_table;
-- Удаление таблицы с полным именем и проверкой существования
DROP TABLE IF EXISTS blog_system.draft_posts;
-- Удаление таблицы с каскадным удалением зависимостей (SQL Server)
DROP TABLE IF EXISTS users CASCADE;
-- Удаление таблицы с ограничением (RESTRICT) - Oracle
DROP TABLE IF EXISTS important_table RESTRICT;
-- Удаление таблицы с каскадным удалением зависимостей (MariaDB)
DROP TABLE IF EXISTS users CASCADE;
-- Удаление таблицы с ограничением (RESTRICT) - Percona
DROP TABLE IF EXISTS important_table RESTRICT;
-- Удаление таблицы с каскадным удалением зависимостей (Amazon RDS)
DROP TABLE IF EXISTS users CASCADE;
-- Удаление таблицы с ограничением (RESTRICT) - Google Cloud SQL
DROP TABLE IF EXISTS important_table RESTRICT;
Различие DELETE и TRUNCATE.
- Операция DELETE блокирует каждую строку и возвращает число удаленных строк.
- Операция TRUNCATE блокирует всю таблицу. Не возвращает какого-то осмысленного значения (обычно возвращает 0).
Различие DROP и TRUNCATE.
- TRUNCATE — это команда DDL, которая используется для удаления всех строк из таблицы и освобождения пространства, содержащего таблицу. Его нельзя откатить назад.
Пример TRUNCATE:
TRUNCATE TABLE имя_таблицы;
Практические примеры:
-- Очистка всей таблицы пользователей
TRUNCATE TABLE users;
-- Очистка таблицы с полным именем
TRUNCATE TABLE database_name.table_name;
-- Очистка временной таблицы
TRUNCATE TABLE temp_data;
-- Очистка таблицы логов
TRUNCATE TABLE access_logs;
-- Очистка таблицы с полным именем
TRUNCATE TABLE online_store.temp_data;
-- Очистка таблицы сессий
TRUNCATE TABLE user_sessions;
-- Очистка таблицы кэша
TRUNCATE TABLE cache_data;
-- Очистка таблицы с полным именем
TRUNCATE TABLE online_store.temp_data;
-- Очистка таблицы сессий
TRUNCATE TABLE user_sessions;
-- Очистка таблицы логов
TRUNCATE TABLE access_logs;
-- Очистка таблицы с полным именем (альтернативный синтаксис)
TRUNCATE TABLE `online_store`.`temp_data`;
-- Очистка таблицы с полным именем (PostgreSQL)
TRUNCATE TABLE schema_name.table_name;
-- Очистка таблицы с полным именем (SQL Server)
TRUNCATE TABLE database_name.schema_name.table_name;
-- Очистка таблицы с полным именем (Oracle)
TRUNCATE TABLE schema_name.table_name;
-- Очистка таблицы с полным именем (SQLite)
DELETE FROM table_name;
-- Очистка таблицы с полным именем (MariaDB)
TRUNCATE TABLE table_name;
-- Очистка таблицы с полным именем (Percona)
TRUNCATE TABLE table_name;
-- Очистка таблицы с полным именем (Amazon RDS)
TRUNCATE TABLE table_name;
-- Очистка таблицы с полным именем (Google Cloud SQL)
TRUNCATE TABLE table_name;
- DROP — это команда DDL, она удаляет полные данные вместе со структурой таблицы (в отличие от команды TRUNCATE, которая удаляет только строки).
Пример DROP:
DROP TABLE имя_таблицы;
Практические примеры:
-- Удаление таблицы пользователей
DROP TABLE users;
-- Удаление таблицы с полным именем
DROP TABLE database_name.table_name;
-- Удаление таблицы с проверкой существования
DROP TABLE IF EXISTS old_table;
-- Удаление нескольких таблиц одновременно
DROP TABLE table1, table2, table3;
DELETE — используется для удаления существующих записей в таблице.
Пример DELETE:
DELETE FROM имя_таблицы WHERE условие_отбора_записей;
Практические примеры:
-- Удаление всех записей из таблицы (осторожно!)
DELETE FROM users;
-- Удаление конкретного пользователя по ID
DELETE FROM users WHERE id = 5;
-- Удаление пользователей с определенным email
DELETE FROM users WHERE email = '[email protected]';
-- Удаление неактивных пользователей
DELETE FROM users WHERE last_login < '2024-01-01';
-- Удаление с ограничением количества записей
DELETE FROM users WHERE status = 'inactive' LIMIT 10;
-- Удаление с использованием JOIN
DELETE u FROM users u
JOIN user_sessions s ON u.id = s.user_id
WHERE s.last_activity < '2024-01-01';
-- Удаление с использованием подзапроса
DELETE FROM products
WHERE category_id IN (
SELECT category_id FROM categories WHERE name = 'electronics'
);
-- Удаление с использованием ORDER BY
DELETE FROM logs
WHERE created_at < '2024-01-01'
ORDER BY created_at ASC
LIMIT 1000;
-- Удаление с использованием JOIN (альтернативный синтаксис)
DELETE FROM users
WHERE id IN (
SELECT user_id FROM user_sessions
WHERE last_activity < '2024-01-01'
);
-- Удаление с использованием EXISTS
DELETE FROM products
WHERE NOT EXISTS (
SELECT 1 FROM order_items
WHERE order_items.product_id = products.product_id
);
-- Удаление с использованием BETWEEN
DELETE FROM logs
WHERE created_at BETWEEN '2023-01-01' AND '2023-12-31'
LIMIT 500;
-- Удаление с использованием LIKE
DELETE FROM users
WHERE email LIKE '%@olddomain.com';
-- Удаление с использованием IN
DELETE FROM products
WHERE category_id IN (1, 2, 3);
-- Удаление с использованием NOT IN
DELETE FROM users
WHERE id NOT IN (
SELECT DISTINCT user_id FROM orders
);
-- Удаление с использованием IS NULL
DELETE FROM user_profiles
WHERE phone IS NULL;
-- Удаление с использованием IS NOT NULL
DELETE FROM users
WHERE last_login IS NOT NULL
AND last_login < '2024-01-01';
-- Удаление с использованием REGEXP (MySQL)
DELETE FROM users
WHERE email REGEXP '^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$';
-- Удаление с использованием REGEXP (PostgreSQL)
DELETE FROM users
WHERE email ~ '^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$';
-- Удаление с использованием PATINDEX (SQL Server)
DELETE FROM users
WHERE PATINDEX('%[^a-zA-Z0-9._%+-]%', email) > 0;
-- Удаление с использованием REGEXP_LIKE (Oracle)
DELETE FROM users
WHERE REGEXP_LIKE(email, '^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$');
Создание и удаление баз данных.
Пример создание БД:
CREATE DATABASE имя_базы_данных;
Практические примеры:
-- Создание базы данных для интернет-магазина
CREATE DATABASE online_store;
-- Создание базы данных для системы управления задачами
CREATE DATABASE task_manager;
-- Создание базы данных для блога
CREATE DATABASE blog_system;
-- Создание тестовой базы данных
CREATE DATABASE test_db;
-- Создание базы данных с определенной кодировкой
CREATE DATABASE my_database CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Пример контролироля создания БД:
SHOW DATABASES;
Практические примеры:
-- Показать все базы данных
SHOW DATABASES;
-- Показать базы данных с определенным шаблоном имени
SHOW DATABASES LIKE 'test%';
-- Показать базы данных с определенным шаблоном имени (альтернативный синтаксис)
SHOW DATABASES WHERE `Database` LIKE 'user%';
-- Показать базы данных, начинающиеся с определенной буквы
SHOW DATABASES LIKE 'a%';
-- Показать базы данных, заканчивающиеся определенным суффиксом
SHOW DATABASES LIKE '%_db';
-- Показать базы данных с определенным шаблоном
SHOW DATABASES LIKE '%store%';
-- Показать базы данных с определенным шаблоном (альтернативный синтаксис)
SHOW DATABASES WHERE `Database` LIKE '%store%';
-- Показать базы данных с определенным шаблоном (еще один вариант)
SHOW DATABASES LIKE 'user%';
-- Показать базы данных с определенным шаблоном (еще один вариант)
SHOW DATABASES LIKE 'test%';
-- Показать базы данных с определенным шаблоном (PostgreSQL)
SELECT datname FROM pg_database WHERE datname LIKE 'test%';
-- Показать базы данных с определенным шаблоном (SQL Server)
SELECT name FROM sys.databases WHERE name LIKE 'test%';
-- Показать базы данных с определенным шаблоном (Oracle)
SELECT name FROM v$database WHERE name LIKE 'TEST%';
-- Показать базы данных с определенным шаблоном (SQLite)
SELECT name FROM sqlite_master WHERE type='table' AND name LIKE 'test%';
-- Показать базы данных с определенным шаблоном (MariaDB)
SHOW DATABASES LIKE 'test%';
-- Показать базы данных с определенным шаблоном (Percona)
SHOW DATABASES LIKE 'test%';
-- Показать базы данных с определенным шаблоном (Amazon RDS)
SHOW DATABASES LIKE 'test%';
-- Показать базы данных с определенным шаблоном (Google Cloud SQL)
SHOW DATABASES LIKE 'test%';
Пример удаления БД:
DROP DATABASE имя_базы_данных;
Практические примеры:
-- Удаление базы данных
DROP DATABASE test_database;
-- Удаление базы данных с проверкой существования
DROP DATABASE IF EXISTS old_database;
-- Удаление базы данных с полным именем
DROP DATABASE IF EXISTS user_projects;
-- Удаление временной базы данных
DROP DATABASE temp_db;
-- Удаление базы данных с проверкой существования
DROP DATABASE IF EXISTS development_db;
-- Удаление базы данных с полным именем
DROP DATABASE IF EXISTS user_projects;
-- Удаление тестовой базы данных
DROP DATABASE test_environment;
-- Удаление базы данных с проверкой существования
DROP DATABASE IF EXISTS development_db;
-- Удаление базы данных с полным именем
DROP DATABASE IF EXISTS user_projects;
-- Удаление временной базы данных
DROP DATABASE temp_db;
-- Удаление базы данных с проверкой существования (альтернативный синтаксис)
DROP DATABASE IF EXISTS `test_environment`;
-- Удаление базы данных с проверкой существования (PostgreSQL)
DROP DATABASE IF EXISTS database_name;
-- Удаление базы данных с проверкой существования (SQL Server)
DROP DATABASE IF EXISTS database_name;
-- Удаление базы данных с проверкой существования (Oracle)
DROP DATABASE IF EXISTS database_name;
-- Удаление базы данных с проверкой существования (SQLite)
-- SQLite не поддерживает команду DROP DATABASE
-- Удаление базы данных с проверкой существования (MariaDB)
DROP DATABASE IF EXISTS database_name;
-- Удаление базы данных с проверкой существования (Percona)
DROP DATABASE IF EXISTS database_name;
-- Удаление базы данных с проверкой существования (Amazon RDS)
DROP DATABASE IF EXISTS database_name;
-- Удаление базы данных с проверкой существования (Google Cloud SQL)
DROP DATABASE IF EXISTS database_name;
## **Конструкция IF \[NOT\] EXIST.**
При создании базы данных или при её удалении может возникнуть ошибка, что база данных с таким именем уже существует (при создании) или, наоборот, данной базы данных не существует (при удалении). Для таких случаев существует конструкция IF \[NOT\] EXIST.
То есть, если нужно создать базу данных только при условии, что она пока не существует, то используется следующий синтаксис:
```sql
CREATE DATABASE IF NOT EXISTS имя_базы_данных;
Практические примеры:
-- Создание базы данных для интернет-магазина
CREATE DATABASE IF NOT EXISTS online_store;
-- Создание базы данных для системы управления задачами
CREATE DATABASE IF NOT EXISTS task_manager;
-- Создание базы данных для блога
CREATE DATABASE IF NOT EXISTS blog_system;
-- Создание тестовой базы данных
CREATE DATABASE IF NOT EXISTS test_db;
-- Создание базы данных с определенной кодировкой
CREATE DATABASE IF NOT EXISTS my_database CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- Создание базы данных с определенной кодировкой (без IF NOT EXISTS)
CREATE DATABASE my_database CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- Создание базы данных с определенной кодировкой (альтернативный синтаксис)
CREATE DATABASE IF NOT EXISTS my_database
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
-- Создание базы данных с определенной кодировкой (еще один вариант)
CREATE DATABASE IF NOT EXISTS my_database
CHARACTER SET = utf8mb4
COLLATE = utf8mb4_unicode_ci;
-- Создание базы данных с определенной кодировкой (PostgreSQL)
CREATE DATABASE IF NOT EXISTS my_database
WITH ENCODING = 'UTF8'
LC_COLLATE = 'en_US.utf8'
LC_CTYPE = 'en_US.utf8';
-- Создание базы данных с определенной кодировкой (SQL Server)
CREATE DATABASE IF NOT EXISTS my_database
COLLATE SQL_Latin1_General_CP1_CI_AS;
-- Создание базы данных с определенной кодировкой (Oracle)
CREATE DATABASE IF NOT EXISTS my_database
CHARACTER SET AL32UTF8
NATIONAL CHARACTER SET AL16UTF16;
-- Создание базы данных с определенной кодировкой (SQLite)
-- SQLite не поддерживает команду CREATE DATABASE
-- Создание базы данных с определенной кодировкой (MariaDB)
CREATE DATABASE IF NOT EXISTS my_database
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
-- Создание базы данных с определенной кодировкой (Percona)
CREATE DATABASE IF NOT EXISTS my_database
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
-- Создание базы данных с определенной кодировкой (Amazon RDS)
CREATE DATABASE IF NOT EXISTS my_database
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
-- Создание базы данных с определенной кодировкой (Google Cloud SQL)
CREATE DATABASE IF NOT EXISTS my_database
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
-- Создание базы данных с определенной кодировкой (Azure Database)
CREATE DATABASE IF NOT EXISTS my_database
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
Практические примеры:
-- Создание базы данных для интернет-магазина
CREATE DATABASE IF NOT EXISTS online_store;
-- Создание базы данных для системы управления задачами
CREATE DATABASE IF NOT EXISTS task_manager;
-- Создание базы данных для блога
CREATE DATABASE IF NOT EXISTS blog_system;
Если нужно удалить базу данных только при условии, что она существует, то используется следующий синтаксис:
DROP DATABASE IF EXISTS имя_базы_данных;
Практические примеры:
-- Удаление тестовой базы данных
DROP DATABASE IF EXISTS test_database;
-- Удаление устаревшей базы данных
DROP DATABASE IF EXISTS old_version_db;
-- Удаление временной базы данных
DROP DATABASE IF EXISTS temp_database;
Создание и удаление таблиц.
Создание таблицы.
Перед созданием таблицы необходимо выбрать базу данных, в которую таблица будет записана. Это делается с помощью оператора USE:
USE имя_базы_данных;
Практические примеры:
-- Выбор базы данных для работы
USE online_store;
-- Переключение на другую базу данных
USE task_manager;
-- Проверка текущей выбранной базы данных
SELECT DATABASE();
-- Переключение на системную базу данных
USE information_schema;
-- Переключение на базу данных MySQL
USE mysql;
-- Переключение на тестовую базу данных
USE test_db;
-- Переключение на базу данных с полным именем
USE `online_store`;
-- Переключение на базу данных с полным именем (альтернативный синтаксис)
USE `task_manager`;
-- Переключение на базу данных с полным именем (еще один вариант)
USE `blog_system`;
-- Переключение на базу данных с полным именем (PostgreSQL)
\c database_name;
-- Переключение на базу данных с полным именем (SQL Server)
USE database_name;
-- Переключение на базу данных с полным именем (Oracle)
ALTER SESSION SET CURRENT_SCHEMA = schema_name;
-- Переключение на базу данных с полным именем (SQLite)
-- SQLite не поддерживает команду USE, работает только с одной базой данных
-- Переключение на базу данных с полным именем (MariaDB)
USE database_name;
-- Переключение на базу данных с полным именем (Percona)
USE database_name;
-- Переключение на базу данных с полным именем (Amazon RDS)
USE database_name;
-- Переключение на базу данных с полным именем (Google Cloud SQL)
USE database_name;
Для создания таблицы используется оператор CREATE TABLE. Его базовый синтаксис имеет следующий вид:
CREATE TABLE [IF NOT EXISTS] имя_таблицы (
столбец_1 тип_данных [параметры],
[столбец_2 тип_данных [параметры]],
...
[столбец_n тип_данных [параметры]]
);
Практические примеры:
-- Создание простой таблицы пользователей
CREATE TABLE IF NOT EXISTS users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE,
email VARCHAR(100) NOT NULL UNIQUE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Создание таблицы продуктов для магазина
CREATE TABLE IF NOT EXISTS products (
product_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
price DECIMAL(10,2) NOT NULL,
description TEXT,
category VARCHAR(50) DEFAULT 'general'
);
-- Создание таблицы заказов с внешним ключом
CREATE TABLE IF NOT EXISTS orders (
order_id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT NOT NULL,
order_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
total_amount DECIMAL(10,2) NOT NULL,
FOREIGN KEY (user_id) REFERENCES users(id)
);
-- Создание таблицы категорий продуктов
CREATE TABLE IF NOT EXISTS categories (
category_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL UNIQUE,
description TEXT,
parent_id INT NULL,
FOREIGN KEY (parent_id) REFERENCES categories(category_id)
);
-- Создание таблицы отзывов с проверками
CREATE TABLE IF NOT EXISTS reviews (
review_id INT AUTO_INCREMENT PRIMARY KEY,
product_id INT NOT NULL,
user_id INT NOT NULL,
rating TINYINT NOT NULL CHECK (rating >= 1 AND rating <= 5),
comment TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (product_id) REFERENCES products(product_id),
FOREIGN KEY (user_id) REFERENCES users(id)
);
-- Создание таблицы заказов с дополнительными полями
CREATE TABLE IF NOT EXISTS order_items (
item_id INT AUTO_INCREMENT PRIMARY KEY,
order_id INT NOT NULL,
product_id INT NOT NULL,
quantity INT NOT NULL DEFAULT 1,
unit_price DECIMAL(10,2) NOT NULL,
total_price DECIMAL(10,2) GENERATED ALWAYS AS (quantity * unit_price) STORED,
FOREIGN KEY (order_id) REFERENCES orders(order_id),
FOREIGN KEY (product_id) REFERENCES products(product_id)
);
-- Создание таблицы пользователей с дополнительными полями
CREATE TABLE IF NOT EXISTS user_profiles (
profile_id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT NOT NULL UNIQUE,
first_name VARCHAR(50) NOT NULL,
last_name VARCHAR(50) NOT NULL,
birth_date DATE,
phone VARCHAR(20),
address TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id)
);
-- Создание таблицы с индексами
CREATE TABLE IF NOT EXISTS search_logs (
log_id INT AUTO_INCREMENT PRIMARY KEY,
search_term VARCHAR(255) NOT NULL,
user_id INT,
search_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
results_count INT DEFAULT 0,
INDEX idx_search_term (search_term),
INDEX idx_user_date (user_id, search_date),
FOREIGN KEY (user_id) REFERENCES users(id)
);
-- Создание таблицы с проверками и значениями по умолчанию
CREATE TABLE IF NOT EXISTS products (
product_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
price DECIMAL(10,2) NOT NULL CHECK (price > 0),
stock_quantity INT NOT NULL DEFAULT 0 CHECK (stock_quantity >= 0),
category VARCHAR(50) DEFAULT 'general',
is_active BOOLEAN DEFAULT TRUE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
-- Создание таблицы с индексами (PostgreSQL)
CREATE TABLE IF NOT EXISTS search_logs (
log_id SERIAL PRIMARY KEY,
search_term VARCHAR(255) NOT NULL,
user_id INTEGER,
search_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
results_count INTEGER DEFAULT 0,
CONSTRAINT idx_search_term UNIQUE (search_term),
CONSTRAINT idx_user_date UNIQUE (user_id, search_date)
);
-- Создание таблицы с индексами (SQL Server)
CREATE TABLE IF NOT EXISTS search_logs (
log_id INT IDENTITY(1,1) PRIMARY KEY,
search_term NVARCHAR(255) NOT NULL,
user_id INT,
search_date DATETIME2 DEFAULT GETDATE(),
results_count INT DEFAULT 0
);
-- Создание таблицы с индексами (Oracle)
CREATE TABLE IF NOT EXISTS search_logs (
log_id NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
search_term VARCHAR2(255) NOT NULL,
user_id NUMBER,
search_date TIMESTAMP DEFAULT SYSTIMESTAMP,
results_count NUMBER DEFAULT 0
);
Дополнительные параметры определения столбцов.
Вышеприведённое определение столбцов в таблице является упрощённым. Помимо названия столбца и его типа в определение иногда необходимо добавлять следующие необязательные параметры:
PRIMARY KEY.
Указывает колонку или множество колонок как первичный ключ.
AUTO_INCREMENT.
Указывает, что значение данной колонки будет автоматически увеличиваться при добавлении новых записей в таблицу. Каждая таблица имеет максимум одну AUTO_INCREMENT колонку. Стоит отметить, что данный параметр можно применять только к целочисленным типам и к типам с плавающей запятой.
UNIQUE.
Указывает, что значения в данной колонке для всех записей должны быть отличными друг от друга.
NOT NULL.
Указывает, что значения в данной колонке должны быть отличными от NULL.
DEFAULT.
Указывает значение по умолчанию. Данный параметр не применяется к типам BLOB, TEXT, GEOMETRY и JSON.
Описание таблицы.
Для того, чтобы посмотреть описание созданной таблицы можно воспользоваться оператором DESCRIBE.
DESCRIBE имя_таблицы;
Практические примеры:
-- Показать структуру таблицы пользователей
DESCRIBE users;
-- Альтернативный синтаксис для описания таблицы
DESC products;
-- Показать структуру таблицы заказов
DESCRIBE orders;
-- Показать структуру таблицы с полным именем
DESCRIBE database_name.table_name;
-- Показать структуру таблицы с полным именем (альтернативный синтаксис)
DESC online_store.users;
-- Показать структуру таблицы с полным именем (еще один вариант)
SHOW COLUMNS FROM users;
-- Показать структуру таблицы с полным именем (альтернативный синтаксис)
SHOW FIELDS FROM products;
-- Показать структуру таблицы с полным именем (еще один вариант)
SHOW COLUMNS FROM users;
-- Показать структуру таблицы с полным именем (альтернативный синтаксис)
SHOW FIELDS FROM orders;
-- Показать структуру таблицы с полным именем (еще один вариант)
SHOW COLUMNS FROM products;
-- Показать структуру таблицы с полным именем (PostgreSQL)
\d table_name;
-- Показать структуру таблицы с полным именем (SQL Server)
EXEC sp_help 'table_name';
-- Показать структуру таблицы с полным именем (Oracle)
DESCRIBE table_name;
-- Показать структуру таблицы с полным именем (SQLite)
PRAGMA table_info(table_name);
-- Показать структуру таблицы с полным именем (MariaDB)
DESCRIBE table_name;
-- Показать структуру таблицы с полным именем (Percona)
DESCRIBE table_name;
-- Показать структуру таблицы с полным именем (Amazon RDS)
DESCRIBE table_name;
-- Показать структуру таблицы с полным именем (Google Cloud SQL)
DESCRIBE table_name;
Дополнительные параметры определения таблицы Primary key и Foreign key.
Первичный ключ (Primary key).
Одному или нескольким столбцам таблицы, которые используются для уникальной идентификации каждой строки таблицы.
Внешний ключ (Foreign key).
Гарантирует, что значение из таблицы точно есть в той таблице, на которую идёт ссылка.
Дополнительные сведения.
ON DELETE RESTRICT означает, что если попробовать удалить компанию, у которой в таблице Users есть данные, база данных не даст этого сделать.
Если бы было указано ON DELETE CASCADE, то при удалении компании были бы удалены все пользователи, ссылающиеся на эту компанию.
Есть ещё одна опция — ON DELETE SET NULL. При её использовании база данных запишет NULL в качестве значения поля company для всех пользователей, работавших в удалённой компании.
ON UPDATE CASCADE означает, что если компания изменит свой идентификатор, то все пользователи (Users) получат новый идентификатор в поле company.