Представлення в SQL — це збережений SQL-запит, який діє як віртуальна таблиця. На відміну від звичайних таблиць, представлення даних не зберігають самі. Натомість вони динамічно генерують дані, виконуючи SQL-запит, визначений у поданні кожного разу, коли до нього звертаються.
Він може отримувати дані з однієї чи кількох таблиць і представляти їх у спеціальному форматі, що дозволяє розробникам:
- Спрощення складних запитів: Інкапсулюйте складні об’єднання та умови в єдиний об’єкт.
- Підвищення безпеки: Обмежте доступ до певних стовпців або рядків.
- Гнучке представлення даних: Надання індивідуальних переглядів даних для різних користувачів.
Ми будемо використовувати ці дві таблиці SQL для прикладів.
Деталі студента:
-- Create StudentDetails table
CREATE TABLE StudentDetails (
S_ID INT PRIMARY KEY
NAME VARCHAR(255)
ADDRESS VARCHAR(255)
);
INSERT INTO StudentDetails (S_ID NAME ADDRESS)
VALUES
(1 'Harsh' 'Kolkata')
(2 'Ashish' 'Durgapur')
(3 'Pratik' 'Delhi')
(4 'Dhanraj' 'Bihar')
(5 'Ram' 'Rajasthan');
Вихід:
S_ID | Ім'я | Адреса |
|---|---|---|
1 | Суворий | Колката |
2 | попелястий | Дургапур |
3 | Практика | Делі |
4 | Дханрадж | Біхар |
5 | Баран | Раджастхан |
Оцінки студентів:
-- Create StudentMarks table
CREATE TABLE StudentMarks (
ID INT PRIMARY KEY
NAME VARCHAR(255)
Marks INT
Age INT
);
INSERT INTO StudentMarks (ID NAME Marks Age)
VALUES
(1 'Harsh' 90 19)
(2 'Suresh' 50 20)
(3 'Pratik' 80 19)
(4 'Dhanraj' 95 21)
(5 'Ram' 85 18);
Вихід:
ID | Ім'я | Відмітки | Вік |
|---|---|---|---|
1 | Суворий | 90 | 19 |
2 | Суреш | 50 | 20 |
3 | Практика | 80 | 19 |
4 | Дханрадж | 95 | 21 |
5 | Баран | 85 | 18 |
СТВОРЮЙТЕ ПОГЛЯДИ в SQL
Ми можемо створити представлення за допомогою оператора CREATE VIEW. Представлення можна створити з однієї або кількох таблиць.
Синтаксис:
CREATE VIEW view_name AS
SELECT column1 column2.....
FROM table_name
WHERE condition;
Ключові терміни:
- view_name : назва перегляду
- ім'я_таблиці : Назва таблиці
- хвороба : Умова вибору рядків
Приклад 1: Створення простого подання з однієї таблиці
Приклад 1.1: У цьому прикладі ми створимо представлення під назвою DetailsView з таблиці StudentDetails.
Запит:
CREATE VIEW DetailsView AS
SELECT NAME ADDRESS
FROM StudentDetails
WHERE S_ID < 5;
Використовуйте наведений нижче запит, щоб отримати дані з цього перегляду
SELECT * FROM DetailsView;Вихід:
Ім'я | Адреса |
|---|---|
Суворий | Колката |
попелястий | Дургапур |
Практика | Делі |
Дханрадж | Біхар |
Приклад 1.2: Тут ми створимо представлення під назвою StudentNames із таблиці StudentDetails.
Запит:
CREATE VIEW StudentNames AS
SELECT S_ID NAME
FROM StudentDetails
ORDER BY NAME;
Якщо ми тепер запитуємо представлення як
SELECT * FROM StudentNames;
Вихід:
S_ID | Ім'я |
|---|---|
2 | попелястий |
4 | Дханрадж |
1 | Суворий |
3 | Практика |
5 | Баран список користувачів mysql |
Приклад 2: Створення подання з кількох таблиць
У цьому прикладі ми створимо View MarksView, який поєднує дані з обох таблиць StudentDetails і StudentMarks. Щоб створити представлення з кількох таблиць, ми можемо просто включити кілька таблиць у ВИБРАТИ заява.
Запит:
CREATE VIEW MarksView AS
SELECT StudentDetails.NAME StudentDetails.ADDRESS StudentMarks.MARKS
FROM StudentDetails StudentMarks
WHERE StudentDetails.NAME = StudentMarks.NAME;
Щоб відобразити дані View MarksView:
SELECT * FROM MarksView;Вихід:
Ім'я | Адреса | Відмітки |
|---|---|---|
Суворий | Колката | 90 |
Практика | Делі | 80 |
Дханрадж | Біхар | 95 |
Баран | Раджастхан | 85 приклад java, привіт, світ |
Керування переглядами: оновлення та видалення списку
1. Перелік усіх представлень у базі даних
Ми можемо перерахувати всі представлення в базі даних за допомогою оператора SHOW FULL TABLES або шляхом запиту до таблиць information_schema.
USE 'database_name';
SHOW FULL TABLES WHERE table_type LIKE '%VIEW';
Використання інформаційної_схеми
SELECT table_name
FROM information_schema.views
WHERE table_schema = 'database_name';
OR
SELECT table_schema table_name view_definition
FROM information_schema.views
WHERE table_schema = 'database_name';
2. Видалення перегляду
SQL дозволяє нам видалити існуюче представлення. ми можемо видалити або скиньте View за допомогою оператора DROP.
Синтаксис:
DROP VIEW view_name;приклад: У цьому прикладі ми видаляємо View MarksView.
DROP VIEW MarksView;3. Оновлення визначення подання
Якщо ми хочемо оновити наявні дані в поданні, використовуйте ОНОВЛЕННЯ заява.
UPDATE view_name
SET column1 = value1 column2 = value2.... columnN = valueN
WHERE [condition];
Якщо ви хочете оновити визначення перегляду, не впливаючи на дані, скористайтеся оператором CREATE OR REPLACE VIEW. Наприклад, додамоAgeстовпець доMarksView:
CREATE OR REPLACE VIEW view_name AS
SELECT column1 column2 ...
FROM table_name
WHERE condition;
Примітка: Не всі подання можна оновити за допомогою оператора UPDATE.
Правила для оновлення представлень у SQL:
Щоб оновити подання, необхідно виконати певні умови. Якщо будь-яка з цих умов є ні зустрів погляд не можна оновити.
- Оператор SELECT, який використовується для створення подання, не повинен містити пропозиції GROUP BY або ЗАМОВИТИ ЗА пункт.
- Оператор SELECT не повинен мати ВІДМІТНИЙ ключове слово.
- Перегляд має містити всі значення NOT NULL.
- Подання не слід створювати за допомогою вкладених або складних запитів.
- Подання має бути створено з однієї таблиці. Якщо подання створено з використанням кількох таблиць, нам не буде дозволено оновлювати подання.
Передові методи з представленнями
1. Оновлення даних за допомогою представлень
Ми можемо використовувати оператор CREATE OR REPLACE VIEW, щоб додати або замінити поля з представлення. Якщо ми хочемо оновити представлення MarksView та додати поле AGE до цього представлення з таблиці StudentMarks, ми можемо зробити це за допомогою:
приклад:
CREATE OR REPLACE VIEW MarksView AS
SELECT StudentDetails.NAME StudentDetails.ADDRESS StudentMarks.MARKS StudentMarks.AGE
FROM StudentDetails StudentMarks
WHERE StudentDetails.NAME = StudentMarks.NAME;
Якщо зараз отримати всі дані з MarksView як:
SELECT * FROM MarksView;Вихід:
Ім'я | Адреса | Відмітки | Вік |
|---|---|---|---|
Суворий | Колката | 90 | 19 |
Практика | Делі | 80 | 19 |
Дханрадж | Біхар | 95 | 21 |
Баран | Раджастхан | 85 | 18 |
Ми можемо вставити рядок у View так само, як і в таблицю. Ми можемо використовувати ВСТАВИТИ В оператор SQL для вставлення рядка в представлення. У прикладі нижче ми вставимо новий рядок у View DetailsView, який ми створили вище у прикладі «створення представлень з однієї таблиці».
приклад:
INSERT INTO DetailsView(NAME ADDRESS)
VALUES('Suresh''Gurgaon');
Якщо ми зараз отримаємо всі дані з DetailsView як
SELECT * FROM DetailsView;Вихід:
Ім'я | Адреса |
|---|---|
Суворий | Колката |
попелястий | Дургапур |
Практика | Делі |
Дханрадж | Біхар |
Суреш | Гургаон |
3. Видалення рядка з представлення
Видалення рядків із подання так само просто, як видалення рядків із таблиці. Ми можемо використовувати оператор DELETE SQL, щоб видалити рядки з представлення. Крім того, видалення рядка з подання спочатку видаляє рядок із фактичної таблиці, а потім зміна відображається в поданні. У цьому прикладі ми видалимо останній рядок з перегляду DetailsView, який ми щойно додали у наведеному вище прикладі вставки рядків.
приклад:
DELETE FROM DetailsView
WHERE NAME='Suresh';
Якщо ми зараз отримаємо всі дані з DetailsView як
SELECT * FROM DetailsView;Вихід:
Ім'я | Адреса |
|---|---|
Суворий | Колката |
попелястий | Дургапур |
Практика | Делі |
Дханрадж | Біхар |
4. Речення WITH CHECK OPTION
Пропозиція WITH CHECK OPTION у SQL є дуже корисною пропозицією для представлень. Це стосується перегляду, який можна оновлювати. Він використовується для запобігання модифікації даних (за допомогою INSERT або UPDATE), якщо умова в реченні WHERE в операторі CREATE VIEW не виконується.
Якщо ми використали речення WITH CHECK OPTION у операторі CREATE VIEW і якщо речення UPDATE або INSERT не задовольняють умови, тоді вони повернуть помилку. У прикладі нижче ми створюємо View SampleView з таблиці StudentDetails із пропозицією WITH CHECK OPTION.
приклад:
CREATE VIEW SampleView AS
SELECT S_ID NAME
FROM StudentDetails
WHERE NAME IS NOT NULL
WITH CHECK OPTION;
У цьому поданні, якщо ми зараз спробуємо вставити новий рядок із нульовим значенням у стовпець NAME, це дасть помилку, оскільки подання створено з умовою для стовпця NAME як NOT NULL. Наприклад, хоча представлення можна оновлювати, наведений нижче запит для цього перегляду недійсний:
INSERT INTO SampleView(S_ID)Створіть вікторину
VALUES(6);