PostgreSQL - Створення таблиць: Посібник для початківців
Привіт майбутні маги баз даних! Сьогодні ми вирушимо в захоплюючу подорож у світ PostgreSQL, безпосередньо фокусуючи на тому, як створювати таблиці. Не хвилюйтеся, якщо ви ніколи не писали жодного рядка коду – я буду вашим доброзичливим провідником, і ми рухатимемося крок за кроком. До кінця цього посібника ви створюватимете таблиці, як профі!
Що таке таблиця в PostgreSQL?
Перш ніж ми заглибимося в деталі створення таблиць, зрозуміємо, що таке таблиця. Уявіть таблицю Excel - ви знаєте, ті сітки з рядками і стовпцями? Таблиця у базі даних дуже схожа. Це набір пов'язаних даних, організованих у рядки (також звані записами) та стовпці (також звані полями).
Наприклад, якщо ви ведете велику бібліотеку, у вас може бути таблиця під назвою "Книги" з колонками "Назва", "Автор", "ISBN" та "Дата публікації". Кожен рядок у цій таблиці представлятиме одну книгу вашої бібліотеки.
Синтаксис CREATE TABLE
Тепер давайте подивимося на базовий синтаксис для створення таблиці в PostgreSQL:
CREATE TABLE table_name (column1 datatype constraints, column2 datatype constraints, column3 datatype constraints, . );
Не лякайтесь! Це простіше, ніж здається. Давайте розберемо це:
- CREATE TABLE : Ця команда говорить PostgreSQL, що ви хочете створити нову таблицю.
- table_name : Тут ви вказуєте, як хочете назвати свою таблицю.
- Усередині дужок ви перераховуєте всі стовпчики, які ви хочете у своїй таблиці.
- Для кожної колонки ви вказуєте:
- Ім'я колонки
- Тип даних (наприклад, INTEGER для цілих чисел, TEXT для рядків тощо)
- Будь-які обмеження (наприклад, NOT NULL, якщо колонка завжди повинна мати значення)
Приклад: Давайте створимо кілька таблиць!
Приклад 1: Проста таблиця Книги
Почнемо з простого прикладу. Ми створимо таблицю для нашої вигаданої бібліотеки:
CREATE TABLE books (book_id SERIAL PRIMARY KEY, title VARCHAR(100) NOT NULL, author VARCHAR(50) NOT NULL, publication_date DATE, isbn VARCHAR(13) UNIQUE);
Давайте розберемо це:
- book_id : Це унікальний ідентифікатор кожної книги. SERIAL означає, що він автоматично збільшуватиметься для кожної нової доданої книги.
- title : Може містити до 100 символів та не може бути порожнім (NOT NULL).
- author : До 50 символів також не може бути порожнім.
- publication_date : Це 可选но (ми не вказали NOT NULL).
- isbn : Унікальний для кожної книги.
Приклад 2: Складніша таблиця Клієнти
Тепер давайте створимо більш складну таблицю для клієнтів:
CREATE TABLE customers ( customer_id SERIAL PRIMARY KEY, first_name VARCHAR(50) NOT NULL, last_name VARCHAR(50) NOT NULL, email VARCHAR(100) UNIQUE NOT NULL, телефон VARCHAR(20), registration_date INTEGER DEFAULT 0 CHECK (loyalty_points >= 0));
Ця таблиця містить нові concepts:
- DEFAULT : Ми використовуємо це для registration_date для автоматичного встановлення поточної дати при додаванні нового клієнта.
- CHECK : Це ensures, що loyalty_points не може бути negativo.
Типи даних у PostgreSQL
PostgreSQL пропонує широкий вибір типів даних. Ось деякі з них:
| Тип даних |
Опис |
приклад |
| INTEGER |
Ціла кількість |
42 |
| SERIAL |
Ціло число, що автоматично збільшується |
Автоматично присвоєно |
| VARCHAR(n) |
Рядок змінної довжини до n символів |
'Hello, World!' |
| TEXT |
Рядок змінної довжини 임의 |
'Дуже довгий текст. ' |
| DATE |
Дата (без часу) |
'2023-06-15' |
| TIMESTAMP |
Дата та час |
'2023-06-15 14:30:00' |
| BOOLEAN |
Значення True/False |
TRUE або FALSE |
| NUMERIC(p,s) |
Точне числове значення із p знаками (s після десяткової точки) |
123.45 |
Обмеження у PostgreSQL
Обмеження – це правила, які ми встановлюємо для наших шпальт. Ось деякі з них:
| Обмеження |
Опис |
| NOT NULL |
Колонка не може містити значення NULL |
| UNIQUE |
Усі значення в колонці мають бути різними |
| PRIMARY KEY |
Унікально ідентифікує кожен рядок у таблиці |
| FOREIGN KEY |
Забезпечує цілісність посилань між двома таблицями |
| CHECK |
Забезпечує, що всі значення в колонці задовольняють певну умову |
| DEFAULT |
Встановлює значення за промовчанням для колонки |
Ще кілька прикладів
Приклад 3: Таблиця із зовнішнім ключем
Давайте створимо таблицю 'orders', яка посилається на нашу таблицю 'customers':
CREATE TABLE orders ( order_id SERIAL PRIMARY KEY, customer_id INTEGER REFERENCES customers(customer_id), order_date DATE DEFAULT CURRENT_DATE, total_amount NUMERIC(10,2) CHECK (total_amount > 0
Ця таблиця має foreign key ( customer_id ), який посилається на таблицю customers , забезпечуючи, що кожен запис пов'язані з valid customer.
Приклад 4: Таблиця із складовим primary key
Іноді вам може знадобитися primary key, що складається з кількох колонок:
CREATE TABLE book_authors (book_id INTEGER REFERENCES books(book_id), author_id INTEGER REFERENCES authors(author_id), PRIMARY KEY (book_id, author_id));
Ця таблиця може бути використана для обробки книг з кількома авторами або авторами, які написали кілька книг.
Висновок
Вітаю! Ви тільки що зробили свої перші кроки у світ створення таблиць у PostgreSQL. Помнете, що практика makes perfect. Спробуйте створювати таблиці для різних сценаріїв – можливо, для музичної бібліотеки, кулінарної книги або навіть бази даних ваших улюблених відеоігор.
Не бійтеся experiment і помилка помилок – це як ми вчимося! І завжди пам'ятайте: у світі баз даних ви маєте силу створювати, змінювати і навіть видаляти цілі світи даних. Використовуйте цю силу мудро, молодий жук!
Щасливого кодування і нехай PostgreSQL буде з вами!
Credits: Image by storyset
Урок 1. Створення об'єктів бази даних та надсилання запитів до них
Схема навчання Transact-SQL надає докладніший вміст, а також практичні приклади.
На цьому занятті ви дізнаєтеся, як створити базу даних, створити таблицю в базі даних і отримати доступ до даних таблиці та змінити їх.
Інструкції Transact-SQL можуть бути написані та переслані ядру СУБД такими способами:
- За допомогою СЕРЕДОВИЩА SQL Server Management Studio У цьому посібнику передбачається, що ви використовуєте Management Studio, але ви також можете використовувати Management Studio Express, яка доступна як безкоштовне завантаження з Центру завантаження Майкрософт.
- За допомогою програми sqlcmd.
- З'єднавшись із створюваної програми.
Код виконується на ядро СУБД так само і з однаковими дозволами незалежно від того, як ви надсилаєте інструкції коду.
Щоб виконати інструкцію Transact-SQL у Management Studio, відкрийте Management Studio і підключіться до екземпляра ядра СУБД SQL Server.
Необхідні компоненти
Для роботи з цим посібником необхідне середовище SQL Server Management Studio та доступ до екземпляра SQL Server.
Якщо у вас немає екземпляра SQL Server, створіть його. Щоб створити екземпляр, виберіть платформу за наступними посиланнями.
Створення бази даних
Як і багато інструкцій Transact-SQL, інструкція CREATE DATABASE має обов'язковий параметр: ім'я бази даних. Параметри SQL Server використовує стандартні значення для багатьох з цих параметрів.
У вікні Редактор запитів введіть, але не виконайте наступний код:
CREATE DATABASE TestData GO
При створенні бази даних SQL Server створює копію model бази даних та перейменовує копію на ім'я бази даних.Ця операція зазвичай займає кілька секунд, якщо за допомогою додаткового параметра не вказано великий вихідний розмір бази даних.
Коли в одному пакеті представлено кілька вказівок, вони поділяються за допомогою ключового слова GO. Ключове слово GO є необов'язковим, якщо пакет містить лише одну інструкцію.
Створення таблиці
Щоб створити таблицю, потрібно вказати ім'я таблиці, імена та типи даних кожного стовпця таблиці. Також рекомендується вказувати, чи допускаються значення NULL для кожного зі стовпців. Для створення таблиці необхідно мати роздільну здатність CREATE TABLE та дозвіл ALTER SCHEMA для схеми, яка міститиме таблицю. У визначених ролей бази даних db_ddladmin ці дозволи.
Більшість таблиць мають первинний ключ, що складається з однієї чи кількох стовпців таблиці. Первинний ключ завжди є унікальним. Ядро СУБД застосовує обмеження, яке неможливо повторити таблиці будь-яким значенням первинного ключа.
Список типів даних та посилання на їх опис див. у розділі Типи даних (Transact-SQL).
Ядро СУБД можна встановити як конфіденційний регістр або не враховує регістр. Якщо ядро СУБД встановлюється як конфіденційний регістр, імена об'єктів завжди повинні мати однаковий регістр. Наприклад, таблиця з іменем OrderData відрізнятиметься від таблиці ORDERDATA. Якщо ядро СУБД встановлюється як конфіденційний регістр, ці дві таблиці вважаються однією і тією ж таблицею, і це ім'я може використовуватися лише один раз.
Переключення з'єднання редактора запитів на базу даних TestData
У вікні редактора запитів введіть та виконайте наступний код, щоб змінити з'єднання на базу даних TestData .
Створення таблиці
У вікні редактора запитів введіть та виконайте наступний код, щоб створити таблицю Products . Стовпці таблиці мають імена ProductID, ProductName, Price та ProductDescription. Стовпець ProductID є первинним ключем таблиці.int , varchar(25) , money та varchar(max) . Лише стовпці Price та ProductionDescription можуть бути порожніми при вставці або зміні рядка. Ця інструкція містить необов'язковий елемент ( dbo. ), що називається схемою. Схема - це об'єкт бази даних, якого належить таблиця. Якщо ви є адміністратором, стандартною схемою буде схема dbo . dbo означає власника бази даних.
CREATE TABLE dbo.Products (ProductID int PRIMARY KEY NOT NULL, ProductName varchar(25) NOT NULL, Price money NULL, ProductDescription varchar(max) NULL) GO
Вставка даних у таблицю та їх оновлення
Тепер, коли ви створили таблицю Products, можна вставити дані в таблицю за допомогою інструкції INSERT. Після вставки даних, вміст рядка змінюється за допомогою інструкції UPDATE. Пропозиція WHERE інструкції UPDATE використовується для обмеження оновлення до одного рядка. Чотири оператори введіть такі дані.
| ProductID |
Найменування Продукту |
Ціна, |
Опис Продукту |
| 1 |
Затискач |
12,48 |
Workbench clamp |
| 50 |
Screwdriver |
3,17 |
Flat head |
| 75 |
Tire Bar |
Tool for changing tires. |
| 3000 |
3 мм Bracket |
0,52 |
Базовий синтаксис: INSERT, ім'я таблиці, список стовпців, VALUES, а потім список значень, що додаються. Два дефіси перед рядком вказують, що рядок є коментарем, а текст ігнорується компілятором. У цьому випадку примітка визначає можливі варіанти синтаксису.
Вставка даних у таблицю
- Виконайте наведену нижче інструкцію, щоб додати рядок до таблиці Products , яка була створена в попередній задачі.
-- Standard syntax INSERT dbo.Products (ProductID, ProductName, Price, ProductDescription) VALUES (1, 'Clamp', 12.48, 'Workbench clamp') GO
Якщо вставку виконано, перейдіть до наступного кроку. Якщо вставка завершується збоєм, це може бути викликано тим, що в таблиці Product вже є рядок із таким ВД продукту. Щоб продовжити, видаліть усі рядки у таблиці та повторіть попередній крок. TRUNCATE TABLE видаляє всі рядки таблиці.Виконайте наступну команду, щоб видалити всі рядки у таблиці:
TRUNCATE TABLE TestData.dbo.Products; GO
-- Зміна позначок columnів INSERT dbo.Products (ProductName, ProductID, Price, ProductDescription) VALUES ('Screwdriver', 50, 3.17, 'Flat head') GO
-- Перевірте список аркушів, але клацніть значення в порядку INSERT dbo.Products VALUES (75, 'Tire Bar', NULL, 'Tool for changing tires.') GO
-- Скачати опційний dbo і спустошити ProductDescription column INSERT Products (ProductID, ProductName, Price) VALUES (3000, '3 mm Bracket', 0.52) GO
Оновлення таблиці продуктів
Введіть і виконайте наступну інструкцію UPDATE , щоб змінити значення ProductName другого продукту зі значення Screwdriver на Flat Head Screwdriver .
UPDATE dbo.Products SET ProductName = 'Flat Head Screwdriver' WHERE ProductID = 50 GO
Читання даних із таблиці
Для читання даних у таблиці використовується інструкція SELECT. Інструкція SELECT є однією з найважливіших інструкцій Transact-SQL, і для неї існує багато різновидів синтаксису. У цьому посібнику ви працюватимете з п'ятьма основними версіями.
Читання даних у таблиці
- Щоб прочитати дані з таблиці Products , введіть та виконайте такі інструкції.
-- Основна syntax для reading data from single table SELECT ProductID, ProductName, Price, ProductDescription FROM dbo.Products GO
-- Повернути всі columnи в table -- Ви не можете використовувати опційну schema, dbo SELECT * FROM Products GO
-- Відновити лише дві сторінки з table SELECT ProductName, Price FROM dbo.Products GO
-- Відновити лише два записи в Table SELECT ProductID, ProductName, Price, ProductDescription FROM dbo.Products WHERE ProductID < 60 GO
-- Відновити ProductName і Price including 7% tax -- Використовуйте назву CustomerPays для розрізняної сторінки SELECT ProductName, Price * 1.07 AS CustomerPays FROM dbo.Products GO
Корисні функції в інструкції SELECT
Інформацію про деякі функції, які можна використовувати для роботи з даними в інструкціях SELECT, див. у наступних статтях: