Главная страница
Навигация по странице:

  • Краткие сведения из теории

  • Декартово произведение

  • Основы синтаксиса языка SQL

  • Учебная база данных

  • Типы данных языка SQL

  • Манипулирование таблицами Для создания, изменения и удаления таблиц в SQL БД используются операторы CREATE TABLE, ALTER TABLE и DROP TABLE. Создание таблицы

  • основы sql. Основы языка sql аннотация


    Скачать 88.91 Kb.
    НазваниеОсновы языка sql аннотация
    Дата29.03.2023
    Размер88.91 Kb.
    Формат файлаdocx
    Имя файлаосновы sql.docx
    ТипЛитература
    #1024706
    страница1 из 4
      1   2   3   4

    Основы языка SQL

    АННОТАЦИЯ

    Данное учебное пособие предназначено для изучения основ языка SQL - стандартного языка манипулирования данными в СУБД, реализующих реляционную модель данных. Описывается синтаксис наиболее употребимых операторов языка SQL, приводятся примеры. Обучающимся дается возможность в интерактивном режиме проверить свои знания.
    Учебная база данных реализована в среде СУБД mySQL, средства доступа к ней встроены в учебное пособие.

    Содержание

    Краткие сведения из теории
    Основы синтаксиса языка SQL
    Учебная база данных
    Типы данных языка SQL
    Манипулирование таблицами

    Создание таблицы
    Модификация таблицы
    Удаление таблицы

    Добавление строк в таблицу
    Выборка данных из таблиц

    Описание столбцов результирующей таблицы
    Описание критерия выборки содержимого строк результирующей таблицы
    Упорядочивание и группирование строк результирующей таблицы
    Выборка из нескольких таблиц

    Манипулирование строками таблиц

    Удаление строк
    Модификация строк

    Литература
    Упражнения

    Краткие сведения из теории

    Язык SQL (Structured Query Language - структурированный язык запросов) представляет собой стандартный высокоуровневый язык описания данных и манипулирования ими в системах управления базами данных (СУБД), построенных на основе реляционной модели данных [1].

    Язык SQL был разработан фирмой IBM в конце 70-х годов. Первый международный стандарт языка был принят международной стандартизирующей организацией ISO в 1989 г. [2], а новый (более полный) - в 1992 г. [3]. В настоящее время все производители реляционных СУБД поддерживают с различной степенью соответствия стандарт SQL92.

    Единственной структурой представления данных (как прикладных, так и системных) в реляционной базе данных (БД) является двумерная таблица. Любая таблица может рассматриваться как одна из форм представления теоретико-множественного понятия отношение (relation), отсюда название модели данных - ?реляционная?.
    В реляционной модели данных таблица обладает следующими основными свойствами:

    1. идентифицуруется уникальным именем;

    2. имеет конечное (как правило, постоянное) ненулевое количество столбцов;

    3. имеет конечное (возможно, нулевое) число строк;

    4. столбцы таблицы идентифицируются своими уникальными именами и номерами;

    5. содержимое всех ячеек столбца принадлежит одному типу данных (т.е. столбцы однородны), содержимым ячейки столбца не может быть таблица;

    6. строки таблицы не имеют какой-либо упорядоченности и идентифицируются только своим содержимым (т.е. понятие ?номер строки? не определено);

    7. в общем случае ячейки таблицы могут оставаться ?пустыми? (т.е. не содержать какого-либо значения), такое их состояние обозначается как NULL.

    Примечание. Необходимо иметь в виду, что видимая пользователям СУБД логическая организация данных (в нашем случае с помощью реляционной модели) может очень слабо коррелироваться с их физической организацией в памяти ЭВМ.

    На содержимое таблиц допустимо накладывать ограничения в виде:

    1. требования уникальности содержимого каждой ячейки какого-либо столбца и/или совокупности ячеек в строке, относящихся к нескольким столбцам;

    2. запрета для какого-либо столбца (столбцов) иметь ?пустые? (NULL) ячейки.

    Ограничение в виде требования уникальности тесно связано с понятием ключа таблицы. Ключом таблицы называется столбец или комбинация столбцов, содержимое ячеек которого(ых) используется для прямого доступа (?быстрого? определения местоположения) к строкам таблицы. Различают ключи первичный (он может быть только единственным для каждой таблицы) и вторичные. Первичный ключ уникален и однозначно идентифицирует строку таблицы. Столбец строки, определенный в качестве первичного ключа, не может содержать ?пустое? (NULL) значение в какой-либо своей ячейке. Вторичный ключ определяет местоположение, в общем случае, не одной строки таблицы, а нескольких ?подобных? (в любом случае ускоряя доступ к ним, хотя не в такой степени как ключ первичный).
    Ключи используются внутренними механизмами СУБД для оптимизации затрат на доступ к строкам таблиц (путем, например, их физического упорядочения по значениям ключей или построения двоичного дерева поиска).

    Основными операциями над таблицами являются следующие.

    1. Проекция - построение новой таблицы из исходной путем включения в нее избранных столбцов исходной таблицы.

    2. Ограничение - построение новой таблицы из исходной путем включения в нее тех строк исходной таблицы, которые отвечают некоторому критерию в виде логического условия (ограничения).

    3. Объединение - построение новой таблицы из 2-ух или более исходных путем включения в нее всех строк исходных таблиц (при условии, конечно, что они подобны).

    4. Декартово произведение - построение новой таблицы из 2-ух или более исходных путем включения в нее строк, образованных всеми возможными вариантами конкатенации (слияния) строк исходных таблиц. Количество строк новой таблицы определяется как произведение количеств строк всех исходных таблиц.

    Пречисленные выше 4 операции создают базис, на основе которого может быть построено большинство (но не все) практически полезных запросов на извлечение информации из реляционной БД.
    Примечание. Набор операций будет полным, если дополнить его операциями пересечения и вычитания. Однако в данном пособии реализация этих операций в языке SQL не рассматривается.

    Кроме перечисленных выше в языке SQL реализованы операции модификации содержимого строк таблицы и пополнения таблицы новыми строками (что теоретически может рассматриваться как операция объединения), а также операции управления таблицами.
    Рассмотренные выше операции над таблицами реляционной БД обладая функциональной полнотой, будучи реализованы на практике в своем ?чистом? каноническом виде, как правило, крайне неэкономичны (в первую очередь это относится к комбинации операций ограничения и декартового произведения). Разработчики реальных реляционных СУБД прибегают ко всевозможным приемам и ?ухищрениям? для минизации вычислительных затрат (в первую очередь, машинного времени) при выполнении этих операций. Общим способом, нашедшим отражение в языке SQL, повышения эффективности выполнения запросов в реляционных СУБД  являются импользование ключей индексов.

    Индексом называется скрытая от пользователя вспомогательная управляющая структура, обеспечивающая прямой (или ?квази?-прямой) метод доступа к строкам таблицы, позволяющий исключить последовательный просмотр всех строк таблицы для обнаружения отвечающих некоторому критерию поиска. Индексы неявным образом (скрытно от пользователя) автоматически создаются для всех ключей таблицы.

     В настоящее время наибольшее распространение получили реляционные SQL СУБД двух групп:

    1. мощные крупные коммерческие СУБД, ориентированные на хранение огромных объемов информации (от гигабайт);

    2. мобильные компактные свободно распространяемые (в том числе и в исходных кодах) СУБД, использование которых оправдано и для БД объемом всего лишь в десятки килобайт.

    Наиболее известными СУБД первой группы являются:

    • Sybase SQLserver фирмы Sybase, Inc.;

    • Oracle фирмы Oracle Corporation;

    • Ingres фирмы Computer Associates International;

    • Informix фирмы Informix Corporation.

    К наиболее популярным СУБД второй группы относятся:

    • PostgreSQL организации PostgreSQL;

    • microSQL фирмы Hughes Technologies Pty. Ltd.;

    • mySQL фирмы T.C.X DataKonsult AB.

    В данном учебном пособии практические упражнения, которые может выполнить обучающийся после изучения основ языка SQL, реализуются средствами СУБД mySQL.

    Все перечисленные выше СУБД построены по принципу ?клиент-сервер?, как это показано на рисунке ниже.

    SQL-сервер реализует собственно хранение данных и манипулирование ими. Он принимает запросы на языке SQL от своих клиентов, выполняет их и возвращает результаты (чаще всего в виде вновь построенных таблиц) клиентам. Для общения с клиентами используется специальный протокол (как правило, реализованный в виде протокола прикладного уровня стека сетевых протоколов TCP/IP).
    Клиентскую часть СУБД составляют клиенты трех основных типов.

    • Интерактивные клиенты, обеспечивающие пользователю-человеку возможность общения с SQL-сервером непосредственно с помощью языка SQL.

    • ИПП-клиенты, обеспечивающие интерфейс прикладного программирования (ИПП) прикладным программам, использующим средства SQL-сервера. Такой ИПП может быть средством общения прикладной программы с SQL-сервером на языке SQL или набором стандартных функций доступа к реляционной SQL БД без формирования символьных строк запросов (например, стандартный интерфейс ODBC).

    • WWW-клиенты, встраиваемые в World Wide Web-сервера и обеспечивающие доступ к информационным возможностям SQL-сервера пользователям сети Internet по протоколу HTTP (протоколу передачи гипертекстовых документов).

    Именно WWW-клиент СУБД mySQL используется в учебном пособии для выполнения практических упражнений.
     

    Основы синтаксиса языка SQL

    ?Программа? на языке SQL представляет собой простую линейную последовательность операторов языка SQL. Язык SQL в своем ?чистом? виде операторов управления порядком выполнения запросов к БД (типа циклов, ветвлений, переходов) не имеет.
    Операторы языка SQL строятся с применением:

    • зарезервированных ключевых слов;

    • идентификаторов (имен) таблиц и столбцов таблиц;

    • логических, арифметических и строковых выражений, используемых для формирования критериев поиска информации в БД и для вычисления значений ячеек результирующих таблиц;

    • идентификаторов (имен) операций и функций, используемых в выражениях.

    Все ключевые слова, имена функций и, как правило, имена таблиц и столбцов представляются 7-мибитными символами кодировки ASCII (иначе говоря - латинскими буквами).
    В языке SQL не делается различия между прописными (большими) и строчными (маленькими) буквами, т.е., например, строки ?SELECT?, ?Select?, ?select? представляют собой одно и то же ключевое слово.
    Для конструирования имен таблиц и их столбцов допустимо использовать буквы, цифры и знак ?_? (подчеркивание), но первым символом имени обязательно должна быть буква.
    Запрещено использование ключевых слов и имен функций в качестве идентификаторов таблиц и имен столбцов. Полный список ключевых слов и имен функций (а он весьма обширен) можно найти в документации на конкретную СУБД.
    Оператор начинается с ключевого слова-глагола (например, ?CREATE? - создать, ?UPDATE? - обновить, ?SELECT? - выбрать и т.п.) и заканчивается знаком ?;? (точка с запятой). Оператор записывается в свободном формате и может занимать несколько строк. Допустимыми разделителями лексических единиц в операторе являются:

    • один или несколько пробелов,

    • один или несколько символов табуляции,

    • один или несколько символов ?новая строка?.

    При описании операторов языка SQL в учебном пособии используются следующие соглашения.

    • Прописными (большими) буквами (напрмер, SELECT, FROM, WHERE) набраны зарезервированные слова.

    • Курсивом (например, имя_таблсложн_условие) набраны переменные (нетерминальные символы), подлежащие замене в реальном операторе конструкцией из терминальных символов (идентификаторов, знаков операций, имен функций и т.п.).

    • В квадратные скобки (?[...]?) заключается необязательная часть оператора, которую можно опустить при создании реального оператора (сами квадратные скобки в текст оператора не включаются).

    • Вертикальная черта (?|?) означает возможность выбора (?или?) из двух или нескольких вариантов синтаксической конструкции (сама вертикальная черта в текст оператора не включается). Подчеркнутый вариант (например, в ?[ ALL | DISTINCT }?) является умолчательным.

    • Последовательность символов ?, ...? обозначает возможность повторения произвольное количество раз (в том числе и нулевое) предшествующей запятой конструкции. Символ ?,? включается в реальный оператор в качестве разделителя перед каждым повторением конструкции.

    К сожалению, разработчики реальных СУБД неаккуратно обращаются с требованиями стандартов языка SQL в части комментариев. Поэтому комментарии при использовании в различных СУБД в текстах ?программ? на языке SQL могут помечаться следующими способами:

    • от двойного минуса (?--?) до конца строки;

    • от символа ?#? до конца строки;

    • между последовательностями ?/*? и ?*/? (стиль комментариев языка СИ).

     

    Учебная база данных

    В качестве примера в учебном пособии рассматривается БД, содержащая информацию, используемую для решения двумерной (плоской) задачи анализа напряженно-деформированного состояния механического объекта методом конечных элементов [4].

    Метод конечных элементов (МКЭ) - универсальный метод решения краевых задач (систем дифференциальных уравнений в частных производных с краевыми условиями), к которым относится и задача анализа (моделирования) напряженно-деформированного состояния плоских механических объектов. Одним из основных этапов метода является этап разбиения ?тела? моделируемого объекта на элементарные участки, называемые конечными элементами (КЭ). Для плоских объектов чаще всего такие КЭ представляют собой треугольники. Пример покрытия объекта (типа рычага) сеткой конечных элементов представлен ниже.

     

    В дальнейшем МКЭ обеспечивает нахождение численных значений фазовых переменных , характеризующих состояние объекта (в нашем случае напряжений поля сил и деформаций), в вершинах таких треугольников, называемых узлами (nodes).

    Для идентификации узлов и КЭ их помечают номерами (числами из натурального ряда 1...). Задача ручного разбиения двумерного (а тем более трехмерного) объекта на КЭ является трудоемкой и нетривиальной, поэтому в реальных промышленных системах анализа, реализующих МКЭ, существует, как правило, несколько автоматических процедур покрытия исследуемой области сеткой КЭ. Однако сгенерированная любым способом (автоматически/вручную/комбинированно) сетка КЭ нуждается в проверке некоторым набором правил ее корректности, обеспечивающих минимальность вычислительных затрат и точность получаемых результатов.

    Требуется, например, чтобы форма треугольных КЭ как можно теснее приближалась к равносторонней (это влияет на точность получаемого решения). Для уменьшения вычислительных затрат желательно иметь минимальную разность идентификаторов вершин для каждого КЭ.

    В задачах исследования поведения механических объектов под воздействием внешних факторов с каждым КЭ связан набор свойств материала, покрываемого КЭ, в состав которого входят, например, плотность (density) среды, модуль Юнга (elastic module), коэффициент Пуассона (Poisson's coefficient), прочность (strength) и др.

    Задачей МКЭ является исследование поведения объектов (в нашем примере механических) при различных граничных условиях (воздействиях внешней среды), в состав которых входят:

    • произвольно направленная сила;

    • произвольно направленный момент сил;

    • ?заделка?, жестко фиксирующая положение узла сетки по линейным координатам и углу вращения;

    • шарнир, позволяющий узлу свободно ?вращаться? относительно его фиксируемого положения по линейным координатам;

    • ?каток?, дающий узлу возможность свободно перемещаться по оси x или y.

    Описанная выше информация является предметом хранения и манипулирования в учебной БД, используемой в данном пособии. Основу БД составляют четыре таблицы:

    1. таблица ?nodes?, содержащая информацию об узлах КЭ-сетки (идентификатор, x- и y-координаты);

    2. таблица ?elements?, содержащая информацию обо всех КЭ, составляющих сетку (номер КЭ, идентификаторы трех вершин, наименование материала);

    3. таблица ?materials?, содержащая информацию о свойствах различных конструкционных материалов (наименование, плотность, модуль Юнга, коэффициент Пуассона, прочность);

    4. таблица ?loadings?, содержащая информацию о граничных условиях решаемой задачи (вид условия, его ?направление?, номер узла приложения, числовое значение).

    Типы данных языка SQL

    Типы данных, используемые в языке SQL для хранения информации в столбцах таблиц БД, весьма разнообразны. К сожалению, производители конкретных реляционных СУБД  считают своим долгом ?улучшить? множество типов данных, регламентируемых стандартом,  реализуя свои собственные версии и расширения.
    Автором учебного пособия в качестве базовых  предлагается считать следующие типы данных:

    • INT[(len)] - целое число длиной 4 байта, представляемое при выводе максимально len цифрами;

    • SMALLINT[(len)] - целое число длиной 2 байта, представляемое при выводе максимально len цифрами;

    • FLOAT[(len,dec)] - действительное число, представляемое при выводе максимально len символами с dec цифрами после десятичной точки;

    • CHAR(size) - строка символов фиксированной длины размером size символов;

    • VARCHAR(size) - строка символов переменной длины максимальным размером до size символов;

    • BLOB (Binary Large OBject) - массив произвольных (двоичных) байтов (максимальный размер зависит от реализации, обычно это 65535 байт); этот тип данных может использоваться, например, для хранения изображений;

    • DATE - астрономическая дата;

    • TIME - астрономическое время.

    Символьные константы (типа CHAR и VARCHAR) записываются как последовательности символов, заключенные в одиночные апострофы, например ?brass? (латунь).
    Десятичные константы (типа FLOAT) могут записываться в ?научной? нотации как последовательности следующих компонент:

    • знак числа;

    • десятичное число с точкой;

    • символ ?е?;

    • знак (?+? или ?-?) показателя степени;

    • целое число, играющее роль показателя степени числа 10.

    Например, десятичное число -0,123 может быть записано как -12.3е-2.

    Отличие типов данных CHAR и VARCHAR заключается в том, что для хранения в таблице строк символов типа CHAR используется точно size байт (хотя содержание хранимых строк может быть значительно короче), в то время как для строк типа VARCHAR незанятые символами строк (?пустые?) байты в таблице не хранятся.
    Подчеркнем, что величины len и dec (в отличие от size) не влияют на размер хранения данных в таблице, а только форматируют вывод данных из таблицы.

    Примечание. Тип данных BLOB поддерживается непосредственно не всеми СУБД, однако каждая из них предлагает его аналог (например, BINARY или IMAGE).

    Рекомендация. Разрабатывая мобильное приложение (рассчитанное на работу в среде различных СУБД), старайтесь без необходимости избегать использования необязательных возможностей в описании типов данных.
     

    Манипулирование таблицами

    Для создания, изменения и удаления таблиц в SQL БД используются операторы CREATE TABLE, ALTER TABLE и DROP TABLE.

    Создание таблицы

    Создание таблицы в БД реализуется оператором CREATE TABLE, имеющим следующий синтаксис
      1   2   3   4


    написать администратору сайта