Приложение 2 БД Институт

  • docx
  • 09.05.2020
Публикация на сайте для учителей

Публикация педагогических разработок

Бесплатное участие. Свидетельство автора сразу.
Мгновенные 10 документов в портфолио.

Иконка файла материала Приложение 2 БД Институт.docx

Необходимо выбрать все записи из таблицы teachers

SELECT * FROM teachers;

sql запрос select

Чтобы ограничить количество выбранных записей используется служебное слово LIMIT:

SELECT * FROM имя_таблицы LIMIT 2,3;

В примере происходит выборка 3 записей из таблицы, начиная со 2 записи.
Этот запрос особо необходим при создании блока страниц навигации.

Чтобы упорядочить поля результирующего набора, их следует перечислить через запятую в нужном порядке после слова SELECT:

SELECT name, zarplata

FROM teachers;

 

Выберет все значения полей name и zarplata в том же порядке (сначала name, затем zarplata)


примеры sql запросов select

SELECT name, zarplata, premia

FROM teachers ORDER BY name DESC;

Выберет значения полей namezarplatapremia и отсортирует по полю name по убыванию


sql asc и sesc сортировка

 

Пример БД «Институт»: требуется узнать возможные варианты размера премий. Если не использовать Distinct, в результате будет выдаваться два одинаковых значения. Удалить в sql повторяющиеся значения можно при введении Distinct — в результате дублирующиеся значения не повторяются.

1.    

SELECT premia 

FROM teachers;

2.    

SELECT DISTINCT premia 

FROM teachers;

1.   sql повторяющиеся значения

2.   sql повторяющиеся значения

 

Задание sql select 1_1. БД «Институт» Выполните запрос на выборку id и name из таблицы учителей. Отсортируйте фамилии учителей по убыванию

Задание sql select 1_2. БД «Институт» Выведите возможные варианты длины курсов (length) из таблицы курсов (courses), удалив повторяющиеся значения

 

Пример БД «Институт»: Выводить данные преподавателя из таблицы teachers, фамилия которого Иванов

SELECT * FROM `teachers` WHERE `name` = 'Иванов'

sql where условие

Пример БД «Институт»: вывести код преподавателя, зарплата которого составляет 10000, а премия 500

SELECT * FROM `teachers` WHERE `zarplata`=10000 AND `premia`=500

Задание sql select 1_2. БД «Институт» Из таблицы courses вывести длину курса (length), название которого — «Программирование SQL»

 

Пример БД "Институт": Вывести фамилию и зарплату преподавателя, зарплата которого между 5000 и 10000.

SELECT name, zarplata

FROM teachers

WHERE (zarplata BETWEEN 5000 AND 10000);

between sql

Пример БД "Институт": Вывести фамилию и зарплату преподавателя, зарплата которого не находится в диапазоне от 5000 до 10000.

SELECT name, zarplata

FROM teachers

WHERE (zarplata NOT BETWEEN 5000 AND 10000);

between sql

Пример БД "Институт": вывести имена преподавателей, зарплата которых составляет 500010000 или 11000

SELECT name, zarplata

FROM teachers

WHERE (zarplata IN (5000,10000,11000));

sql in

Пример БД "Институт": вывести имена преподавателей, зарплата которых не находится среди значений: 500010000 или 11000

SELECT name, zarplata

FROM teachers

WHERE (zarplata NOT IN (5000,10000,11000));

sql select in

Задание sql select 1_3. БД "Институт" Вывести фамилию, зарплату и премию учителей, премия которых от 2000 до 5000 рублей.

Пример БД «Институт»: Вывести фамилии учителей и их зарплаты, для тех преподавателей, у которых зарплата ниже 15000, переименовать поле zarplataна «низкая_зарплата»


✍ Решение:
 

1

2

3

SELECT name, zarplata AS низкая_зарплата

  FROM teachers

  WHERE zarplata<15000;

Результат:
sql переименование столбца

Пример БД «Институт»: Из таблицы teachers вывести поле name и вычислить сумму зарплаты и премии, назвав поле «зарплата_премия»


✍ Решение:
 

1

2

SELECT name, (zarplata+premia) AS zarplata_premia

  FROM teachers;

Результат:
sql переименование

SQL As 2_1. БД Институт. Вывести фамилии учителей и разницу между их зарплатой и премией. Назвать вывод «зарплата_минус_премия»

 

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

Для получения итоговых значений и вычисления выражений используются агрегатные функции в sql:

Функция

Описание

COUNT(*)

Возвращает количество строк таблицы.

COUNT(имя поля)

Возвращает количество значений в указанном столбце.

SUM(имя поля)

Возвращает сумму значений в указанном столбце.

AVG(имя поля)

Возвращает среднее значение в указанном столбце.

MIN(имя поля)

Возвращает минимальное значение в указанном столбце.

MAX(имя поля)

Возвращает максимальное значение в указанном столбце.

Все агрегатные функции возвращают единственное значение.

Функции COUNTMIN и MAX применимы к любым типам данных.

Функции SUM и AVG используются только для числовых полей.
Между функциями 
COUNT(*) и COUNT(<имя поля>) есть разница: вторая при подсчете не учитывает NULL-значения.

Важно: при работе с агрегатными функциями в SQL используется служебное слово AS

 

 

Пример БД «Институт»: Получить значение самой большой зарплаты среди учителей, вывести итог как «макс_зп»


✍ Решение:
 

SELECT MAX(zarplata) AS макс_зп

  FROM teachers;

Результаты:
агрегатные функции в sql

 

Agr func 2_2. БД Институт. Вывести минимальную и максимальную зарплату учителей

Agr func 2_3. БД Институт. Выберите название курса, уроки по которому не проводились и не запланированы проводиться. Дополните код:

1

2

3

4

5

6

SELECT  `title`

FROM  `courses`

WHERE  `title` NOT

IN (

   ...

)

Agr func 2_4. БД Институт. Измените предыдущее задание: Посчитайте количество тех курсов, уроки по которым не проводились и не запланированы проводиться. Выводите результат с именем «нет_уроков»

 

ПРЕДЛОЖЕНИЕ GROUP BY В SQL

Оператор group by в sql обычно используется совместно с агрегатными функциями.

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

Рассмотрим пример с таблицей lessons:
sql group by

Пример:

1.   Выдавать количество проведенных уроков учителем Иванов из таблицы lessons (порядковый номер Иванова 1 (tid)).

SELECT COUNT(tid) AS Иванов

FROM lessons

WHERE tid=1

Результат:
Оператор group by в sql

2.   Выдавать количество проведенных уроков учителем Иванов по разным курсам из таблицы lessons

SELECT course, COUNT( tid ) AS Иванов

FROM lessons

WHERE tid =1

GROUP BY course

Результат:
group by в sql

SQL group by 2_5БД Институт. Посчитать количество уроков, проведенных одним и тем же учителем. Результат должен выглядеть так:
sql group by пример

Запросы sql INNER JOIN

В предложении FROM может использоваться явная операция соединения двух и более таблиц.

Разберем пример. Имеем две таблицы: teachers (учителя) и lessons (уроки):

teachers

lessons

sql объединение таблиц

sql объединение таблиц

Пример: Выбрать имена учителей и проведенные уроки по курсам, которые они ведут


✍ Решение:
 

Для этого необходимы обе таблицы:

SELECT t.name,t.code,l.course 
FROM teachers t 
INNER JOIN lessons l ON t.id=l.tid

запросы sql inner join
Результат:
sql inner join

В запросе буквы l и t являются псевдонимами таблиц lessons (l) и teachers (t).

Inner Join - это внутреннее объединение (JOIN - с англ. "объединение", ключевое слово INNER можно опустить).

При внутреннем объединении выбираются только совпадающие данные из объединяемых таблиц.

запрос sql inner join

Важно: Inner Join - выбираются значения только в случае присутствия в обеих таблицах

Sql left inner join 1. БД Институт. Вывести фамилии всех преподавателей, названия и длительность курсов, которые они ведут (nametitlelength) из таблиц teachers и courses. Использовать внутреннее объединение

 

 

Оператор Insert

Запросы данного типа позволяют вставить строку в таблицу или добавить информацию в таблицу БД (insert — «вставить» в переводе с английского).

Для вставки значений в конкретные поля таблицы используется конструкция:

INSERT INTO имя_таблицы(col1,col2)
   VALUES('value1','value2')

Для вставки значений для всех полей сразу используется конструкция:

INSERT INTO имя_таблицы
  VALUES('value1','value2','value3' ...)

Здесь необходимо перечислить значения всех полей в порядке их следования в таблице.

Важно: Для поля Auto Increment (счетчик) в качестве значения всегда указывается Null

 

Пример: В таблицу courses вставить запись для всех полей одновременно: tid— 1, title — Java, length — 40


✍ Решение:
 

Для работы в php результат будет выглядеть так:

1
2
3
4
5
6
7
8
9
$conn = mysql_connect ("localhost", "root", "")
        or die("Нет соединения: " . mysql_error());
print ("Удачно соединено");
mysql_select_db("institute", $conn);
 
$sql="INSERT INTO courses VALUES(Null,1,'Java',40)" ;
$sql= (string) $sql;
$result = mysql_query($sql, $conn)
        or die ("no!".mysql_error());

Для работы в СУБД:

INSERT INTO courses VALUES(NULL,1,'Java',40)

Пример: В таблицу courses добавить значения для следующих полей: title — JavaScript, length — 72


✍ Решение:
 

Для работы в php результат будет выглядеть так:

1
2
3
4
5
6
7
8
9
$conn = mysql_connect ("localhost", "root", "")
        or die("Нет соединения: " . mysql_error());
print ("Удачно соединено");
mysql_select_db("institute", $conn);
 
$sql="INSERT INTO courses (title,length) VALUES('JavaScript',72)" ;
$sql= (string) $sql;
$result = mysql_query($sql, $conn)
        or die ("no!".mysql_error());

 


 

Скачано с www.znanio.ru