Введение в язык SQL

Автор работы: Пользователь скрыл имя, 16 Мая 2014 в 11:20, контрольная работа

Краткое описание

Мы с вами живем 21 веке — веке информационных технологий и данных. Нас повсюду окружает информация. Но ее бывает настолько много, что естественно ее всю мы не можем запомнить. Чтобы всю эту информацию запомнить и в случаи необходимости воспользоваться - используется компьютеры. Например все наши телекоммуникационные компании хранят информацию о своих абонентах. У многих из этих компаний количество абонентов превышает миллион. И каждый из абонентов ежедневно совершает или принимает несколько звонков. Следовательно не трудно представить о каком объеме информации идет речь. Конечно же если просто загрузить эту информацию в компьютер без определенного порядка — этим мы ничего не добьемся. И тогда нам на помощь приходит база данных.
Мы часто сталкиваемся с понятиями база данных и СУБД. Для начало уясним для себе, что база данных – это особая структура служащие для хранения информации, а СУБД (Система Управления Базами Данных) – это программный комплекс служащий для управления с базой данных. Имеется большое количество

Прикрепленные файлы: 1 файл

Введение в язык.docx

— 67.92 Кб (Скачать документ)

Введение в язык SQL 

 

Понятие базы данных и СУБД. Объектно-реляционные базы данных.

Мы с вами живем 21 веке — веке информационных технологий и данных. Нас повсюду окружает информация. Но ее бывает настолько много, что естественно ее всю мы не можем запомнить. Чтобы всю эту информацию запомнить и в случаи необходимости воспользоваться - используется компьютеры. Например все наши телекоммуникационные компании хранят информацию о своих абонентах. У многих из этих компаний количество абонентов превышает миллион. И каждый из абонентов ежедневно совершает или принимает несколько звонков. Следовательно не трудно представить о каком объеме информации идет речь. Конечно же если просто загрузить эту информацию в компьютер без определенного порядка — этим мы ничего не добьемся. И тогда нам на помощь приходит база данных.

Мы часто сталкиваемся с понятиями база данных и СУБД. Для начало уясним для себе, что база данных – это особая структура служащие для хранения информации, а СУБД (Система Управления Базами Данных) – это программный комплекс служащий для управления с базой данных. Имеется большое количество СУБД: Oracle,DB2, MSSQL, Interbase, Postgre, MySQL, MS Access, Paradox.

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

  • для интернет проектов чаще выбирается MySQL и Postgre
  • для простеньких программ Paradox и Access
  • для серьезных проектов используется Oracle, MS SQL и DB2

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

Как и было отмечено выше, база данных - это хранилище информации. База данных дает нам возможность загружать в нее информацию, обновлять, удалять и конечно же выводить определенную необходимую для нас информацию. Конечно же для начало нужно понять как же организована хранение информации в базе данных. Вся информация в базе данных представляется в виде обычной таблицы. В свою очередь таблицы состоят из строк (row) и столбцов (column). На примере таблицы EMP (1) рис1 мы видим обычную таблицу, состоящую из 8-ми столбцов и 5-ти строк

Рис1. Часть информации из таблицы EMP.

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

Невольно может возникнуть вопрос - ну а как же управлять всеми этими данными. Ответ заключается в SQL(structure query language) язык для общение с базой данных, который мы с вами будем разобрирать в данной книге.

Также нужно отметить, что базы данных используют также объектную модель хранения данных. В данной модели используются понятие объекта, атрибутов объекта, метода, инкапсуляции, наследование,полиморфизма. В данной книге мы не будем это рассматривать – не будем отходить от нашей цели, но отметим, что Oracle является объектно-реляционной базой данных.

SQL

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

SQL cтандарт

Первый стандарт SQL был принят в 1986 году организацией ANSI (American National Standards Institute) и в 1987 году организацией ISO (Международной организацией по стандартизации). В настоящее время действует стандарт SQL:2003.

Конечно же продукты базы данных разных коммерческих организаций иногда нарушают стандарт 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 приведем ответ Том Кайта: “Тип PLS_INTEGER позволяет повысить производительность лишь очень немногих локальных фрагментов кода (он почти всегда, в конечном итоге, преобразуется в тип NUMBER)”. Одним словом рекомендуем использовать тип NUMBER.

Рассмотрим более подробно тип NUMBER. Для указание того, что столбец является числовым используется конструкция:

column_name NUMBER (точность, масштаб);

Точность (precision) - это максимально допустимое число значащих десятичных цифр. Точность может принимать значение в интервале 1..38.

Масштаб - указывает на позицию, которую будет сдвинута точка справа или слева. Масштаб может принимать значение в интервале -84..127.

Если значение масштаба положительное, то сдвигаем точку с конца налево.

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

Приведем различные варианты комбинаций точности и масштаба числового типа.

Определение числового типа

В результате получается число, которое может принимать значение из нижнего интервала

Алгоритм получение

интервала числового типа.

NUMBER(7,2)

-99999.99

…..

99999.99

  1. 7 – значимых цифр
  2. размешение точки – так как масштаб положительный, то с конца на две позиции налево

NUMBER(7,9)

-0.009999999

…..

0.009999999

  1. 7 – значимых цифр
  2. размешение точки – с конца на девять позиции налево. При превышение масштаба точности, в позиции превышаюшие точность, данные позици заполняются нулями.

NUMBER(7,-2)

-999999900.

…..

999999900.

  1. 7 – значимых цифр
  2. размешение точки – так как масштаб отрицательный, то на две позиции с конца направо. При отрицательном масштабе данные позиции заполняются нулями.



 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

К примеру, если нам нужно определить столбец таблицы, в которой будет заносится информация о возврасте сотрудников (максимум 100 лет, думаю хватит), то: column_old NUMBER(2,0);

Как и отметили выше NUMBER является основным числовым типом, а от него образуются подтипы: DEC,DECIMAL, NUMERIC, binary_float, binary_double, INTEGER, INT, SMALLINT, REAL. Для целых чисел (например: -5, 0, 9) используется тип INTEGER (сокр. INT). Для чисел с дробными остатками (например: 9.8, -7.01) используется типы FLOAT, REAL, DOUBLE PRECISION.

Подтипы нужны для совместимости с скриптами с другими СУБД, так как они являются частью общего стандарта 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 проставляет BYTE (*). Максимальная длина может задаватся в интервале от 1 до 32767.

Для слияние двух строк используется оператор конкатенации “||” :

‘Hello’ || ‘ World’ = ‘Hello World’

Для представление строк состоящих из национальных символов используется типы NVARCHAR2 и соотвественно NCHAR.

Тип даты и времени

Как и везде в Oracle для целей хранения даты и времени используется тип DATE. Синтаксис назначение данного типа аналогичен верхним:

имя_столбца DATE;

Но начиная с версии Oracle9i появился тип TIMESTAMP, который исправил недостатки типа DATE.

Недостатки типа Date

  1. Тип DATE позволяет хранить время с точностью до секунды. Этим данный тип невозможно использовать для задач, где необходимо обеспечить работу с данными времени длительность, которых измеряется до долей секунды.
  1. Тип Date не хранит у себя информацию о часовом поясе.

 

Насчет второго недостатко хотелось бы привести пример, как то приходилось проектировать базу для Интернет магазина. И наткнулись как раз на эту проблему. Задача была такой, если Алекс находясь в Москве покупает

 

(*) Чтоб быть точно  увереным, что будет по умолчанию использовать Oracle нужно выполнить запрос:

SELECT * FROM nls_session_parameters

WHERE parameter = 'NLS_LENGTH_SEMANTICS';

товар на азербайджанском интернет магазине в 10:00 (по местному времени),

то при запросе списков операций ему должно отображаться, что он купил товар в 10:00 часов, но для для азербайджанского оператора сайта при запросе списков операций – время покупки товара Алексом должно отображаться 11:00 (так как у нас разница в час). Тип TIMESTAMP убрал вс эти недостатки DATE.

 

Синтаксис назначение TIMESTAMP следующий:

TIMESTAMP [точность]

TIMESTAMP [точность] WITH TIME ZONE

 

Точность указывает сколько будет использоваться десятичных цифр, для хранения долей секунды. Точность может принимать значение в интервале от 0 до 9. По умолчанию 6 т.е. с точностью до 0,000001 секунд.

Другие типы

Конечно же хотелось бы отметить тип NULL – этот тип означает пустоту, то есть ничего. Для примера 5 + null =null то есть мы прибавим к пустоте, что-то это все равно будет пустота. Но надо учесть при операции конкатенации: ‘abc’ || null = ‘abc’. Насчет данного типа мы еще не раз поговорим в последующих главах.

Как было отмечено строковые типы VARCHAR2 имеет максимальную длину 32767, поэтому если нужно использовать хранение больших текстовых данных нужно использовать CLOB (ну и соотвественно для хранения национальных символов – NCLOB). СLOB может хранить данные до 4G.

Для хранение двоичных данных (изображений, музыки и.т.д) используется тип BLOB в котором также можно хранить данные до 4G.

В Oracle также имеется типы BOOLEAN, RAW, UROWID, ROWID, LOB, BFILE, XMLType, но данные типы не рассмотриваются в данной книге.

DML – язык манипулирование  данных

 

 

До сих пор мы разбирали только как писать запросы, как выбирать те или иные данные, оставляя не раскрытыми то, как эти данные попали в эти таблицы. Сейчас мы постараемя раскрыть и эти вопросы с помощью DML (Data Manipulation Language) – язык манипулирования данными.

Операции ввода, изменения и удаления данных являются командами языка DML. Одна или несколько подряд идущих операций DML называются транзакциями. Про транзакции и как с ними управлять мы с Вами разберем в конце главы. А сейчас постаремся понять как часто используется эти операторы DML.

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

Насколько мы видим поседневной жизни выполняется больше DML операций нежели SELECT-ы. Но мы не учли, что эти операции пишет программист в логику своей программы и она обработывается автоматически. Конечно наш читатель может и оказатся тем самым программистом, который прочитав эту книгу, бужет использовать команды  DML в будущем, при написании программы. Но, а если вы разработчик отчетов – поверьте мне и в этом случаи вам знания этих команд еще не раз пригадятся. Таким образом поняв все значимость команд DML приступим к изучению команд ввода данных

Информация о работе Введение в язык SQL