Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
database.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
1.12 Mб
Скачать

Тема 5: Манипулирование данными.

  1. Вставка новых строк в таблицу.

  2. Копирование строк из другой таблицы.

  3. Обновление строк в таблице.

  4. Удаление строк из таблицы.

1. Вставка новых строк в таблицу

Команда INSERT позволяет вставлять только по одной строке в таблицу.

Синтаксис:

INSERT INTO имя_таблицы [(столбец1[, столбец2…] ) ]

VALUES (значение 1[, значение 2…]);

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

Пример 1: Добавление строки в таблицу.

INSERT INTO warehouse (id, name, location, area)

VALUES(2,'Иванов','ПК1','435')

2. Копирование строк из другой таблицы

Синтаксис:

INSERT INTO имя_таблицы (столбец [, столбец])

подзапрос;

где подзапрос возвращает строки в таблицу.

Пример 8: Запись информации о слушателе курса в таблицу s_emp.

INSERT INTO history (id, last_name, salary, title, start_date

SELECT id, last_name, salary, title, start_date

FROM s_emp

WHERE start_date<’01-JAN-06’;

При таком способе вставки строк в таблицу предложение VALUES не используется. Количество столбцов, указанных в предложении INSERT, должно совпадать с количеством столбцов в подзапросе.

3. Обновление строк в таблице

Синтаксис:

UPDATE имя_таблицы

SET столбец = значение [, столбец = значение…]

[WHERE условие];

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

Пример 9: Обновление таблицы, добавив в первую запись новую дату.

UPDATE warehouse

SET data='10-09-03'

WHERE id=2

Пример 10: Обновление таблицы, добавив в последнюю запись значение даты и имени.

UPDATE warehouse

SET data='10-09-01', name='Сусликов'

WHERE id=6

Пример 11: Добавление значения даты в пятую строку таблицы.

UPDATE warehouse

SET data=sysdate

WHERE id=5

Пример 12: Обновление таблицы заполнением значениями 10000 по столбцу Зарплата.

UPDATE warehouse

SET zarpl=10000

4. Удаление строк из таблицы

Синтаксис:

DELETE FROM имя_таблицы

[WHERE условие];

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

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

Пример 13:

DELETE FROM warehouse

WHERE id=4

Тема 6: Команда запроса данных. Простой запрос.

  1. Команда SELECT /общий случай.

  2. Организация простого запроса.

  3. Псевдонимы столбцов.

  4. Предотвращение выборки дубликатов строк.

  5. Сортировка строк, возвращаемых запросом.

  6. Ограничение количества выбираемых строк.

  1. Команда SELECT /общий случай.

Команда SELECT выбирает информацию из базы данных. Синтаксис общей команды:

SELECT [DISTINCT] {*, имя_столбца [псевдоним], групповая_функция}

FROM имя_таблицы

[WHERE условие]

[GROUP BY выражение_группирования]

[HAVING условие_группы]

[ORDER BY {Имя_столбца, выражение} [ASC| DESC]];

  1. Организация простого запроса.

В простейшей форме команда SELECT должна включать следующее:

SELECT [DISTINCT] {*, имя_столбца [псевдоним]}

FROM имя_таблицы;

Предложение SELECT – задает нужные столбцы. Звездочка (*) означает выбор всех столбцов таблицы. Предложение FROM указывает, в какой таблице находятся столбцы, заданные в предложении SELECT.

Пример 1: Вывод содержимого всех столбцов и строк таблицы S_DEPT.

SELECT* from S_DEPT;

Выборка заданных столбцов.

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

Пример 2: Вывести все номера отделов, коды служащих и их фамилии из таблицы EMP.

SELECT id_otdel, id_cotr, fam_cotr

From EMP;

  1. Псевдонимы столбцов.

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

Пример 3: Вывод фамилии, заработной платы и суммы компенсационных выплат за год для каждого служащего. Объем выплат за год вычисляется путем прибавления к заработной плате ежемесячной премии в размере 100 долларов и умножения суммы на 12. Назвать столбец при выводе ANNUAL_SALARY.

SELECT id_cotr, fam_cotr, salary, 12*(salary+100) as ANNUAL_SALARY From EMP;

Пример 4: Вывод фамилии, заработной платы, должности и вычисленных комиссионных.

SELECT id_cotr, fam_cotr, salary, 12*(salary+100) “Зарплата за год

From EMP;

  1. Предотвращение выборки дубликатов строк.

При отсутствии указаний со стороны пользователя SQL*Plus включает в результаты запросов все строки, не изымая дубликаты. Ключевое слово DISTINCT, следующее сразу за словом SELECT, исключает дублирование строк.

Пример 5: Вывод всех названий отделов из таблицы S_DEPT, исключая дублирование

SELECT DISTINCT name

FROM S_DEPT;

Замечание: После квалификатора DISTINCT можно указать несколько столбцов. В этом случае он будет относиться ко всем выбранным столбцам.

Пример 6: Вывод всех возможных комбинаций должностей и номеров отделов.

SELECT DISTINCT id_otdel, id_cotr, fam_cotr From EMP;

5. Сортировка строк, возвращаемых запросом.

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

По умолчанию строки сортируются по возрастанию (как ASC).

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

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

SELECT DISTINCT id_otdel, id_cotr, fam_cotr FROM EMP

ORDER BY id_otdel;

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

SELECT id_otdel, id_cotr, fam_cotr, start_date FROM EMP ORDER BY start_date DESC;

В предложении ORDER BY можно указать псевдоним столбца. Сортировка может быть организована по позиции. Он особенно полезен при сортировке по длинному выражению. Вместо повторного ввода выражения можно указать его позицию в списке SELECT

Пример 9: Выбираем строки из таблицы EMP и сортируем по второму столбцу.

SELECT id_cotr, fam_cotr, salary*12

From EMP

ORDER BY 2;

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

Пример 10: Вывод фамилии, номера отдела и заработной платы всех служащих. Результат сортируется по номерам отделов, а внутри отделов - в порядке убывания заработной платы.

SELECT id_cotr, fam_cotr, salary

FROM EMP

ORDER BY id_otdel, salary DESC;

6. Ограничение количества выбираемых строк.

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

Пример 11: Запрос для вывода имен, фамилий и должностей, служащих с фамилией “Петров”.

SELECT id_cotr, fam_cotr, salary

FROM EMP

WHERE fam_name=’Петров’;

Оператор BETWEEN.

Оператор BETWEEN используется для проверки вхождения значения в интервал значений (включая границы интервала). Нижняя граница должна быть указана первой.

Пример 12: Вывод имени, фамилии и даты найма служащих, нанятых в течение 1 года в период с 01 мая 1991 года по 1 мая 1992 г включительно.

SELECT id_otdel, id_cotr, fam_cotr, start_date

FROM EMP

WHERE start_date Between ’01-май-1991’ and ’01-май-1992';

Оператор IN.

Для проверки принадлежности значений к заданному списку используется оператор IN.

Пример 13: Вывод номера, названия отдела и номера региона для отделов в регионах 1 и 3.

SELECT id, name, region

FROM DEPT

WHERE Region in(1,3);

Оператор LIKE.

Используется для поиска строковых значений с помощью метасимволов (wildcards). Условия для поиска могут содержать символьные литералы или числа:

‘%’ означает отсутствие или некоторое количество символов;

‘_’ означает один символ.

В критерии поиска символы ‘%’ и ‘_’ можно сочетать с литералами в любой комбинации.

Оператор LIKE может использоваться в качестве быстрого эквивалента некоторых операций BETWEEN.

Пример 14: Вывод фамилий и дат найма для служащих, принятых на работу в 1991 году.

SELECT id_otdel, id_cotr, fam_cotr, start_date

FROM EMP

WHERE start_date LIKE ‘%91’;

Пример 15: Вывод фамилий, второй буквой которых является буква “а”

SELECT id_otdel, id_cotr, fam_cotr

FROM EMP

WHERE fam_cotr LIKE ‘_a%’;

Оператор IS NULL.

Неопределенные значения проверяются с помощью оператора IS NULL. Пользоваться оператором “=“ для сравнения с неопределенными значениями не следует, так как неопределенное значение не может быть равно или не равно какому-то другому.

Пример 16: Вывод номера, наименования и кредитного рейтинга всех клиентов, не имеющих торгового представителя.

SELECT id, name, credit_rating FROM s_customer WHERE saler_predst IS NULL;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]