Скачать 106.03 Kb.
|
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ «ДОНСКОЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ» Кафедра «Программное обеспечение вычислительной техники и автоматизированных систем» Применение языка SQL для определения и модификации данных Методические указания по дисциплине “Базы данных и СУБД” Ростов-на-Дону 2013 Составитель ст.преп. А.И. Жуков Применение языка SQL для определения и модификации данных: метод. указания. – Ростов н/Д: Издательский центр ДГТУ, 2013.-10 с. В пособии рассмотрены операторы и инструкции языка SQL, используемые в различных реляционных СУБД с целью определения схемы отношений, либо с целью модификации имеющихся в БД постоянных данных. В том числе, рассмотрены примеры использования данных инструкций в СУБД MySQL и PostgreSQL. Даны задания к лабораторной работе, помогающие закрепить на практике полученные знания. Методические указания предназначены для студентов специальностей 230105 «Программное обеспечение вычислительной техники и автоматизированных систем», 23100 «Программное инженерия», 010503 «Математическое обеспечение и администрирование информационных систем», 090102 «Компьютерная безопасность». Печатается по решению методической комиссии факультета «Информатика и вычислительная техника» Рецензент к.т.н., проф. М.В. Гранков Научный редактор д.т.н. проф. Р.А. Нейдорф © А.И. Жуков, 2013 © Издательский центр ДГТУ, 2013 Введение Язык SQL де-факто является стандартным языком известных реляционных СУБД, о чем также свидетельствует тот факт, что множество альтернативных подходов (документо-ориентированные, графовые и др.) объединяются сегодня теоретиками БД в рамки общей концепции NoSQL (англ. not only SQL), набирающей все большую популярность. С другой стороны, реляционные БД по-прежнему являются наиболее распространенными, а применение альтернативных подходов возможно лишь в достаточно специфичных областях приложения, в то время, как эффективность реляционной модели данных доказана временем и практически не зависит от области применения [1]. Язык SQL традиционно делится на несколько частей, объединяющих группы операторов по их назначению. В данном пособии рассматриваются язык определения данных – ЯОД (англ. Data definition language – DDL) и язык манипулирования данными – ЯМД (англ. Data manipulation language – DML) [2]. Язык определения данных (DDL) Операторы данной группы языка SQL используются с целью определения схемы данных в реляционной базе данных: создание таблиц, представлений, последовательностей, хранимых процедур, триггеров и других сущностей, реализуемых конкретной СУБД, а также их модификация и удаление. Также при определении таблиц возможно определить поддерживаемые ограничения целостности [1,2]: уникальность, диапазон значений, первичный ключ, внешний ключ и др. Перечислим некоторые операторы языка DDL:
Язык манипулирования данными (DML) Операторы подъязыка манипулирования данными предназначены для модификации постоянных данных в реляционной СУБД. К операторам данной группы традиционно относят следующие [2]:
Операторы UPDATE или DELETE могут за один свой вызов модифицировать сразу любое число записей, содержащихся в таблице. Множество этих записей задается предикатом, который указывается в секции WHERE. Оператор INSERT может быть использован как для вставки одной записи в таблицу, так и для вставки сразу нескольких записей, которые (например) являются результатами выполнения запроса SELECT (примеры для конкретных СУБД приведены ниже). Примеры использования в различных СУБД MySQL Синтаксис оператора создания таблицы в РСУБД MySQL следующий: CREATE TABLE table_name ( column_name1 type [modifiers] [, column_name2 type [modifiers]] ) В качестве имен таблиц и полей в MySQL допускается использовать любые символы из установленного в системе локального набора. Если в качестве идентификатора таблицы или ее поля требуется указать имя, совпадающее по написанию с ключевым словом или оператором языка, то его требуется обрамить символом «`». Для удаления таблицы достаточно написать: DROP TABLE [IF EXISTS] table_name; Необязательная часть (IF EXISTS) в данном случае используется, если заранее не известно существует ли удаляемая таблица в БД (при этом, если таблицы не существует, то не произойдет ошибки выполнения запроса). В MySQL допустимо использовать следующие типы данных: INT, REAL, DATE, TEXT(длина), TIME, CHAR(длина), VARCHAR(длина), LONGTEXT(длина), CHAR BINARY, BLOB, и др. В MySQL также поддерживаются поля типа перечисление (ENUM) и множество (SET). СУБД MySQL поддерживает стандартный синтаксис оператора вставки данных (INSERT): INSERT INTO table_name (column1, column2, … columnN) VALUES (value1, value2, … valueN) [,(value1, value2, … valueN)] Как видно данный синтаксис предполагает возможность вставки нескольких строк в таблицу одним запросом. При этом данные для полей числового типа водятся как есть, а данные всех других типов заключаются в одинарные кавычки. Кроме того, источником вставляемых записей может являться запрос SELECT. Запросы на изменение данных (UPDATE) подчинены следующему синтаксису: UPDATE table_name SET column1=value1, column2=value2, ..., columnN=valueN [WHERE clause] Условный предикат (clause) является необязательным и определяет то, какие из имеющихся в таблице table_name записей должны быть обновлены, т.е. в них значение поля column1 будет установлено в value1, значение поля column2 будет установлено в value2 и т.д. Удаление данных (DELETE) реализуется следующим образом: DELETE FROM table_name [WHERE clause] В заключение рассмотрим небольшой скрипт, демонстрирующий возможности языка SQL в СУБД MySQL (проверено для версии сервера 5.1.40). # удаление таблиц, если они существуют DROP TABLE IF EXISTS `select`,test, test2; # создание таблицы с именем select CREATE TABLE `select` ( `group` int(11) NOT NULL DEFAULT '0', # значение по-умолчанию 0 `insert` double, PRIMARY KEY (`group`) # ограничение первичный ключ ); # создание таблицы с использованием оператора SELECT CREATE TABLE test2 AS SELECT * FROM `select`; # переименование столбца и изменение его типа ALTER TABLE test2 CHANGE `group` id INT(20); # определение первичного ключа для таблицы test2 ALTER TABLE test2 ADD PRIMARY KEY(id); # переименование таблицы select ALTER TABLE `select` RENAME test; # добавление ограничения уникальности для поля insert ALTER TABLE test ADD UNIQUE uinsert (`insert`); # определение значения по-умолчанию ALTER TABLE test ALTER COLUMN `insert` SET DEFAULT 0.123; # вставка 3х строк в таблицу test2 INSERT INTO test2 VALUES (1,0.1), (2,0.2), (3,0.3); # удаление первичного ключа в таблице test ALTER TABLE test DROP PRIMARY KEY; # добавление поля с авто-увеличением ALTER TABLE test ADD COLUMN i1 INT NOT NULL PRIMARY KEY AUTO_INCREMENT; # вставка данных в таблицу test с частичным указанием # значений строки INSERT INTO test(`group`) VALUES (0); # вставка данных в таблицу test из запроса SELECT INSERT INTO test(`insert`,`group`) SELECT `insert`, id FROM test2; # увеличение значений поля insert для всех строк # в таблице test на 1 UPDATE test SET `insert` = `insert` + 1; # удаление строк из таблицы test, # в которых значение поля group < 2 DELETE FROM test WHERE `group` < 2; # создание поля с типом перечисление из трех значений ALTER TABLE test ADD COLUMN e1 ENUM('a','b','c'); # установка значения поля e1 для всех записей UPDATE test SET e1 = 'c'; # следующая команда установит значения поля e1 для всех # строк таблицы в null, так как ‘d’ не определено среди # допустимых значений последовательности UPDATE test SET e1 = 'd'; PostgreSQL ОРСУБД PostgreSQL предоставляет похожие возможности в части использования операторов языка SQL. Рассмотрим некоторые специфичные особенности данной СУБД [3]:
UPDATE table_name [ [ AS ] alias ] SET { column = { expression | DEFAULT } | ( column [, ...] ) = ( { expression | DEFAULT } [, ...] ) } [, ...] [ FROM from_list ] [ WHERE condition ]
Пример скрипта, демонстрирующего возможности языка SQL в СУБД PostgreSQL (версия 9.1), представлен ниже. Как видно из примера, если использование операторов подъязыка DML практически не отличается от рассмотренного ранее для MySQL, то использование операторов языка DDL отличается от рассмотренного ранее. Имя схемы нигде не указывается, поэтому таблицы создаются внутри схемы public (если конфигурацией не определена другая схема). -- удаление таблиц, если они существуют DROP TABLE IF EXISTS "select", test, test2; -- создание таблицы с именем select CREATE TABLE "select" ( "group" numeric(11,0) NOT NULL DEFAULT '0', -- значение по-умолчанию 0 "insert" real, CONSTRAINT select_pkey PRIMARY KEY ("group") -- ограничение первичный ключ ); -- создание таблицы с использованием оператора SELECT CREATE TABLE test2 AS SELECT * FROM "select"; -- переименование столбца и изменение его типа ALTER TABLE test2 RENAME COLUMN "group" TO id; ALTER TABLE test2 ALTER COLUMN id TYPE int; -- определение первичного ключа для таблицы test2 ALTER TABLE test2 ADD PRIMARY KEY(id); -- переименование таблицы select ALTER TABLE "select" RENAME TO test; -- добавление ограничения уникальности для поля insert ALTER TABLE test ADD CONSTRAINT uinsert UNIQUE ("insert"); -- определение значения по-умолчанию ALTER TABLE test ALTER COLUMN "insert" SET DEFAULT 0.123; -- вставка 3х строк в таблицу test2 INSERT INTO test2 VALUES (1,0.1), (2,0.2), (3,0.3); -- удаление первичного ключа в таблице test ALTER TABLE test DROP CONSTRAINT select_pkey; -- добавление поля с авто-увеличением ALTER TABLE test ADD COLUMN i1 serial NOT NULL PRIMARY KEY; -- вставка данных в таблицу test с частичным указанием -- значений строки INSERT INTO test("group") VALUES (0) RETURNING *; -- вставка данных в таблицу test из запроса SELECT INSERT INTO test("insert","group") SELECT "insert", id FROM test2; -- увеличение значений поля insert для всех строк -- в таблице test на 1 UPDATE test SET "insert" = "insert" + 1; -- удаление строк из таблицы test, -- в которых значение поля group < 2 DELETE FROM test WHERE "group" < 2; -- создание поля с типом перечисление из трех значений DROP TYPE IF EXISTS etype; CREATE TYPE etype AS ENUM('a','b','c'); ALTER TABLE test ADD COLUMN e1 etype; -- установка значения поля e1 для всех записей UPDATE test SET e1 = 'c' RETURNING *; -- следующая команда вызовет ошибку, так как -- ‘d’ не определено среди допустимых значений -- созданного ранее типа etype UPDATE test SET e1 = 'd'; Задание для самостоятельного выполнения Задание включает в себя выполнение следующих этапов для выбранной СУБД:
Список литературы
|
Методические указания к практическим работам по дисциплине «Базы данных» Методические указания предназначены для проведения практических занятий по дисциплине «Базы данных», для специальности ксиК |
Методические указания «Аналитические запросы» по дисциплине «Постреляционные базы данных» Учебно-методические материалы «Аналитические запросы» представляют собой методические указания к лабораторным работам по дисциплине... |
||
Методические указания для выполнения лабораторных работ и «Базы данных» Лабораторная работа №1 «Организация хранения данных в субд ms access» |
Содержание Введение Глава Основные понятия бд и субд данные и ЭВМ Эти базы данных создаются и функционируют под управлением специальных программных комплексов, называемых системами управления базами... |
||
Методические указания к курсовой работе по дисциплине Базы данных... Дисциплина «Базы данных» для направления 230700. 62 «Прикладная информатика» подготовки бакалавра |
Методические указания по выполнению лабораторных работ по дисциплине “Базы данных” Методические указания предназначены для студентов специальностей 230401 «Прикладная математика», 230105 «Программное обеспечение... |
||
Многокритериальный выбор оптимальной системы управления базы данных... Одной из главных проблем разработки приложения баз данных является выбор системы управления базами данных (далее субд). Выбранная... |
Методические указания к практическим занятиям рпк «Политехник» Методические указания предназначены для проведения практических занятий по дисциплине “Базы данных” в соответствии со стандартом... |
||
Лекция Язык sql 46 вставка одного запроса внутрь другого 68 как работает... Эти базы данных создаются и функционируют под управлением специальных программных комплексов, называемых системами управления базами... |
1. Понятие субд. Основные категории субд. Архитектура ansi-sparc Субд — совокупность программных и лингвистических средств общего или специального назначения, обеспечивающих управление созданием... |
||
Учебно-методическое пособие по курсу «Базы данных» по теме разработка web-приложений В настоящее время количество приложений с использованием систем управления реляционными базами данных (субд) неуклонно растет. Особенно... |
Методические рекомендации для выполнения практических заданий Казань 2013 Этап 6а: Загрузка данных в Deductor Studio из текстовых файлов, создание хранилища данных в субд fireBird. 29 |
||
Методические указания по дисциплине “Системы управления базами данных” Методические указания предназначены для студентов специальностей 230105 «Программное обеспечение вычислительной техники и автоматизированных... |
Литература: Дейт К. Введение в системы баз данных, 8-е издание. Вильямс, 2006 Субд; 3 оптимального доступа к данным с использованием субд. 4 нереляционная форма хранения данных. 5 Современные технологии доступа... |
||
Методические указания к лабораторным работам по дисциплине “ Методические указания к лабораторным работам по дисциплине “Нормативные документы и должностные инструкции” / А. Г. Куприянов, А.... |
Методические указания по курсовому проектированию по дисциплине «Проектирование... Электронный ресурс]: методические указания / О. Ф. Абрамова// Сборник «Методические указания» Выпуск. Электрон текстовые дан.(1файл:... |
Поиск |