Главная страница
Навигация по странице:

  • CREATE VIEW

  • DROP VIEW

  • Условия модифицируемости представлений

  • Привилегии для таблиц и представлений

  • Дополнительны привилегии в СУБД ALTER – позволяет модифицировать структуру таблиц (DB2, Oracle)EXECUTE – позволяет выполнять хранимые процедуры GRANT

  • SELECT|INSERT|DELETE |(UPDATE

  • GRANT SELECT, UPDATE

  • REVOKE UPDATE ON

  • Аналитические функции

  • ИМЯ_ФУНКЦИИ

  • PARTITION BY столбец

  • COMMIT

  • Основы SQL. Основы sql основы sql план курса План курса


    Скачать 1.14 Mb.
    НазваниеОсновы sql основы sql план курса План курса
    АнкорKzkzkzals
    Дата21.09.2022
    Размер1.14 Mb.
    Формат файлаpptx
    Имя файлаОсновы SQL.pptx
    ТипДокументы
    #688650
    страница9 из 9
    1   2   3   4   5   6   7   8   9

    VIEW - представление

    VIEW - представление


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

    Создание представления

    CREATE VIEW view_name AS SELECT columns FROM tables [WHERE conditions];

    Изменение представления

    CREATE OR REPLACE VIEW view_name AS SELECT columns FROM tables [WHERE conditions];

    Удаление представления

    DROP VIEW view_name

    Выбор данных из представления

    SELECT * FROM view_name

    Представления

    Представления


    Модификация данных через представления

    Представление модифицируемое, если относительно него можно использовать все три команды – INSERT, UPDATE, DELETE, и оно создано на основе одной таблицы БД.

    Условия модифицируемости представлений:

    представление должно формироваться из одной базовой таблицы;

    оно не должно содержать ключевого слова DISTINCT в списке фразы SELECT;
    • список фразы SELECT должен содержать только имена столбцов;
    • представление не должно содержать предложений GROUP BY или HAVING, и подзапросов в предложениях FROM и WHERE;
    • для операторов INSERT и UPDATE представление должно содержать все столбцы базовой таблицы, которые имеют ограничения NOT NULL.

    GRANT (допуск)

    REVOKE (отмена)

    Привилегии для таблиц и представлений:

    SELECT – позволяет считывать данные

    INSERT – позволяет вставлять новые записи

    UPDATE – позволяет модифицировать записи

    DELETE – позволяет удалять записи

    Дополнительны привилегии в СУБД

    ALTER – позволяет модифицировать структуру таблиц (DB2, Oracle)

    EXECUTE – позволяет выполнять хранимые процедуры

    GRANT {SELECT|INSERT|DELETE|(UPDATE столбец, …)},…

    ON таблица ТО {пользователь | PUBLIC} [WITH GRANT OPTION]

    Предоставить пользователю Ivanov полномочия для осуществления выборки и модификации фамилий в таблице Students с правом предоставления полномочий.

    GRANT SELECT, UPDATE StName ON Students ТО Ivanov WITH GRANT OPTION

    REVOKE {{SELECT | INSERT | DELETE | UPDATE},…|ALL PRIVILEGES}

    ON таблица,… FROM {пользователь | PUBLIC},… {CASCADE | RESTRICT}

    Снять с пользователя Ivanov полномочия для осуществления модификации фамилий в таблице Students. Также снять эту привилегию со всех пользователей, которым она была предоставлена Ивановым.

    REVOKE UPDATE ON Students FROM Ivanov CASCADE

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

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


    Хранимая процедура (Stored Procedure, SP) – набор заранее скомпилированных операторов SQL и операторов управления программой, который хранится как объект БД.

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

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

    SP используются в качестве механизма защиты: если нельзя предоставлять прямой доступ пользователям к таблицам и представлениям БД, тогда им предоставляется доступ к таблицам только по чтению, а для выполнения таких операций, как UPDATE и DELETE, создаются соответствующие SP, на выполнение которых пользователи и получают права, т.е. пользователи получают доступ к таблицам БД только путем выполнения SP.

    Аналитические функции

    Аналитические функции

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

    ИМЯ_ФУНКЦИИ(<аргумент>,< аргумент >, . . . )

    OVER <конструкция_фрагментации(группы)> <конструкция_упорядочения> <конструкция_окна>)

    OVER — ключ. слово, идентифицирующее эту функцию как аналитическую. Конструкция после ключевого слова OVER описывает срез данных, "по которому" будет вычисляться функция.

    <конструкция_фрагментации> - PARTITION BY столбец - необязательная конструкция. Если конструкция фрагментации не задана, все результирующее множество считается одним большим фрагментом. <конструкция_упорядочения> - ORDER BY столбец - необязательная конструкция. Задает критерий сортировки данных в каждой группе. Синтаксис ORDER BY выражение [ASC | DESC] [NULLS FIRST | NULLS LAST]

    , b.total_amount

    , sum(b.total_amount) over () sumall

    , count(b.total_amount) over () countall

    from bookings b

    where trunc(b.book_date,'mm')='01.08.2017'

    order by b.book_date

    , b.total_amount

    , sum(b.total_amount) over (partition by trunc(b.book_date)) sumday

    , max(b.total_amount) over (partition by trunc(b.book_date)) maxday

    , count(b.total_amount) over (partition by trunc(b.book_date)) countday

    , round(b.total_amount

    /sum(b.total_amount) over (partition by trunc(b.book_date))

    *100,2) percent

    from bookings b

    order by b.book_date

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

    Результаты выполнения операторов, входящих в транзакцию, могут быть либо сохранены в БД при помощи оператора COMMIT, либо полностью аннулированы оператором ROLLBACK (или ROLLBACK до точки сохранения).

    Транзакция начинается с 1-го выполняемого оператора, либо с 1-го оператора после COMMIT или ROLLBACK.

    Транзакция заканчивается при выполнении операторов COMMIT или ROLLBACK.

    Чтобы оградить данные от модифицирования другими пользователями, в начале транзакции следует выполнить оператор SET TRANSACTION READ ONLY. При этом не допускается и изменение данным самим пользователем, издавшим директиву.

    Древовидным запросом называется запрос, в котором присутствует предложение CONNECT BY, предназначенное для отображения строк результата в определенном иерархическом порядке.

    Начиная с корня, описанного предложением STARTWITH, запрос просматривает каждую соединенную с корнем ветвь.

    • Вывести список самолетов с кодами 320, 321, 733;
    • Вывести список самолетов с кодом не на 3;
    • Найти билеты оформленные на имя «OLGA», с емайлом «OLGA» или без емайла;
    • Найти самолеты с дальность полета 5600, 5700. Отсортировать список по убыванию дальности полета;
    • Найти аэропорты в Moscow. Вывести название аэропорта вместе с городом. Отсортировать по полученному названию;
    • Вывести список всех городов без повторов в зоне «Europe»;
    • Найти бронирование с кодом на «3A4» и вывести сумму брони со скидкой 10%
    • Вывести все данные по местам в самолете с кодом 320 и классом «Business»в формате «Данные по месту: номер места»
    • Сайт http://www.sql-ex.ru/learn_exercises.php. Задания: 1-5
    • Архитектура базы данных Oracle.pdf (стр. 1 – 43)
    • Найти максимальную и минимальную сумму бронирования в 2017 году;
    • Найти количество мест во всех самолетах;
    • Найти количество мест во всех самолетах с учетом типа места;
    • Найти количество билетов пассажира ALEKSANDR STEPANOV, телефон которого заканчивается на 11;
    • Вывести всех пассажиров с именем ALEKSANDR, у которых количество билетов больше 2000. Отсортировать по убыванию количества билетов;
    • Вывести дни в сентябре 2017 с количеством рейсов больше 500.
    • Вывести список городов, в которых несколько аэропортов
    • Сайт http://www.sql-ex.ru/learn_exercises.php. Задания: 11,12,15
    • Что такое dual, between, in, like. Чем отличается like от «=»
    • select sysdate from dual
    • select trunc(sysdate) from dual
    • select trunc(sysdate,’yyyy’) from dual
    • select round(51236.99) from dual
    • select trunc(51236.99) from dual
    • Select substr(‘asdfgh’, 5,1) from dual
    • Select substr(‘asdfgh’, 4) from dual
    • Select lpad(‘123’, 5,’0’) from dual
    • Вывести модель самолета и список мест в нем
    • Вывести информацию по всем рейсам из аэропортов в г.Москва за сентябрь 2017
    • Вывести кол-во рейсов по каждому аэропорту в г.Москва за 2017
    • Вывести кол-во рейсов по каждому аэропорту, месяцу в г.Москва за 2017
    • Найти все билеты по бронированию на «3A4B»
    • Найти все перелеты по бронированию на «3A4B»
    • Читать презентацию
    • Сайт http://www.sql-ex.ru/learn_exercises.php. Задания: 6,9,13,14,16,19,20,21
    • Вывести все самолеты с дальность полета, такой же как дальность самолетов из архива (aircrafts_data_archive)
    • Вывести все самолеты с дальностью полета больше, чем у всех самолетов из архива
    • Вывести все самолеты с дальностью полета больше, чем у любого самолета из архива
    • Вывести все самолеты с дальностью полета, как у самолета из архива с минимальной дальность
    • Вывести все самолеты, если модели этих самолетов есть в архиве
    • Вывести информацию по самолетам. Для моделей, которые есть в архиве вывести конструктора
    • Как правило в городе есть только один аэропорт, исключение:
    • Показать данные по самолетам, у которых нет рейсов 01.09.2017
    • Показать данные по самолетам, у которых есть рейсы 01.09.2017 и в которых больше 150 мест
    • Показать все рейсы 01.09.2017 по самолетам с дальностью полета свыше 8тыс.км
    • Получить список перелетов, которые дороже всех перелетов по билету 0005432661915
    • Найти перелеты стоимость которых равна стоимости любого перелета по билету 0005432661915
    • Сайт http://www.sql-ex.ru/learn_exercises.php. Задания: 10, 17,18,21,22,23
    • Читать презентацию (стр.41-44)
    • Получить информацию по аэропортам. Если аэропорт находится в MOSCOW, то вывести город и название. Если аэропорт находится в NALCHIK, то вывести город, иначе название. (использовать decode и case);
    • Вывести название аэропорта и информацию по кол-ву рейсов. Если аэропорт находится в MOSCOW или NALCHIK, то вывести кол-во рейсов за 01.09.2017, иначе общее кол-во рейсов по аэропорту.
    • Выбрать все модели самолетов из таблиц AIRCRAFTS1 и AIRCRAFTS2
    • Выбрать все модели самолетов из таблиц AIRCRAFTS1 и AIRCRAFTS2 без повторов
    • Выбрать одинаковые модели самолетов из таблиц AIRCRAFTS1 и AIRCRAFTS2
    • Выбрать модели самолетов, которые есть в AIRCRAFTS2, но нет в AIRCRAFTS1
    • Получить список всех моделей самолетов из двух. Внизу списка вывести итоговую строку «Total N». Отсортировать по модели, итоговая строка д.б. последней.
    • См.6 переписать запрос используя CTE
    • Презентация (слайды 47,48,50,58,59)
    • Сайт http://www.sql-ex.ru/learn_exercises.php. Задания: 1-30
    • Создать таблицу с именем table* с полями id_table* – число, code – строка, name –строка, range - число. Первичный ключ id_table*;
    • Вставить в таблицу одну строку с произвольными значениями (для поля id_table* использовать последовательность sq_id_table1.nextval);
    • Вставить данные из таблицы «Самолеты», по самолетам с кодами 619 или на 3%;
    • Добавить записи из таблицы «Самолеты», моделей который нет в архиве (aircrafts_data_archive)
    • В своей таблице обновить поле наименование по коду 320, 319, у остальных самолетов увеличить дальность полета в 2 раза;
    • Удалить данные по самолетам с кодами CN%
    • Из таблицы AIRCRAFTS_DATA, удалить данные по самолету с кодом 319.
    • Дать права на чтение из таблицы AIRCRAFTS_DATA, для пользователя user1. Подключиться под пользователем user1(пароль pass1) и проверить есть ли права.
    • Удалить права на таблицу AIRCRAFTS_DATA у пользователя user1
    • Удалить созданную таблицу table*;
    • Презентация (69-78)
    • Сайт http://www.sql-ex.ru/learn_exercises.php. Задания: 1-30
    1   2   3   4   5   6   7   8   9


    написать администратору сайта