🗊Презентация Базы данных и SQL. Лекция 18 часть 1

Категория: Информатика
Нажмите для полного просмотра!
Базы данных и SQL. Лекция 18 часть 1, слайд №1Базы данных и SQL. Лекция 18 часть 1, слайд №2Базы данных и SQL. Лекция 18 часть 1, слайд №3Базы данных и SQL. Лекция 18 часть 1, слайд №4Базы данных и SQL. Лекция 18 часть 1, слайд №5Базы данных и SQL. Лекция 18 часть 1, слайд №6Базы данных и SQL. Лекция 18 часть 1, слайд №7Базы данных и SQL. Лекция 18 часть 1, слайд №8Базы данных и SQL. Лекция 18 часть 1, слайд №9Базы данных и SQL. Лекция 18 часть 1, слайд №10Базы данных и SQL. Лекция 18 часть 1, слайд №11Базы данных и SQL. Лекция 18 часть 1, слайд №12Базы данных и SQL. Лекция 18 часть 1, слайд №13Базы данных и SQL. Лекция 18 часть 1, слайд №14Базы данных и SQL. Лекция 18 часть 1, слайд №15Базы данных и SQL. Лекция 18 часть 1, слайд №16Базы данных и SQL. Лекция 18 часть 1, слайд №17Базы данных и SQL. Лекция 18 часть 1, слайд №18Базы данных и SQL. Лекция 18 часть 1, слайд №19Базы данных и SQL. Лекция 18 часть 1, слайд №20Базы данных и SQL. Лекция 18 часть 1, слайд №21Базы данных и SQL. Лекция 18 часть 1, слайд №22Базы данных и SQL. Лекция 18 часть 1, слайд №23Базы данных и SQL. Лекция 18 часть 1, слайд №24Базы данных и SQL. Лекция 18 часть 1, слайд №25Базы данных и SQL. Лекция 18 часть 1, слайд №26

Содержание

Вы можете ознакомиться и скачать презентацию на тему Базы данных и SQL. Лекция 18 часть 1. Доклад-сообщение содержит 26 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1





Базы данных и SQL
Лекция 18
Описание слайда:
Базы данных и SQL Лекция 18

Слайд 2





Что изучим сегодня
Первичным и ссылочный ключ
СУБД
Реляционные базы данных
Операторы для запросов
Логика написания запросов
Описание слайда:
Что изучим сегодня Первичным и ссылочный ключ СУБД Реляционные базы данных Операторы для запросов Логика написания запросов

Слайд 3





История баз данных
История активного развития баз данных начинается с одного из самых значительных и неоднозначных событий: полета на Луну. Тогда для участия в проекте Apollo правительством США была привлечена компания Rockwell. Для того, чтобы построить космический корабль, как многие, наверное, догадываются, нужно собрать несколько миллионов деталей. И в те далекие времена была создана система управления файлами, которая отслеживала информацию о каждой детали.  
Но когда решили проверить эту систему, то обнаружили, что данные в ней повторяются по нескольку раз. Налицо была огромная избыточность. К сотрудничеству была привлечена небезызвестная IBM, и в 1968 году была разработана автоматизированная система IMS. Кардинальным нововведением было разделение функций деловой логики и данных, т.е. программисты смогли работать с информацией на логическом уровне, при этом база данных выполняла функцию физического хранения. Это позволило существенно повысить производительность труда. Данная система имела следующую модель хранения данных (на рисунке представлена абстракцией!):
Описание слайда:
История баз данных История активного развития баз данных начинается с одного из самых значительных и неоднозначных событий: полета на Луну. Тогда для участия в проекте Apollo правительством США была привлечена компания Rockwell. Для того, чтобы построить космический корабль, как многие, наверное, догадываются, нужно собрать несколько миллионов деталей. И в те далекие времена была создана система управления файлами, которая отслеживала информацию о каждой детали. Но когда решили проверить эту систему, то обнаружили, что данные в ней повторяются по нескольку раз. Налицо была огромная избыточность. К сотрудничеству была привлечена небезызвестная IBM, и в 1968 году была разработана автоматизированная система IMS. Кардинальным нововведением было разделение функций деловой логики и данных, т.е. программисты смогли работать с информацией на логическом уровне, при этом база данных выполняла функцию физического хранения. Это позволило существенно повысить производительность труда. Данная система имела следующую модель хранения данных (на рисунке представлена абстракцией!):

Слайд 4






Иерархическая модель
Поле Name в такой модели содержало название отдельно взятого элемента, поле ID было введено для уникальной идентификации, а колонка Id_Parent – для определения связей элементов друг с другом
Описание слайда:
Иерархическая модель Поле Name в такой модели содержало название отдельно взятого элемента, поле ID было введено для уникальной идентификации, а колонка Id_Parent – для определения связей элементов друг с другом

Слайд 5





Таким образом, благодаря иерархической модели, было выведено несколько фундаментальных понятий: 
Таким образом, благодаря иерархической модели, было выведено несколько фундаментальных понятий: 
 Первичный ключ (Primary Key [PK]) – ограничение, позволяющее однозначно идентифицировать каждую запись в таблице. Первичный ключ должен содержать уникальные значения и не может быть пуст. 
Ссылочный ключ (Foreign Key [FK]) – это ограничение, позволяющее ссылаться на какой-либо Primary Key. Зачастую, может быть неуникален и содержать пустые множества.
 В примере, приведённом ранее, Id – это первичный ключ. Id_Parent – ссылочный ключ.
Описание слайда:
Таким образом, благодаря иерархической модели, было выведено несколько фундаментальных понятий: Таким образом, благодаря иерархической модели, было выведено несколько фундаментальных понятий: Первичный ключ (Primary Key [PK]) – ограничение, позволяющее однозначно идентифицировать каждую запись в таблице. Первичный ключ должен содержать уникальные значения и не может быть пуст. Ссылочный ключ (Foreign Key [FK]) – это ограничение, позволяющее ссылаться на какой-либо Primary Key. Зачастую, может быть неуникален и содержать пустые множества. В примере, приведённом ранее, Id – это первичный ключ. Id_Parent – ссылочный ключ.

Слайд 6





Следующий большой шаг в истории развития баз данных сделал доктор Эдгар Кодд (Edgar Codd) - научный сотрудник все той же самой небезызвестной IBM. В 1970 году он опубликовал свою работу "Реляционная модель для больших банков совместно используемых данных", которая в корне изменила теорию баз данных. Он предложил избавиться от иерархий и преобразовать их в разделение на логические сущности. Для каждой такой сущности подразумевалось наличие отдельной таблицы и связей между ними.
Следующий большой шаг в истории развития баз данных сделал доктор Эдгар Кодд (Edgar Codd) - научный сотрудник все той же самой небезызвестной IBM. В 1970 году он опубликовал свою работу "Реляционная модель для больших банков совместно используемых данных", которая в корне изменила теорию баз данных. Он предложил избавиться от иерархий и преобразовать их в разделение на логические сущности. Для каждой такой сущности подразумевалось наличие отдельной таблицы и связей между ними.
Описание слайда:
Следующий большой шаг в истории развития баз данных сделал доктор Эдгар Кодд (Edgar Codd) - научный сотрудник все той же самой небезызвестной IBM. В 1970 году он опубликовал свою работу "Реляционная модель для больших банков совместно используемых данных", которая в корне изменила теорию баз данных. Он предложил избавиться от иерархий и преобразовать их в разделение на логические сущности. Для каждой такой сущности подразумевалось наличие отдельной таблицы и связей между ними. Следующий большой шаг в истории развития баз данных сделал доктор Эдгар Кодд (Edgar Codd) - научный сотрудник все той же самой небезызвестной IBM. В 1970 году он опубликовал свою работу "Реляционная модель для больших банков совместно используемых данных", которая в корне изменила теорию баз данных. Он предложил избавиться от иерархий и преобразовать их в разделение на логические сущности. Для каждой такой сущности подразумевалось наличие отдельной таблицы и связей между ними.

Слайд 7





Реляционная модель данных
В реляционной модели, придуманной Коддом, данные можно было свободно описывать в их естественном виде, без каких-либо ограничений, которые накладываются средой физического хранения. Главная особенность такой модели – зависимость всех таблиц друг от друга.
Описание слайда:
Реляционная модель данных В реляционной модели, придуманной Коддом, данные можно было свободно описывать в их естественном виде, без каких-либо ограничений, которые накладываются средой физического хранения. Главная особенность такой модели – зависимость всех таблиц друг от друга.

Слайд 8





Основные понятия
База данных — набор логически связанных данных, предназначенный для удовлетворения информационных потребностей.
  
Реляционная база данных представляет собой множество взаимосвязанных таблиц, каждая из которых содержит информацию об объектах определенного вида. Каждая строка таблицы содержит данные об одном объекте, а столбцы таблицы содержат различные характеристики этих объектов - атрибуты. 
Система Управления Базами Данных (СУБД) – программный комплекс для создания и администрирования (управления) базами данных.
Data Manipulation Language (DML) (язык управления (манипулирования) данными) — это семейство компьютерных языков, используемых в компьютерных программах или пользователями баз данных для получения, вставки, удаления или изменения данных в базах данных.
Описание слайда:
Основные понятия База данных — набор логически связанных данных, предназначенный для удовлетворения информационных потребностей. Реляционная база данных представляет собой множество взаимосвязанных таблиц, каждая из которых содержит информацию об объектах определенного вида. Каждая строка таблицы содержит данные об одном объекте, а столбцы таблицы содержат различные характеристики этих объектов - атрибуты. Система Управления Базами Данных (СУБД) – программный комплекс для создания и администрирования (управления) базами данных. Data Manipulation Language (DML) (язык управления (манипулирования) данными) — это семейство компьютерных языков, используемых в компьютерных программах или пользователями баз данных для получения, вставки, удаления или изменения данных в базах данных.

Слайд 9





Распространённые СУБД
  Oracle (~60% рынка СУБД); 
  MS SQL Server (~15%); 
  IBM DB (~13%); 
  MySQL, PostgreSQL, SQLite, Sybase, Access и другие (~12%);
Описание слайда:
Распространённые СУБД Oracle (~60% рынка СУБД); MS SQL Server (~15%); IBM DB (~13%); MySQL, PostgreSQL, SQLite, Sybase, Access и другие (~12%);

Слайд 10


Базы данных и SQL. Лекция 18 часть 1, слайд №10
Описание слайда:

Слайд 11





Подмножества запросов
Structured Query Language – структурированный язык запросов, предназначенный для  работы с данными в рамках СУБД. Язык SQL состоит из нескольких основных подмножеств: 
1. Data Definition Language (язык определения данных) :
a) CREATE (создать сущность);
b) ALTER (изменить сущность); 
c) DROP (удалить сущность); 
d) TRUNCATE (усечь сущность);
 2. Data Manipulation Language (язык управления данными) :
 a) SELECT (выборка данных);
 b) UPDATE (обновление данных);
 c) INSERT (вставка данных);
 d) DELETE (удаление данных);
 3. Data Control Language (язык контроля данных) :
a) GRANT (предоставить привилегии на какую-либо команду какому-либо пользователю); 
b) REVOKE (изъять привилегии у пользователя). 
4. Transaction Control Language (язык управления транзакциями) : 
a) COMMIT применяет транзакцию; 
b) ROLLBACK «откатывает» все изменения, сделанные в контексте текущей транзакции; 
c) SAVEPOINT делит транзакцию на более мелкие участки.
Описание слайда:
Подмножества запросов Structured Query Language – структурированный язык запросов, предназначенный для работы с данными в рамках СУБД. Язык SQL состоит из нескольких основных подмножеств: 1. Data Definition Language (язык определения данных) : a) CREATE (создать сущность); b) ALTER (изменить сущность); c) DROP (удалить сущность); d) TRUNCATE (усечь сущность); 2. Data Manipulation Language (язык управления данными) : a) SELECT (выборка данных); b) UPDATE (обновление данных); c) INSERT (вставка данных); d) DELETE (удаление данных); 3. Data Control Language (язык контроля данных) : a) GRANT (предоставить привилегии на какую-либо команду какому-либо пользователю); b) REVOKE (изъять привилегии у пользователя). 4. Transaction Control Language (язык управления транзакциями) : a) COMMIT применяет транзакцию; b) ROLLBACK «откатывает» все изменения, сделанные в контексте текущей транзакции; c) SAVEPOINT делит транзакцию на более мелкие участки.

Слайд 12





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

Слайд 13





Для выборки всех данных из  таблицы, напишем запрос: 
Для выборки всех данных из  таблицы, напишем запрос: 
SELECT * 
FROM table_Section
‘SELECT’ – это команда выборки. Затем, вместо явного указания имён колонок через запятую, пишем ‘*’ (говорится как «звёздочка») – это символ, указывающий на выборку всех полей таблицы, 
‘FROM’ – команда, которая указывает из какой именно сущности будет производиться выборка, и ‘table_Section’ – название сущности. Т.е., говоря по-русски, мы сообщаем СУБД, что хотим видеть выборку всех данных из таблицы table_Section.
Описание слайда:
Для выборки всех данных из таблицы, напишем запрос: Для выборки всех данных из таблицы, напишем запрос: SELECT * FROM table_Section ‘SELECT’ – это команда выборки. Затем, вместо явного указания имён колонок через запятую, пишем ‘*’ (говорится как «звёздочка») – это символ, указывающий на выборку всех полей таблицы, ‘FROM’ – команда, которая указывает из какой именно сущности будет производиться выборка, и ‘table_Section’ – название сущности. Т.е., говоря по-русски, мы сообщаем СУБД, что хотим видеть выборку всех данных из таблицы table_Section.

Слайд 14





Попробуем немного усложнить задачу,  добавив условие. Допустим, теперь нам  нужно вычленить записи с id больше, либо  равным двум. Запрос будет иметь вид: 
Попробуем немного усложнить задачу,  добавив условие. Допустим, теперь нам  нужно вычленить записи с id больше, либо  равным двум. Запрос будет иметь вид: 

SELECT *
FROM table_Sections 
WHERE id >= 2  



Результат:




Мы сказали этим запросом, что хотим вычленить все данные, 
у которых (‘WHERE’ – ключевое слово, начало блока условий) поле id принимает значения от двух и выше.
Описание слайда:
Попробуем немного усложнить задачу, добавив условие. Допустим, теперь нам нужно вычленить записи с id больше, либо равным двум. Запрос будет иметь вид: Попробуем немного усложнить задачу, добавив условие. Допустим, теперь нам нужно вычленить записи с id больше, либо равным двум. Запрос будет иметь вид: SELECT * FROM table_Sections WHERE id >= 2 Результат: Мы сказали этим запросом, что хотим вычленить все данные, у которых (‘WHERE’ – ключевое слово, начало блока условий) поле id принимает значения от двух и выше.

Слайд 15





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

Слайд 16





Обратите внимание на этот запрос, который мы только что написали: 
Обратите внимание на этот запрос, который мы только что написали: 
SELECT name 
FROM Employee 
 WHERE org = ‘IT’ 
AND salary > 16000; 
В нём присутствует несколько важных аспектов. Во-первых, условие всегда начинается с блока WHERE, но данный оператор пишется в одном запросе лишь единожды. После него всегда пишется имя поля, на которое необходимо добавить условие, затем символ логики (‘>’ – строго больше, ‘<’ – строго меньше, ‘>=’ – больше или равно, ‘<=’ – меньше или равно, ‘=’ – строго равно, ‘!=’ или ‘<>’ – не равно) и только потом значение. 
Во-вторых, числовые данные пишутся без кавычек, а строчные всегда в одинарных кавычках. Это очень важный момент! 
В третьих, для начала нового условия применяется вспомогательный оператор AND. Никаких WHERE повторно не пишется, только дополнительный предикат!
Описание слайда:
Обратите внимание на этот запрос, который мы только что написали: Обратите внимание на этот запрос, который мы только что написали: SELECT name FROM Employee WHERE org = ‘IT’ AND salary > 16000; В нём присутствует несколько важных аспектов. Во-первых, условие всегда начинается с блока WHERE, но данный оператор пишется в одном запросе лишь единожды. После него всегда пишется имя поля, на которое необходимо добавить условие, затем символ логики (‘>’ – строго больше, ‘<’ – строго меньше, ‘>=’ – больше или равно, ‘<=’ – меньше или равно, ‘=’ – строго равно, ‘!=’ или ‘<>’ – не равно) и только потом значение. Во-вторых, числовые данные пишутся без кавычек, а строчные всегда в одинарных кавычках. Это очень важный момент! В третьих, для начала нового условия применяется вспомогательный оператор AND. Никаких WHERE повторно не пишется, только дополнительный предикат!

Слайд 17





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

SELECT name 
FROM Employee  
WHERE org = ‘Бухгалтерия’ 
OR (org = ‘Снабжение’ 
AND salary < 8000);                       
Таблица остаётся той же. Теперь нас интересуют все бухгалтеры или снабженцы с зарплатой менее 8000. В этом нам поможет оператор OR,  благодаря которому можно указать  несколько условий и выборка должна удовлетворять хотя бы одному из них: 

SELECT name 
FROM Employee  
WHERE org = ‘Бухгалтерия’ 
OR (org = ‘Снабжение’ 
AND salary < 8000);                       
 Запрос выдаст нам следующее: 




Не сложно заметить, что первая строка выборки удовлетворяет одному условию, а другая – другому. Обратите внимание на группировку условий в скобках
Описание слайда:
Таблица остаётся той же. Теперь нас интересуют все бухгалтеры или снабженцы с зарплатой менее 8000. В этом нам поможет оператор OR, благодаря которому можно указать несколько условий и выборка должна удовлетворять хотя бы одному из них: SELECT name FROM Employee WHERE org = ‘Бухгалтерия’ OR (org = ‘Снабжение’ AND salary < 8000); Таблица остаётся той же. Теперь нас интересуют все бухгалтеры или снабженцы с зарплатой менее 8000. В этом нам поможет оператор OR, благодаря которому можно указать несколько условий и выборка должна удовлетворять хотя бы одному из них: SELECT name FROM Employee WHERE org = ‘Бухгалтерия’ OR (org = ‘Снабжение’ AND salary < 8000); Запрос выдаст нам следующее: Не сложно заметить, что первая строка выборки удовлетворяет одному условию, а другая – другому. Обратите внимание на группировку условий в скобках

Слайд 18





SQL. Логика. BETWEEN и DISTINCT
Когда мы работаем с числовым или табельным диапазоном значений, часто приходится прибегать к написанию интервальных запросов. В этом нам поможет оператор BETWEEN.  Давайте выделим из таблицы все организации, которые платят от 10 до 30 тысяч:

SELECT DISTINCT org    ---- DISTINCT исключает повторы! 
FROM Employee 
WHERE salary BETWEEN 10000 AND 30000;                                                       
 
Запрос выдаст нам следующее:
Описание слайда:
SQL. Логика. BETWEEN и DISTINCT Когда мы работаем с числовым или табельным диапазоном значений, часто приходится прибегать к написанию интервальных запросов. В этом нам поможет оператор BETWEEN. Давайте выделим из таблицы все организации, которые платят от 10 до 30 тысяч: SELECT DISTINCT org ---- DISTINCT исключает повторы! FROM Employee WHERE salary BETWEEN 10000 AND 30000; Запрос выдаст нам следующее:

Слайд 19





SQL. LIKE
Очень часто возникает ситуация, когда мы хотим сделать выборку, но точных  условий задать не можем. Например, когда хотим выбрать данные по сотруднику,  но помним лишь первые несколько букв его фамилии. Для решения таких задач нам поможет оператор LIKE. Допустим, мы помним, что фамилия нужного нам человека начиналась с «Ва»: 

 SELECT *
 FROM Employee  
WHERE name LIKE ‘Ва%’; 

Результат запроса:
Описание слайда:
SQL. LIKE Очень часто возникает ситуация, когда мы хотим сделать выборку, но точных условий задать не можем. Например, когда хотим выбрать данные по сотруднику, но помним лишь первые несколько букв его фамилии. Для решения таких задач нам поможет оператор LIKE. Допустим, мы помним, что фамилия нужного нам человека начиналась с «Ва»: SELECT * FROM Employee WHERE name LIKE ‘Ва%’; Результат запроса:

Слайд 20





Символ ‘%’ означает, что после букв ‘Ва’ могут быть какие угодно символы. Их количество от 0 до N. Важно понимать, что этими символами могут быть цифры, буквы и т.д. Знак % можно использовать несколько раз. Например, так выглядит запрос, который выводит данные о сотрудниках, у которых в зарплате содержится цифра 500: 
Символ ‘%’ означает, что после букв ‘Ва’ могут быть какие угодно символы. Их количество от 0 до N. Важно понимать, что этими символами могут быть цифры, буквы и т.д. Знак % можно использовать несколько раз. Например, так выглядит запрос, который выводит данные о сотрудниках, у которых в зарплате содержится цифра 500: 

SELECT* 
FROM Employee 
WHERE salary LIKE ‘%500%’; 

Результат запроса:
Описание слайда:
Символ ‘%’ означает, что после букв ‘Ва’ могут быть какие угодно символы. Их количество от 0 до N. Важно понимать, что этими символами могут быть цифры, буквы и т.д. Знак % можно использовать несколько раз. Например, так выглядит запрос, который выводит данные о сотрудниках, у которых в зарплате содержится цифра 500: Символ ‘%’ означает, что после букв ‘Ва’ могут быть какие угодно символы. Их количество от 0 до N. Важно понимать, что этими символами могут быть цифры, буквы и т.д. Знак % можно использовать несколько раз. Например, так выглядит запрос, который выводит данные о сотрудниках, у которых в зарплате содержится цифра 500: SELECT* FROM Employee WHERE salary LIKE ‘%500%’; Результат запроса:

Слайд 21





SQL. Логика. IN/NOT IN
Когда условий становится много и они накладываются на одно поле, можно совместить их множеством, а выборку с оператора OR изменить на конструкцию     IN или NOT IN. 
 К примеру, нас интересуют все сотрудники из отделов IT и Бухгалтерии: 

SELECT name 
FROM Employee  
WHERE org IN (‘Бухгалтерия’, ‘IT’); 

Запрос выдаст нам следующее:
Описание слайда:
SQL. Логика. IN/NOT IN Когда условий становится много и они накладываются на одно поле, можно совместить их множеством, а выборку с оператора OR изменить на конструкцию IN или NOT IN. К примеру, нас интересуют все сотрудники из отделов IT и Бухгалтерии: SELECT name FROM Employee WHERE org IN (‘Бухгалтерия’, ‘IT’); Запрос выдаст нам следующее:

Слайд 22





Как не сложно догадаться, оператор IN работает похожим на OR способом, т.е., в блоке WHERE можно было бы написать “org = ‘Бухгалтерия’ OR org = ‘IT’”, но если условий много, например, 10 или 20? 
Как не сложно догадаться, оператор IN работает похожим на OR способом, т.е., в блоке WHERE можно было бы написать “org = ‘Бухгалтерия’ OR org = ‘IT’”, но если условий много, например, 10 или 20? 
В таких случаях и помогает IN, который проверяет поле на каждое из значений. Совпадение найдено? Значит результат попадёт в выборку.  


 В предыдущем запросе заменим IN на NOT IN. Получим: 

SELECT name 
FROM Employee  
WHERE org NOT IN (‘Бухгалтерия’, ‘IT’); 


Результат:
Описание слайда:
Как не сложно догадаться, оператор IN работает похожим на OR способом, т.е., в блоке WHERE можно было бы написать “org = ‘Бухгалтерия’ OR org = ‘IT’”, но если условий много, например, 10 или 20? Как не сложно догадаться, оператор IN работает похожим на OR способом, т.е., в блоке WHERE можно было бы написать “org = ‘Бухгалтерия’ OR org = ‘IT’”, но если условий много, например, 10 или 20? В таких случаях и помогает IN, который проверяет поле на каждое из значений. Совпадение найдено? Значит результат попадёт в выборку. В предыдущем запросе заменим IN на NOT IN. Получим: SELECT name FROM Employee WHERE org NOT IN (‘Бухгалтерия’, ‘IT’); Результат:

Слайд 23





SQL. Логика. Подзапросы
Очень часто мы сталкиваемся с ситуацией,  когда в явном виде не знаем условий, но  знаем как эти самые условия получить запросом. Такие ситуации порождают использование подзапросов. Например, нужно извлечь сотрудников,  которые работают в IT, получают зарплату меньше 20 тысяч и идентификатор у них больше идентификатора Гришина. Вот это самое важное. Как такое написать? 

Пробуем: 
SELECT name
 FROM Employee WHERE org = ‘IT’  
AND salary < 20000  AND id > 
(SELECT id FROM Employee WHERE name = ‘Гришин’); 




Обратите внимание: подзапрос содержится в круглых скобках. С его помощью мы находим идентификатор работника Гришина (подзапрос найдёт единицу) и это значение будет подставлено в основной запрос в виде «id > 1». Таким образом, не зная явного значения id_Гришина, мы написали дополнительный запрос на извлечение ячейки как условия
Описание слайда:
SQL. Логика. Подзапросы Очень часто мы сталкиваемся с ситуацией, когда в явном виде не знаем условий, но знаем как эти самые условия получить запросом. Такие ситуации порождают использование подзапросов. Например, нужно извлечь сотрудников, которые работают в IT, получают зарплату меньше 20 тысяч и идентификатор у них больше идентификатора Гришина. Вот это самое важное. Как такое написать? Пробуем: SELECT name FROM Employee WHERE org = ‘IT’ AND salary < 20000 AND id > (SELECT id FROM Employee WHERE name = ‘Гришин’); Обратите внимание: подзапрос содержится в круглых скобках. С его помощью мы находим идентификатор работника Гришина (подзапрос найдёт единицу) и это значение будет подставлено в основной запрос в виде «id > 1». Таким образом, не зная явного значения id_Гришина, мы написали дополнительный запрос на извлечение ячейки как условия

Слайд 24





SQL. NULL 
NULL в СУБД — специальное значение  (псевдозначение), которое может быть  записано в поле таблицы базы данных  (БД). NULL соответствует понятию  «пустое поле», то есть «поле, не содержащее  никакого значения» / пустое множество.  Введено для того, чтобы различать в полях  БД пустые (визуально не отображаемые) значения (например, строку нулевой длины) и отсутствующие значения (когда в поле не записано вообще никакого значения, даже пустого). NULL означает отсутствие, неизвестность информации. Значение NULL не является значением в полном смысле слова: по определению оно означает отсутствие значения и не принадлежит ни одному типу данных. Поэтому NULL не равно ни логическому значению FALSE, ни пустой строке, ни нулю. При сравнении NULL с любым значением будет получен результат NULL, а не FALSE и не 0. Более того, NULL не равно NULL! Представим себе ситуацию, когда Петрову решили изменить заработную плату, но пока не определились с конечной цифрой. В итоге, у него может быть в поле Salary всё что угодно – хоть 0, хоть миллион баксов, но пока неизвестно. А теперь попытаемся найти всех работников, у которых показатель заработной платы был бы пуст / неизвестен: 

SELECT name 
FROM Employees 
WHERE salary IS NULL;
Описание слайда:
SQL. NULL NULL в СУБД — специальное значение (псевдозначение), которое может быть записано в поле таблицы базы данных (БД). NULL соответствует понятию «пустое поле», то есть «поле, не содержащее никакого значения» / пустое множество. Введено для того, чтобы различать в полях БД пустые (визуально не отображаемые) значения (например, строку нулевой длины) и отсутствующие значения (когда в поле не записано вообще никакого значения, даже пустого). NULL означает отсутствие, неизвестность информации. Значение NULL не является значением в полном смысле слова: по определению оно означает отсутствие значения и не принадлежит ни одному типу данных. Поэтому NULL не равно ни логическому значению FALSE, ни пустой строке, ни нулю. При сравнении NULL с любым значением будет получен результат NULL, а не FALSE и не 0. Более того, NULL не равно NULL! Представим себе ситуацию, когда Петрову решили изменить заработную плату, но пока не определились с конечной цифрой. В итоге, у него может быть в поле Salary всё что угодно – хоть 0, хоть миллион баксов, но пока неизвестно. А теперь попытаемся найти всех работников, у которых показатель заработной платы был бы пуст / неизвестен: SELECT name FROM Employees WHERE salary IS NULL;

Слайд 25





Что изучили сегодня
Первичный и ссылочный ключ
СУБД
Реляционные базы данных
Логика написания запросов
Where/ Like/ In or Not in/ Between/ Distinct
Описание слайда:
Что изучили сегодня Первичный и ссылочный ключ СУБД Реляционные базы данных Логика написания запросов Where/ Like/ In or Not in/ Between/ Distinct

Слайд 26





Домашнее задание
1) Грабер М. Введение в SQL – главы 1, 2, 3, 4 и 5 полностью;
2) на сайте SQL-EX.RU выполнить к следующему занятию задачи 1, 2, 3, 4, 5, 31, 33, 42. 
3) в качестве справочников рекомендуется использовать http://sql-tutorial.ru/ и http://www.w3schools.com/sql/
Описание слайда:
Домашнее задание 1) Грабер М. Введение в SQL – главы 1, 2, 3, 4 и 5 полностью; 2) на сайте SQL-EX.RU выполнить к следующему занятию задачи 1, 2, 3, 4, 5, 31, 33, 42. 3) в качестве справочников рекомендуется использовать http://sql-tutorial.ru/ и http://www.w3schools.com/sql/



Похожие презентации
Mypresentation.ru
Загрузить презентацию