Язык SQL (использование для описания и манипулирования данными)
SQL (ˈɛsˈkjuˈɛl; англ. structured query language — «язык структурированных запросов») — язык программирования, применяемый для создания, модификации и управления данными в реляционной базе данных, управляемой соответствующей системой управления базами данных
Вопросы совместимости[править | править вики-текст]
По традиции, как и со многими стандартами в IT-индустрии, с языком SQL возникла проблема: на каком-то этапе многие производители использующего SQL программного обеспечения решили, что функциональность в текущей (на тот момент времени) версии стандарта недостаточна, и её желательно расширить. В результате у разных производителей систем управления базами данных (СУБД) в ходу разные диалекты SQL, в общем случае между собой несовместимые.
До 1996 года вопросами соответствия коммерческих реализаций SQL стандарту занимался в основном Национальный институт стандартов и технологий (NIST), который и устанавливал уровень соответствия стандарту. Поздне́е подразделение, занимавшееся СУБД, было расформировано, и на текущий момент все усилия по проверке СУБД на соответствие стандарту ложатся на её производителя.
Впервые понятие «уровня соответствия» было предложено в стандарте SQL-92. А именно, ANSI и NIST определяли четыре уровня соответствия реализации этому стандарту:
- Entry (базовый)
- Transitional (переходный) — проверку на соответствие этому уровню проводил только NIST
- Intermediate (промежуточный)
- Full (полный)
Легко можно понять, что каждый последующий уровень соответствия заведомо подразумевал соответствие предыдущему уровню. Далее, согласно данной «лесенке» стандартов любая СУБД, которая соответствовала уровню Entry, могла заявлять себя как «SQL-92 compliant» («совместимая с SQL-92»), хотя на самом деле переносимость и соответствие стандарту ограничивалось набором возможностей, входящих в этот уровень.
Положение изменилось с введением стандарта SQL:1999. Отныне стандарт приобрёл модульную структуру — основная часть стандарта была вынесена в раздел «SQL/Foundation», все остальные были выведены в отдельные модули. Соответственно, остался только один уровень совместимости — Core, что означало поддержку этой основной части. Поддержка остальных возможностей оставлена на усмотрение производителей СУБД. Аналогичное положение имело место и с последующими версиями стандарта.
Введение[править | править вики-текст]
SQL является прежде всего информационно-логическим языком, предназначенным для описания, изменения и извлечения данных, хранимых в реляционных базах данных. SQL можно назвать языком программирования, при этом он не является тьюринг-полным, но вместе с тем стандарт языка спецификацией SQL/PSM предусматривает возможность его процедурных расширений.
Изначально SQL был основным способом работы пользователя с базой данных и позволял выполнять следующий набор операций:
- создание в базе данных новой таблицы;
- добавление в таблицу новых записей;
- изменение записей;
- удаление записей;
- выборка записей из одной или нескольких таблиц (в соответствии с заданным условием);
- изменение структур таблиц.
Со временем SQL усложнился — обогатился новыми конструкциями, обеспечил возможность описания и управления новыми хранимыми объектами (например, индексы, представления, триггеры и хранимые процедуры) — и стал приобретать черты, свойственные языкам программирования.
При всех своих изменениях SQL остаётся единственным механизмом связи между прикладным программным обеспечением и базой данных. В то же время современные СУБД, а также информационные системы, использующие СУБД, предоставляют пользователю развитые средства визуального построения запросов.
Описание[править | править вики-текст]
Язык SQL представляет собой совокупность
- операторов
- инструкций
- вычисляемых функций
Операторы[править | править вики-текст]
Согласно общепринятому стилю программирования, операторы (и другие зарезервированные слова) в SQL обычно рекомендуется писать прописными буквами.[6]
Операторы SQL делятся на:
- операторы определения данных (Data Definition Language, DDL):
- CREATE создает объект БД (саму базу, таблицу, представление, пользователя и т. д.),
- ALTER изменяет объект,
- DROP удаляет объект;
- операторы манипуляции данными (Data Manipulation Language, DML):
- SELECT выбирает данные, удовлетворяющие заданным условиям,
- INSERT добавляет новые данные,
- UPDATE изменяет существующие данные,
- DELETE удаляет данные;
- операторы определения доступа к данным (Data Control Language, DCL):
- GRANT предоставляет пользователю (группе) разрешения на определенные операции с объектом,
- REVOKE отзывает ранее выданные разрешения,
- DENY задает запрет, имеющий приоритет над разрешением;
- операторы управления транзакциями (Transaction Control Language, TCL):
- COMMIT применяет транзакцию,
- ROLLBACK откатывает все изменения, сделанные в контексте текущей транзакции,
- SAVEPOINT делит транзакцию на более мелкие участки.
Преимущества и недостатки[править | править вики-текст]
Преимущества[править | править вики-текст]
Независимость от конкретной СУБД
Несмотря на наличие диалектов и различий в синтаксисе, в большинстве своём тексты SQL-запросов, содержащие DDL и DML, могут быть достаточно легко перенесены из одной СУБД в другую. Существуют системы, разработчики которых изначально ориентировались на применение по меньшей мере нескольких СУБД (например: система электронного документооборота Documentum может работать как с Oracle Database, так и с Microsoft SQL Server и DB2). Естественно, что при применении некоторых специфичных для реализации возможностей такой переносимости добиться уже очень трудно.
Наличие стандартов
Наличие стандартов и набора тестов для выявления совместимости и соответствия конкретной реализации SQL общепринятому стандарту только способствует «стабилизации» языка. Правда, стоит обратить внимание, что сам по себе стандарт местами чересчур формализован и раздут в размерах (например, базовая часть стандарта SQL:2003 состоит из более чем 1300 страниц текста).
Декларативность
С помощью SQL программист описывает только то, какие данные нужно извлечь или модифицировать. То, каким образом это сделать, решает СУБД непосредственно при обработке SQL-запроса. Однако не стоит думать, что это полностью универсальный принцип — программист описывает набор данных для выборки или модификации, однако ему при этом полезно представлять, как СУБД будет разбирать текст его запроса. Чем сложнее сконструирован запрос, тем больше он допускает вариантов написания, различных по скорости выполнения, но одинаковых по итоговому набору данных.
Недостатки[править | править вики-текст]
Несоответствие реляционной модели данных
Создатели реляционной модели данных Эдгар Кодд, Кристофер Дейт и их сторонники указывают на то, что SQL не является истинно реляционным языком. В частности, они указывают на следующие дефекты SQL с точки зрения реляционной теории[7]:
- SQL разрешает в таблицах строки-дубликаты, что в рамках реляционной модели данных невозможно и недопустимо;
- SQL поддерживает неопределённые значения (NULL) и многозначную логику;
- SQL использует порядок колонок и ссылки на колонки по номерам;
- SQL разрешает колонки без имени и дублирующиеся имена колонок.
В опубликованном Кристофером Дейтом и Хью Дарвеном Третьем манифесте[8] они излагают принципы СУБД следующего поколения и предлагают язык Tutorial D, который является подлинно реляционным.
Сложность
Хотя SQL и задумывался как средство работы конечного пользователя, в конце концов он стал настолько сложным, что превратился в инструмент программиста.
Отступления от стандартов
Несмотря на наличие международного стандарта ANSI SQL-92, многие разработчики СУБД вносят изменения в язык SQL, применяемый в разрабатываемой СУБД, тем самым отступая от стандарта. Таким образом появляются специфичные для каждой конкретной СУБД диалекты языка SQL.
Сложность работы с иерархическими структурами
Ранее диалекты SQL большинства СУБД не предлагали способа манипуляции древовидными структурами. Некоторые поставщики СУБД предлагали свои решения (например, в Oracle Database используется выражение CONNECT BY). В настоящее время в ANSI стандартизована рекурсивная конструкция WITH из диалекта SQL DB2. В Microsoft SQL Server рекурсивные запросы (Recursive Common Table Expressions) появились лишь в версии 2005.
Раздел-5 Управления жизненным циклом информационной системы – в другом файле
1. Основные компоненты технологии проектирования информационной системы
2. Состав и структура операционной системы
3. Обеспечивающие подсистемы информационных систем
4. Понятие жизненного цикла информационной системы
5. Стадии жизненного цикла информационной системы
6. Процессы жизненного цикла информационной системы
7. Модели жизненного цикла информационной системы
8. Основные элементы пользовательского интерфейса
9. Классификация структурных методологий
10. SADT - технология структурного анализа и проектирования
11. Диаграммы потоков данных
12. Системы автоматизации проектирования ИС
13. Функционально-ориентированный и объектно-ориентированный подходы, проектирования
14. Содержание RAD-технологии прототипного создания приложений
15. Методология совместного доступа к базам и программам в сложных информационных системах
Раздел -6 Моделирование и анализ бизнес-процессов
1. Функциональный и предметный подходы к управлению организацией
2. Теоретические основы управления производством
3. Бизнес-процесс и его компоненты
4. Задание процесса как объекта управления, его основные элементы и окружение
5. Ресурсное обеспечение на различных уровнях
6. Основные показатели результативности
7. Мониторинг бизнес-процесса
8. Инструментальные средства для моделирования бизнес-процесса
9. Требования, предъявляемые к инструментальным системам для моделирования бизнеса
10. Сравнительный анализ инструментальных средств
11. Методы анализа бизнес-процессов (логический, результатов имитационного моделирования, ресурсного окружения, рисков процесса, результатов аттестации и аудита)
12. Методы статистической обработки результатов измерений параметров и характеристик процесса
Раздел-7 Архитектура корпоративных информационных систем
1. Классификация информационных систем
2. Информационные системы в области производственного менеджмента, экономики и финансов
3. Концепция интегрированной системы управления производством
4. Системы электронного документооборота
5. Правовые информационные системы
6. Структура корпоративных информационных систем, основные функции и задачи
7. ERP – ИС управления ресурсами предприятия
8. CRM-ИС – управления взаимодействием с клиентами
9. BI ИС – сбора, анализа и представления бизнес-информации
10. ЕСМ-ИС – управления информацией и документами на предприятии
11. HRM-ИС управления персоналом
12. SCM-ИС – управления цепочками поставок
Раздел-8 Электронный бизнес – в другом файле
1. Мировые информационные ресурсы: определение, классификация и характеристика основных структур (баз данных, сетей) по различным признакам
2. Информационные рынки
3. Основные правовые акты, определяющие порядок формирования и использования информационных ресурсов
4. Характеристика мирового рынка информационных услуг
5. Крупнейшие мировые информационные агентства
6. Государственные информационные ресурсы
7. Экономика информационных сетей
8. Эффективность поиска деловой информации в Интернете
9. Интернет-экономика – основные понятия
10. Оценка потребления: тарифы и цены в интернет-экономике, методы оценки стоимости коммуникаций
11. Сетевая коммерция: услуги общественного и частного потребления, электронные службы.
12. Лицензирование и страхование распределенного обслуживания
13. Основы интернет-маркетинга
Раздел 9 Информационный менеджмент
1. Понятие и сущность информационного менеджмента
2. Роль IT-менеджмента в бизнесе компании
3. Заказные, уникальные и тиражируемые информационные системы
4. Проблемы адаптации и адаптируемые информационные системы
5. Способы приобретения ИС: покупка готовой ИС, разработка ИС, покупка и доработка ИС, аутсорсинг.
6. Преимущества и недостатки самостоятельной разработки ИС и разработки специализированной фирмой
7. Стратегическое планирование ИС: цели, ограничения, технологии, проблемы.
8. Анализ бизнеса и стратегий его развития (as is и as is to be).
9. Подхода к организации работ по автоматизации управления на основе ИС: хаотичная, по участкам, по направлениям, полная и комплексная автоматизация
Раздел 10 Финансовая экспертиза информационных проектов
1. Комплекс финансовых решений в компании
2. Анализ эффективности информационных проектов фирмы
3. Выбор оптимального бюджета инвестиций
4. Основные методы экспертизы информационных проектов
5. Формирование финансовой модели проекта
6. Бизнес-планирование в системе финансовой экспертизы
7. Оценка влияния финансовых результатов реализации информационного проекта на стоимостью компаний всех форм собственности и организационно-правовых форм
Литература
1. Гиляревский Р.С. Основы информатики; Курс лекций – М.: Экзамен, 2003
2. Когаловский М.Р. Перспективные технологии информационных систем, М.; ДМК, Пресс 2003
3. Пятибратов А.П., Гудыно Л.П., Кириченко А.А./ Вычислительные системы, сети и телекоммуникации/ М., Финансы и статистика, 2008
4. В.Л.Бройдо, О.П. Ильина/ Архитектура ЭВМ и систем . Учебник для вузов
5. Воеводин В.В., Воеводин Вл.В./ Параллельные вычисления/ СПБ.; БХВ – Петербург, 2003
6. Б.Л. Бройдо/ Вычислительные системы, сети и телекоммуникации/ СПб.; Питер, 2006/ 716с.: ил.
7. Конноли Т., Бегг К., Базы данных: проектирование, реализация, сопровождение. М.: Издательский дом “Вильямс”, 2003.
8. Дейт К.Дж. Введение в системы баз данных М.; Вильямс, 2008
9. Информационные системы и технологии в экономике/ И.А. Брусакова. –М: Финансы и статистика, 2007
10. Информационные системы и технологии в экономике и управлении: учебник/ под редакцией профессора В.В. Трофимова – М.: Высшее образование, 2009
11. Информационные системы в экономике: учебное пособие/ по ред. Проф. А.Н. Романова – М.; Вузовский учебник 2010.
12. Информационные технологии управления / Б.В. Черников – М.: ИД “ФОРУМ”: ИНФРА-М, 2008
13. Информационные системы в экономике: учебник/ под редакцией Г.А. Титоренко. – М.: Юнити-Дана,2008
14. Разработка и эксплуатация автоматизированных и информационных систем: Учебник/ Д.Э. Фуфаев, Э.В. Фуфаев. – М.: Академия, 2010.
15. Информационные системы: Учебник/ Г.Н. Федорова – М. Академия 2010
16. Автоматизированные информационные системы: Учебник/ К.Н. Мезенцев – М, Академия 2010
17. Управление информацией и знаниями в компании: Учебник/ С.Н. Селетков, Н.В. Днепровская – М.: ИНФРА-М, 2011
18. Мировые информационные ресурсы. Интернет: практикум/под общ.ред. П.В. Акинина – М.: КноРус, 2008
19. В.Н.Гусятников, А.И. Безруков М., стандартизация и разработка программных систем. Финансы и инфра-М, 2010
20. Девянин П.Н. Модели безопасности компьютерных систем. Управление доступом и информационными потоками. Учебное пособие для вузов. Издательство “Горячая линия-Телеком”, 2010
21. Г.Н. Смирнова, А.А. Сорокин, Ю.Ф. Тельнов;, под ред. Ю.Ф. Тельнова, Проектирование экономических информационных систем: Учебник. – М.: Финансы и статистика, 2005, 512 страниц
22. Г.Н. Каляков, Моделирование , анализ, реорганизация и автоматизация бизнес-процессов, М, Финансы и статистика 2006
23. Ипатова Э.Р., Ипатов Ю.В., Методология и технологии системного проектирования информационных систем – М. МПСИ, 2008
24. Питер Пин-Шэн Чен. “Модель “сущность-связь” – шаг к единому представлению данных //СУБД №3 1995
25. ГОСТ 34.601-90 Информационные технологии. Комплекс стандартов на автоматизированные системы. Автоматизированные системы. Стадии создания
26. ГОСТ 34.602-89 Информационные технологии. Комплекс стандартов на автоматизированные системы. Техническое задание на создание автоматизированной системы
27. ГОСТ Р ИСО/МЭК 12207-99 Информационная технология. Процессы жизненного циклов программных средств