Этот захватывающий релиз Лаборатории логического типа данных для Oracle Database 23c AI вводит нативную поддержку логического типа данных, что является настоящим прорывом для разработчиков баз данных. С этим улучшением вы можете нативно представлять true, false и null значения, что упрощает моделирование данных и делает разработку SQL и PL/SQL более эффективной.
Чтобы проиллюстрировать, давайте воссоздадим сценарий, связанный с Системой информации о студентах, где мы будем отслеживать, являются ли студенты в данный момент зачисленными на курсы с использованием нового логического типа данных.
Эта функция повышает продуктивность разработчиков и делает Oracle Database более интуитивно понятной в работе.
Создание таблицы с логическим типом данных
Мы начнем с создания таблицы STUDENTS
, которая включает логический столбец с именем CURRENTLY_ENROLLED
:
DROP TABLE IF EXISTS STUDENTS CASCADE CONSTRAINT;
-- Create STUDENTS table with a boolean column
CREATE TABLE STUDENTS (
STUDENT_ID NUMBER PRIMARY KEY,
NAME VARCHAR2(100),
COURSE VARCHAR2(100),
CURRENTLY_ENROLLED BOOLEAN
);
Вставка данных с логическими значениями
Теперь давайте заполним таблицу тестовыми данными, используя различные логические литералы:
-- Insert sample data using boolean values and accepted boolean literals
INSERT INTO STUDENTS VALUES (1, 'Alice', 'Mathematics', TRUE),
(2, 'Bob', 'Physics', FALSE),
(3, 'Charlie', 'Chemistry', 'yes'),
(4, 'Diana', 'Biology', 'no'),
(5, 'Eve', 'Computer Science', 'on'),
(6, 'Frank', 'Statistics', 'off'),
(7, 'Grace', 'History', 1),
(8, 'Hank', 'Philosophy', 0),
(9, 'Ivy', 'Engineering', NULL);
Oracle сопоставляет различные входные данные, такие как 'yes'
, 'no'
, 1
и 0
, их соответствующим логическим значениям. Давайте проверим данные:
SELECT student_id, name, course, currently_enrolled
FROM students;
Запрос логических данных
Поиск студентов, которые в настоящее время зачислены
Чтобы получить студентов, которые в настоящее время зачислены:
SELECT student_id, name, course
FROM students
WHERE currently_enrolled = TRUE;
Логические операции над логическими столбцами
Булевы значения позволяют выполнять прямые логические операции. Например, фильтрация студентов, считающихся “активно зачисленными”:
SELECT student_id, name, course
FROM students
WHERE currently_enrolled AND TRUE;
Поиск незачисленных студентов
Чтобы выявить студентов, которые в настоящее время не зачислены:
SELECT student_id, name, course
FROM students
WHERE NOT currently_enrolled;
Комбинирование булевой логики с другими условиями
Давайте извлечем студентов, которые либо зачислены, либо чьи имена начинаются с ‘A’:
SELECT student_id, name, course
FROM students
WHERE currently_enrolled OR name LIKE 'A%';
Обновление булевых значений
Отметка студента как зачисленного
Предположим, мы хотим обновить статус зачисления Боба:
UPDATE students
SET currently_enrolled = TRUE
WHERE student_id = 2;
-- Verify the update
SELECT name, currently_enrolled
FROM students
WHERE student_id = 2;
Использование PL/SQL с булевым типом данных
PL/SQL бесшовно интегрируется с новым булевым типом данных. Давайте добавим нового студента:
DECLARE
l_student_id NUMBER := 10;
l_name VARCHAR2(100) := 'John';
l_course VARCHAR2(100) := 'Data Science';
l_enrolled BOOLEAN := TRUE;
BEGIN
INSERT INTO students (student_id, name, course, currently_enrolled)
VALUES (l_student_id, l_name, l_course, l_enrolled);
COMMIT;
END;
Давайте подтвердим только что вставленные данные.
Заключение
Введение булевого типа данных в Oracle Database 23c AI упрощает проектирование базы данных и улучшает читаемость и поддерживаемость вашего кода SQL и PL/SQL. Сокращение зависимости от обходных путей, таких как числовые или символьные коды, позволяет разработчикам писать более чистые и интуитивно понятные запросы.
Будь то управление Системой информации о студентах или любое другое приложение, булевый тип данных делает обработку логических значений простой и надежной. Получите практический опыт уже сегодня и посмотрите, как эта функция может повысить качество ваших проектов баз данных.
Source:
https://dzone.com/articles/exploring-the-new-boolean-data-type-in-oracle-23c-ai