Тема 5. Средства поддержания интерфейса с различными категориями пользователей Лекция 10. Основы языка SQL Базы данных
План лекции 1.История возникновения и развития языка SQL. Стандарты и расширения 2.Структура языка SQL 3.Структура команд SQL 4.Основные типы данных SQL 5.Основные компоненты базы данных
Вопрос 1 История возникновения и развития языка SQL. Стандарты и расширения
Название SQL (Structured Query Language) – стандартный язык запросов для работы с реляционными базами данных Прототипом SQL является язык SEQUEL (Structured English Query Language), разработанный компанией IBM в середине 70-х в рамках проекта System R
Стандартизация (1/2) SQL/89 – первый стандарт. Поддерживается чистая реляционная модель. Из-за столкновения интересов производителей оставлен незавершенным, многие аспекты отнесены к разряду "определяемых при реализации" SQL/92 – устранены основные недостатки SQL/89. Существенно более полный и точный. Изменения в основном количественные (размер порядка 600 стр., в 6 раз длиннее предшественника)
Стандартизация (2/2) SQL/99 – качественные изменения. Добавлены объектные возможности, введены спецификации событий и триггеров SQL/2003 – качественные изменения. Более тесная интеграция с Java, интеграция SQL и XML SQL/2008 – функциональность работы с XML-данными значительно расширена. Появилась возможность совместно использовать в запросах SQL и XQuery
Диалекты Производители, как правило, поддерживают собственные диалекты SQL ("надмножество подмножества стандарта SQL") Среди известных процедурных расширений можно упомянуть PL/SQL(Oracle), Transact- SQL(Microsoft SQL Server), ESQL/C (Informix, PostgreSQL)
Вопрос 2 Структура языка SQL
Основные подмножества SQL (1/2) АббревиатураОписаниеДействияОсновные команды DDL(Data Definition Language) язык определения данных Создание, изменение и удаление объектов БД CREATE, ALTER, DROP DML(Data Manipulation Language) язык манипулирования данными Вставка, изменение и удаление строк таблицы INSERT, UPDATE, DELETE DQL(Data Query Language) язык запросов Выборка строк таблицы SELECT
Основные подмножества SQL (2/2) АббревиатураОписаниеДействияОсновные команды DCL(Data Control Language) язык управления данными Управление доступом GRANT, REVOKE TPL(Transaction Processing Language) язык обработки транзакций Фиксация или откат транзакции, сохранение промежуточной точки COMMIT, ROLLBACK, SAVEPOINT CCL(Cursor Control Language) язык управления курсорами Выборка данных при помощи курсора, его открытие и закрытие OPEN, CLOSE, FETCH
Вопрос 3 Структура команд SQL
Анатомия команд Команда SQL всегда начинается с действия – слова или группы слов, описывающих выполняемую операцию Кроме того, команда обычно содержит одну или несколько секций (разделов), уточняющих ее смысл
Примеры команд SELECT Name FROM Student INSERT INTO Student VALUES (1, Иванов, 7333) DELETE FROM Student
Отличие от процедурных языков В отличие от команд обычных языков программирования, команды SQL указывают СУБД какие данные необходимо найти, но не сообщают, как это должно происходить Хорошо написанный запрос SQL читается почти также легко, как и обычное предложение (на английском языке)
Типы лексем Ключевое слово (зарезервированные слова: названия команд, функций и т.п.) Идентификатор (имена таблиц, столбцов и др. объектов БД) Константа (данные, интерпретируемые буквально) Специальный символ (скобки и т.п.)
Символы-разделители Пробел Символ табуляции Разрыв строки Из последнего следует, что команда не обязательно должна располагаться на одной строке
Комментарии Однострочные комментарии начинаются с двух дефисов -- Многострочные – начинаются с последовательности /* и завершаются последовательностью */
Идентификаторы Идентификаторы могут начинаться с любой буквы английского алфавита или с символа подчеркивания, далее следует любое сочетание букв, цифр и символов подчеркивания Регистр ввода незащищенных идентификаторов не играет роли – в соответствии со стандартом SQL/92 при выполнении команды они должны преобразовываться к верхнему регистру
Ограничения Идентификаторы не могут содержать символов-разделителей Идентификаторы не могут начинаться с цифры Идентификаторы не должны совпадать с ключевыми словами
Примеры Правильные: Group7333 g7334 group_7334 Неправильные: 7333 Table Группа 7334
Защищенные идентификаторы Идентификаторы, заключенные в двойные кавычки, называют защищенные идентификаторами. Например: "Группа 7334" Использование защищенных идентификаторов позволяет преодолеть рассмотренные ограничения Защищенные идентификаторы интерпретируются буквально – т.е. являются регистрозависимыми
Числовые константы Числовые константы (целочисленные и вещественные) задаются в SQL так же, как и большинстве обычных языков программирования: 12 –
Строковые константы Строковые константы представляют собой произвольную совокупность символов, заключенную апострофы (в одинарные кавычки) Если в самой константе встречается апостроф, при ее определении следует его удвоить В MS SQL Server при задании строковых констант допустимо использование двойных кавычек Если строковая константа представлена в кодировке Unicode, то ей должна предшествовать буква N
Примеры 'SQL/92' 'O''Reilly' N'Иванов' "SQL Server"
Вопрос 4 Основные типы данных SQL
Числовые типы точные целочисленные tinyint1-байтовое целое без знакаMS SQL smallint2-байтовое целое со знакомSQL/89 integer, int4-байтовое целое со знакомSQL/92 bigint8-байтовое целое со знакомMS SQL точные вещественные numeric(p,s), decimal(p,s) Число из p цифр, содержащее s цифр в дробной части SQL/99 вещественные с плавающей точкой real4-байтовоеSQL/89 double precision, float 8-байтовоеSQL/89
Символьные (однобайтовые) character(n), char(n)Строка однобайтовых символов фиксированной длины n SQL/89 character varying(n), varchar(n) Строка однобайтовых символов переменной длины максимальным размером n SQL/92 textСтрока однобайтовых символов до 2 Гб (данные хранятся на отдельных страницах по 8 Кб) MS SQL
Символьные (Unicode) national character(n), national char(n), nchar(n) Строка Unicode символов фиксированной длины n SQL/92 national character varying(n), national char varying(n), nvarchar(n) Строка Unicode символов переменной длины максимальным размером n SQL/92 ntextСтрока Unicode символов до 2 Гб (данные хранятся на отдельных страницах по 8 Кб) MS SQL
Двоичные типы данных binary(n)Блок двоичных данных фиксированной длины n от 1 до 8000 байт MS SQL varbinary(n)Блок двоичных данных переменной длины максимальным размером n от 1 до 8000 байт MS SQL imageБлок двоичных данных до 2 Гб (данные хранятся на отдельных страницах по 8 Кб) MS SQL
Дата и время dateкалендарная дата (день, месяц и год) SQL/92 timeВремя в течение сутокSQL/92 timestampДата и времяSQL/92 datetimeДата и время с 1 янв г. по 31 дек г. точность 3.33 мс 8 байт MS SQL smalldatetimeДата и время с 1 янв г. до 6 июня 2079 г. точность 1 мин. 4 байта MS SQL
Вопрос 5 Основные компоненты базы данных
Данные Таблица (TABLE) является базовой структурой реляционной модели Индекс (INDEX) это объект базы данных, создаваемый для повышения производительности выборки данных Представление (VIEW) это поименованная, динамически поддерживаемая сервером выборка из одной или нескольких таблиц
Действия Процедура (PROCEDURE) это поименованный, структурированный набор переменных, операторов SQL и языка процедурных расширений, предназначенный для решения конкретной задачи Триггер (TRIGGER) это хранимая процедура, которая запускается (автоматически выполняется) тогда, когда происходит связанное с триггером событие. Обычно события связаны с выполнением операторов INSERT, UPDATE или DELETE в некоторой таблице
Доступ Пользователь (USER) объект, обладающий возможностью создавать и использовать другие объекты, а также запрашивать выполнение функций сервера Роль (ROLE) именованная совокупность привилегий, которые могут быть предоставлены пользователям или другим ролям
Литература 1.Мамаев Е.В. Microsoft SQL Server СПб.:БХВ-Петербург, Тихомиров Ю. В. Microsoft SQL Server 7.0 М.:БХВ, 1999