Добавил:
rushevamar@mail.ru Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпоры бд.docx
Скачиваний:
111
Добавлен:
17.06.2021
Размер:
4.93 Mб
Скачать

34. Язык sql: обновление записей в таблице.

Синтаксис команды UPDATE

UPDATE [LOW_PRIORITY] [IGNORE] tbl_name

SET col_name1=expr1 [, col_name2=expr2, ...]

[WHERE where_definition]

[LIMIT #]

tbl_name

- Задает имя таблицы, в которой будут обновляться записи. На момент запуска команды UPDATE таблица с таким именем должна существовать в базе данных.

LOW_PRIORITY

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

IGNORE

- Если некоторые поля таблицы имеют ключи PRIMARY или UNIQUE, и производится обновление строки, в которой эти поля имеют дублирующее значение, то действие команды аварийно завершается и выдается ошибка №1062 ("Duplicate entry 'val' for key N"). Если в команде INSERT указано ключевое слово IGNORE, то обновление записей не прерывается, а строки с дублирующими значениями просто не изменяются.

SET

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

WHERE

- Задает условие отбора записей, подлежащих изменению.

LIMIT

- Задает максимальное количество строк, которые могут быть изменены.

UPDATE

    `users`

SET

   `country`='Russia'

UPDATE

    `users`

SET

    `age`=`age`+1

LIMIT

5

35. Язык sql: выборка данных из таблиц. Использование агрегатных функций и вычисляемых полей.

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

Все SQL-выражения, предназначенные для выборки данных из существующих таблиц базы данных начинаются с ключевого слова (оператора) SELECT (Выбрать). Для уточнения запроса служат дополнительные операторы, такие как FROM (Из),WHERE (Где) и др. Сейчас важно понять и запомнить, что результатом выполнения запроса, сформулированного в виде SQL-выражения, является не что иное, как таблица, содержащая запрошенные данные. Эта таблица виртуальна в том смысле, что лишь только представляет результаты запроса и не принадлежит к базе данных. Замечу попутно, что SQL-позволяет изменять существующую базу данных — создавать и добавлять к ней новые таблицы, а также модифицировать и удалять уже существующие

SELECT * FROM authors;

SELECT titles.title,titles.yearpub,publishers.publisher

FROM titles,publishers

WHERE titles.pub_id=publishers.pub_id AND

titles.yearpub>1996;

SQL позволяет выполнять различные арифметические операции над столбцами результирующего отношения. В конструкции <список_выбора> можно использовать константы, функции и их комбинации с арифметическими операциями и скобками. Например, чтобы узнать сколько лет прошло с 1992 года (год принятия стандарта SQL-92) до публикации той или иной книги можно выполнить команду:

     SELECT title, yearpub-1992 FROM titles WHERE yearpub > 1992;

В арифметических вражения допускаются операции сложения (+), вычитания (-), деления (/), умножения (*), а также различные функции (COS, SIN, ABS - абсолютное значение и т.д.). Также в запрос можно добавить строковую константу:

     SELECT 'the title of the book is', title, yearpub-1992 

            FROM titles WHERE yearpub > 1992;

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

  • AVG(<имя поля>) - среднее по всем значениям данного поля

  • COUNT(<имя поля>) или COUNT (*) - число записей

  • MAX(<имя поля>) - максимальное из всех значений данного поля

  • MIN(<имя поля>) - минимальное из всех значений данного поля

  • SUM(<имя поля>) - сумма всех значений данного поля

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

SELECT MIN(yearpub) FROM titles;

подсчитать количество книг в нашей базе данных:

SELECT COUNT(*) FROM titles;

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

SELECT COUNT(*) FROM titles WHERE title LIKE '%SQL%'