Добавлен: 05.07.2023
Просмотров: 65
Скачиваний: 3
1.Введение
В настоящее время объемы информации все время возрастают. Наиболее удобным способом хранения информации, на основе опыта нескольких десятилетий, был признан способ хранения информации в виде баз данных.
База данных – это, прежде всего хранилище объектов данных, т.е. набора возможных понятий или событий, описываемых базой данных (БД), Вместе с этим основными функциями БД являются систематизация информации (знаний) и возможность взаимосвязи объектов между собой.
Любую структуру данных можно преобразовать в простую двумерную таблицу. Основная идея реляционного подхода состоит в том, чтобы представить произвольную структуру данных в виде простой двумерной таблицы или, как говорят, нормализовать структуру. И как следствие возникла необходимость использования универсального языка для доступа и управления данными в различных базах данных. Таким языком стал SQL.
Язык для взаимодействия с БД SQL появился в середине 70-х и был разработан в рамках проекта экспериментальной реляционной СУБД System R. Исходное название языка SEQUEL (Structered English Query Language) только частично отражает суть этого языка. Конечно, язык был ориентирован главным образом на удобную и понятную пользователям формулировку запросов к реляционной БД, но на самом деле уже являлся полным языком БД, содержащим помимо операторов формулирования запросов и манипулирования БД средства определения и манипулирования схемой БД. В языке отсутствовали средства синхронизации доступа к объектам БД со стороны параллельно выполняемых транзакций: с самого начала предполагалось, что необходимую синхронизацию неявно выполняет система управления базами данных СУБД [1, с.7].
После появления на рынке двух пионерских СУБД – SQL/DS (1981 год) и DB2 (1983 год) – он приобрел статус стандарта де-факто для профессиональных реляционных СУБД. В 1987 году SQL стал официальным международным стандартом языка баз данных, а в 1992 году вышла вторая версия этого стандарта.
Важной отличительной чертой SQL является его независимость от компьютерной среды (операционной системы и архитектуры). SQL является инструментом, предназначенным для обработки и чтения информации, содержащейся в компьютерной базе данных.
При создании языка запросов нового поколения разработчики старались сделать его простым и легким в освоении инструментом для обращения к БД. В итоге SQL стал слабо структурированным языком, особенно по сравнению с такими языками, как С или Pascal, и в то же время достаточно мощным и относительно легким для изучения [1, с.9].
Одним из наиболее важных шагов на пути к признанию SQL на рынке стало появление стандартов на этот язык. Обычно при упоминании стандарта SQL имеют в виду официальный стандарт, утвержденный Американским институтом национальных стандартов (American National Standards Institute — ANSI) и Международной организацией по стандартам (International Standards Organization— ISO). Однако существуют и другие важные стандарты SQL, включая SQL, реализованный в системе DB2 компании IBM, и стандарт X/OPEN для SQL в среде UNIX. Этот стандарт, незначительно пересмотренный в 1989 году, обычно называют стандартом «SQL-89», или «SQLI».
Пробелы в стандарте SQL-89 и различия между существующими диалектами SQL достаточно значительны, и при переводе приложения под другую СУБД его всегда приходится модифицировать. Эти отличия в большинстве своем устранены в стандарте SQL2.
2.SQL
SQL является инструментом, предназначенным для обработки и чтения данных, содержащихся в компьютерной базе данных. SQL, является языком программирования, который применяется для организации взаимодействия пользователя с базой данных.
На рисунке 1 изображена схема работы SQL.
Рисунок 1 - Схема работы SQL
Согласно этой схеме, в вычислительной системе имеется база данных, в которой хранится важная информация. Если пользователю необходимо прочитать данные из базы данных, он запрашивает их у SQL с помощью СУБД. SQL обрабатывает запрос, находит требуемые данные и посылает их пользователю. Процесс запрашивания данных и получения результата называется запросом к базе данных: отсюда и название — структурированный язык запросов [2, с.103].
Однако это название не совсем соответствует действительности. Cегодня SQL представляет собой нечто гораздо большее, чем простой инструмент создания запросов, хотя именно для этого он и был первоначально предназначен. Несмотря на то, что чтение данных по-прежнему остается одной из наиболее важных функций SQL, сейчас этот язык используется для реализации всех функциональных возможностей, которые СУБД предоставляет пользователю, а именно:
- Организация данных. SQL дает пользователю возможность изменять структуру представления данных, а также устанавливать отношения между элементами базы данных.
- Чтение данных. SQL дает пользователю или приложению возможность читать из базы данных содержащиеся в ней данные и пользоваться ими.
- Обработка данных. SQL дает пользователю или приложению возможность изменять базу данных, т.е. добавлять в нее новые данные, а также удалять или обновлять уже имеющиеся в ней данные.
- Управление доступом. С помощью SQL можно ограничить возможности пользователя по чтению и изменению данных и защитить их от несанкционированного доступа.
- Совместное использование данных. SQL координирует совместное использование данных пользователями, работающими параллельно, чтобы они не мешали друг другу.
- Целостность данных. SQL позволяет обеспечить целостность базы данных, защищая ее от разрушения из-за несогласованных изменений или отказа системы.
3.Типы данных SQL
Рассмотрим типы данных, которые есть в языке SQL. У каждого столбца таблицы (у атрибута) должен быть тип данных для значений, который хранятся в столбце. Тип данных для столбца определяется при создании таблицы, а еще лучше, когда он определяется на этапе проектирования без данных.
Язык SQL делится на пять типов:
- Целочисленный тип данных SQL
- Вещественный тип данных SQL
- Типы данных даты и времени SQL
- Строковый тип данных SQL
- Строковый тип данных в кодировки Юникод.
3.1 Целочисленный тип данных SQL
Целое, целочисленный тип данных (англ. Integer), в информатике — один из простейших и самых распространённых типов данных в языках программирования. Служит для представления целых чисел.
Тип данных |
От |
До |
bigint |
-9,223,372,036,854,775,808 |
9,223,372,036,854,775,807 |
int |
-2,147,483,648 |
2,147,483,647 |
smallint |
-32,768 |
32,767 |
tinyint |
0 |
255 |
bit |
0 |
1 |
decimal |
-10^38 +1 |
10^38 -1 |
numeric |
-10^38 +1 |
10^38 -1 |
money |
-922,337,203,685,477.5808 |
+922,337,203,685,477.5807 |
smallmoney |
-214,748.3648 |
+214,748.3647 |
BigInt — новый числовой примитивный тип данных в JavaScript, позволяющий работать с числами произвольной точности.
Int-oбозначает целочисленный тип данных, в котором хранятся значения, размер и диапазон которых приведен в следующей таблице.
Smallint- 2-байтные целочисленные данные. Диапазон от -215 (-32768) до 215-1 (32767).
Tinyint- 1-байтовое целочисленное значение без знака. Диапазон от 0 до 255. В СУБД Firebird нет эквивалентного типа.
Bit- Целочисленные данные со значениями только 1 или 0. Обычно заменяются константами 'T' и 'F'. (В СУБД Firebird так же можно использовать тип SMALLINT со значениями 0 и 1. - прим. перев.)
Decimal- Числовые данные с фиксированной точностью. Диапазон от -1038-1 до 1038-1.
Numeric- В СУБД MS SQL decimal и numeric эквивалентны.
Money- Денежные данные. Диапазон от -263 (-922337203685477.5808) до 263-1 (+922337203685477.5807), точность до 1/10000 денежной единицы.
Smallmoney- Денежные данные. Диапазон от -214748.3648 до +214748.3647, точность 1/10000 денежной единицы. Диапазон СУБД Firebird больше при указанной замене.
3.2 Вещественный тип данных SQL
Вещественный тип данных SQL, как и целочисленный тип данных, целиком и полностью зависит от реализации СУБД.
Тип |
от |
до |
float |
-1.79E + 308 |
1.79E + 308 |
real |
-3.40E + 38 |
3.40E + 38 |
Float [ (n) ] Где n — это количество битов, используемых для хранения мантиссы числа в формате float при экспоненциальном представлении.
Real- вещественные данные. Диапазон от -3.40E+308 до 3.40E+308
3.3 Типы данных даты и времени SQL
В SQL Server и дата и время хранятся в одном столбце, так что если с помощью функции GETDATE() запросить текущую дату, то при этом система сообщит и время. Для дат применяются два типа данных, datetime и smalldatetime. Тип данных smalldatetime охватывает период времени от 1 января 1900 года до 6 июня 2079 года и включает время с точностью до минуты. Такого диапазона достаточно для подавляющего большинства проектов. Тип данных datetime годен для использования до 31 декабря 9999 года (это следует учитывать при решении проблемы 10К года). Начало диапазона этого типа данных датируется 1 января 1753 года. Почему 1753? Это связано с переходом с юлианского на грегорианский календарь. Несмотря на то, что грегорианский календарь был предложен некоторое время назад, процесс его принятия продолжался в течение приблизительно 30 лет. На протяжении этого периода некоторые страны уже приняли грегорианский, а другие еще нет. Поэтому для того, чтобы дата воспринималась однозначно, надо знать географическое положение объекта. Кроме того, год начинался не 1 января, а 1 марта. Поэтому такая дата, как 15 января 1792 года, может интерпретироваться и как середина первого месяца 1492 года, и как середина 11-го месяца 1793 года. Создатели SQL Server решили не рисковать, и поэтому приняли решение не воспринимать даты, относящиеся к периоду времени до начала 1753 года. Следует отметить также, что тип данных datetime показывает тысячные доли секунды, хотя точность гарантируется только до 1/300 части секунды.
Тип данных SQL |
от |
до |
datetime |
Jan 1, 1753 |
Dec 31, 9999 |
smalldatetime |
Jan 1, 1900 |
Jun 6, 2079 |
date |
Сохраняет дату как June 30, 1991 |
|
time |
Сохраняет время как 12:30 P.M. |
Datetime- Предназначен для хранения и даты и времени суток. Значение вводится и хранится в формате - YYYY-MM-DD hh:mm:ss. В качестве разделителей могут выступать любые символы отличные от цифры.
Smalldatetime- Дата и время с 1 января 1900 года до 6 июня 2079 года, точность 1 минута. Тип данных Firebird имеет бОльшие диапазон и точность.
3.4 Строковый тип данных
Строковых типов данных в SQL может быть гораздо больше, смотрите спецификацию своей СУБД, чтобы узнать какой тип данных может быть использован для строковых значений.
Тип данных |
Объем памяти |
Максимальный размер |
Описание |
|||
CHAR (M) |
M символов |
М символов |
Позволяет хранить строку фиксированной длины М. Значение М - от 0 до 65535. |
|||
VARCHAR (M) |
L+1 символов |
М символов |
Позволяет хранить переменные строки длиной L. Значение М - от 0 до 65535. |
|||
BLOB, TEXT |
L+2 символов |
216-1 символов |
Позволяют хранить большие объемы текста. Причем тип TEXT используется для хранения именно текста, а BLOB - для хранения изображений, звука, электронных документов и т.д. |
|||
MEDIUMBLOB, MEDIUMTEXT |
L+3 символов |
224-1 символов |
Аналогично предыдущему, но с большим размером. |
|||
LONGBLOB, LONGTEXT |
L+4 символов |
232-1 символов |
Аналогично предыдущему, но с большим размером. |
|||
ENUM ('value1', 'value2', ...,'valueN') |
1 или 2 байта |
65535 элементов |
Строки этого типа могут принимать только одно из значений указанного множества. |
|||
SET ('value1', 'value2', ...,'valueN') |
до 8 байт |
64 элемента |
Строки этого типа могут принимать любой или все элементы из значений указанного множества. |