Основы SQL. Основы sql основы sql план курса План курса
Скачать 1.14 Mb.
|
select to_char(f.date_departure, 'dd.mm.yyyy') date_departure, a.city||' ('||a.airport_code||')' departure, a_ar.city||' ('||a_ar.airport_code||')' departure, tf.fare_conditions, tf.amountfrom ticket_flights tfwhere tf.ticket_no = '0005432661915'order by f.scheduled_departure! добавить информацию: название самолета, место и данные пассажираSAMPLE (процент) [ SEED (значение) ]Процент может принимать значение от 0.000001 до 100 (не включая)Если указать параметр SEED, то БД будет попытаться вернуть одну и туже выборку, иначе каждый раз будет возвращаться разные строки таблицы.select t.*from tickets sample(10) t;Выбрать 10% данных из таблицы билетов с именем пассажира DMITRIY SERGEEVselect *from tickets sample(10) twhere t.passenger_name ='DMITRIY SERGEEV';Выборка одной записиselect t.*from tickets sample(10) twhere t.passenger_name='DMITRIY SERGEEV'and rownum=1;При выполнении запроса в первую очередь выполняется sample – будет выбрано 10% записей, после этого выполнится where. При выборе 10% записей, в списке может не оказаться пассажиров с таким именем.Способ 1. С помощью конструкции "SELECT FROM SELECT“ select * from (select t.ticket_no, tf.flight_id, t.passenger_name , tf.amount from tickets t join ticket_flights tf on t.ticket_no=tf.ticket_no order by tf.amount desc) where rownum<=10 Способ 2. "Классика" c Oracle 7 select * from (select t.ticket_no, tf.flight_id, t.passenger_name , tf.amount , row_number() over (order by tf.amount desc) rn from tickets t join ticket_flights tf on t.ticket_no=tf.ticket_no ) where rn<=10 Способ 3. "Новомодный" c Oracle 12c. select t.ticket_no, tf.flight_id, t.passenger_name , tf.amount from tickets t join ticket_flights tf on t.ticket_no=tf.ticket_no order by tf.amount desc fetch first 10 rows only -- или одна строка fetch first row only from tickets torder by tf.amount descfetch first 10 rows with tiesoffset m rows fetch next n rows only (выбор n строк после m записей)from tickets torder by tf.amount descoffset 25 rows fetch next 10 rows onlyfetch first 1 percent rows only (выбор 1% записей)from tickets torder by tf.amount descfetch first 1 percent rows onlyДля модификации данных используются три оператора: INSERT, DELETE и UPDATE. Оператор INSERT используется для вставки одной записи или несколько записей в таблицу Синтаксис оператора INSERT при вставке одной записи с помощью ключевого слова VALUES: INSERT INTO table (column1, column2, … column_n ) VALUES (expression1, expression2, … expression_n ); Добавить новый самолет в БД: INSERT INTO aircrafts_data (aircraft_code, range, model) VALUES ('як-42', 12000, 'яковлев як-42'); Многострочный оператор INSERT добавляет в таблицу несколько строк: INSERT INTO table (column1, column2, … column_n ) SELECT expression1, expression2, … expression_n FROM source_table [WHERE conditions] ! Добавить архивные модели самолетов (aircrafts_data_archive) ! Вставить недостающие данные о само летах c дальностью полета менее 5тыс. км. из архива (aircrafts_data_archive) в aircrafts_data Удаление строк из таблицы БД осуществляется с помощью оператора DELETE (удалить): DELETE FROM имя_таблицы [WHERE условие_поиска], где условие поиска может быть вложенным запросом. Удалить данные из архива самолетов. DELETE FROM aircrafts_data_archive WHERE aircraft_code=''; Удалить все билеты по бронированию номер Примечание. Отсутствие предложения WHERE приводит к удалению ВСЕХ строк из указанной таблицы. Обновление значения одного или нескольких столбцов в выбранных строках одной таблицы БД осуществляется с помощью оператора UPDATE (обновить): UPDATE имя_таблицы SET имя_столбца1 = выражение1 , имя_столбца2 = выражение2… [WHERE условие_поиска] Увеличить на 20% дальность полета самолетов «Boeing». update aircrafts_data set range=1.2*range where upper(model) like 'BO%' Примечание. Отсутствие предложения WHERE приводит к обновлению ВСЕХ строк из указанной таблицы. Команды DDL: CREATE – создает объект БД; ALTER – изменяет определение существующего объекта; DROP – удаляет ранее созданный объект. CREATE TABLE table_name ( column1 datatype [ NULL | NOT NULL ], column2 datatype [ NULL | NOT NULL ], … column_n datatype [ NULL | NOT NULL ] [[CONSTRAINT <имя_ограничения>] <ограничение уровня колонки>]… [[CONSTRAINT <имя_ограничения>] <ограничение уровня таблицы>] ) Ограничения PRIMARY KEY – определение первичного ключа таблицы; UNIQUE – обеспечение уникальности значений в колонке; NULL / NOT NULL – разрешение или запрещение неопределенных значений в колонке; CHECK <условие> – задание условия на значение данных в колонке; [FOREIGN KEY <имя_колонки>] REFERENCES <имя_таблицы> <имя_колонки> – определение внешнего ключа для таблицы. Создания таблицы AIRPORTS_DATA CREATE TABLE AIRPORTS_DATA ( AIRCRAFT_CODE CHAR(3) NOT NULL ENABLE, RANGE NUMBER(10,0) NOT NULL ENABLE, MODEL VARCHAR2(100) NOT NULL ENABLE, CONSTRAINT AIRCRAFTS_PKEY PRIMARY KEY (AIRCRAFT_CODE) ) CREATE TABLE AS ОПЕРАТОР – создание таблицы на основе существующей, путем копирования столбцов существующей таблицы CREATE TABLE new_table AS (SELECT * FROM old_table); CREATE TABLE new_table AS (SELECT t1.col1, t2.col2, t2.col6 FROM old_table1 t1 join old_table2 t2 on t1.col1=t2.col1 where t1.col5<1000); Добавить столбец в таблицу ALTER TABLE table_name ADD column_name column-definition; Изменить столбец в таблице ALTER TABLE table_name MODIFY column_name column_type; Удаление столбца из таблицы ALTER TABLE table_name DROP COLUMN column_name; Переименование столбца в таблице ALTER TABLE table_name RENAME COLUMN old_name to new_name; Переименовать таблицу ALTER TABLE table_name RENAME TO new_table_name; Добавить ограничение ALTER TABLE table_name ADD CONSTRAINT name PRIMARY KEY (table_id); Удалить ограничение ALTER TABLE table_name DROP CONSTRAINT name DROP TABLE [schema_name].table_name [ CASCADE CONSTRAINTS ] [ PURGE ]; CASCADE CONSTRAINTS - необязательный. Если этот параметр задан, все ограничения ссылочной целостности будут также удалены. PURGE - необязательный. Если указано, таблица и ее зависимые объекты будут удалены из корзины, и вы не сможете восстановить таблицу. Если PURGE не указан, таблица и ее зависимые объекты помещаются в мусорную корзину и могут быть восстановлены позже, если это необходимо |