Автор работы: Пользователь скрыл имя, 16 Мая 2014 в 11:20, контрольная работа
Мы с вами живем 21 веке — веке информационных технологий и данных. Нас повсюду окружает информация. Но ее бывает настолько много, что естественно ее всю мы не можем запомнить. Чтобы всю эту информацию запомнить и в случаи необходимости воспользоваться - используется компьютеры. Например все наши телекоммуникационные компании хранят информацию о своих абонентах. У многих из этих компаний количество абонентов превышает миллион. И каждый из абонентов ежедневно совершает или принимает несколько звонков. Следовательно не трудно представить о каком объеме информации идет речь. Конечно же если просто загрузить эту информацию в компьютер без определенного порядка — этим мы ничего не добьемся. И тогда нам на помощь приходит база данных.
Мы часто сталкиваемся с понятиями база данных и СУБД. Для начало уясним для себе, что база данных – это особая структура служащие для хранения информации, а СУБД (Система Управления Базами Данных) – это программный комплекс служащий для управления с базой данных. Имеется большое количество
Введение в язык SQL
Понятие базы данных и СУБД. Объектно-реляционные базы данных.
Мы с вами живем 21 веке — веке информационных технологий и данных. Нас повсюду окружает информация. Но ее бывает настолько много, что естественно ее всю мы не можем запомнить. Чтобы всю эту информацию запомнить и в случаи необходимости воспользоваться - используется компьютеры. Например все наши телекоммуникационные компании хранят информацию о своих абонентах. У многих из этих компаний количество абонентов превышает миллион. И каждый из абонентов ежедневно совершает или принимает несколько звонков. Следовательно не трудно представить о каком объеме информации идет речь. Конечно же если просто загрузить эту информацию в компьютер без определенного порядка — этим мы ничего не добьемся. И тогда нам на помощь приходит база данных.
Мы часто сталкиваемся
с понятиями база данных и СУБД. Для начало
уясним для себе, что база данных – это
особая структура служащие для хранения
информации, а СУБД (Система Управления
Базами Данных) – это программный комплекс
служащий для управления с базой данных.
Имеется большое количество СУБД: Oracle,DB2, MSSQL,
При выборе базы данных нужно исходить из нескольких критериев: для какого проекта выбирается база, каковы условия лицензирования, имеется ли специалист, который смог бы подерживать эту базу данных. Но в целом можно разделить:
Все эти базы данных относятся к реляционным базам данных. Впервые термин реляционная модель данных — была разработана доктором Коддом 1970 году. Но мы с вами на этом не будем заострять свое внимания, так как прочитав эту книгу вы будете иметь полное представление об реаляционной базе данных. Естественно существуют и другие модели баз данных, полную информацию о которых вы сможете найти в соответствующих документациях
Как и было отмечено выше, база данных - это хранилище информации. База данных дает нам возможность загружать в нее информацию, обновлять, удалять и конечно же выводить определенную необходимую для нас информацию. Конечно же для начало нужно понять как же организована хранение информации в базе данных. Вся информация в базе данных представляется в виде обычной таблицы. В свою очередь таблицы состоят из строк (row) и столбцов (column). На примере таблицы EMP (1) рис1 мы видим обычную таблицу, состоящую из 8-ми столбцов и 5-ти строк
Рис1. Часть информации из таблицы EMP.
Каждый столбец любой таблицы в реляционной базе данных должен иметь конкретный тип и размер. Все содержимое ячеек столбца должно соответствовать его типу. Подробно об типов данных мы рассмотрим в этой главе ниже.
Невольно может возникнуть
вопрос - ну а как же управлять всеми этими
данными. Ответ заключается в SQL(structure query
Также нужно отметить,
что базы данных используют также объектную
модель хранения данных. В данной модели
используются понятие объекта, атрибутов
объекта, метода, инкапсуляции, наследование,пол
SQL
Люди при общение между собой используют языки: азербайджанский, английский, русский и.т.д вот и при общение с базой данных используется SQL. SQL – это специальный язык общение с базой данных, используемый для доступа и обработки данных, для вставки, изменения, удаления и определения данных, обладающий большим набором комманд и функций.
SQL cтандарт
Первый стандарт SQL был
принят в 1986 году организацией ANSI (American
Конечно же продукты базы данных разных коммерческих организаций иногда нарушают стандарт SQL, но это связана в основном с добавлением новой функциональности в базе данных или с модернизациий операторов для более облегченного использование SQL конструкции (*), который еще не принят стандартом.
В нашей книге, мы будем изучать SQL реализованного в СУБД Oracle. Но нужно понимать, что SQL это универсальный язык для всех СУБД. А так как СУБД Oracle на сегодняшний день является лидером среди СУБД, а это означает, изучив SQL Oracle вы будете знать все возможности языка SQL.
(*) К примеру использование оператора CASE вместо DECODE.
Типы данных в базе данных
Как выше уже было отмечено: “Каждый столбец любой таблицы в реляционной базе данных должен иметь конкретный тип и размер. Все содержимое ячеек столбца должно соответствовать его типу “.
Рассмотрим типы данных имеющиеся в Oracle:
Числовой тип
В Oracleесть основной базисный числовый тип NUMBER, все остальные числовые подтипы (INTEGER, FLOAT,REAL) созданы от него.
Вообще-то имеется
три основных базисных типов NUMBER, PLS_INTEGER,?BINARY_INTEGER.
BINARY_INTEGER уже устарел, так как сам Oracle уже
рекомендует использовать вместо него
PLS_INTEGER. А насчет использование PLS_INTEGER или
Рассмотрим более подробно тип NUMBER. Для указание того, что столбец является числовым используется конструкция:
column_name NUMBER (точность, масштаб);
Точность (precision) - это максимально допустимое число значащих десятичных цифр. Точность может принимать значение в интервале 1..38.
Масштаб - указывает на позицию, которую будет сдвинута точка справа или слева. Масштаб может принимать значение в интервале -84..127.
Если значение масштаба положительное, то сдвигаем точку с конца налево.
Если значение масштаба отрицательное, то сдвигаем точку с конца направо.
Приведем различные варианты комбинаций точности и масштаба числового типа.
Определение числового типа |
В результате получается число, которое может принимать значение из нижнего интервала |
Алгоритм получение интервала числового типа. |
NUMBER(7,2) |
-99999.99 ….. 99999.99 |
|
NUMBER(7,9) |
-0.009999999 ….. 0.009999999 |
|
NUMBER(7,-2) |
-999999900. ….. 999999900. |
|
К примеру, если нам нужно определить столбец таблицы, в которой будет заносится информация о возврасте сотрудников (максимум 100 лет, думаю хватит), то: column_old NUMBER(2,0);
Как и отметили выше NUMBER является
основным числовым типом, а от него образуются
подтипы: DEC,DECIMAL, NUMERIC,
Подтипы нужны для совместимости с скриптами с другими СУБД, так как они являются частью общего стандарта SQL. Ну для более большой ясности приведем код образующий подтип INTEGER:
subtype INTEGER is NUMBER(38,0);
Получается объявить column_a как:
column_a INTERGER или column_a NUMBER(38,0)
это одно и тоже.
Строковый тип
В Oracle имеется два базисных строковых типов это VARCHAR2 и СHAR.
СHAR строковый тип с фиксированной длиной. То есть если мы объявляем столбец типом CHAR длиной 10 и заносим данные длина, которых меньше десяти, то Oracleавтоматически дополняет их пробелами.
Строковый тип VARCHAR2 это тип с переменной длиной. Раньше использование типа CHAR давало выигрыш производительности, но начиная с последних версий Oracle математичекий аппарат VARCHAR2 улучшен, таким образом его производительность уравнялось с CHAR.
Типы |
Проигрыш в занимаемом месте |
Производительность по отношению к друг другу |
CHAR |
Пригрываем так как всегда фиксированная длина (дополняется пробелами автоматически) |
Одинакова |
VARCHAR2 |
Нет проигрыша |
Одинакова |
Исходя из верхнего графика не трудно догодаться, что мы рекомендуем использовать тип VARCHAR2. Для объявление столбца сторокового типа используется:
имя_столбца CHAR (максимальная длина [CHAR | BYTE]);
имя_столбца VARCHAR2 (максимальная длина [CHAR | BYTE]);
При определние типа можно пропустить конструкцию [CHAR | BYTE]
column1 VARCHAR2(10), по умолчанию Oracle проставляет
Для слияние двух строк используется оператор конкатенации “||” :
‘Hello’ || ‘ World’ = ‘Hello World’
Для представление строк состоящих из национальных символов используется типы NVARCHAR2 и соотвественно NCHAR.
Тип даты и времени
Как и везде в Oracle для целей хранения даты и времени используется тип DATE. Синтаксис назначение данного типа аналогичен верхним:
имя_столбца DATE;
Но начиная с версии Oracle9i появился тип TIMESTAMP, который исправил недостатки типа DATE.
Недостатки типа Date |
|
|
Насчет второго недостатко хотелось бы привести пример, как то приходилось проектировать базу для Интернет магазина. И наткнулись как раз на эту проблему. Задача была такой, если Алекс находясь в Москве покупает
(*) Чтоб быть точно увереным, что будет по умолчанию использовать Oracle нужно выполнить запрос:
SELECT * FROM nls_session_parameters
WHERE parameter = 'NLS_LENGTH_SEMANTICS';
товар на азербайджанском интернет магазине в 10:00 (по местному времени),
то при запросе списков операций ему должно отображаться, что он купил товар в 10:00 часов, но для для азербайджанского оператора сайта при запросе списков операций – время покупки товара Алексом должно отображаться 11:00 (так как у нас разница в час). Тип TIMESTAMP убрал вс эти недостатки DATE.
Синтаксис назначение TIMESTAMP
TIMESTAMP [точность]
TIMESTAMP [точность] WITH
Точность указывает сколько будет использоваться десятичных цифр, для хранения долей секунды. Точность может принимать значение в интервале от 0 до 9. По умолчанию 6 т.е. с точностью до 0,000001 секунд.
Другие типы
Конечно же хотелось бы отметить тип NULL – этот тип означает пустоту, то есть ничего. Для примера 5 + null =null то есть мы прибавим к пустоте, что-то это все равно будет пустота. Но надо учесть при операции конкатенации: ‘abc’ || null = ‘abc’. Насчет данного типа мы еще не раз поговорим в последующих главах.
Как было отмечено строковые типы VARCHAR2 имеет максимальную длину 32767, поэтому если нужно использовать хранение больших текстовых данных нужно использовать CLOB (ну и соотвественно для хранения национальных символов – NCLOB). СLOB может хранить данные до 4G.
Для хранение двоичных данных (изображений, музыки и.т.д) используется тип BLOB в котором также можно хранить данные до 4G.
В Oracle также имеется
типы BOOLEAN, RAW, UROWID,
DML – язык манипулирование данных
До сих пор мы разбирали только как писать запросы, как выбирать те или иные данные, оставляя не раскрытыми то, как эти данные попали в эти таблицы. Сейчас мы постараемя раскрыть и эти вопросы с помощью DML (Data Manipulation Language) – язык манипулирования данными.
Операции ввода, изменения и удаления данных являются командами языка DML. Одна или несколько подряд идущих операций DML называются транзакциями. Про транзакции и как с ними управлять мы с Вами разберем в конце главы. А сейчас постаремся понять как часто используется эти операторы DML.
Возьмем нашу базу, допустим – это база какого-нибудь интернет магазина по онлайн покупкам. Для нас каждый новый заказ это операция ввода тех или иных данных в базу. Если клиент решит, что-нибудь изменить в своем заказе то это будет операция изменения. Конечно если клиент откажется от заказа и захочет его удалить – это будет команда удаления.
Насколько мы видим поседневной жизни выполняется больше DML операций нежели SELECT-ы. Но мы не учли, что эти операции пишет программист в логику своей программы и она обработывается автоматически. Конечно наш читатель может и оказатся тем самым программистом, который прочитав эту книгу, бужет использовать команды DML в будущем, при написании программы. Но, а если вы разработчик отчетов – поверьте мне и в этом случаи вам знания этих команд еще не раз пригадятся. Таким образом поняв все значимость команд DML приступим к изучению команд ввода данных