Учебный курс sql: Обучающие ресурсы по SQL — SQL Server

Содержание

Новые учебные курсы от Postgres Professional «Язык SQL» и «Основы технологий баз данных» стартуют 10 сентября : Компания Postgres Professional

С 10 сентября и до 19 октября 2018 года в Московском Государственном Университете и Высшей Школе Экономики будут проведены два новых учебных курса при поддержке компании Postgres Professional — «Язык SQL» и «Основы технологий баз данных». Курсы в первую очередь адресованы студентам упомянутых учебных заведений, которые могут посещать занятия обоих курсов соверешенно свободно — в оставшееся от основных занятий время, или вместо них. Для слушателей желающих расширить и поднять уровень собственных знаний в области применения и разработки баз данных, но не имеющих пропуска в МГУ или ВШЭ, возможно посещение курса «Основы технологий баз данных» в МГУ вечером по средам. Им необходимо заранее подать заявку на участие в учебных курсах, чтобы пропуск был изготовлен.

Заявиться на курс «Основы технологий баз данных» можно написав на электронный адрес:

и указав в письме фамилию, имя и отчество полностью.

Теперь о самих курсах, их содержании, времени и месте проведения.

Учебный курс «Язык SQL»

На ФКН ВШЭ и ВМК МГУ с 10 сентября по 19 октября будет проводиться чтение нового курса «Язык SQL», ориентированного на СУБД PostgreSQL. Слушатели без предварительной подготовки смогут разобраться что такое системы баз данных и научиться с ними работать. Курс начинается с разработки простых запросов на языке SQL, а в конце будут рассмотрены такие конструкции как общие табличные выражения, агрегатные и оконные функции. Учебные примеры используют демонстрационную базу данных «Авиаперевозки», содержимое которой максимально приближено к реальным данным.

Курс создан по инициативе компании Postgres Professional — вендора СУБД PostgreSQL в России. Автор и преподаватель курса, доцент СИбГУ Е.П. Моргунов, является также автором используемого в курсе учебного пособия «Язык SQL. Базовый курс». Овладев материалом курса, студент получит практические знания, востребованные IT-рынком в области СУБД.

Курс состоит из 36 часов лекционных и практических занятий.

 

Расписание лекций на ФКН ВШЭ:

День неделиВремяПродолжительностьПримечание
Понедельник16:404 часа 30 минут (три пары) 
Вторник18:101 час 30 минут (одна пара)повторение 2-ой пары понедельника
Пятница16:401 час 30 минут (одна пара)повторение 3-ой пары понедельника

Расписание лекций на ВМК МГУ:

День неделиВремяПродолжительность
Вторник12:50 — 14:251 час 30 минут (одна пара)
Среда14:35 — 16:101 час 30 минут (одна пара)
Четверг16:20 — 18:001 час 30 минут (одна пара)

Учебный курс «Основы технологий баз данных»

(курс читает профессор СПбГУ Б. А. Новиков)

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

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

Курс читается по одноименному учебному пособию, разработанному коллективом автором СПбГУ при участии компании Постгрес Профессиональный. Материал первой части пособия составляет основу для данного базового курса и содержит краткий обзор требований и критериев оценки СУБД и баз данных, теоретическую реляционную модель данных, основные конструкции языка запросов SQL, обработку транзакций, организацию доступа к базе данных PostgreSQL, вопросы проектирования приложений и основные расширения, доступные в системе PostgreSQL.

Курс читается на ВМК МГУ в аудитория П-13 с 12 сентября по средам с 17:00 до 20:00.

Курс состоит из 24 часов лекционных занятий и 8 часов практических занятий.

Расписание обоих курсов нагляно представлено на схеме ниже. Картинка кликабельна. Желающим посещать крурсы рекомендуется её скачать на свой компьютер/телефон.

Microsoft SQL Server 2008. Реализация и обслуживание. Учебный курс Microsoft

Год публикации: 

2011

ISBN: 

978-5-7502-0402-1

Формат: 

70х100/16

Переплет: 

Твердый

Количество страниц: 

576

Аннотация

Серия «Учебный курс Microsoft»

Данная книга — подробное руководство по установке и управлению SQL Server в корпоративной среде.

В ней описывается, как выбрать подходящую редакцию и как устанавливать и конфигурировать экземпляры SQL Server; приводятся сведения о конфигурировании, управлении, резервном копировании и восстановлении баз данных; содержится детальная информация о создании секционированных таблиц, индексов и индексированных представлений, а также о конфигурировании служб и компонентов. Кроме того, здесь рассказывается о том, как обеспечить безопасность SQL Server и как проектировать и развертывать решения высокой доступности, в том числе, управлять заданиями, предупреждениями и операторами Агента SQL Server, а также устранять неполадки служб, параллелизма и заданий. Этот учебный курс предназначен администраторам баз данных и всем, кто хочет получить исчерпывающие знания в области развертывания и обслуживания Microsoft SQL Server 2008. Помимо теоретического материала курс содержит практикумы, упражнения и контрольные вопросы для самопроверки. Он поможет вам самостоятельно подготовиться к экзамену по программе сертификации MCTS (Microsoft Certified Technology Specialist) № 70-432: Microsoft SQL Server 2008 Implementation and Maintenance.
Книга состоит из 17 глав, содержит множество иллюстраций и примеров из практики. На прилагаемом компакт-диске находятся электронная версия книги (на англ. языке), вопросы пробного экзамена, глоссарий и другие справочные материалы.

Книга «Microsoft SQL Server 2012.Создание запросов. Учебный курс Microsoft (+ 1 CD)» Бен-Ган И, Сарка Д, Талмейдж Р

Microsoft SQL Server 2012.Создание запросов. Учебный курс Microsoft (+ 1 CD)

Официальный учебный курс Microsoft рассматривает создание запросов в SQL Server 2012. Описаны создание объектов баз данных с помощью языка T-SQL, реализация типов данных, формирование вложенных и статистических запросов, запрос и управление XML-данными, модификация данных, устранение неполадок и оптимизация. Книга является ценным справочником и позволяет самостоятельно подготовиться к сдаче экзамена 70-461 для получения сертификата MCSA: SQL Server 2012. На прилагаемом компакт-диске находится оригинальная английская версия книги, вопросы пробного экзамена и другие справочные материалы на английском языке.

Поделись с друзьями:

Издательство:
Русская редакция
Год издания:
2014
Место издания:
Москва
Язык текста:
русский
Язык оригинала:
английский
Тип обложки:
Мягкая обложка
Формат:
70х100 1/16
Размеры в мм (ДхШхВ):
240×170
Вес:
910 гр.
Страниц:
720
Тираж:
1000 экз.
Код товара:
717392
Артикул:
70913
ISBN:
978-5-7502-0432-8
В продаже с:
20. 12.2013
Аннотация к книге «Microsoft SQL Server 2012.Создание запросов. Учебный курс Microsoft (+ 1 CD)» Бен-Ган И., Сарка Д., Талмейдж Р.:
Официальный учебный курс Microsoft рассматривает создание запросов в SQL Server 2012. Описаны создание объектов баз данных с помощью языка T-SQL, реализация типов данных, формирование вложенных и статистических запросов, запрос и управление XML-данными, модификация данных, устранение неполадок и оптимизация.
Книга является ценным справочником и позволяет самостоятельно подготовиться к сдаче экзамена 70-461 для получения сертификата MCSA: SQL Server 2012. На прилагаемом компакт-диске находится оригинальная английская версия книги, вопросы пробного экзамена и другие справочные материалы на английском языке. Читать дальше…

ORA-03.

Основы PL/SQL — курсы в Санкт-Петербурге

1. Введение

  • Знакомство с инструментами и средой разработки

Лабораторная работа: Знакомство со средой разработки SQL Developer

2. Введение в PL/SQL

  • Знакомство с синтаксисом языка
  • Анонимные блоки

Лабораторная работа: Создание и выполнение простого анонимного блока. Генерация вывода из блока. Определение правильности написания анонимных блоков

3. Объявление переменных в PL/SQL

  • Типы данных
  • Работа с переменными
  • Связанные переменные

Лабораторная работа: Определение правильных идентификаторов и инициализаций. Объявление переменных в анонимном блоке. Использование атрибута %TYPE. Объявление и печать связанных переменных

4. Написание исполняемых блоков

  • Синтаксис блоков
  • Встроенные функции SQL в PL/SQL

Лабораторная работа: Определение области видимости переменных. Написание и тестирование PL/SQL блоков. Использование операторов и функций в анонимном блоке

5. Использование SQL в PL/SQL блоках

  • Операторы SQL в PL/SQL
  • Введение в курсоры

Лабораторная работа: Использование различных операторов SQL в PL/SQL

6. Написание управляющих структур

  • Условное управление
  • Циклы

Лабораторная работа: Использование условных операторов и циклов в написании блоков PL/SQL

7. Работа с составными типами данных

  • Записи в PL/SQL
  • Ассоциативные таблицы

Лабораторная работа: Использование записей и ассоциативных таблиц для обработки данных

8. Использование явных курсоров

  • Работа с явным курсором
  • Курсорные циклы

Лабораторная работа: Использование явных курсоров

9. Обработка исключений

  • Определение и обработка различных исключительных ситуаций

Лабораторная работа: Обработка именованных исключений. Создание и выполнение пользовательских исключений

10. Знакомство с хранимыми процедурами и функциями

  • Хранимые процедуры
  • Функции

Лабораторная работа: Создание и модификация простых процедур и функций

11. Создание пакетов

  • Введение в пакеты

Лабораторная работа: Создание простых пакетов

12. Знакомство с триггерами

  • Виды триггеров
  • Управление триггерами

Лабораторная работа: Создание простых пакетов

Новые учебные курсы от Postgres Professional «Язык SQL» и «Основы технологий баз данных» стартуют 10 сентября

С 10 сентября и до 19 октября 2018 года в Московском Государственном Университете и Высшей Школе Экономики будут проведены два новых учебных курса при поддержке компании Postgres Professional — «Язык SQL» и «Основы технологий баз данных». Курсы в первую очередь адресованы студентам упомянутых учебных заведений, которые могут посещать занятия обоих курсов соверешенно свободно — в оставшееся от основных занятий время, или вместо них. Для слушателей желающих расширить и поднять уровень собственных знаний в области применения и разработки и баз данных, но не имеющих пропуска в МГУ или ВШЭ, возможно посещение курса «Основы технологий баз данных» в МГУ вечером по средам. Им необходимо заранее подать заявку на участие в учебных курсах, чтобы пропуск был изготовлен.

Заявиться на курс «Основы технологий баз данных» можно написав на электронный адрес:

и указав в письме фамилию, имя и отчество полностью.

Теперь о самих курсах, их содержании, времени и месте проведения.

Учебный курс «Язык SQL»

На ФКН ВШЭ и ВМК МГУ с 10 сентября по 19 октября будет проводиться чтение нового курса «Язык SQL», ориентированного на СУБД PostgreSQL. Слушатели без предварительной подготовки смогут разобраться что такое системы баз данных и научиться с ними работать. Курс начинается с разработки простых запросов на языке SQL, а в конце будут рассмотрены такие конструкции как общие табличные выражения, агрегатные и оконные функции. Учебные примеры используют демонстрационную базу данных «Авиаперевозки», содержимое которой максимально приближено к реальным данным.

Курс создан по инициативе компании Postgres Professional — вендора СУБД PostgreSQL в России. Автор и преподаватель курса, доцент СИбГУ Е.П. Моргунов, является также автором используемого в курсе учебного пособия «Язык SQL. Базовый курс». Овладев материалом курса, студент получит практические знания, востребованные IT-рынком в области СУБД.

Курс состоит из 36 часов лекционных и практических занятий.

 

Расписание лекций на ФКН ВШЭ:

День недели Время Продолжительность Примечание
Понедельник 16:40 4 часа 30 минут (три пары)  
Вторник 18:10 1 час 30 минут (одна пара) повторение 2-ой пары понедельника
Пятница 16:40 1 час 30 минут (одна пара) повторение 3-ой пары понедельника

Расписание лекций на ВМК МГУ:

День недели Время Продолжительность
Вторник 12:50 — 14:25 1 час 30 минут (одна пара)
Среда 14:35 — 16:10 1 час 30 минут (одна пара)
Четверг 16:20 — 18:00 1 час 30 минут (одна пара)

Учебный курс «Основы технологий баз данных»

(курс читает профессор СПбГУ Б. А. Новиков)

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

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

Курс читается по одноименному учебному пособию, разработанному коллективом автором СПбГУ при участии компании Постгрес Профессиональный. Материал первой части пособия составляет основу для данного базового курса и содержит краткий обзор требований и критериев оценки СУБД и баз данных, теоретическую реляционную модель данных, основные конструкции языка запросов SQL, обработку транзакций, организацию доступа к базе данных PostgreSQL, вопросы проектирования приложений и основные расширения, доступные в системе PostgreSQL.

Курс читается на ВМК МГУ в аудитория П-13 с 12 сентября по средам с 17:00 до 20:00.

Курс состоит из 24 часов лекционных занятий и 8 часов практических занятий.

Расписание обоих курсов нагляно представлено на схеме ниже. Картинка кликабельна. Желающим посещать крурсы рекомендуется её скачать на свой компьютер/телефон.

Новые учебные курсы от Postgres Professional «Язык SQL» и «Основы технологий баз данных» стартуют 10 сентября | by Postgres Professional | Postgres Professional

С 10 сентября и до 19 октября 2018 года в Московском Государственном Университете и Высшей Школе Экономики будут проведены два новых учебных курса при поддержке компании Postgres Professional — «Язык SQL» и «Основы технологий баз данных». Курсы в первую очередь адресованы студентам упомянутых учебных заведений, которые могут посещать занятия обоих курсов соверешенно свободно — в оставшееся от основных занятий время, или вместо них. Для слушателей желающих расширить и поднять уровень собственных знаний в области применения и разработки и баз данных, но не имеющих пропуска в МГУ или ВШЭ, возможно посещение курса «Основы технологий баз данных» в МГУ вечером по средам. Им необходимо заранее подать заявку на участие в учебных курсах, чтобы пропуск был изготовлен.

Заявиться на курс «Основы технологий баз данных» можно написав на электронный адрес:

и указав в письме фамилию, имя и отчество полностью.

Теперь о самих курсах, их содержании, времени и месте проведения.

На ФКН ВШЭ и ВМК МГУ с 10 сентября по 19 октября будет проводиться чтение нового курса «Язык SQL», ориентированного на СУБД PostgreSQL. Слушатели без предварительной подготовки смогут разобраться что такое системы баз данных и научиться с ними работать. Курс начинается с разработки простых запросов на языке SQL, а в конце будут рассмотрены такие конструкции как общие табличные выражения, агрегатные и оконные функции. Учебные примеры используют демонстрационную базу данных «Авиаперевозки», содержимое которой максимально приближено к реальным данным.

Курс создан по инициативе компании Postgres Professional — вендора СУБД PostgreSQL в России. Автор и преподаватель курса, доцент СИбГУ Е.П. Моргунов, является также автором используемого в курсе учебного пособия «Язык SQL. Базовый курс». Овладев материалом курса, студент получит практические знания, востребованные IT-рынком в области СУБД.

Курс состоит из 36 часов лекционных и практических занятий.

(курс читает профессор СПбГУ Б. А. Новиков)

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

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

Курс читается по одноименному учебному пособию, разработанному коллективом автором СПбГУ при участии компании Постгрес Профессиональный. Материал первой части пособия составляет основу для данного базового курса и содержит краткий обзор требований и критериев оценки СУБД и баз данных, теоретическую реляционную модель данных, основные конструкции языка запросов SQL, обработку транзакций, организацию доступа к базе данных PostgreSQL, вопросы проектирования приложений и основные расширения, доступные в системе PostgreSQL.

Курс читается на ВМК МГУ в аудитория П-13 с 12 сентября по средам с 17:00 до 20:00.

Курс состоит из 24 часов лекционных занятий и 8 часов практических занятий.

Расписание обоих курсов нагляно представлено на схеме ниже. Желающим посещать крурсы рекомендуется её скачать на свой компьютер/телефон.

Учебный курс по SQL — презентация онлайн

Учебный курс по SQL
Программисты делятся на две категории: первая это те, которые запустили UPDATE без условия
WHERE, и вторая – те, которым предстоит ее
запустить.
Обзор курса
Курс предназначен для быстрого изучения основ Структурного
Языка Запросов (SQL). В нем будут даны формальные
определения основных операторов языка, описаны как главные
компоненты SQL, так и его расширения (на примере
разработанного фирмой Sybase диалекта Transact-SQL).
Отдельно будут рассмотрены вопросы приемы оптимизации
программного кода.
По окончании курса Вы должны быть способны применить
полученные знания при разработке реальных деловых
приложений.
2.Выборка
2.Выборкаинформации
информациииз
избазы
базы
данных
данных
Разделы, изучаемые в курсе «FastTrack» — 24 часа
Разделы, изучаемые в курсе «FastTrack» — 24 часа
9.Манипулирование
9.Манипулированиеданными
данными
10.Транзакции
10.Транзакцииииблокировки
блокировки
11.Переменные,
11.Переменные,хранимые
хранимыепроцедуры,
процедуры,
курсоры
и
триггеры.
курсоры и триггеры.
12.Оптимизация
12.Оптимизацияиинастройка
настройка
производительности.
производительности.Основные
Основныеошибки
ошибки
иикак
их
избежать
как их избежать
Разделы, изучаемые в курсе «Programming» — 16 часов
Разделы, изучаемые в курсе «Programming» — 16 часов
16часов
часов
16
6.Объединение
6.Объединениетаблиц
таблицииподзапросы
подзапросы
часа
44часа
5.Группировка
5.Группировкаданных
данныхииагрегатные
агрегатные
функции
функции
8.Ограничения
8.Ограниченияиииндексы.
индексы.
Представления
Представления
часов
88часов
4.Основные
4.Основныефункции
функции
часа
44часа
3.Сортировка
3.Сортировкаииметоды
методыотбора
отбора
7.Создание
7.Созданиеииуправление
управление
таблицами
таблицами
часов
44часов
1.Введение
1.Введение
часа
44часа
Список изучаемых
разделов
Соглашения
Соглашения принятые в тексте.
Команды SQL, функции набраны в верхнем
регистре
SELECT * FROM syslogins
Переменные, имена пользователей, имена
столбцов набраны в нижнем регистре
… name FROM …
Англоязычные термины набраны в нижнем
регистре жирным шрифтом
foreign key
Определения отдельных понятий, название книг,
ссылки на документацию и названия курсов
набраны курсивом
Соглашения
Соглашения принятые в программном
коде
Команды SQL, функции набраны в верхнем
регистре жирным шрифтом
SELECT * FROM …
Переменные, названия функций и таблиц, имена
пользователей, имена столбцов набраны в нижнем
регистре
… name FROM syslogins
Регламент
Порядок проведения занятий, лабораторных и
контрольных работ.
1.Введение
Цели
Реляционная модель баз данных
Определение реляционной СУБД и реляционные операции
Язык SQL и базовые SQL предложения
Модели данных.Объекты
Методы проектирования
Итог
Цели
После окончания введения вы должны:
Настроится на рабочий лад
Уметь умно рассуждать о теоретических и
физических аспектах реляционных СУБД
Концепция реляционной модели
В 1970 году доктор И. Ф. Кодд предложил использовать реляционный
подход к управлению базами данных, основанный на математической
модели, использующей методы реляционной алгебры и реляционного
исчисления.
Реляционная модель отвечает следующему неформальному определению,
которое дал С. Дейт:
1.
2.
3.
Вся информация в базе данных представлена в виде набора таблиц(отношений)
Для работы с таблицами она поддерживает набор реляционных операторов выбора, проектирования и объединения
Обеспечивает механизм целостности и непротиворечивости данных
Реляционная модель
Принципы реляционной модели были впервые разработаны доктором И.Ф. Коддом в июне 1970 года в
работе «A relational Model of Data for Large Shared Data Banks».В этой работе Кодд предложил
использовать реляционную модель для СУБД.
Наиболее популярными в то время были сетевые модели и модели, использующие структуру плоских
файлов. Кодд, разработал список критериев, которым должна удовлетворять реляционная
модель. Этот список, часто ошибочно называемый «12 правилами Кодда», состоит из 13 правил и
используется совместно с более общим определением Дейта.
Информационное правило (12 правил Кодда)
Вся информация в реляционной базе данных (включая таблицу и названия(имена) столбца)
представляется явно как значения в таблицах.
Каждая таблица (отношение, relation) состоит из строк и столбцов. Каждая строка имеет
отдельный объект или сущность(entity) – человека, компанию, счет. Каждый столбец
описывает одну характеристику объекта – имя человека или его адрес, тел.номер
компании или название счета.
Таблица Users пользователи
Таблица Accounts Счета
Номер
Наименовани
е
Дата
открытия
Дата
изменения
0
33333
Счет Иванова
11.11.03
10.11.04
1
44444
Счет Петрова
11.11.04
11.11.04
Логин
Фамилия
Имя
Отчество
Статус
BM03
Иванов
Иван
Иванович
BM04
Петров
Петр
Петрович
Гарантированный доступ (12 правил Кодда)
Используя комбинацию имени таблицы, первичного ключа и имени столбца
гарантируется доступ к любому значению.
Пара слов о принятой терминологии.
COUNTRY
CURRENCY
4
2
COUNTRY_ID
1
COUNTRY_NBU
COUNTRY_NAME
3
CURR_ID
CURR_ID
UAH
EUR
978
Евро
EUR
USD
840
Доллары США
CURR_NBU
CURR_NAME
UA
UKR
Украина
FR
FRA
Франция
US
USA
США
USD
UAH
802
Украинская
гривна
BN
NULL
Бруней
Даруссалам
BND
BND
096
Брунейский
доллар
5
6
Primary key
Foreign key
Primary key
Терминология
Реляционная база данных представляет собой множество связанных таблиц. Таблица — это базовая структурная
единица СУБД. Все данные представляются в табличном формате – другого способа просмотреть
информацию в базе нет. Каждая таблица состоит из столбцов и строк.
На предыдущем слайде представлены две таблицы – справочники стран и валют.
Отдельная строка (кортеж) описывает отдельный объект или сущность (entity). Каждая строка в
таблице может быть и должна единственным образом идентифицироваться по одному из своих
уникальных значений. Порядок, в котором строки помещаются, в общем случае, значения не имеет.
Столбец (поле, атрибут) описывает однотипный набор свойств множества объектов. В данном
примере, это код страны. Этот поле является первичным ключом.
Столбец, который не является ключевым полем.
Столбец, который представляет собой внешний ключ(foreign key).
Каждый элемент данных, или поле (value), определяется пересечением строки и столбца таблицы.
Чтобы найти требуемый элемент данных, необходимо знать имя содержащей его таблицы, столбец и
значение его первичного ключа (primary key), или уникального идентификатора.
Поле может и не иметь значения. В таком случае говорят, что поле содержит “NULL”.Работу с NULL
значениями мы будем рассматривать в последующих разделах.
Поскольку данные о различных объектах содержатся в разных таблицах, часто возникает потребность в
объединении информации из разных таблиц. СУБД позволяет связывать данные в разных таблицах с
помощью механизма внешних ключей. Внешний ключ (foreign key) – это столбец или набор столбцов,
которые ссылаются на первичный ключ в той же или другой таблице.
Возможность связывать данные из разных таблиц упрощает проектирование, делает его более наглядным и
повышает управляемость.
Свойства первичных и внешних ключей.
Первичный ключ не допускает повторяющихся или NULL значений
Будучи создан, первичный ключ обычно уже не меняется.
Внешний ключ – есть логическое понятие, его физические реализации
могут быть различны.
Внешний ключ должен соответствовать значениям существующего
первичного ключа или уникального индекса, или должен быть NULL.
Невозможно определить внешний ключ не связав его с первичным
ключом или уникальным индексом.
Логическая независимость (12
правил Кодда)
Logical data independence означает, что изменение взаимосвязей
между таблицами, столбцами и строками не влияет на правильное
функционирование программных приложений.
Физическая независимость (12
правил Кодда)
Physical data independence — с точки зрения пользователя,
представления данных не зависит от способа их физического
хранения. Как следствие этого физическое перемещение данных
никоим образом не может повлиять на логическую структуру СУБД и
восприятие данных пользователем.
Язык данных (12 правил Кодда)
Используется по крайней мере один язык высокого уровня, обеспечивающий
определение данных, манипулирование ими, правила целостности,
авторизацию, и транзакции. В мире коммерческих СУБД такой язык
получил название SQL. Он используется для манипуляции с
данными (data manipulation), — выборки и модификации,
определения данных (data definition) и администрирования
данных (data administration).
Любая операция по выборке, модификации, определению или
администрированию выполняется с помощью оператора (statement)
или команды (command) SQL.И ANSI, и ISO приняли SQL в качестве
стандарта для реляционных СУБД.
SQL операторы
Select
Data retrieval – оператор обеспечивает выборку данных
из СУБД
Insert, update, delete
Data manipulation language (DML) – набор операторов,
которые позволяют вставлять новые, изменять
существующие и удалять ненужные строки из таблиц.
Create, alter, drop, rename
Data definition language (DDL) — набор операторов,
позволяющий создавать, изменять и удалять структуры
данных в СУБД.
Grant, revoke
Data control language (DCL) – набор операторов,
обеспечивающих пользовательский доступ как к к
отдельным объектам СУБД, так и к самой СУБД
Commit, rollback, savepoint
Transaction control — набор операторов, управляющие
изменениями сделанными с помощью DML операторов
Реляционность (12 правил Кодда)
Реляционная СУБД должна поддерживать основные реляционные операции.
Существует три реляционные операции по выборке данных – проектирование,
выбор (иногда называемый ограничением (restriction)) и объединение, которые
позволяют строго указать системе, какие данные Вы хотите увидеть. Операция
проектирования выбирает столбцы, операции выбора – строки, а операция
объединения собирает вместе данные из связанных таблиц.
Все эти три операции записываются с помощью одного оператора – SELECT.
Учитывая правила логической и физической независимости, язык SQL можно
рассматривать как непроцедурный язык программирования, так как он
описывает то, ЧТО вы хотите получить, а не КАК вы хотите это сделать.
Системная поддержка NULL (12
правил Кодда)
Поддержка неизвестных значений (NULL) – различаются неизвестные, нулевые
значения и пропуски данных.
В реальности мы редко обладаем всей полнотой информации. Для поддержания
целостности данных и определения наличие неопределенной информации в
таблицах используют понятие «NULL».
NULL – не означает пустое поле или обычный арифметический нуль. Он отражает
тот факт, что значение неизвестно. Существенно, что использование NULL
инициирует переход с двухзначной логики (да/нет, что-то/ничего) на
трехзначную (да/нет/может быть или что-то/ничего/не уверен).
Системный каталог (12 правил Кодда)
Реляционный каталог — описание базы данных представляется на логическом уровне как
таблицы и доступно для интерактивных запросов к словарю данных
В реляционных СУБД существует два типа таблиц – пользовательские и системные таблицы.
Пользовательские таблицы содержат информацию, для которой собственно и создавалась
база данных – данные по сделкам, заказам, персоналу и т.д. Системные таблицы –
содержат описание самой базы данных.
Server
System
tables
User tables
Виртуальные таблицы (12 правил
Кодда)
Поддержка механизма альтернативного способа просмотра и модификации данных.
View – можно рассматривать, как перемещаемую по таблицам рамку, через
которую можно увидеть только необходимую вам часть информации. View
можно получить из одной или нескольких таблиц, включая другие View, и
используя любые операции выбора, проектирования и объединения.
View – в отличие от базовых таблиц, физически не хранятся в СУБД.
View – это не копия некоторых данных помещенных в другую таблицу. Когда
изменяются данные в View , то тем самым изменяются данные в базовых
таблицах.
Множественные операции (12
правил Кодда)
Отвечая этому правилу, СУБД должна поддерживать не только множественные
выборки, но также множественные операции вставки, модификации и
удаления.
Целостность данных(12 правил
Кодда)
Несогласованность или противоречивость данных может возникать по многим
причинам:
вследствие сбоя системы, проблемы с аппаратным обеспечением, ошибки в
системном программном обеспечении или логических ошибок в
пользовательских приложениях.
Для предотвращения подобного типа ошибок реляционные СУБД предлагают ряд
механизмов и технологий.
Один из таких механизмов, обычно называемый управлением транзакциями
(transaction management), гарантирует, что определенный пользователем
набор команд SQL будет или выполнен до конца, или будет полностью
отменен.
Другой тип обеспечения целостности данных, называемой объектной целостностью
(entity integrity), связан с корректным проектированием базы данных.В
частности, объектная целостность требует, чтобы ни один первичный ключ не
имел значения NULL.
Третий тип целостности, называемый ссылочной целостностью, означает
непротиворечивость между частями информации, повторяющимися в разных
таблицах.
Независимость распределения (12
правил Кодда)
Работа пользовательских приложений логически не зависит ни первоначального ни
от последующего распределения данных.
Устойчивость (непротиворечивость)
(12 правил Кодда)
Язык баз данных должен предоставлять возможность определения правил
целостности. Они должны быть сохранены в репозитарии, и не существует
способа обойти правила целостности, определенные через язык баз данных,
используя языки низшего уровня.
Модели данных
«Создать нужную структуру базы данных (по крайней мере в простых случаях)
зачастую проще, чем строго сформулировать, какой она должна быть»
К.Дж. Дейт.
Модель – краеугольный камень дизайна приложений, использующих СУБД. Модель
помогает связать, описать, конкретизировать определенные концепции и идеи, а
потом исследовать и проанализировать их, имитируя реальные процессы.
Хорошая модель, это в первую очередь, «прозрачная» структура. Прозрачная
структура должна максимально упрощать взаимодействие с базой данных,
обеспечивать представление информации в понятном и общепринятом формате,
обеспечивать непротиворечивость данных и механизмы анализа и
предотвращения ошибок.
Этапы большого пути
Бизнес модель
Концептуальная
модель
Физическая
модель
СУБД
Создание модели при проектирование системы обычно состоит из следующих фаз:
Описание бизнес-процессов и создание бизнес-спецификаций, являющихся
прямым отражением преставления в человеческом мозгу исследуемой
концепции (бизнес модель).
Разделение данных на отдельные сущности (объекты) и построение диаграммы
зависимостей между ними (E-R diagram). На этом этапе бизнес-данные
отделяются от бизнес-действий. Тогда как, типы взаимодействий между
объектами могут изменяться, сами объекты имеет тенденцию оставаться
постоянными (концептуальная модель).
На этапе преобразования концептуальной модели в физическую, построенные
логические взаимосвязи между сущностями преобразуются в конкретные
механизмы их реализации для данной СУДБ. На этом этапе можно определить
низкоуровневые настройки и ограничения модели данных.
Проектирование
Основными методами проектирования является моделирование зависимостей
(entity-relationship modeling) и нормализация (normalization).И если построение
E-R диаграмм облегчает и упрощает сам процесс моделирования, то
нормализация наиболее полезна для проверки созданной структуры.
Возможны четыре вида связей между объектами (степеней отношения):
Первый тип – связь ОДИН-К-ОДНОМУ (1:1): в каждый момент времени
каждому экземпляру сущности А соответствует 1 или 0 экземпляров сущности В
Второй тип – связь ОДИН-КО-МНОГИМ (1:М): одному экземпляру сущности
А соответствуют 0, 1 или несколько экземпляров сущности В.Так как между
двумя сущностями возможны связи в обоих направлениях, то существует еще
два типа связи МНОГИЕ-К-ОДНОМУ (М:1) и МНОГИЕ-КО-МНОГИМ (М:N).
Каждый такой тип связи может быть объявлен обязательным (mandatory):
каждому экземпляру сущности А должен (must be) соответствовать 1 или более
экземпляров сущности В
Или опциональным:
каждому экземпляру сущности А может (may be) соответствовать 0 или более
экземпляров сущности В
Нормализация
Существует набор стандартов проектирования данных, называемых
нормальными формами. Общепринятыми считаются пять нормальных
форм, хотя их было предложено значительно больше. Создание таблиц
в соответствии с этими стандартами называется нормализацией.
На практике, нормализация сводится к разбиению таблицы на две или
более, обладающих лучшими свойствами при включении, изменении и
удалении данных. Окончательная цель нормализации сводится к
получению такого проекта базы данных, в котором каждое значение
появляется лишь в одном месте, т.е. исключена избыточность
информации. Это делается не столько с целью экономии памяти,
сколько для исключения возможной противоречивости хранимых
данных.
Нормальные формы
Таблица находится в первой нормальной форме (1НФ) тогда и только тогда, когда ни одна из ее
строк не содержит в любом своем поле более одного значения и ни одно из ее ключевых полей не
пусто. Т.е, первая нормальная форма требует, чтобы на любом пересечении строки и столбца
находилось одно значение, которое должно быть атомарным.
Таблица находится во второй нормальной форме (2НФ), если она удовлетворяет определению
1НФ и все ее поля, не входящие в первичный ключ, связаны полной функциональной
зависимостью с первичным ключом. (Функциональная зависимость. Поле В таблицы
функционально зависит от поля А той же таблицы в том и только в том случае, когда в любой
заданный момент времени для каждого из различных значений поля А обязательно существует
только одно из различных значений поля В). Т.е., любой не ключевой столбец зависит от всего
первичного ключа.
Таблица находится в третьей нормальной форме (3НФ), если она удовлетворяет определению
2НФ и ни одно из ее не ключевых полей не зависит функционально от любого другого не
ключевого поля.
Таблица находится в пятой нормальной форме (5НФ) тогда и только тогда, когда в каждой ее
полной декомпозиции все проекции содержат возможный ключ.
Четвертая нормальная форма (4НФ) является частным случаем 5НФ, когда полная
декомпозиция должна быть соединением ровно двух проекций.
Итог
Реляционные СУБД состоят из таблиц (отношений), над которыми
определены реляционные операции и ряд дополнительных
специфических правил обеспечения логической целостности,
определяемая пользователем.
Sybase ASE — является реляционной СУБД, которая позволяет хранить
данные и манипулировать ими с помощью расширения SQL – TransactSQL.
Таблицы, используемые в этом
курсе
sy b sy ste m d b
M a ste r D a ta b a se
n am e
N
srv secm ech
s r v id
p a r t ic ip a n t
p a r tic ip a n t
s p a re
s ta tu s
ow ner
x a c tk e y
p r o to c o l
g trid
s ta te
p a r td a ta
b o o tc o u n t
srv n a m e
srv n a m e
srvn a m e
1
N
r a n g e id
syscu rcon Ю gs
s rv id
s r v c la s s
s r v s ta tu s
srv se c m e c h
v a lu e
srv n am e
s rv c o st
com m ent
d a ta ty p e
1
N
lo g v e rs
s t a r ttim e
c o o r d ty p e
N
sysservers
conЮ g
s rv n e tn a m e
s r v id
1
sy sco n Ю g u res
m e m o ry _ u se d
con Ю g
d is p la y _ le v e l
s ta tu s
m essag e_ n u m
v a lu e 2
a p f_ p e rc e n t
d e f v a lu e
u n it
1c o n Ю g
1
rem o te sr v id
v a lu e 3
v a lu e 4
x a c tk e y
1
s y s lo g in s
s ta tu s
a c c d a te
d lev e l
s u id
la n g id
1
to tc p u
m a s te r d b id
n a m e le n
1
su id
s r id
N
s ta tu s
N
s r id
s y s la n g u a g e s
s p id
k p id
Ю d
e n g in e n u m
e x e c la ss
s ta tu s
p r io r it y
s u id
a fЮ n ity
h o s tn a m e
id
dbnam e
1
1n a m e
nam e
N
c o n n e c tio n
srv n a m e
p a ssw o rd
N
1
la n g u a g e
audЯ ags
d b n am e
N
f u lln a m e
N
days
sy sch a r se ts
nam e
id
d e s c r i p tio n
s r id
d e Ю n it io n
s ta tu s
id
1
s u id
c la s s
Ю d
s u id
nam e
s ta tu s
p assw o rd
lo g in c o u n t
s r id
1
a v a ila b le _ s e r v ic e
cm d
o rig su id
cpu
b lo c k _ x lo id
p h y s ic a l_ io
c lie n tn a m e
s e s _ id
page
c o n te x t
1
ty p e
row
s p id
lo id
N
ite r a tio n s
k p id
s y s m o n ito r s
s y s lis te n e r s
d b id
Ю e ld _ n a m e
n e t_ ty p e
g ro u p _ n a m e
a d d re s s _ in fo
Ю e ld _ id
1
g id
tra n _ n a m e
d b id
tim e _ b lo c k e d
u id
d b id
N
s p id 1
N
sy sd a ta b a se s
1
d b id
1
1
nam e
d b id
s ta tu s
Nd b i d
s u id
N
1
v e r s io n
lo g p tr
1
c rd a te
s u id
s ta tu s 2
N
d b id
audЯ ags
1
d e fta b a u d
s y s d e v ic e s
1
S y b a s e A d a p t iv e S e r v e r
E n t e r p r is e S y s t e m T a b le s
D ia g r a m , a n e n t it y
r e la tio n s h ip d ia g r a m fo r
S y b a s e A d a p t iv e S e r v e r
E n te r p r is e 1 2 .5 .
d b id
id
Nd b i d
d b id
s u id
lo w
N
sy su sa g es
nam e
d b id
v sta rt
seg m a p
pad
v s ta r t b e tw e e n lo w , h ig h
h ig h
phynam e
s ta tu s
m ir r o r n a m e
v alu e
d e s c r ip tio n
u id
1
Nl o i d
S y s te m T a b le s D ia g ra m
ite r d a te
lin e n u m
b lo c k e d
1
N
s p id 1
siz e
1
c rd ate
seg m a p
N
d b id
d efvw au d
1
d e fp ra u d
1
To o r d e r a d d i tio n a l p o s te rs , c a ll
(8 0 0 ) 8 -S Y B A S E (in U S A a n d C a n a d a )
1n a m e
P a rt N u m b e r L 0 0 2 9 7
S yb ase, In c.
s y s lo g s h o ld
ls ta r t
c n tr lty p e
S y b a s e A d a p tiv e
S e rv e rЄ E n te rp ris e
s y s te s t lo g
1
s tm t n u m
m em usage
NЮ d , s p i d
id
d b id
se c_ m ech _n a m e
sy ssecm ech s
s p id 1
1
p w d a te
s o r tЮ le
id
1
s y s s r v r o le s
ty p e
c s id
su id
nam e
1
b lo c k _ x l o id
N
e n d tim e
h o stp r o c e ss
k p id
1l a s t _ k p i d
id le _ 4
s y s lo c k s
lo id
s ta r t d a y
1n a m e
p ro c id
1
d b id
s t a te
1
s ta r tt im e
sy s_ id ,
s ta r ttim e
1
lo g in c o u n t
s r id
s e s _ id
1c u r _ k p i d
id le _ 3
id
se c_ m ech _ n am e
k p id
id le _ 2
endday
su id
srv n a m e
nam e
sta tu s
sp are
p w d a te
n am e
1
lo id
sy s_ id
N
Ю d , s p1 i d
s y s s e s s io n s
la n g u a g e
a lia s
u p g ra d e
s p id
s y s _ id , s e s _ id
x a c tn a m e
n am e
id le _ 1
s ta t u s
N
r e s u ltlim it
s u id
o s p r o c id
a fЮ n iti e d
s p a c e lim it
s u id
la s t_ k p id
nam e
sy sp ro cesses
N
1e n g i n e
e n g in e
c u r_ k p id
s ta te
tim e lim it
m o n th s
N
s u id
o sprocn am e
s p id
fa ilo v e r
s ta tu s
to tio
s y s lo g in r o le s
s q ls t a te
s ta tu s 2
s ta r ttim e
c o o r d in a to r
lo id
s u id
N
se v e rity
d e s c r ip tio n
1
s u id
s u id
s u id
s h o r tm o n th s
p ro g r a m _ n a m e
1a p p n a m e
s y s e n g in e s
s p id
s y s tr a n s a c tio n s
s ta tu s
e rro r
la n g id
sp are
1
1
r e m o te u s e r n a m e
sysm essages
d a te Ю r s t
sc o pe
lim itid
e n g in en u m
r e m o te s e rv e r id
d a te f o r m a t
r a n g e id
e n fo rc e d
1
n am e
la n g id
v a lu e 2
lim itv a lu e
nam e
s y s r e m o t e lo g in s
la n g id
p a re n t
v alu e
s ta tu s
appnam e
1
ty p e
d b id
la n g id
conЮ g
com m ent
a c tio n
s y s t im e r a n g e s
id
N
nam e
d b id
d b id
m a s te rx a c tid
re se rv e d
s ta r ttim e
s p id
nam e
page
x lo id
d b id
1
1
s ta tu s 3
n am e
s ta tu s 4
1
6 4 7 5 C h ristie A v e n u e
E m e r y v ille C A 9 4 6 0 8
U . S . A .
x a c tid
b itm a s k
segm e n t
s u id
la n g id
u id
N
N
e rro r
c u r ra u th
id
N
1
p ro c_ n a m e
s u id
id
s ta tu s
1
1
ty p e
s ta tu s
N
u id
1
s u id
s u id
id
c la s s
u id
a ttr ib u te
N
o b je c t_ ty p e
a c tio n
o b j e c t_ c i n fo
p r o te c tty p e
o b je c t
c o lu m n s
g ra n to r
u id
N
id
m a x le n
in d id
m a x ir o w
keycnt
keys1
keys2
1
u id
in d id
sy so b je c ts
1
nam e
im a g e _ v a lu e
id
le a f r o w s iz e
com m ent
a c t iv e s t a t i d
s ta tu s
in d e x h e ig h t
le a f c n t
r s la s tp a g e
in d e x d e l
Ю l l_ fa c to r
schem acnt
ex p _ ro w s ize
sy s sta t2
id e n t ity g a p
c r d a te
1
fo rw ro w c n t
sy sja r s
frla sto a m
d e lr o w c n t
f r la s tp a g e
d p ag ec rcn t
c o n o p t_ th ld
js ta tu s
ip a g e c rc n t
sp a re 3
ji d
d row c rc n t
e m p ty p g c n t
jn a m e
oam apgcnt
sp a re 4
u id
u id
u s e r ty p e
1
a llo w n u lls
sy sx ty p e s
N
c o lid a r r a y
ty p e
le n g th
c o lid 2
s ta tu s
id
1
N
1t d e f a u l t
N
ty p e
id
sequence
h ie ra rc h y
N
v e r s io n ts
N
1
lo g in a m e
Ni d
x d b id
d o m a in
a c c e s s ru le
id
1
id
N
1
s ta tu s
s e la ll
d e p id
r e s u lto b j
depnum ber
re a d o b j
M essages
O b je c ts
t a b le id
c o n s t id
1i d
N
N
num ber
id
d o m a in
v e rsio n
N
N
u se r ty p e
N
I n te g r ity
R e la tio n s h ip s
s y s c o n s tr a in ts
N
c o n s t r id
1
c o n s trid
ta b le i d
e rro r
p r in tf m t
p re c
c o lid
s c a le
s ta tu s
r e m o te _ ty p e
ty p e
re m o te _ n a m e
le n g th
x s ta tu s
o ffse t
x ty p e
u se rty p e
x d b id
1
1
P ro cesses
& L ocks
c o n s tr id
1
s ta tu s
in d e x id
c o n s tr id
ta b le id
r e f ta b id
p m ryd bn a m e
N
L an guage &
C h a r a c te r S ets
k ey cn t
1
sta tu s
1
fr g n d b id
id , c o lid
1i d , c o l i d
N
sy sreferen ces
c o n s tr id
sp are2
erro r
ta b le id , c o lid
N
N
r e fta id
N
c o lid
num ber
c d e fa u lt
u s e r ty p e
N
ta b le id
s y s c o lu m n s
c d e fa u lt
x ty p e id
td e fa u lt
id
1
1i d
id
s ta tu s
id
id
num ber
c o n s tr id
cache
id
id
id
N
1
c k Ю rst
id
sy sp ro ced u res
T im e R a n g e s
& L im its
1
o b jsp a re
id
p re c
x tn a m e
x tc o n ta in e r
te x t
c o lid
id e n t
x ts o u r c e
x ts ta tu s
la n g u a g e
num ber
te x tty p e
s c a le
x tid
nam e
id
c79
d o m a in
p r in tf m t
x tu tid
x tm e ta ty p e
c0 —
S to ra g e
Ni d
sysd ep en d s
d e p id
audЯ ags
N
sy sty p e s
j b in a r y
x tc o n t a in e r
f o r m a tid
usedcount
tex t
id
s e ltr ig
1
id
s ta tu s
id
id
in s t r ig
1
s ta tid
hashkey
key8
d ep k ey 8
sp a re 1
1i d
d e ltr ig
u p d tr ig
id
m o d d ate
sequence
ex p d ate
u id
N
key1 —
depkey1 —
d e p id
N
1
1
sequence
1
id
id
sp a re 2
rsla s to a m
ro w c n t
u id
ty p e
s y s s ta t
N
sp a re 1
pagecnt
N
u se rs ta t
sy sco m m e n ts
R e m o te S e rv e r s
gu i d
s iz e
id
1
id
c s id
seg m e nt
s y s s ta tis tic s
id
id
s o id
c r d a te
d a t a r o w s iz e
U s e r s , R o le s
& P e r m is s io n s
ty p e
d e p id
1
keycnt
id
N
id , in d id
te x t_ v a lu e
id
1
keys3
1
id
C o n Ю g u r a tio n
s y s q u e r y p la n s
id
id
id
N
sy sta b sta ts
in t_ v a lu e
c h a r_ v a lu e
op
Ю rst
id , i n d id
o b je c t _ in f o 3
x a c t id
sp a re
s ta tu s 2
s ta tu s
u id
1
c o n tr o lp a g e
N
1
usagecnt
g id
u id
Ю r s tp a g e
id
p a r titio n id
N
ip g tr ip s
d is tr ib u tio n
nam e
e n v iro n
K ey
s y s lo g s
ty p e
n am e
ro o t
u id
1
sysk eys
lo g i n a m e
io am p g
1
s u id
1
x a c t id
sysgam s
m in le n
id
o b je c t_ in f o 2
j id
1
gran to r
o b je c t_ in f o 1
1
u id
1
segm en t
o a m p g tr i p s
sysu sers
1
u id
1
doam pg
c s id
N
sy sp ro tects
segm en t
nam e
s o id
s y s a ttr ib u te s
id
s ta tu s
N
1
x a c t id
nam e
s y s in d e x e s
id
lr i d
lr id
s ta te
segm ent
c u rra u th
p roc_ n am e
1
N
sy s se g m e n ts
seg m e n t
s y s r o le s
d le v e l
error
seg m e n t
fre e _ sp a c e
N
a lts u id
a lts u id
la n g id
se gm en t
N
N
s u id
u id
d e s c r ip tio n
s y s th re s h o ld s
N
r o le s
v ecto r
s u id
s y s a lte r n a te s
s y s p a r t it io n s
p m ry d b id
t a b le id , fo k e y 1 …1 6
N
fr g n d b n a m e
N
M is c e lla n e o u s
sp are2
fo k ey 1 —
fo key 1 6
re fk e y 1 —
r e fk e y 1 6
untoaT hpmafsheemprenfer uesila gials. rnhtjmieaotosbi oennorafssevnh.tpehsiTrpeothhsr(le1aei t ntn:oc 1eot hts, lkh.ue1eAm:yrNle encrl, foea nNtltmaioo: tmNfinotsea) hnhs aes i pfheplopi prneaesetar qhasra ue,st ni ianbrdr neeg ldpsl aco btowiht oel eutnohmtsryihcantpiol pel lys-
f rg n d b n a m e
id , c o lid
1
r e f t a b id , r e f k e y 1 . ..1 6
p m ry d b n am e
N
a c c e s s r u le
d o m a in
s ta tu s 2
Nx d b i d
nam e
x ty p e
N
x tid
1
A ll D a ta b a se s
M L G p a rt n u m b er 7 0 2 0 4-0 1-12 5 0 -03
Источники дополнительных
сведений
Transact-SQL® User’s Guide. Adaptive Server Enterprise Version
12.5 Document ID: 32300-01-1250-02 Last Revised: May 2001,
Sybase, Inc
Reference Manual. Adaptive Server® Enterprise Version 12.5
Document ID: 36271-01-1250-01 Last Revised: June 2001, Sybase,
Inc
Performance and Tuning Guide. Adaptive Server Enterprise Version
12.5 Document ID: 33621-01-1250-02 Last Revised: May 2001,
Sybase, Inc
Кузнецов С.Д. Введение в стандарты языка баз данных SQL (
http://www.citforum.ru/database/sqlbook/index.shtml )
Ryan K. Stephens, Ronald Plew, Bryan Morgan, Jeff Perkins.Teach
Yourself SQL in 21 Days, Second Edition Macmillan Computer
Publishing.
Мартин Грабер. Понимание SQL.

Основы SQL — Практическое руководство по SQL для начинающих. Анализ велопроката

Опубликовано: 1 февраля 2021 г.

поездки, совершенные с помощью сервиса.

Мы начнем с того, что немного рассмотрим базы данных, что они из себя представляют и почему мы их используем, а затем начнем писать собственные запросы на SQL.

Если вы хотите продолжить, вы можете загрузить хаб .db здесь (130 МБ).

Основы SQL: реляционные базы данных

Реляционная база данных — это база данных, которая хранит связанную информацию в нескольких таблицах и позволяет запрашивать информацию более чем в одной таблице одновременно.

Легче понять, как это работает, на примере. Представьте, что вы представляете компанию и хотите отслеживать информацию о продажах. Вы можете настроить электронную таблицу в Excel со всей информацией, которую вы хотите отслеживать, в виде отдельных столбцов: номер заказа, дата, сумма к оплате, номер отслеживания доставки, имя клиента, адрес клиента и номер телефона клиента.

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

По мере роста вашего бизнеса и увеличения количества отслеживаемых заказов эти избыточные данные будут занимать ненужное место и в целом снижать эффективность вашей системы отслеживания продаж. Вы также можете столкнуться с проблемами целостности данных.Например, нет гарантии, что каждое поле будет заполнено данными правильного типа или что имя и адрес будут каждый раз вводиться одинаково.

При использовании реляционной базы данных, подобной показанной на приведенной выше диаграмме, вы избегаете всех этих проблем. Вы можете настроить две таблицы, одну для заказов и одну для клиентов. Таблица «клиенты» будет включать уникальный идентификационный номер для каждого клиента, а также имя, адрес и номер телефона, которые мы уже отслеживали.Таблица «заказы» будет включать номер вашего заказа, дату, сумму к оплате, номер для отслеживания, и вместо отдельного поля для каждого элемента данных клиента в ней будет столбец для идентификатора клиента.

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

Наш набор данных

Начнем с нашей базы данных. В базе данных есть две таблицы: поездок и станций .Для начала мы просто посмотрим на таблицу trips . Он содержит следующие столбцы:

  • id — Уникальное целое число, которое служит ссылкой для каждой поездки
  • продолжительность — Продолжительность поездки, измеряется в секундах
  • start_date — Дата и время начала поездки
  • start_station — Целое число, соответствующее столбцу id в таблице station для станции, с которой началась поездка
  • .
  • end_date — Дата и время окончания поездки
  • end_station — Идентификатор станции, на которой закончилась поездка
  • bike_number — Уникальный идентификатор Hubway для велосипеда, использованного в поездке
  • sub_type — Тип подписки пользователя. «Зарегистрированный» для пользователей с членством, «Обычный» для пользователей без членства
  • zip_code — Почтовый индекс пользователя (доступно только для зарегистрированных пользователей)
  • birth_date — Год рождения пользователя (доступно только для зарегистрированных пользователей)
  • пол — Пол пользователя (доступно только для зарегистрированных пользователей)

Наш анализ

С этой информацией и командами SQL, которые мы скоро изучим, вот несколько вопросов, на которые мы попытаемся ответить в ходе этого поста:

  • Какова была продолжительность самой длинной поездки?
  • Сколько поездок совершили «зарегистрированные» пользователи?
  • Какова средняя продолжительность поездки?
  • Зарегистрированные или случайные пользователи совершают длительные поездки?
  • На каком велосипеде было совершено больше всего поездок?
  • Какова средняя продолжительность поездок пользователей старше 30 лет?

Команды SQL, которые мы будем использовать для ответа на эти вопросы:

  • ВЫБОР
  • ГДЕ
  • ПРЕДЕЛ
  • ЗАКАЗАТЬ
  • ГРУППА ПО
  • И
  • ИЛИ
  • МИН
  • МАКС
  • АВГ
  • СУММА
  • СЧЕТ

Установка и настройка

Для целей этого руководства мы будем использовать систему баз данных под названием SQLite3.SQLite входит в состав Python, начиная с версии 2.5, поэтому, если у вас установлен Python, у вас почти наверняка будет и SQLite. Python и библиотеку SQLite3 можно легко установить и настроить с помощью Anaconda, если у вас их еще нет.

Использование Python для запуска нашего кода SQL позволяет нам импортировать результаты в фрейм данных Pandas, чтобы упростить отображение наших результатов в удобном для чтения формате. Это также означает, что мы можем выполнять дальнейший анализ и визуализацию данных, которые мы извлекаем из базы данных, хотя это выходит за рамки этого руководства.

В качестве альтернативы, если мы не хотим использовать или устанавливать Python, мы можем запустить SQLite3 из командной строки. Просто загрузите «предварительно скомпилированные двоичные файлы» с веб-страницы SQLite3 и используйте следующий код, чтобы открыть базу данных:

  ~$ sqlite hubway.db Версия SQLite 3.14.0 2016-07-26 15:17:14Введите «.help» для использования подсказок.sqlite>  

Отсюда мы можем просто ввести запрос, который хотим запустить, и мы увидим данные, возвращенные в нашем окне терминала.

Альтернативой использованию терминала является подключение к базе данных SQLite через Python.Это позволило бы нам использовать блокнот Jupyter, чтобы мы могли видеть результаты наших запросов в аккуратно отформатированной таблице.

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

  импорт sqlite3
span>импортировать панд как pd
б = sqlite3.connect('hub.db')
span>def run_query (запрос):
   вернуть pd.read_sql_query (запрос, БД)  

Конечно, нам не обязательно использовать Python с SQL.Если вы уже являетесь программистом R, наш курс «Основы SQL для пользователей R» станет отличным стартом.

ВЫБЕРИТЕ

Первая команда, с которой мы будем работать, это SELECT . SELECT будет основой почти каждого написанного нами запроса — он сообщает базе данных, какие столбцы мы хотим видеть. Мы можем указать столбцы по имени (разделенные запятыми) или использовать подстановочный знак * для возврата каждого столбца в таблице.

В дополнение к столбцам, которые мы хотим получить, мы также должны сообщить базе данных, из какой таблицы их получить.Для этого мы используем ключевое слово FROM , за которым следует имя таблицы. Например, если мы хотим увидеть start_date и bike_number для каждой поездки в таблице trips , мы можем использовать следующий запрос:

  ВЫБЕРИТЕ start_date, bike_number ИЗ поездок;  

В этом примере мы начали с команды SELECT , чтобы база данных знала, что мы хотим, чтобы она нашла для нас некоторые данные. Затем мы сообщили базе данных, что нас интересуют столбцы start_date и bike_number .Наконец, мы использовали FROM , чтобы сообщить базе данных, что столбцы, которые мы хотим видеть, являются частью таблицы trips .

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

ПРЕДЕЛ

Следующая команда, которую нам нужно знать, прежде чем мы начнем выполнять запросы к нашей базе данных Hubway, — это LIMIT . LIMIT просто сообщает базе данных, сколько строк вы хотите вернуть.

Запрос SELECT , который мы рассмотрели в предыдущем разделе, возвращает запрошенную информацию для каждой строки в таблице trips , но иногда это может означать большой объем данных. Мы можем не хотеть всего этого. Если бы вместо этого мы хотели увидеть start_date и bike_number для первых пяти поездок в базе данных, мы могли бы добавить LIMIT к нашему запросу следующим образом:

  ВЫБЕРИТЕ start_date, bike_number ИЗ поездок LIMIT 5;  

Мы просто добавили команду LIMIT , а затем число, представляющее количество строк, которые мы хотим вернуть.В этом примере мы использовали 5, но вы можете заменить его любым числом, чтобы получить соответствующий объем данных для проекта, над которым вы работаете.

Мы будем часто использовать LIMIT в наших запросах к базе данных Hubway в этом руководстве — таблица trips содержит более 1,5 миллиона строк данных, и нам, конечно же, не нужно отображать их все!

Давайте запустим наш первый запрос к базе данных Hubway. Сначала мы сохраним наш запрос в виде строки, а затем воспользуемся функцией, которую мы определили ранее, чтобы запустить его в базе данных.Взгляните на следующий пример:

  запрос = 'ВЫБЕРИТЕ * ИЗ ОГРАНИЧЕНИЯ 5 поездок;'
un_query(запрос)  
идентификатор продолжительность start_date старт_станция дата_конца конечная_станция велосипед_номер подтип почтовый индекс дата_рождения пол
0 1 9 28.07.2011 10:12:00 23 28.07.2011 10:12:00 23 B00468 Зарегистрировано ‘97217 1976.0 Мужчина
1 2 220 28.07.2011 10:21:00 23 28.07.2011 10:25:00 23 B00554 Зарегистрировано ‘02215 1966.0 Мужчина
2 3 56 28.07.2011 10:33:00 23 28.07.2011 10:34:00 23 B00456 Зарегистрировано ‘02108 1943.0 Мужчина
3 4 64 2011-07-28 10:35:00 23 28.07.2011 10:36:00 23 B00554 Зарегистрировано ‘02116 1981.0 Женщина
4 5 12 28.07.2011 10:37:00 23 28.07.2011 10:37:00 23 B00554 Зарегистрировано ‘97214 1983.0 Женщина

Этот запрос использует * в качестве подстановочного знака вместо указания возвращаемых столбцов. Это означает, что команда SELECT предоставила нам каждый столбец в таблице trips . Мы также использовали функцию LIMIT , чтобы ограничить вывод первыми пятью строками таблицы.

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

Наш предыдущий пример возвратил каждый столбец в таблице trips . Если бы нас интересовали только столбцы duration и start_date , мы могли бы заменить подстановочный знак именами столбцов следующим образом:

  запрос = 'ВЫБЕРИТЕ продолжительность, start_date ИЗ ОГРАНИЧЕНИЯ поездок 5'
un_query(запрос)  
продолжительность start_date
0 9 28.07.2011 10:12:00
1 220 28.07.2011 10:21:00
2 56 28.07.2011 10:33:00
3 64 2011-07-28 10:35:00
4 12 28.07.2011 10:37:00

ЗАКАЗАТЬ

Последняя команда, которую нам нужно знать, прежде чем мы сможем ответить на первый из наших вопросов, это ORDER BY .Эта команда позволяет нам сортировать базу данных по заданному столбцу.

Чтобы использовать его, мы просто указываем имя столбца, по которому мы хотим выполнить сортировку. По умолчанию ORDER BY сортирует в возрастающем порядке. Если мы хотим указать порядок сортировки базы данных, мы можем добавить ключевое слово ASC для возрастания или DESC для убывания.

Например, если мы хотим отсортировать таблицу поездок от самой короткой продолжительности до самой длинной, мы можем добавить следующую строку в наш запрос:

  ПОРЯДОК ПО продолжительности ASC  

С помощью команд SELECT , LIMIT и ORDER BY в нашем репертуаре мы теперь можем попытаться ответить на наш первый вопрос: Какова была продолжительность самой длинной поездки?

Чтобы ответить на этот вопрос, полезно разбить его на разделы и определить, какие команды нам потребуются для решения каждой части.

Сначала нам нужно извлечь информацию из столбца продолжительность таблицы trips . Затем, чтобы найти самую длинную поездку, мы можем отсортировать столбец продолжительности в порядке убывания. Вот как мы могли бы проработать это, чтобы получить запрос, который получит информацию, которую мы ищем:

.
  • Используйте SELECT , чтобы получить продолжительность столбец ИЗ поездки таблица
  • Используйте ORDER BY для сортировки столбца продолжительность и используйте ключевое слово DESC , чтобы указать, что вы хотите отсортировать в порядке убывания
  • Используйте LIMIT , чтобы ограничить вывод одной строкой

Использование этих команд таким образом вернет одну строку с наибольшей продолжительностью, что даст нам ответ на наш вопрос.

Еще одно замечание: по мере того, как ваши запросы добавляют больше команд и становятся более сложными, вы можете обнаружить, что их легче читать, если вы разделите их на несколько строк. Это, как и заглавные буквы, зависит от личных предпочтений. Это не влияет на то, как работает код (система просто читает код с самого начала, пока не дойдет до точки с запятой), но может сделать ваши запросы более четкими и понятными. В Python мы можем разделить строку на несколько строк, используя тройные кавычки.

Давайте запустим этот запрос и узнаем, как долго длилась самая длинная поездка.

  запрос = '''
ВЫБЕРИТЕ продолжительность ИЗ поездок
RDER BY продолжительность DESC
ИМИТ 1;
''
un_query(запрос)  

Теперь мы знаем, что самая длинная поездка длилась 9999 секунд, или немногим более 166 минут. Однако с максимальным значением 9999 мы не знаем, действительно ли это длина самой длинной поездки или база данных была настроена только на четырехзначное число.

Если правда, что особенно длительные поездки обрезаются базой данных, то мы можем ожидать много поездок за 9999 секунд, когда они достигают предела.Давайте попробуем запустить тот же запрос, что и раньше, но скорректируем LIMIT , чтобы он возвращал 10 самых высоких значений длительности, чтобы проверить, так ли это:

  запрос = '''
ВЫБЕРИТЕ продолжительность ОТ поездок
RDER BY продолжительность DESC
ИМИТ 10
''
un_query(запрос)  
продолжительность
0 9999
1 9998
2 9998
3 9997
4 9996
5 9996
6 9995
7 9995
8 9994
9 9994

Здесь мы видим, что на 9999 нет целой группы поездок, поэтому не похоже, что мы отрезаем верхнюю часть нашей продолжительности, но все же трудно сказать, является ли это реальной продолжительностью поездки или просто максимально допустимое значение.

Hubway взимает дополнительную плату за поездки продолжительностью более 30 минут (кто-то, кто держит велосипед в течение 9999 секунд, должен будет заплатить дополнительные 25 долларов США), поэтому вполне вероятно, что они решили, что 4 цифры будут достаточными для отслеживания большинства поездок.

ГДЕ

Предыдущие команды отлично подходят для извлечения отсортированной информации для определенных столбцов, но что, если есть определенное подмножество данных, которые мы хотим просмотреть? Вот тут-то и появляется WHERE . Команда WHERE позволяет нам использовать логический оператор, чтобы указать, какие строки должны быть возвращены.Например, вы можете использовать следующую команду для возврата всех поездок, совершенных на велосипеде B00400 :

  ГДЕ bike_number = "B00400"  

Вы также заметите, что в этом запросе мы используем кавычки. Это потому, что bike_number хранится в виде строки. Если бы столбец содержал числовые типы данных, кавычки не были бы необходимы.

Давайте напишем запрос, который использует ГДЕ для возврата каждого столбца в таблице trips для каждой строки с длительностью более 9990 секунд:

  запрос = '''
ВЫБРАТЬ * ИЗ поездок
ЗДЕСЬ продолжительность > 9990;
''
un_query(запрос)  
идентификатор продолжительность start_date старт_станция дата_конца конечная_станция велосипед_номер подтип почтовый индекс дата_рождения пол
0 4768 9994 03.08.2011 17:16:00 22 03.08.2011 20:03:00 24 B00002 Повседневная
1 8448 9991 06.08.2011 13:02:00 52 06.08.2011 15:48:00 24 B00174 Повседневная
2 11341 9998 09.08.2011 10:42:00 40 09.08.2011 13:29:00 42 В00513 Повседневная
3 24455 9995 20.08.2011 12:20:00 52 20.08.2011 15:07:00 17 B00552 Повседневная
4 55771 9994 14-09-2011 15:44:00 40 14-09-2011 18:30:00 40 B00139 Повседневная
5 81191 9993 03.10.2011 11:30:00 22 03.10.2011 14:16:00 36 B00474 Повседневная
6 89335 9997 09.10.2011 02:30:00 60 09.10.2011 05:17:00 45 B00047 Повседневная
7 124500 9992 09.11.2011 09:08:00 22 09.11.2011 11:55:00 40 B00387 Повседневная
8 133967 9996 2011-11-19 13:48:00 4 19-11-2011 16:35:00 58 B00238 Повседневная
9 147451 9996 23-03-2012 14:48:00 35 23-03-2012 17:35:00 33 В00550 Повседневная
10 315737 9995 03.07.2012 18:28:00 12 03.07.2012 21:15:00 12 В00250 Зарегистрировано ‘02120 1964 Мужчина
11 319597 9994 05.07.2012 11:49:00 52 05.07.2012 14:35:00 55 B00237 Повседневная
12 416523 9998 15.08.2012 12:11:00 54 15-08-2012 14:58:00 80 B00188 Повседневная
13 541247 9999 2012-09-26 18:34:00 54 2012-09-26 21:21:00 54 Т01078 Повседневная

Как мы видим, этот запрос вернул 14 различных поездок, каждая продолжительностью 9990 секунд или более.В этом запросе выделяется то, что все результаты, кроме одного, имеют sub_type из "Casual" . Возможно, это показатель того, что "зарегистрированных" пользователей больше осведомлены о дополнительных сборах за дальние поездки. Возможно, Hubway могла бы лучше донести свою структуру ценообразования до случайных пользователей, чтобы помочь им избежать переплат.

Мы уже видим, как даже начальный уровень владения SQL может помочь нам ответить на вопросы бизнеса и найти ценную информацию в наших данных.

Возвращаясь к WHERE , мы также можем объединить несколько логических тестов в нашем предложении WHERE , используя И или ИЛИ . Если, например, в нашем предыдущем запросе мы хотели вернуть только поездки с продолжительностью в течение 9990 секунд, которые также имели подтип Зарегистрировано, мы могли бы использовать И , чтобы указать оба условия.

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

Давайте запустим этот запрос сейчас. Мы уже знаем, что он должен возвращать только один результат, поэтому должно быть легко проверить правильность ответа:

.
  запрос = '''
ВЫБРАТЬ * ИЗ поездок
ЗДЕСЬ (продолжительность >= 9990) И (sub_type = "Зарегистрировано")
RDER BY продолжительность DESC;
''
un_query(запрос)  
идентификатор продолжительность start_date старт_станция дата_конца конечная_станция велосипед_номер подтип почтовый индекс дата_рождения пол
0 315737 9995 03.07.2012 18:28:00 12 03.07.2012 21:15:00 12 В00250 Зарегистрировано ‘02120 1964.0 Мужчина

Следующий вопрос, который мы поставили в начале поста, — «Сколько поездок было совершено «зарегистрированными» пользователями?» Чтобы ответить на него, мы могли бы запустить тот же запрос, что и выше, и изменить выражение WHERE , чтобы оно возвращало все строки, где sub_type равно 'Registered' , а затем подсчитать их.

Однако на самом деле в SQL есть встроенная команда для подсчета за нас, COUNT .

COUNT позволяет нам перенести вычисления в базу данных и избавляет нас от необходимости писать дополнительные сценарии для подсчета результатов. Чтобы использовать его, мы просто включаем COUNT(column_name) вместо (или в дополнение) столбцов, которые вы хотите SELECT , например:

  ВЫБЕРИТЕ СЧЕТ(id)
span>ОТ поездки  

В данном случае не имеет значения, какой столбец мы выбираем для подсчета, потому что в каждом столбце должны быть данные для каждой строки в нашем запросе.Но иногда запрос может иметь отсутствующие (или «нулевые») значения для некоторых строк. Если мы не уверены, содержит ли столбец нулевые значения, мы можем запустить наш COUNT для столбца id — столбец id никогда не бывает нулевым, поэтому мы можем быть уверены, что наш подсчет ничего не пропустит.

Мы также можем использовать COUNT(1) или COUNT(*) для подсчета каждой строки в нашем запросе. Стоит отметить, что иногда нам действительно может понадобиться запустить COUNT для столбца с нулевыми значениями.Например, мы можем захотеть узнать, сколько строк в нашей базе данных имеют пропущенные значения для столбца.

Давайте посмотрим на запрос, чтобы ответить на наш вопрос. Мы можем использовать SELECT COUNT(*) для подсчета общего количества возвращенных строк и WHERE sub_type = "Registered" , чтобы убедиться, что мы подсчитываем только поездки, совершенные зарегистрированными пользователями.

  запрос = '''
ВЫБРАТЬ COUNT(*)FROM поездок
ЗДЕСЬ sub_type = "Зарегистрировано";
''
un_query(запрос)  

Этот запрос сработал и вернул ответ на наш вопрос.Но заголовок столбца не особенно описателен. Если бы кто-то другой посмотрел на эту таблицу, он бы не смог понять, что она означает.
Если мы хотим сделать наши результаты более читабельными, мы можем использовать AS , чтобы дать нашему выводу псевдоним (или псевдоним). Давайте повторно запустим предыдущий запрос, но дадим заголовку нашего столбца псевдоним Total Trips by Registered Users :

  запрос = '''
ВЫБРАТЬ COUNT(*) AS "Общее количество поездок зарегистрированных пользователей"
ROM поездки
ЗДЕСЬ sub_type = "Зарегистрировано";
''
un_query(запрос)  
Всего поездок зарегистрированных пользователей
0 1105192

Агрегированные функции

COUNT — не единственная математическая уловка, которая есть в SQL.Мы также можем использовать SUM , AVG , MIN и MAX для возврата суммы, среднего, минимума и максимума столбца соответственно. Они, наряду с COUNT , известны как агрегатные функции.

Итак, чтобы ответить на наш третий вопрос, «Какова была средняя продолжительность поездки?» , мы можем использовать функцию AVG для столбца duration (и снова использовать AS , чтобы дать нашему выходному столбцу более описательное имя):

  запрос = '''
ВЫБЕРИТЕ AVG(длительность) КАК "Средняя продолжительность"
ПЗУ поездки;
''
un_query(запрос)  
Средняя продолжительность
0 912.409682

Получается, что средняя продолжительность поездки составляет 912 секунд, что составляет около 15 минут. В этом есть смысл, поскольку мы знаем, что Hubway взимает дополнительную плату за поездки продолжительностью более 30 минут. Услуга предназначена для пассажиров, совершающих короткие поездки в один конец.

Как насчет нашего следующего вопроса, зарегистрированные или случайные пользователи совершают более длительные поездки? Мы уже знаем один способ ответить на этот вопрос — мы можем выполнить два запроса SELECT AVG(duration) FROM trips с предложениями WHERE , которые ограничивают один до «Зарегистрированных» и один до «Обычных» пользователей.

Но давайте по-другому. SQL также позволяет ответить на этот вопрос в одном запросе с помощью команды GROUP BY .

ГРУППА ПО

GROUP BY разделяет строки на группы на основе содержимого определенного столбца и позволяет нам выполнять агрегатные функции для каждой группы.

Чтобы лучше понять, как это работает, давайте взглянем на столбец пол . Каждая строка может иметь одно из трех возможных значений в столбце пол , «Мужской» , «Женский» или Нулевой (отсутствует; у нас нет данных пол для случайных пользователей).

Когда мы используем GROUP BY , база данных разделит каждую из строк на разные группы на основе значения в столбце пол , почти так же, как мы могли бы разделить колоду карт на разные масти. Мы можем представить себе две стопки, одну из всех самцов, другую из всех самок.

Когда у нас есть две отдельные стопки, база данных будет выполнять любые агрегатные функции в нашем запросе на каждой из них по очереди. Например, если бы мы использовали COUNT , запрос подсчитал бы количество строк в каждой стопке и вернул бы значение для каждой отдельно.

Давайте рассмотрим, как именно написать запрос, чтобы ответить на наш вопрос о том, совершают ли зарегистрированные или случайные пользователи более длительные поездки.

  • Как и в каждом из наших запросов, мы начнем с SELECT , чтобы сообщить базе данных, какую информацию мы хотим видеть. В этом случае нам понадобится sub_type и AVG(duration) .
  • Мы также включим GROUP BY sub_type , чтобы разделить наши данные по типу подписки и рассчитать средние значения для зарегистрированных и случайных пользователей отдельно.

Вот как выглядит код, когда мы сложим его вместе:

  запрос = '''
ВЫБЕРИТЕ подтип, AVG (продолжительность) AS «Средняя продолжительность»
ROM поездки
ГРУППИРОВАТЬ ПО подтипу;
''
un_query(запрос)  
подтип Средняя продолжительность
0 Повседневная 1519.643897
1 Зарегистрировано 657.026067

Какая разница! В среднем зарегистрированные пользователи совершают поездки, которые длятся около 11 минут, тогда как обычные пользователи тратят почти 25 минут на поездку.Зарегистрированные пользователи, вероятно, совершают более короткие и частые поездки, возможно, в рамках поездки на работу. С другой стороны, обычные пользователи тратят примерно в два раза больше времени на поездку.

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

Однако для целей этого руководства давайте двигаться дальше. Наш следующий вопрос был , какой велосипед использовался для большинства поездок? . Мы можем ответить на это, используя очень похожий запрос. Взгляните на следующий пример и посмотрите, сможете ли вы понять, что делает каждая строка — после этого мы пройдемся по ним шаг за шагом, чтобы вы могли убедиться, что все правильно:

  запрос = '''
ВЫБЕРИТЕ bike_number как "Номер велосипеда", COUNT(*) как "Количество поездок"
ROM поездки
ГРУППИРОВАТЬ ПО номеру велосипеда
ЗАКАЗАТЬ ПО СЧЕТУ(*) DESC
ИМИТ 1;
''
un_query(запрос)  
Номер велосипеда Количество поездок
0 B00490 2120

Как видно из вывода, велосипед B00490 совершал больше всего поездок.Давайте пробежимся по тому, как мы туда попали:

  • Первая строка — это предложение SELECT , сообщающее базе данных, что мы хотим видеть столбец bike_number и количество каждой строки. Он также использует AS , чтобы указать базе данных отображать каждый столбец с более удобным именем.
  • Во второй строке используется FROM , чтобы указать, что данные, которые мы ищем, находятся в таблице trips .
  • В третьей строке все становится немного сложнее.Мы используем GROUP BY , чтобы указать функции COUNT в строке 1 подсчитывать каждое значение для bike_number отдельно.
  • В четвертой строке у нас есть предложение ORDER BY для сортировки таблицы в порядке убывания и обеспечения того, чтобы наш наиболее часто используемый велосипед находился вверху.
  • Наконец, мы используем LIMIT , чтобы ограничить вывод первой строкой, которая, как мы знаем, будет велосипедом, использованным в наибольшем количестве поездок, из-за того, как мы отсортировали данные в четвертой строке.

Арифметические операторы

Наш последний вопрос немного сложнее остальных. Мы хотим знать среднюю продолжительность поездок зарегистрированных пользователей старше 30 лет .

Мы могли бы просто вычислить год, в котором родились 30-летние в нашей голове, а затем подставить его, но более элегантное решение — использовать арифметические операции непосредственно в нашем запросе. SQL позволяет нам использовать + , - , * и / для выполнения арифметической операции сразу над всем столбцом.

  запрос = '''
ВЫБРАТЬ AVG(длительность) из поездок
ЗДЕСЬ (2017 - дата_рождения) > 30;
''
un_query(запрос)  
СРЕДНЕЕ (длительность)
0 923.014685

ПРИСОЕДИНЯЙТЕСЬ

До сих пор мы рассматривали запросы, которые извлекают данные только из таблицы trips . Однако одна из причин, по которой SQL настолько эффективен, заключается в том, что он позволяет нам извлекать данные из нескольких таблиц в одном запросе.

Наша база данных велопроката содержит вторую таблицу, станций . Таблица station содержит информацию о каждой станции в сети Hubway и включает столбец id , на который ссылается таблица trips .

Прежде чем мы начнем работать с некоторыми реальными примерами из этой базы данных, давайте вернемся к гипотетической базе данных отслеживания заказов, которую мы использовали ранее. В этой базе данных у нас было две таблицы: заказов и клиентов , и они были связаны столбцом customer_id .

Допустим, мы хотели написать запрос, который возвращал order_number и name для каждого заказа в базе данных. Если бы они оба хранились в одной таблице, мы могли бы использовать следующий запрос:

  ВЫБЕРИТЕ номер_заказа, имя
диапазон>ОТ заказов;  

К сожалению, столбец order_number и столбец name хранятся в двух разных таблицах, поэтому нам нужно добавить несколько дополнительных шагов. Давайте уделим немного времени и подумаем, какие дополнительные вещи необходимо знать базе данных, прежде чем она сможет вернуть нужную нам информацию:

.
  • В какой таблице находится столбец order_number ?
  • В какой таблице находится столбец name ?
  • Как информация в таблице заказов связана с информацией в таблице клиентов ?

Чтобы ответить на первые два из этих вопросов, мы можем включить имена таблиц для каждого столбца в нашу команду SELECT .Мы делаем это просто, записывая имя таблицы и имя столбца, разделенные . . Например, вместо SELECT order_number, name мы напишем SELECT Orders.order_number, customers.name . Добавление здесь имен таблиц помогает базе данных находить искомые столбцы, сообщая ей, в какой таблице искать каждый из них.

Чтобы сообщить базе данных, как связаны таблицы заказов и клиентов , мы используем JOIN и ON . JOIN указывает, какие таблицы должны быть соединены, а ON указывает, какие столбцы в каждой таблице связаны между собой.

Мы собираемся использовать внутреннее соединение, что означает, что строки будут возвращены только в том случае, если есть совпадение в столбцах, указанных в ON . В этом примере мы хотим использовать JOIN для любой таблицы, которую мы не включили в команду FROM . Таким образом, мы можем использовать либо ОТ заказов ВНУТРЕННЕГО СОЕДИНЕНИЯ клиентов , либо ОТ клиентов ВНУТРЕННЕЕ ОБЪЕДИНЕНИЕ заказов .

Как мы обсуждали ранее, эти таблицы связаны по столбцу customer_id в каждой таблице. Поэтому мы будем использовать ON , чтобы сообщить базе данных, что эти два столбца ссылаются на одно и то же, например:

.
  ON заказы.customer_ID = customers.customer_id  

Мы снова используем . , чтобы убедиться, что база данных знает, в какой таблице находится каждый из этих столбцов. Поэтому, когда мы собираем все это вместе, мы получаем запрос, который выглядит следующим образом:

  ВЫБЕРИТЕ заказы.номер_заказа, имя_клиента
диапазон>ОТ заказов
span>ВНУТРЕННЕЕ СОЕДИНЕНИЕ клиентов
span>ON заказы.customer_id = customers.customer_id  

Этот запрос вернет номер каждого заказа в базе данных вместе с именем клиента, связанным с каждым.

Вернемся к нашей базе данных Hubway. Теперь мы можем написать несколько запросов, чтобы увидеть JOIN в действии.

Прежде чем мы начнем, мы должны взглянуть на остальные столбцы в таблице станций .Вот запрос, чтобы показать нам первые 5 строк, чтобы мы могли увидеть, как выглядит таблица станций :

  запрос = '''
ВЫБРАТЬ * ОТ станций
ИМИТ 5;
''
un_query(запрос)  
идентификатор станция муниципалитет лат длинный
0 3 Колледжи Фенуэя Бостон 42.340021 -71.100812
1 4 Тремонт-стрит на Беркли-стрит Бостон 42.345392 -71.069616
2 5 Северо-Восточный U / Северная парковка Бостон 42.341814 -71.0

3 6 Кембридж-стрит на Джой-стрит Бостон 42.361284999999995 -71.06514
4 7 Вентиляторный пирс Бостон 42.353412 -71.044624
  • id — Уникальный идентификатор для каждой станции (соответствует столбцам start_station и end_station в таблице trips )
  • станция — Название станции
  • муниципалитет — Муниципалитет, в котором находится станция (Бостон, Бруклин, Кембридж или Сомервилл)
  • lat — Широта станции
  • lng — Долгота станции
  • Какие станции чаще всего используются для поездок туда и обратно?
  • Сколько поездок начинается и заканчивается в разных муниципалитетах?

Как и раньше, мы попытаемся ответить на некоторые вопросы в данных, начиная с , какая станция является наиболее частой отправной точкой? Давайте рассмотрим это шаг за шагом:

  • Сначала мы хотим использовать SELECT для возврата столбца station из таблицы station и COUNT количества строк.
  • Затем мы указываем таблицы, которые мы хотим ПРИСОЕДИНИТЬ , и говорим базе данных соединить их ON столбец start_station в таблице trips и столбец id в таблице station .
  • Затем мы переходим к сути нашего запроса – мы ГРУППИРУЕМ ПО столбец станция в таблице станций , чтобы наш COUNT подсчитывал количество поездок для каждой станции отдельно
  • Наконец-то мы можем ORDER BY наши COUNT и LIMIT вывод управляемого количества результатов
  запрос = '''
ВЫБРАТЬ станции.станция КАК "Станция", COUNT(*) КАК "Количество"
ROM отключает станции INNER JOIN
N trips.start_station = station.idGROUP BY station.stationORDER BY COUNT(*) DESC
ИМИТ 5;
''
un_query(запрос)  
Станция Граф
0 Южный вокзал – 700 Атлантик-авеню 56123
1 Бостонская публичная библиотека – 700 Boylston St. 41994
2 Чарльз Серкл – Чарльз Ст.на Кембридж-стрит 35984
3 Бикон-стрит / Масс-авеню 35275
4 Массачусетский технологический институт на Масс-авеню / Амхерст-стрит 33644

Если вы знакомы с Бостоном, то поймете, почему это самые популярные станции. Южный вокзал — одна из главных станций пригородной железной дороги в городе, Чарльз-стрит проходит вдоль реки рядом с некоторыми красивыми живописными маршрутами, а улицы Бойлстон и Бикон проходят прямо в центре города рядом с несколькими офисными зданиями.

Следующий вопрос, который мы рассмотрим, это , какие станции чаще всего используются для поездок туда и обратно? Мы можем использовать тот же запрос, что и раньше. Мы будем SELECT те же выходные столбцы и JOIN таблицы таким же образом, но на этот раз мы добавим предложение WHERE , чтобы ограничить наш COUNT поездками, где start_station совпадает с конечная_станция .

  запрос = '''ВЫБЕРИТЕ station.station AS "Станция", COUNT(*) AS "Count"
ROM отключает станции INNER JOIN
N поездок.start_station = station.id
ЗДЕСЬ trips.start_station = trips.end_station
ГРУППИРОВАТЬ ПО станциям.станция
ЗАКАЗАТЬ ПО СЧЕТУ(*) DESC
ИМИТ 5;
''
un_query(запрос)  
Станция Граф
0 Эспланада — Бикон-стрит на Арлингтон-стрит 3064
1 Чарльз Серкл — Чарльз-стрит на Кембридж-стрит 2739
2 Бостонская публичная библиотека – 700 Boylston St. 2548
3 Бойлстон-стрит на Арлингтон-стрит 2163
4 Бикон-стрит / Масс-авеню 2144

Как мы видим, количество этих станций такое же, как и в предыдущем вопросе, но их количество намного меньше. Самые загруженные станции по-прежнему остаются самыми загруженными станциями, но в целом более низкие цифры говорят о том, что люди обычно используют велосипеды Hubway, чтобы добраться из точки А в точку Б, а не ездят на велосипеде некоторое время, прежде чем вернуться туда, где они начали.

Здесь есть одно существенное отличие — Эспланда, которая не была одной из самых загруженных станций по нашему первому запросу, оказывается самой загруженной для поездок туда и обратно. Почему? Что ж, картинка стоит тысячи слов. Это, безусловно, хорошее место для велопрогулки:

К следующему вопросу: сколько поездок начинается и заканчивается в разных муниципалитетах? Этот вопрос делает шаг вперед. Мы хотим знать, сколько поездок начинается и заканчивается в другом муниципалитете .Для этого нам нужно ПРИСОЕДИНИТЬСЯ к таблице trips к таблице станций дважды. Один раз ON столбец start_station , а затем ON столбец end_station .

Чтобы сделать это, мы должны создать псевдоним для таблицы station , чтобы мы могли различать данные, относящиеся к start_station , и данные, относящиеся к end_station . Мы можем сделать это точно так же, как мы создавали псевдонимы для отдельных столбцов, чтобы они отображались с более интуитивно понятным именем, используя AS .

Например, мы можем использовать следующий код для ПРИСОЕДИНЯЙТЕ таблицу станций к таблице trips , используя псевдоним «старт». Затем мы можем объединить «начало» с именами наших столбцов, используя . для ссылки на данные, поступающие из этого конкретного JOIN (вместо второго JOIN мы будем делать ON в столбце end_station ):

  ВНУТРЕННЕЕ СОЕДИНЕНИЕ станций КАК старт ВКЛ trips.start_station = start.идентификатор  

Вот как будет выглядеть окончательный запрос, когда мы его запустим. Обратите внимание, что мы использовали <> для представления «не равно», но != также подойдет.

  запрос =
размах>'''
ВЫБРАТЬ COUNT(trips.id) КАК "Count"
ROM отключает станции INNER JOIN AS start
N trips.start_station = start.id
NNER JOIN станции AS конец
N trips.end_station = end.id
ЗДЕСЬ start.municipality <> end.municipality;
''
un_query(запрос)  

Это показывает, что около 300 000 из 1.5 миллионов поездок (или 20%) закончились в другом муниципалитете, чем они начали — еще одно свидетельство того, что люди в основном используют велосипеды Hubway для относительно коротких поездок, а не для длительных поездок между городами.

Если вы дошли до этого места, поздравляем! Вы начали осваивать основы SQL. Мы рассмотрели ряд важных команд, SELECT , LIMIT , WHERE , ORDER BY , GROUP BY и JOIN , а также агрегатные и арифметические функции.Это даст вам прочную основу для продолжения вашего пути к SQL.

Вы освоили основы SQL. Что теперь?

После изучения этого руководства по SQL для начинающих вы сможете выбрать интересующую вас базу данных и написать запросы для извлечения информации. Хорошим первым шагом может быть продолжение работы с базой данных Hubway, чтобы посмотреть, что еще вы можете узнать. Вот еще несколько вопросов, на которые вы, возможно, захотите ответить:

  • За сколько поездок взимается дополнительная плата (длительностью более 30 минут)?
  • Какой велосипед использовался дольше всего?
  • Зарегистрированные или случайные пользователи совершили больше поездок туда и обратно?
  • Какой муниципалитет имел самую большую среднюю продолжительность?

Если вы хотите пойти дальше, ознакомьтесь с нашими интерактивными курсами SQL, которые охватывают все, что вам нужно знать, от начального до продвинутого уровня SQL для работы аналитика данных и специалиста по данным.

Вы также можете прочитать наш пост об экспорте данных из ваших SQL-запросов в Pandas или ознакомиться с нашей памяткой по SQL и нашей статьей о сертификации SQL.

Изучайте SQL правильно!

  • Написание реальных запросов
  • Работа с реальными данными
  • Прямо в браузере!

Зачем пассивно смотреть видеолекции, если можно учиться, делая ?

Зарегистрируйтесь и начните обучение!
Метки

Об авторе

Джеймс Коу

Профессиональный пенсионный аналитик, фотограф-любитель, бостонский спортивный болельщик

SQL Tutorial — Изучите лучшее онлайн-руководство для начинающих

СЛЕДУЮЩИЙ
Учебник по SQL

— SQL упоминается как язык структурированных запросов, стандартный язык запросов, сертифицированный ANSI и ISO.SQL используется для доступа к различным базам данных, таким как SQL Server, MySQL, MS Access, Sybase, Oracle, DB2, Informix и Teradata и т. д.

В этом руководстве по SQL вы узнаете, как использовать язык SQL для

  • Храните, извлекайте и управляйте данными на сервере SQL.
  • Выбор, вставка, обновление и удаление строк в таблицах SQL.
  • Создание базы данных и таблиц на сервере SQL и всех других концепциях SQL.

Это руководство по SQL предназначено для новичков, которые только начинают изучать SQL, студентов, а также для разработчиков корпоративного уровня, которые хотят изучить и освежить свои навыки SQL.

В этом руководстве по SQL рассматриваются все следующие темы:

Основы SQL

Язык SQL — Введение:

Язык структурированных запросов (SQL) разделен на следующие основные аспекты. Это: 1. Язык определения данных — DDL 2. Язык обработки данных — DML 3. Язык управления данными — DCL….подробнее…

SQL — Типы данных:

Формат хранения данных объекта определяется типами данных SQL. Эти объекты могут быть переменными, столбцами или выражениями, а данные могут быть числовыми, символьными, строковыми, двоичными, датой и временем….больше…

SQL — операторы и выражения:

Символы, которые используются для выполнения логических и математических операций в SQL, называются операторами. Типы операторов, используемых в SQL. 1. Арифметические операторы 2. Операторы сравнения 3. Логические операторы….подробнее…

SQL — выберите:

Оператор SELECT в SQL используется для выбора данных из базы данных. Либо мы можем выбрать все столбцы из таблицы, либо можем выбрать только определенный столбец, используя оператор select в SQL.Все выбранные данные сохраняются в таблице результатов, которая также называется набором результатов. Синтаксис оператора выбора SQL:….подробнее…

SQL – вставить в:

Оператор INSERT INTO в SQL используется для вставки новых записей в таблицу. Либо мы можем вставить новую запись для всех столбцов, либо можем вставить значения только для определенных столбцов, используя оператор INSERT INTO в SQL. Синтаксис оператора SQL INSERT INTO….подробнее…

SQL — обновление:

Оператор UPDATE в SQL используется для обновления/изменения существующих записей/значений в таблице.Либо мы можем обновить все существующие записи для всех столбцов в таблице, либо можем обновить только определенные столбцы и определенные записи в таблице, используя оператор UPDATE в SQL. Синтаксис инструкции SQL UPDATE….подробнее…

SQL — удалить:

Оператор DELETE в SQL используется для удаления существующих записей в таблице. Либо мы можем удалить все существующие записи в таблице, либо можем удалить только определенные записи в таблице, используя оператор DELETE в SQL. Синтаксис оператора SQL DELETE:….больше…

Учебное пособие по SQL — предложения и операторы

SQL — отдельный/уникальный:

Ключевое слово DISTINCT или UNIQUE в SQL используется с оператором/запросом SELECT для выбора только уникальных записей из таблицы, т. е. удаляет все повторяющиеся записи из таблицы….подробнее…

SQL — где:

Предложение WHERE в SQL используется с операторами/запросами SELECT, UPDATE и DELETE для выбора, обновления и удаления только определенных записей из таблицы, которые соответствуют условию, указанному в предложении WHERE.т.е. Он фильтрует записи из таблицы в соответствии с условием where….more…

SQL — операторы LIKE и подстановочные знаки:

Оператор LIKE в SQL используется с предложением WHERE для поиска определенных шаблонов в столбце. Чтобы сделать поиск эффективным, в SQL доступны 2 подстановочных оператора, которые используются вместе с оператором LIKE. Это % (процент) и _ (подчеркивание). Операторы подстановки используются вместо одного или нескольких символов при поиске….подробнее…

SQL – Заказать по:

Предложение ORDER BY в SQL используется для сортировки данных, выбранных из таблицы.Предложение ORDER BY сортирует данные либо по возрастанию, либо по убыванию, используя один или несколько столбцов. По умолчанию результирующий набор запроса отсортирован по возрастанию….подробнее…

SQL – И, ИЛИ:

Операторы И, ИЛИ в SQL используются с операторами/запросами SELECT, UPDATE и DELETE для выбора, обновления и удаления только определенных записей в таблице, которые соответствуют условию, указанному в предложении WHERE, и условиям, заданным в операторах И, ИЛИ. т.е. он фильтрует записи из таблицы в соответствии с условием….больше…

SQL – ВНУТРИ, НЕ В

Операторы IN, NOT IN в SQL используются с операторами/запросами SELECT, UPDATE и DELETE для выбора, обновления и удаления только определенных записей в таблице, которые соответствуют условию, указанному в предложении WHERE, и условиям, заданным в операторах IN, NOT IN. т.е. фильтрует записи из таблицы по условию….подробнее…

SQL — НУЛЕВОЕ И НЕ НУЛЕВОЕ

Как правило, данные NULL представляют данные, которые не существуют, отсутствующие данные или неизвестные данные.IS NULL и IS NOT NULL в SQL используются с предложением WHERE в операторах/запросах SELECT, UPDATE и DELETE, чтобы проверить, имеет ли столбец какое-либо значение или данные не существуют для этого столбца. Обратите внимание, что NULL и 0 — это не одно и то же. Столбец со значением NULL не имеет значения, он пуст….подробнее…

SQL – МЕЖДУ… И & НЕ МЕЖДУ… И:

Операторы BETWEEN…AND в SQL используются для выбора промежуточных значений из заданного диапазона/значений. Он используется в предложении WHERE в операторах/запросах SELECT, UPDATE и DELETE….больше…

SQL — выберите… в:

Оператор SELECT INTO в SQL используется для выбора данных из таблицы и вставки выбранных данных в другую таблицу. т.е. он копирует данные из одной таблицы в другую таблицу. Либо мы можем скопировать все данные или частичные данные из одной таблицы в другую….подробнее…

SQL — Верх:

Предложение SELECT…TOP в SQL используется для указания количества строк или процента строк, которые должны быть выбраны из таблицы с помощью запроса SELECT. Это предложение TOP очень полезно в больших таблицах, где есть вероятность проблем с производительностью при выборе тысяч записей.Таким образом, мы можем выбрать только несколько записей из больших таблиц в соответствии с нашими потребностями….подробнее…

SQL — Псевдоним:

Псевдоним в SQL используется для временного переименования столбца или таблицы путем присвоения другого имени. Это не повлияет на фактическое имя столбца или таблицы….подробнее…

Учебник по SQL — JOINS

SQL — внутреннее соединение:

INNER JOIN в SQL используется для объединения двух или более таблиц с использованием совпадающих столбцов из обеих таблиц. Выбраны все совпадающие записи столбца…

SQL — левое соединение:

QL LEFT JOIN используется для объединения двух таблиц.LEFT JOIN выбирает все записи из левой таблицы, а также выбирает все совпадающие записи из правой таблицы…

SQL — правое соединение:

SQL RIGHT JOIN используется для объединения двух таблиц. RIGHT JOIN выбирает все записи из правой таблицы, а также выбирает все совпадающие записи из левой таблицы…

SQL — полное соединение, самосоединение, декартово или перекрестное соединение:

SQL FULL JOIN используется для объединения двух таблиц. FULL JOIN выбирает и возвращает все записи как из левой, так и из правой таблицы и отображает в выходных данных…

SQL — ОБЪЕДИНЕНИЕ И ОБЪЕДИНЕНИЕ ВСЕ:

Предложение SQL UNION используется для объединения двух таблиц.Будет 2 отдельных SELECT SQL, которые объединены с помощью предложения UNION…

SQL – ПЕРЕСЕЧЕНИЕ И ИСКЛЮЧЕНИЕ:

SQL UNION ALL также совпадает с предложением SQL UNION. Но UNION ALL возвращает все записи из обеих таблиц, включая дубликаты…

Учебник по SQL

— Функции:

Функция SQL – это группа инструкций, объединенных вместе для выполнения задачи. В SQL так много встроенных функций для выполнения многих арифметических задач. Они,

  1. Агрегированные функции
  2. Скалярные функции
  3. Группировка по функциям
  4. Наличие функции

Учебник по SQL — База данных и таблицы:

В этом руководстве по SQL рассказывается, как создавать базу данных, таблицы и индексы, а также как изменять и удалять их при необходимости.Кроме того, все приведенные ниже концепции также подробно объясняются в этом руководстве.

  1. SQL — создать БД, таблицу и индекс
  2. SQL — изменить БД, таблицу и индекс
  3. SQL — удалить БД, таблицу и индекс
  4. SQL — усечение
  5. SQL — ограничения
  6. SQL — не нуль
  7. SQL — уникальный
  8. SQL — первичный и составной ключ
  9. SQL — внешний ключ
  10. SQL — автоматическое увеличение
  11. SQL — по умолчанию
  12. SQL — проверить
  13. SQL — просмотров

СПРАВОЧНИКИ ЭЛЕКТРОННЫЕ КНИГИ И ИССЛЕДОВАТЕЛЬСКИЕ СТАТЬИ:
  • Язык SQL — Дон Чемберлин, Исследовательский центр IBM Almaden, Сан-Хосе, Калифорния
СЛЕДУЮЩИЙ

Нравится? Пожалуйста, расскажите!

Как писать простые запросы

Как сделать запрос к базе данных SQL:

  1. Убедитесь, что у вас есть приложение для управления базой данных (например,MySQL Workbench, Sequel Pro).
  2. Если нет, загрузите приложение для управления базой данных и обратитесь в свою компанию, чтобы подключить базу данных.
  3. Разберитесь со своей базой данных и ее иерархией.
  4. Узнайте, какие поля есть в ваших таблицах.
  5. Начните писать запрос SQL, чтобы получить нужные данные.

Вы когда-нибудь слышали о компьютерном языке под названием SQL? Возможно, вы слышали об этом в контексте анализа данных, но никогда не думали, что это применимо к вам как к маркетологу.Или вы, возможно, подумали про себя: «Это для действительно продвинутых пользователей данных. Я бы никогда не смог этого сделать».

Что ж, ошибаться нельзя! Самые успешные маркетологи управляются данными, и одна из самых важных частей управления данными — возможность быстро собирать данные из баз данных. SQL — один из лучших и самых популярных инструментов для этой цели.

SQL означает Structured Query Language, и он используется, когда у компаний есть масса данных, которыми они хотят легко и быстро манипулировать.Если ваша компания уже хранит данные в базе данных, вам может потребоваться изучить SQL для доступа к данным. Но не беспокойтесь — вы находитесь в правильном месте, чтобы начать!

Прежде чем мы начнем, убедитесь, что у вас есть приложение для управления базой данных, которое позволит вам извлекать данные из базы данных. Некоторые варианты включают MySQL Workbench или Sequel Pro. Начните с загрузки одного из этих вариантов, а затем поговорите со своей компанией о том, как подключиться к вашей базе данных. Выбранный вами вариант будет зависеть от серверной части вашего продукта, поэтому проконсультируйтесь с командой по продукту, чтобы убедиться, что вы выбрали правильный вариант.

Давайте сразу приступим.

Зачем использовать SQL?

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

Если вы работаете в компании-разработчике программного обеспечения и хотите получить данные об использовании ваших клиентов, вы можете сделать это с помощью SQL. Если вы работаете в компании электронной коммерции, у которой есть данные о покупках клиентов, вы можете использовать SQL, чтобы узнать, какие клиенты покупают какие продукты. Конечно, это лишь некоторые из множества примеров.

Подумайте об этом так: вы когда-нибудь открывали очень большой набор данных в Excel только для того, чтобы ваш компьютер завис или даже выключился? SQL позволяет вам получать доступ только к определенным частям ваших данных за раз, поэтому вам не нужно загружать данные в CSV, манипулировать ими и, возможно, перегружать Excel. Другими словами, SQL позаботится об анализе данных, который вы, возможно, привыкли делать в Excel. (Если вы хотите подробнее изучить этот аспект SQL, вот запись в блоге, которая поможет вам начать работу.)

Как писать простые SQL-запросы

Понимание иерархии вашей базы данных

Прежде чем приступить к работе, важно ознакомиться с вашей базой данных и ее иерархией.Если у вас есть несколько баз данных данных, вам нужно сосредоточиться на расположении данных, с которыми вы хотите работать.

Например, давайте представим, что мы работаем с несколькими базами данных о людях в Соединенных Штатах. Введите запрос «ПОКАЗАТЬ БАЗЫ ДАННЫХ;». Наши результаты могут показать, что у вас есть несколько баз данных для разных местоположений, в том числе одна для Новой Англии.

В базе данных у вас будут разные таблицы, содержащие данные, с которыми вы хотите работать. Используя тот же пример выше, предположим, что мы хотим узнать, какая информация содержится в одной из баз данных.Если мы воспользуемся запросом «ПОКАЗАТЬ ТАБЛИЦЫ в Новой Англии;», мы обнаружим, что у нас есть таблицы для каждого штата Новой Англии: people_connecticut, people_maine, people_massachusetts, people_newhampshire, people_rhodeisland и people_vermont.

Наконец, вам нужно узнать, какие поля есть в таблицах. Поля — это определенные фрагменты данных, которые вы можете извлечь из своей базы данных. Например, если вы хотите получить чей-то адрес, имя поля может быть не просто «адрес» — оно может быть разделено на адрес_город, адрес_штат, адрес_zip.Для того, чтобы это выяснить, используйте запрос «Describe people_massachusetts;». Это предоставит список всех данных, которые вы можете получить с помощью SQL.

Давайте сделаем быстрый обзор иерархии, используя наш пример Новой Англии:

  • Наша база данных: NewEngland.
  • Наши таблицы в этой базе данных:
  • Наши поля в таблице people_massachusetts включают: address_city, address_state, address_zip, hair_color, first_name и last_name.

Теперь, чтобы научиться писать простой SQL-запрос, давайте воспользуемся следующим примером:

Кто эти люди с рыжими волосами из Массачусетса, родившиеся в 2003 году, расположенные в алфавитном порядке?

ВЫБЕРИТЕ

SELECT выбирает поля, которые вы хотите отобразить на диаграмме. Это конкретная часть информации, которую вы хотите извлечь из своей базы данных. В приведенном выше примере мы хотим найти человек из , которые соответствуют остальным критериям.

Вот наш SQL-запрос:

SELECT
     имя,
     фамилия

ИЗ

FROM указывает таблицу, из которой вы хотите извлечь данные. В предыдущем разделе мы обнаружили, что существует шесть таблиц для каждого из шести штатов Новой Англии: people_connecticut, people_maine, people_massachusetts, people_newhampshire, people_rhodeisland и people_vermont. Поскольку мы ищем людей именно в Массачусетсе, мы будем извлекать данные из этой конкретной таблицы.

Вот наш SQL-запрос:

ВЫБЕРИТЕ
     имя,
     фамилия
ИЗ
     люди_массачусетс 0

ГДЕ

WHERE позволяет отфильтровать запрос, чтобы сделать его более конкретным. В нашем примере мы хотим отфильтровать наш запрос, чтобы включить только людей с рыжими волосами, которые родились в 2003 году. Начнем с фильтра рыжих волос.

Вот наш SQL-запрос:

Выбрать
First_name,

от
от
MACE_Massachusetts
Где
Heail_Color = «Red»

hair_color мог бы быть частью вашего первоначального оператора SELECT, если бы вы хотели посмотреть на всех людей в Массачусетсе вместе с их конкретным цветом волос.Но если вы хотите отфильтровать только человека с рыжими волосами, вы можете сделать это в операторе WHERE.

И

AND позволяет добавить дополнительные критерии в оператор WHERE. Помните, что мы хотим отфильтровать людей с рыжими волосами в дополнение к людям, родившимся в 2003 году. Поскольку наше утверждение WHERE используется по критериям рыжих волос, как мы можем фильтровать также и по определенному году рождения?

Здесь на помощь приходит оператор AND. В данном случае оператор AND является свойством даты, но это не обязательно.(Примечание: проверьте формат дат вместе с командой по продукту, чтобы убедиться, что формат правильный.)

Вот наш SQL-запрос:

Выбор
First_name,

от
от


0
Откуда
Hair_Color = «Red»
и
2003-12-31′

ЗАКАЗАТЬ

При создании SQL-запросов вам не нужно экспортировать данные в Excel.Расчет и организация должны быть выполнены в рамках запроса. Вот тут-то и появляются функции «ORDER BY» и «GROUP BY». Сначала мы рассмотрим наши SQL-запросы с функциями ORDER BY, а затем GROUP BY соответственно. Затем мы кратко рассмотрим разницу между ними.

Ваше предложение ORDER BY позволит вам сортировать по любому из полей, которые вы указали в операторе SELECT. В этом случае давайте сортировать по фамилии.

Вот наш SQL-запрос:

Выбор
First_name,

от
от


0
Откуда
Hair_Color = «Red»
и
31-12-2003′
ЗАКАЗАТЬ
     фамилия
;

ГРУППА ПО

«GROUP BY» похож на «ORDER BY», но объединяет сходные данные.Например, если в ваших данных есть дубликаты, вы можете использовать функцию «ГРУППИРОВАТЬ ПО», чтобы подсчитать количество дубликатов в ваших полях.

Вот ваш SQL-запрос:

Выбор
First_name,

от
от


0
Откуда
Hair_Color = «Red»
и
31.12.2003′
ГРУППА BY
     last_name
;

ЗАКАЗ ПО VS.СГРУППИРОВАТЬ ПО

Чтобы наглядно показать вам разницу между оператором «ORDER BY» и оператором «GROUP BY», давайте ненадолго отвлечемся от нашего примера из Массачусетса и рассмотрим очень простой набор данных. Ниже приведен список идентификационных номеров и имен четырех сотрудников.

Если бы мы использовали оператор ORDER BY в этом списке, имена сотрудников были бы отсортированы в алфавитном порядке. Результаты будут выглядеть так:

Если бы мы использовали оператор GROUP BY, сотрудники подсчитывались бы на основе того, сколько раз они появлялись в исходной таблице.Обратите внимание, что Петр появился в исходной таблице дважды. Результаты будут выглядеть так:

Пока со мной? Хорошо. Вернемся к созданному нами SQL-запросу о рыжеволосых людях из Массачусетса, родившихся в 2003 году.

ПРЕДЕЛ

В зависимости от объема данных в базе данных выполнение запросов может занять много времени. Это может быть неприятно, если вы обнаружите, что долго ждете выполнения запроса, с которого вы на самом деле не хотели начинать.Если вы хотите протестировать наш запрос, отлично подойдет функция LIMIT, поскольку она позволяет ограничить количество получаемых результатов.

Например, если мы подозреваем, что в Массачусетсе есть миллионы рыжеволосых людей, мы можем проверить наш запрос с помощью LIMIT, прежде чем запускать его полностью, чтобы убедиться, что мы получаем нужную информацию. Предположим, например, что нам нужны только первые 100 человек.

Вот наш SQL-запрос:

Выбор
First_name,

от
от


0
Откуда
Hair_Color = «Red»
и
31-12-2003′
ЗАКАЗАТЬ
     last_name
LIMIT
     100
9 ;

Вот и все основы!

Хорошо себя чувствуешь? Вот несколько других способов поднять ваши SQL-запросы на ступеньку выше.

Бонус

: расширенные советы по SQL

Теперь, когда вы освоили создание SQL-запроса, давайте рассмотрим некоторые другие приемы, которые вы можете использовать, чтобы поднять его на ступеньку выше, начиная со звездочки.

*

Когда вы добавляете звездочку к одному из своих SQL-запросов, это означает, что вы хотите включить в результаты все столбцы данных. В примере, который мы использовали, у нас было только два имени столбца: first_name и last_name. Но предположим, что у нас есть 15 столбцов данных, которые мы хотим видеть в наших результатах. Вводить названия всех 15 столбцов в операторе SELECT было бы непросто.Вместо этого, если вы замените имена этих столбцов звездочкой, запрос будет знать, что все столбцы будут включены в результаты.

Вот как будет выглядеть SQL-запрос:

Выбор
*
от



Откуда
Hair_color = "Red"
и
onity_date между '2003-01-01' и '2003-12-31 '
ORDER BY
     last_name
LIMIT
     100
;

ПОСЛЕДНИЕ 30 ДНЕЙ

Когда я начал регулярно использовать SQL, я обнаружил, что один из моих основных запросов связан с попыткой выяснить, какие люди предприняли действие или выполнили определенный набор критериев за последние 30 дней.Поскольку этот тип запроса был очень полезен для меня, я хотел поделиться этой возможностью с вами.

Предположим, что сегодня 1 декабря 2014 года. Вы могли бы  создать эти параметры, задав диапазон даты рождения между 1 ноября 2014 г. и 30 ноября 2014 года. Этот SQL-запрос будет выглядеть следующим образом:

Выбрать


от
от



Откуда
Hair_color = "Red"
и
onity_date между '2014-11-01 30.11.2014'
ЗАКАЗАТЬ
     last_name
LIMIT
     100
9 ;

Но для этого нужно подумать о том, какие даты охватывают последние 30 дней, а это означает, что вам придется постоянно обновлять этот запрос.Вместо этого, чтобы даты автоматически охватывали последние 30 дней, независимо от того, какой сегодня день, вы можете ввести это в разделе AND:birth_date >= (DATE_SUB(CURDATE(),INTERVAL 30.

).

(Примечание. Вы должны перепроверить этот синтаксис вместе с командой разработчиков, поскольку он может отличаться в зависимости от программного обеспечения, которое вы используете для извлечения запросов SQL.)

Таким образом, ваш SQL-запрос будет выглядеть следующим образом:

Выбрать
First_Name,


от
от


Откуда
Heail_Color = "Red"
и
onity_date> = (date_sub (curdate (), интервал 30))
ORDER BY
     last_name
LIMIT
     100
;

СЧЕТ

В некоторых случаях может потребоваться подсчитать, сколько раз появляется критерий поля.Например, предположим, вы хотите подсчитать, сколько раз разные цвета волос появляются у людей, которых вы подсчитываете, из Массачусетса. В этом случае COUNT пригодится, так что вам не придется вручную складывать количество людей с разными цветами волос или экспортировать эту информацию в Excel.

Вот как будет выглядеть этот SQL-запрос:

Выбрать
Heail_Color,
Количество (Heail_color)
от



и
и

onity_date между '2003-01-01' и '2003-12-31'
GROUP BY
     hair_color
;  

ПРИСОЕДИНЯЙТЕСЬ

Может возникнуть ситуация, когда вам потребуется получить доступ к информации из двух разных таблиц в одном SQL-запросе.В SQL для этого можно использовать предложение JOIN. (Для тех из вас, кто знаком с формулами Excel, это похоже на то, как вы используете формулу ВПР, когда вам нужно объединить информацию из двух разных листов в Excel.)

Например, предположим, что у нас есть одна таблица, содержащая данные обо всех идентификаторах пользователей жителей Массачусетса и датах их рождения. Допустим, у нас также есть совершенно отдельная таблица, в которой есть данные обо всех идентификаторах пользователей жителей Масачусетса и их цвете волос. Если мы хотим определить цвет волос жителей Массачусетса, родившихся в 2003 году, нам потребуется получить доступ к информации из обеих таблиц и объединить их.Это работает, потому что обе таблицы имеют совпадающий столбец: идентификаторы пользователей жителей Массачусетса.

Поскольку мы вызываем поля из двух разных таблиц, наша инструкция SELECT также немного изменится. Вместо того, чтобы просто перечислять поля, которые мы хотим включить в наши результаты, нам нужно указать, из какой таблицы они берутся. (Примечание. Здесь может пригодиться функция звездочки, чтобы ваш запрос включал в результаты обе таблицы.)

Чтобы указать поле из определенной таблицы, все, что нам нужно сделать, — это скомбинировать имя таблицы с именем поля.Например, в нашем операторе SELECT будет указано «table.field» — с точкой, разделяющей имя таблицы и имя поля.

Давайте посмотрим, как это выглядит в действии.

В этом случае мы предполагаем несколько вещей:

  1. Таблица дат рождения штата Массачусетс включает следующие поля: first_name, last_name, user_id, дата рождения
  2. Таблица цветов волос штата Массачусетс включает следующие поля: user_id, hair_color

Таким образом, ваш запрос SQL будет выглядеть так:

ВЫБЕРИТЕ
      дата_рождения_массачусетс. имя_имя, 
      дата рождения_массачусетс. LAST_NAME

от
от
РодительДозит_Массачусетс Присоединяйтесь к Gaincolor_Massachusetts Использование (user_id)
Где
Heail_Color = "Red"
и
onity_date между '2003-01-01' и "2003-12 31'
ЗАКАЗАТЬ
     last_name
;
 

Этот запрос соединит две таблицы с помощью поля user_id, которое присутствует как в таблице Birthday_massachusetts, так и в таблице haircolor_massachusetts.Тогда вы сможете увидеть таблицу людей, родившихся в 2003 году, с рыжими волосами.

Поздравляем: вы готовы приступить к работе со своими собственными SQL-запросами! Хотя с помощью SQL можно делать намного больше, я надеюсь, что этот обзор основ был вам полезен, так что вы можете запачкать руки. Имея прочную основу основ, вы сможете лучше ориентироваться в SQL и работать над некоторыми более сложными примерами.

Какие данные вы хотите получить с помощью SQL?

Учебник по изучению SQL — javatpoint

Учебное пособие по SQL

содержит базовые и расширенные концепции SQL.Наш учебник по SQL предназначен как для начинающих, так и для профессионалов.

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

SQL — это не система баз данных, а язык запросов.

Предположим, вы хотите выполнять запросы языка SQL к сохраненным данным в базе данных. В ваших системах требуется установить любую систему управления базами данных, например, Oracle, MySQL, MongoDB, PostgreSQL, SQL Server, DB2 и т. д.

Что такое SQL?

SQL — это краткая форма языка структурированных запросов, произносимая как S-Q-L или иногда как See-Quell.

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

Вы можете легко создавать и управлять базой данных, получать доступ и изменять строки и столбцы таблицы и т. д.Этот язык запросов стал стандартом ANSI в 1986 году и ISO в 1987 году.

Если вы хотите получить работу в области науки о данных, то это самый важный язык запросов для изучения. Крупные предприятия, такие как Facebook, Instagram и LinkedIn, используют SQL для хранения данных в серверной части.

Почему SQL?

В настоящее время SQL широко используется в науке о данных и аналитике. Ниже приведены причины, объясняющие его широкое использование:

  • Основное использование SQL для специалистов по данным и пользователей SQL заключается в вставке, обновлении и удалении данных из реляционной базы данных.
  • SQL позволяет специалистам по данным и пользователям извлекать данные из систем управления реляционными базами данных.
  • Это также помогает им описывать структурированные данные.
  • Позволяет пользователям SQL создавать, удалять и манипулировать базой данных и ее таблицами.
  • Это также помогает в создании представления, хранимой процедуры и функций в реляционной базе данных.
  • Позволяет вам определять данные и изменять сохраненные данные в реляционной базе данных.
  • Это также позволяет пользователям SQL устанавливать разрешения или ограничения для столбцов таблиц, представлений и хранимых процедур.

История SQL

«Реляционная модель данных для больших общих банков данных» — статья, опубликованная великим ученым-компьютерщиком Э. Ф. Коддом в 1970 году.

Исследователи IBM Рэймонд Бойс и Дональд Чемберлин первоначально разработали SEQUEL (язык структурированных английских запросов) после изучения статьи, предоставленной Э. Ф. Коддом.Они оба разработали SQL в исследовательской лаборатории корпорации IBM в Сан-Хосе в 1970 году.

В конце 1970-х компания Relational Software Inc. разработала свой первый SQL, используя концепции Э. Ф. Кодда, Рэймонда Бойса и Дональда Чемберлина. Этот SQL был полностью основан на СУБД. Relational Software Inc., известная сейчас как Oracle Corporation, представила Oracle V2 в июне 1979 года, которая является первой реализацией языка SQL. Эта версия Oracle V2 работает на компьютерах VAX.

Процесс SQL

Когда мы выполняем команду SQL в любой системе управления реляционной базой данных, система автоматически находит наилучшую процедуру для выполнения нашего запроса, а механизм SQL определяет, как интерпретировать эту конкретную команду.

Язык структурированных запросов содержит в своем процессе следующие четыре компонента:

  • Диспетчер запросов
  • Механизмы оптимизации
  • Классический механизм запросов
  • Механизм запросов SQL и т. д.

Классический механизм запросов позволяет специалистам по данным и пользователям выполнять запросы, отличные от SQL. Архитектура SQL показана на следующей диаграмме:

Некоторые команды SQL

Команды SQL помогают в создании базы данных и управлении ею. Ниже перечислены наиболее часто используемые команды SQL:

.
  1. Команда СОЗДАТЬ
  2. Команда ОБНОВЛЕНИЯ
  3. УДАЛИТЬ команду
  4. ВЫБОР команды
  5. Команда DROP
  6. Команда ВСТАВИТЬ

Команда СОЗДАТЬ

Эта команда помогает создать новую базу данных, новую таблицу, табличное представление и другие объекты базы данных.

Команда ОБНОВЛЕНИЯ

Эта команда помогает обновить или изменить сохраненные данные в базе данных.

Команда УДАЛИТЬ

Эта команда помогает удалить или стереть сохраненные записи из таблиц базы данных. Он стирает один или несколько кортежей из таблиц базы данных.

Команда ВЫБОР

Эта команда помогает получить доступ к одной или нескольким строкам из одной или нескольких таблиц базы данных. Мы также можем использовать эту команду с предложением WHERE.

Команда сброса

Эта команда помогает удалить всю таблицу, табличное представление и другие объекты из базы данных.

Команда ВСТАВИТЬ

Эта команда помогает вставлять данные или записи в таблицы базы данных. Мы можем легко вставлять записи как в одну, так и в несколько строк таблицы.

SQL против

без SQL

В следующей таблице описаны различия между SQL и NoSQL, которые необходимо понимать:

SQL Без SQL
1.SQL — это система управления реляционными базами данных. 1. Хотя No-SQL является нереляционной или распределенной системой управления базами данных.
2. Язык запросов, используемый в этой системе баз данных, является структурированным языком запросов. 2. Язык запросов, используемый в системах баз данных No-SQL, является недекларативным языком запросов.
3. Схема баз данных SQL предопределена, фиксирована и статична. 3. Схема баз данных No-SQL является динамической схемой для неструктурированных данных.
4. Эти базы данных можно масштабировать по вертикали. 4. Эти базы данных являются горизонтально масштабируемыми.
5. Тип базы данных SQL в виде таблиц, т. е. в виде строк и столбцов. 5. Тип базы данных No-SQL представляет собой документы, ключ-значение и графики.
6. Он соответствует модели ACID. 6. Соответствует модели BASE.
7. Сложные запросы легко обрабатываются в базе данных SQL. 7. Базы данных NoSQL не могут обрабатывать сложные запросы.
8. Эта база данных не лучший выбор для хранения иерархических данных. 8. В то время как база данных No-SQL является идеальным вариантом для хранения иерархических данных.
9. Все базы данных SQL требуют объектно-реляционного сопоставления. 9. Многие базы данных No-SQL не требуют объектно-реляционного сопоставления.
10. Gauges, CircleCI, Hootsuite и т. д. являются ведущими предприятиями, использующими этот язык запросов. 10. Airbnb, Uber и Kickstarter — ведущие предприятия, использующие этот язык запросов.
11. Примерами систем баз данных SQL являются SQLite, Ms-SQL, Oracle, PostgreSQL и MySQL. 11. Примерами систем баз данных NoSQL являются Redis, MongoDB, Hbase, BigTable, CouchDB и Cassandra.

Преимущества SQL

SQL предоставляет различные преимущества, которые делают его более популярным в области науки о данных. Это идеальный язык запросов, который позволяет специалистам по данным и пользователям общаться с базой данных.Ниже приведены лучшие преимущества языка структурированных запросов:

.

1. Программирование не требуется

SQL не требует большого количества строк кода для управления системами баз данных. Мы можем легко получить доступ к базе данных и поддерживать ее, используя простые синтаксические правила SQL. Эти простые правила делают SQL удобным для пользователя.

2. Высокоскоростная обработка запросов

Быстрый и эффективный доступ к большому объему данных из базы данных с помощью запросов SQL.Операции вставки, удаления и обновления данных также выполняются за меньшее время.

3. Стандартизированный язык

SQL соответствует давно установленным стандартам ISO и ANSI, которые предлагают единую платформу по всему миру для всех своих пользователей.

4. Портативность

Язык структурированных запросов можно легко использовать на настольных компьютерах, ноутбуках, планшетах и ​​даже смартфонах. Его также можно использовать с другими приложениями в соответствии с требованиями пользователя.

5. Интерактивный язык

Мы можем легко выучить и понять язык SQL. Мы также можем использовать этот язык для связи с базой данных, потому что это простой язык запросов. Этот язык также используется для получения ответов на сложные запросы за несколько секунд.

6. Более одного просмотра данных

Язык SQL также помогает создавать несколько представлений структуры базы данных для разных пользователей базы данных.

Недостатки SQL

Помимо преимуществ SQL, он также имеет некоторые недостатки, а именно:

1.Стоимость

Стоимость эксплуатации некоторых версий SQL высока. Вот почему некоторые программисты не могут использовать язык структурированных запросов.

2. Сложный интерфейс

Другим большим недостатком является сложность интерфейса языка структурированных запросов, что затрудняет использование и управление пользователями SQL.

3. Частичное управление базой данных

Бизнес-правила скрыты. Таким образом, специалисты по данным и пользователи, использующие этот язык запросов, не могут иметь полный контроль над базой данных.


Изучение основ SQL | Учебное пособие по SQL Документация по data.world

Базовая терминология

Данные — это просто информация. Данные для конкретного объекта или пользователя могут храниться в контейнер, называемый реляционной базой данных. data.world не использует базы данных. Вместо этого мы используем наборы данных. Набор данных — это моментальный снимок всей информации в базу данных в определенный момент времени.

Данные в наборе данных далее сегментируются в структуры, называемые таблицами. Таблица содержит информацию, которая идет вместе.Например, все люди в адресной книге можно было зайти в таблицу под названием Контакты. В этой таблице есть были бы места для размещения имен, адресов, городов, штатов, почтовых индексов, телефонов номера и т. д. для всех людей в адресной книге. Стол организован на столбцы и строки. Столбец содержит, например, все данные о городе или все названия данные для каждой записи в таблице, а строка — это одна запись, содержащая все разные данные для одного человека.

Имя Адрес Город Состояние Почтовый индекс Телефон
Натаниэль Хоторн Юнион Ст., 27 Салем МА 01970 978-555-4244
Лиззи Борден 92 Вторая улица Фолл-Ривер МА 02721 508-555-5282

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

В дополнение к наборам данных на data.world также есть ресурс проектов. Проекты могут содержать несколько наборов данных и дают вам возможность использовать их вместе новыми и более эффективными способами, чем стандартный набор данных.

Теперь, когда вы знаете, где хранятся данные, вам нужно знать, как их получить. На сегодняшний день наиболее распространенным языком, используемым для извлечения данных из набора данных, является SQL. Если вы хотите использовать его для получения информации с компьютера, вы должны сформулировать свою запрос особым образом, называемый запросом. Запросы разбиваются на более мелкие части, называемые оговорками. Каждое предложение содержит одно или несколько слов, называемых ключевыми словами. Предложение пишется в определенном порядке, называемом его синтаксисом. Недостаточно просто чтобы использовать правильные слова в своем запросе, вы также должны использовать правильный синтаксис для ваших предложений, чтобы компьютер мог обработать запрос.Для например, когда вы хотите получить список всех имен в вашей адресной книге, вы не могу просто напечатать предложение типа:

  Получить все имена из моей адресной книги  

Вместо этого, используя пример таблицы выше, вы должны использовать слово SELECT для get точное имя столбца, в котором хранятся имена, и FROM с точное имя таблицы, в которой хранится ваш список контактов, что дает вам запрос с предложением SELECT и предложением WHERE:

  ВЫБЕРИТЕ Имя ИЗ списка контактов  

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

В настоящее время SQL поддерживается только для чтения данных из наборов данных data.world. Ни один из стандартных операторов обработки данных SQL для вставки, изменения или удаления данных недоступен на data.world.

класс> Учебник по SQL

=> Начало работы с SQL

SQL — это язык структурированных запросов, используемый для управления данными в системе реляционных баз данных.Различные поставщики улучшили язык и предлагают различные варианты языка.

NB: этот тег явно относится к стандарту ISO/ANSI SQL ; не к какой-либо конкретной реализации этого стандарта.

Версии

5-1986, ISO 9075: 1987-01-01 986-01-01 : 1992 : 2008
Версия Краткое название Стандарт Дата выпуска
1986 XSQL-83 SI 903 1986-01-01
1989 SQL-89 Ansi X3.135-1989, ISO / IEC 9075: 1989 1989-01-01
1992 SQL-92 SQL-92 ISO / IEC 1992-01-01 1992-01-01
1999 SQL: 1999 ISO / IEC 9075: 1999 1999-12-1692 2003 SQL: 200303 SQL: 2003 ISO / IEC 9075: 2003 , 2003-12-15
2006 SQL: 2006 ISO / IEC 9075: 2006 2006-06-01
2008 SQL: 2008 ISO / IEC 2008-07-15
2011 SQL: 2011 ISO / IEC 9075: 2011 2011-12-1592 2016 SQL:2016 ISO/IEC 9075:2016 01.12.2016

Обзор

Язык структурированных запросов (SQL) — это язык программирования специального назначения, разработанный для управления данными, хранящимися в системе управления реляционными базами данных (RDBMS).SQL-подобные языки также можно использовать в реляционных системах управления потоками данных (RDSMS) или в базах данных «не только SQL» (NoSQL).

SQL состоит из 3 основных подъязыков:

  1. Язык определения данных (DDL): для создания и изменения структуры базы данных;
  2. Язык манипулирования данными (DML): для выполнения операций чтения, вставки, обновления и удаления данных базы данных;
  3. Язык управления данными (DCL): для управления доступом к данным, хранящимся в базе данных.

Статья SQL в Википедии

Основными операциями DML являются Create, Read, Update и Delete (сокращенно CRUD), которые выполняются операторами INSERT , SELECT , UPDATE и DELETE .
Существует также (недавно добавленный) оператор MERGE , который может выполнять все 3 операции записи (INSERT, UPDATE, DELETE).

CRUD-статья в Википедии


Многие базы данных SQL реализованы как клиент-серверные системы; термин «сервер SQL» описывает такую ​​базу данных.
В то же время Microsoft создает базу данных с именем «SQL Server». Хотя эта база данных говорит на диалекте SQL, информация, относящаяся к этой базе данных, не относится к теме этого тега, а относится к документации SQL Server.




SQL Tutorial [Введение]

SQL Tutorial [Введение] Этот документ представляет собой общее руководство по подъязыку баз данных — SQL.Он не ориентирован на продукт, а использует стандартный SQL (SQL92). Учебник не охватывает весь SQL92; он концентрируется на подмножестве стандарта, которое можно использовать и обычно поддерживается.
Примечание. В этом руководстве описывается подмножество SQL92, поддерживаемое FirstSQL/J 100% Java ОРСУБД. Не стесняйтесь загружать и использовать базу данных для обучения и образовательных целей. Подмножество в основном относится к среднему уровню SQL92, но имеет некоторые уровни начального уровня. Особенности. В руководстве описываются только возможности pure SQL92.Никаких проприетарных расширений не включено.

С вопросами, замечаниями и предложениями по этому руководству обращайтесь к нам по адресу [email protected]


Введение

SQL (язык структурированных запросов) — это подъязык базы данных для запросов и изменение реляционных баз данных. Он был разработан IBM Research в середине 70-х годов и стандартизирован ANSI. в 1986 году.

Реляционная модель определяет два корневых языка для доступа к реляционная база данных -- реляционная алгебра и реляционное исчисление.Реляционная алгебра — это низкоуровневый операторно-ориентированный язык. Создание запроса в реляционной алгебре включает в себя объединение реляционных операторы, использующие алгебраическую запись. Реляционное исчисление — это декларативный язык высокого уровня. Создание запроса в реляционном исчислении включает описание результатов. желательны.

SQL — это версия реляционного исчисления. Базовой структурой SQL является оператор . Точки с запятой разделяют несколько операторов SQL.

Существует 3 основные категории операторов SQL:

Структура языка

SQL — это язык, основанный на ключевых словах.Каждое утверждение начинается с уникального ключевого слова. Операторы SQL состоят из предложений, начинающихся с ключевого слова. Синтаксис SQL не чувствителен к регистру.

Другими лексическими элементами операторов SQL являются:

  • имена -- имена элементов базы данных: таблицы, столбцы, представления, пользователи, схемы; имена должны начинаться с буквы (a - z) и может содержать цифры (0 - 9) и знак подчеркивания (_)
  • литералы -- строки в кавычках, числовые значения, значения даты и времени
  • разделители -- + - , ( ) = = .* / || ? ;
Базовые объекты базы данных (таблицы, представления) могут дополнительно квалифицироваться по схеме имя. Точка -- ".", отделяет квалификаторы:
  имя-схемы . имя-таблицы  
Имена столбцов могут быть уточнены по имени таблицы с необязательным уточнением схемы.
Примечание. Имена могут быть чувствительны к регистру и содержать пробелы и другие символы. разделители и могут использовать ключевые слова, заключая их в двойные кавычки ("). Например,
  "1 Имя с пробелами"
"ВЫБРАТЬ"  
Имена в кавычках должны точно совпадать в регистре.

Примеры таблиц

В последующем тексте используются следующие 3 примера таблиц:
p Таблица (детали) s Таблица (поставщики) sp Таблица (поставщики и детали)
пно описание цвет
Р1 Виджет Синий
Р2 Виджет красный
Р3 ключ Зеленый
сно имя город
S1 Пьер Париж
S2 Джон Лондон
S3 Марио Рим
сно пно кол-во
S1 Р1 НУЛЕВОЙ
S2 Р1 200
S3 Р1 1000
S3 Р2 200

DDL для примеров таблиц

Форматы операторов SQL

Оставшаяся часть этого руководства состоит из 3 основных разделов:
Изменения в версии 2.1
  • Подраздел по количественным подзапросам изменено, чтобы уточнить, что подзапрос ALL также имеет значение True, когда подзапрос пусто .
  • Подраздел по ограничениям CHECK изменено, чтобы уточнить, что:
    • условие проверки выполняется успешно, если оно оценивается как True или Unknown , и
    • ограничение CHECK полезно только для операторов DELETE, если он содержит самоссылающийся подзапрос .
Изменения в версии 2
  • Таблицы истинности для И, ИЛИ и НЕ улучшено для более легкого понимания.
  • Подраздел по изоляции транзакций расширен с полной обработкой всех 4 уровней изоляции транзакций.
  • Подраздел ссылочной целостности изменено для более точного описания внешних ключей, содержащих пустых столбцов.
  • Другие мелкие уборки.

Copyright © 2002-2005 FFE Software, Inc.

Post A Comment

Ваш адрес email не будет опубликован.