Vvmebel.com

Новости с мира ПК
7 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Типы данных access sql

5 . Типы данных и таблицы

Встроенные типы данных Microsoft Access и SQL Server, числовые, текстовые, даты/времени, логический, двоичные, счетчик, уникальный идентификатор

В реляционной базе данных информация хранится в таблицах. Самое важное при создании базы данных — правильно спроектировать и реализовать систему таблиц, а при работе с имеющейся базой данных — разобраться, какая информация находится в столбцах таблиц.

5.1 Встроенные типы данных в SQL Server и Access

Прежде, чем создавать таблицы, необходимо разобраться с типами данных — то есть какие именно данные можно будет помещать в столбцы таблиц. Информация будет даваться для SQL Server и Access.

Вначале — о числовых типах данных.

В SQL Server числовые типы данных можно разделить на целочисленные, десятичные дроби и числа с плавающей запятой. В нашем распоряжении следующие числовые типы данных:

· целочисленные: tinyint (0 — 255), smallint (от -32 768 до 32 767), int (от -2,147,483,648 до 2,147,483,647) и bigint (от -2^63 до 2^63 -1);

· десятичные: decimal и numeric (это — два названия одного и того же);

· денежные: money (от -2^63 до 2^63 — 1 с точностью 4 знака после запятой) и smallmoney (от -214,748.3648 до +214,748.3647).;

· с плавающей запятой: float (от -1.79E + 308 до 1.79E + 308) и real (от -3.40E + 38 до 3.40E + 38).

В MS Access все проще — там есть единственный тип поля — числовое и его подтипы в строке «размер».

Обычно, если база данных не относится к числу специальных, большая часть столбцов в ее таблицах отводится под текстовые данные. В SQL Server предусмотрены две дублирующих разновидности полей для представления текстовых данных: поля Unicode и не-Unicode. Unicode — типы данных отличить очень просто: они начинаются на n (от слова national, то есть с поддержкой национальных символов). Если есть возможность, то следует выбирать именно типы Unicode (хоть они и требуют в два раза больше места под хранение каждого символа) — поскольку современные клиенты изначально разрабатываются для удобной работы с кодировками этого типа.

Всего в SQL Server предусмотрены следующие типы для текстовых данных:

· char / nchar — строковые данные фиксированной длины (максимум 8000/4000 символов);

· varchar / nvarchar — строковые данные переменной длины (то же самое);

· text / ntext — для очень больших текстовых записей — до двух миллионов/миллиона символов.

В Access, как обычно, все проще. Есть тип данных текстовый с максимальной длинной записей в 255 символов (данные автоматически хранятся в Unicode) и тип данных Memo с максимальной длиной 65 536 знаков.

В реальных базах данных, конечно, не обойтись без полей для хранения информации дате и времени. В SQL Server это datetime (8 байт, точность то 3,33 миллисекунд) и smalldatetime (4 байта, точность до минуты). В большинстве приложений вполне хватает s malldatetime , но часто разработчики про s malldatetime забывают.

В Access у нас предусмотрен единственный 8-байтовый тип данных дата/время.

Еще один распространенный тип данных — это логический, который может хранить в себе значения вида true/false (единица/ноль). Обычно он используется как флаг чего-либо. В SQL Server он представлен типом данных bit , а в Access — типом данных, который так и называется «логический».

В современных базах данных также часто хранятся большие двоичные данные — BLOB, например, документы, фотографии, архивы и т.п. В SQL Server для них традиционно используется тип данных Image (до 2 Гбайт). Есть еще типы данных binary и varbinary , но максимальный их размер — 8000 байт, а такие маленькие двоичные данные встречаются нечасто. В Acce ss для этой цели используется тип данных поле объекта OLE (до 1 Гбайт) — то есть могут храниться данные только OLE-совместимых программ.

Есть также и некоторые специальные типы данных, которые используются нечасто:

· UniqueIdentifier в SQL Server , числовой для кодов репликации в Access. Это — большие случайно сгенерированные числа, вероятность совпадения которых практически нулевая. В базах данных они обычно используются для того, чтобы гарантировать уникальность какой-либо записи;

· поле счетчика в Access, числовой тип данных со свойством Identity в true в SQL Server. Это — числовое поле с автоприращением, обычно применяется как суррогатный ключ;

· sql_variant в SQL Server — позволяет хранить в столбце данные разных типов;

· timestamp — метка версии строки в SQL Server ;

· гиперссылка — специальный вид поля (до 64 000 знаков) в Access.

Другие типы данных ( cursor , table в SQL Server) в таблицах использоваться не могут и применяются только в запросах и хранимых процедурах.

Типы данных SQL;

Таблицы

Для сохранения информации в БД необходимо создать одну или несколько таблиц. Для создания таблицы нужно выполнить оператор языка SQL create table, его упрошенный синтаксис приведен ниже:

Альтернативный способ создания таблицы — команда Создать таблицу…, вызываемая из контекстного меню узла Таблицы дерева объектов, подчиненного узлу, соответствующему БД, в которой создается таблица. Созданная база данных появляется в дереве объектов (окно Обозреватель объектов) после обновления узла Таблицы (команда контекстного меню Обновить).

Основные типы данных языка SQL (на примере диалекта Transact-SQL Microsoft SQL Server 2008) приведены в таблице 1.1.

Читать еще:  Ms access like

Ниже приведен пример создания таблицы Студент (Ном_зач – номер зачетной книжки):

create table Студент (

Для удаления таблицы служит оператор drop table . Альтернативный способ удаления таблицы — команда Удалить, вызываемая из контекстного меню узла, соответствующего удаляемой таблице в дереве объектов.

В определении столбцов таблицы можно помимо задания типа данных указывать директивы:

(i) null или not null — разрешение/запрет NULL-значений (NULL – специальная константа языка SQL, показывающая, что при вставке данных в таблицу не было задано значение соответствующего столбца);

(ii) default ;

(iii) check ;

(iv) unique – требование, что бы все значения в столбце были различны;

(v) primary key – определение первичного ключа для однозначной идентификации записей в таблице.

Использование данных директив иллюстрирует пример, приведенный ниже (БД не может содержать двух одноименных таблиц, предыдущая версия таблицы Студент должна быть удалена директивой drop table):

create table Студент (

Ном_Зач int primary key,

ФИО varchar(50) not null,

Сер_Ном_Пасп char(12) not null unique,

Гражданство varchar(50) default ‘Российская Федерация’,

Адрес varchar(250) null,

Факультет char(1) not null check (Факультет in (‘1’, ‘2’, ‘3’, ‘4’)),

Группа char(5) not null )

В примере столбец Ном_Зач является первичным ключом таблицы, директива primary key автоматически влечет ограничения not null (значение первичного ключа не может быть неопределенным) и unique (все значения в столбцах первичного ключа должны быть различны). Столбцы ФИО и Группа являются обязательными (не содержат NULL-значений), столбец Адрес может не заполняться (допускает NULL-значения). Серия и номер паспорта студента (Сер_Ном_Пасп) обязательный столбец, кроме того, все значения в нем должны быть различны. Столбец Гражданство является необязательным, но для него определено значение по умолчанию, которое будет подставляться, если соответствующее значение не указано при вставке данных в таблицу. Для столбца Факультет задано условие проверки – значение должно соответствовать одному из четырех элементов множества (оператор in возвращает логическое значение И или Л, в зависимости от того принадлежит или не принадлежит элемент множеству). В общем случае в директиве check может задаваться логическое условие, в котором используются имя столбца, константы, операции сравнения (>, >=, [ , ] ) ], используемая в сочетании с типом данных int. Если и опущены, в качестве их значений используется 1. Примером автоматического формирования ключа в таблице Оценка может служить следующий (предыдущая версия таблицы Оценка должна быть удалена директивой drop table):

Эквивалентные типы данных ANSI SQL

Примечание: Мы стараемся как можно оперативнее обеспечивать вас актуальными справочными материалами на вашем языке. Эта страница переведена автоматически, поэтому ее текст может содержать неточности и грамматические ошибки. Для нас важно, чтобы эта статья была вам полезна. Просим вас уделить пару секунд и сообщить, помогла ли она вам, с помощью кнопок внизу страницы. Для удобства также приводим ссылку на оригинал (на английском языке).

В приведенной ниже таблице перечислены типы данных ANSI SQL, эквивалентные типы данных SQL ядра СУБД Microsoft Access и допустимые синонимы. В нем также перечислены эквивалентные типы данных Microsoft SQL Server.

Тип данных ANSI SQL

Тип данных Microsoft Access SQL

Тип данных Microsoft SQL Server

БИТОВЫЕ И БИТОВЫЕ РАЗРАЗНЫЕ

ДВОИЧные файлы (см. заметки)

VARBINARY,
ДВОИЧные
переменные С РАЗЛИЧНОЙ СКОРОСТЬЮ

BIT (Дополнительные сведения см. в разделе «Заметки»)

ЛОГИЧЕСКИЕ, ЛОГИЧЕСКИЕ, LOGICAL1, ЕСНО

Счетчик (см. заметки)

ДАТА, ВРЕМЯ И МЕТКА ВРЕМЕНИ

Дата, время (см. заметки)

SINGLE, FLOAT4, ИИЕСИНГЛЕ

ДВОЙНАЯ ТОЧНОСТЬ, С ПЛАВАЮЩЕЙ ТОЧКОЙ

DOUBLE, FLOAT8, ИИЕДАУБЛЕ, NUMBER (см. примечания)

LONG, INT, INTEGER4

ЛОНГБИНАРИ, GENERAL, ОЛЕОБЖЕКТ

ТЕКСТ (см. заметки)

ЛОНГТЕКСТ, ЛОНГЧАР, МЕМО, NOTE, NTEXT (см. заметки)

СИМВОЛ, РАЗНЫЕ ЗНАКИ, ЗНАКИ НАЦИОНАЛЬНОГО АЛФАВИТА, НАЦИОНАЛЬНЫЕ ЗНАКИ

СИМВОЛ (см. заметки)

ТЕКСТ (n), АЛФАВИТно-цифровые символы, символ, строка, VARCHAR, символ, с разными знаками, NCHAR, Национальный знак, Национальный текст, Национальный текст (см. заметки).

CHAR, VARCHAR, NCHAR, NVARCHAR

Тип данных BIT SQL в КОДИРОВКе ANSI не соответствует типу данных BIT SQL Microsoft Access. Вместо этого он соответствует типу данных BINARY. Эквивалент ANSI SQL для типа данных BIT SQL для Microsoft Access отсутствует.

Метка времени больше не поддерживается в качестве синонима для DATETIME.

ЧИСЛА больше не поддерживаются в качестве синонимов для FLOAT или DOUBLE. ЧИСЛА теперь используются как синонимы для ДЕСЯТИЧного РАЗДЕЛИТЕЛЯ.

Поле ЛОНГТЕКСТ всегда хранится в формате представления Юникод.

Если текст с именем типа данных используется без указания необязательной длины, создается поле ЛОНГТЕКСТ. Это позволяет написать инструкции CREATE TABLE, которые выдают типы данных, которые будут согласовываться с Microsoft SQL Server.

Поле CHAR всегда хранится в формате представления Юникода, эквивалентном типу данных ANSI SQL национального АЛФАВИТа.

Если используется текст имя типа данных и указана необязательная Длина (например, «текст» (25), тип данных поля эквивалентен типу данных CHAR. Это обеспечивает совместимость с предыдущими характеристиками для большинства приложений Microsoft Access, включая тип данных TEXT (без указания длины), для выравнивания по Microsoft SQL Server.

SQL — Урок 2. Типы данных

Числовые типы данных

Целое число. Может быть объявлено положительным с помощью ключевого слова UNSIGNED, тогда элементам столбца нельзя будет присвоить отрицательное значение. Необязательный параметр М — количество отводимых под число символов. Необязательный атрибут ZEROFILL позволяет свободные позиции по умолчанию заполнить нулями.

TINYINT — хранит любое число в диапазоне от -128 до 127.

Читать еще:  Access обновление данных

TINYINT UNSIGNED — хранит любое число в диапазоне от 0 до 255.

TINYINT (2) — предполагается, что значения будут двузначными, но по факту будет хранить и трехзначные.

TINYINT (3) ZEROFILL — свободные позиции слева заполнит нулями. Например, величина 2 будет отображаться, как 002.

Аналогично предыдущему, но с большим диапазоном.

SMALLINT — хранит любое число в диапазоне от -32768 до 32767.

SMALLINT UNSIGNED — хранит любое число в диапазоне от 0 до 65535.

SMALLINT (4) — предполагается, что значения будут четырехзначные, но по факту будет хранить и пятизначные.

SMALLINT (4) ZEROFILL — свободные позиции слева заполнит нулями. Например, величина 2 будет отображаться, как 0002.

Аналогично предыдущему, но с большим диапазоном.

MEDIUMINT — хранит любое число в диапазоне от -8388608 до 8388608.

MEDIUMINT UNSIGNED — хранит любое число в диапазоне от 0 до 16777215.

MEDIUMINT (4) — предполагается, что значения будут четырехзначные, но по факту будет хранить и семизначные.

MEDIUMINT (5) ZEROFILL — свободные позиции слева заполнит нулями. Например, величина 2 будет отображаться, как 00002.

Аналогично предыдущему, но с большим диапазоном.

INT — хранит любое число в диапазоне от -2147683648 до 2147683648.

INT UNSIGNED — хранит любое число в диапазоне от 0 до 4294967295.

INT (4) — предполагается, что значения будут четырехзначные, но по факту будет хранить максимально возможные.

INT (5) ZEROFILL — свободные позиции слева заполнит нулями. Например, величина 2 будет отображаться, как 00002.

Аналогично предыдущему, но с большим диапазоном.

BIGINT — хранит любое число в диапазоне от -2 63 до 2 63 -1.

BIGINT UNSIGNED — хранит любое число в диапазоне от 0 до 2 64 .

BIGINT (4) — предполагается, что значения будут четырехзначные, но по факту будет хранить максимально возможные.

BIGINT (7) ZEROFILL — свободные позиции слева заполнит нулями. Например, величина 2 будет отображаться, как 0000002.

Используются для величин повышенной точности, например, для денежных данных. M — количество отводимых под число символов (максимальное значение — 64). D — количество знаков после запятой (максимальное значение — 30).

DECIMAL (5,2) — будет хранить числа от -99,99 до 99,99.

Вещественное число (с плавающей точкой). Может иметь параметр UNSIGNED, запрещающий отрицательные числа, но диапазон значений от этого не изменится. M — количество отводимых под число символов. D — количество символов дробной части.

FLOAT (5,2) — будет хранить числа из 5 символов, 2 из которых будут идти после запятой (например: 46,58).

Аналогично предыдущему, но с большим диапазоном.

DOUBLE — будет хранить большие дробные числа.

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

Строковые типы данных

Позволяет хранить строку фиксированной длины М. Значение М — от 0 до 65535.

CHAR (8) — хранит строки из 8 символов и занимает 8 байтов. Например, любое из следующих значений: », ‘Иван’,’Ирина’, ‘Сергей’ будет занимать по 8 байтов памяти. А при попытке ввести значение ‘Александра’, оно будет усечено до ‘Александ’, т.е. до 8 символов.

Позволяет хранить переменные строки длиной L. Значение М — от 0 до 65535.

VARCHAR (3) — хранит строки максимум из 3 символов, но пустая строка » занимает 1 байт памяти, строка ‘a’ — 2 байта, строк ‘aa’ — 3 байта, строка ‘aaa’ — 4 байта. Значение более 3 символов будет усечено до 3.

Строки этого типа могут принимать только одно из значений указанного множества.

ENUM (‘да’, ‘нет’) — в столбце с таким типом может храниться только одно из имеющихся значений. Удобно использовать, если предусмотрено, что в столбце должен храниться ответ на вопрос.

Строки этого типа могут принимать любой или все элементы из значений указанного множества.

SET (‘первый’, ‘второй’) — в столбце с таким типом может храниться одно из перечисленных значений, оба сразу или значение может отсутствовать вовсе.

Календарные типы данных

Тип данных NULL

Вообще-то это лишь условно можно назвать типом данных. По сути это скорее указатель возможности отсутствия значения. Например, когда вы регистрируетесь на каком-либо сайте, вам предлагается заполнить форму, в которой присутствуют, как обязательные, так и необязательные поля. Понятно, что регистрация пользователя невозможна без указания логина и пароля, а вот дату рождения и пол пользователь может указать по желанию. Для того, чтобы хранить такую информацию в БД и используют два значения:

NOT NULL (значение не может отсутствовать) для полей логин и пароль,

NULL (значение может отсутствовать) для полей дата рождения и пол.

По умолчанию всем столбцам присваивается тип NOT NULL, поэтому его можно явно не указывать.

create table users (login varchar(20), password varchar(15), sex enum(‘man’, ‘woman’) NULL, date_birth date NULL);

Таким образом, мы создаем таблицу с 4 столбцами: логин (не более 20 символов) обязательное, пароль (не более 15 символов) обязательное, пол (мужской или женский) не обязательное, дата рождения (тип дата) необязательное.

Все, на этом урок, посвященный типам данных, закончен. У вас, возможно, остались вопросы, но они исчезнут по мере освоения дальнейшего материала, т.к. на практике все становится более понятно, чем в теории.

Читать еще:  Data access layer

Видеоуроки php + mysql

Если этот сайт оказался вам полезен, пожалуйста, посмотрите другие наши статьи и разделы.

Характеристика типов данных MS Access

Поясним некоторые аспекты использования данных типа «Счетчик», «Текстовый» и «Поле Мемо».

Для создания полей, в которые при добавлении записи автоматически вводится уникальное число, в Microsoft Access существует тип данных счетчика. Созданный для записи номер уже не может быть удален или изменен. Поле счетчика может генерировать три типа чисел: последовательно возрастающие на единицу, случайные числа, а также коды репликации (также называемые GUID — глобальные уникальные идентификаторы). Наиболее часто используется счетчик последовательно возрастающих чисел. Такой тип счетчика удобно использовать как первичный ключ таблицы.

Для хранения данных в виде текста или комбинации текста и цифр в Microsoft Access существует два типа данных для полей: текстовые и поля МЕМО.

Текстовый тип данных используется для хранения таких данных, как имена, адреса, а также чисел, не требующих вычислений, например, номеров телефонов, инвентарных номеров или почтовых индексов. В текстовом поле может находиться до 255 знаков. По умолчанию устанавливается размер поля 50 знаков. Свойство Размер поля (FieldSize) определяет максимальное количество знаков, которые можно ввести в текстовое поле.

Тип данных «Поле MЕМО» используется для хранения более 255 знаков. В поле MЕМО может находиться до 65536 знаков. Для хранения форматированного текста или длинных документов вместо поля МЕМО создайте поле объекта OLE.

В текстовых полях и полях MЕМО могут храниться только введенные знаки, знаки пробелов для неиспользованных позиций в поле храниться не будут.

На рис.6.18 внизу находится табличка, где указываются ограничения, накладываемые на хранящиеся данные. Вид и количество ограничений зависит от типа используемых данных. Вид возможных значений форматов данных можно увидеть, если щелкнуть в нужной строке мышью. В результате в этой строке появляется текстовый курсор и кнопка открытия списка возможных значений ограничений. Например, для типа данных «Счетчик» можно выбрать вариант, при котором происходит последовательное увеличение новых значений (каждое новое значение увеличивается на единицу), либо вариант случайного выбора нового значения (рис.6.20).

Рис.6.20. Изменение присвоения новых значений типу данных «Счетчик»

Обращает внимание наличия строки «Индексированное поле», в котором устанавливается возможность совпадения или несовпадения для различных записей (рис.6.21).

Рис.6.21. Выбор метода изменения индексированного поля

Отметим, что поле «Код студента» — ключевое поле (что подтверждается наличием знака ключа напротив этого поля), которое по определению не допускает совпадений. Ключевое поле устанавливается следующим образом:

а) сначала курсор мыши заводится слева, напротив нужной строки с именем поля, так, чтобы курсор мыши был горизонтальной стрелкой, смотрящей направо, (рис.6.22) и затем производим щелчок мышью;

Рис.6.22. Вид курсора мыши при выделении нужного поля

б) затем производим щелчок мышью на инструменте «Ключевое поле» с панели инструментов.

Для числовых значений система ограничений расширена (рис.6.23).

Рис.6.23. Система ограничений для числовых значений

Отметим строки формата поля (вида, в котором данные будут представлены в таблице рис.6.24), значение по умолчанию (т.е. то значение, которое будет в ячейке таблице до ввода данных, в нашем случае 0 рис.6.23).

Рис.6.24. Виды формата поля

Особое внимание обращаем на пункт «Условие на значение», которое пишется либо вручную логическое выражение, либо с помощью построителя выражений (рис.6.25), который вызывается щелчком мыши на многоточии (рис.6.23). В нашем случае строится выражение, в результате которого все значения должны быть больше нуля.

Рис.6.25. Построитель выражений

В построителе выражений можно использовать логические символы или слова («Or» – «ИЛИ«, «And» – «И«), которые выбираются щелчком мыши.

Строка ограничений «Сообщение об ошибке» заполняется текстом, который выводится в случае неправильного ввода данных.

В строке «Обязательное поле» возможно два варианта. «Да» – заполнение обязательно и «Нет»- заполнение этого поля необязательно.

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

При работе с полями в режиме «Конструктора» часто бывает, нужно менять поля местами, добавлять и удалять поля. Такие изменения могут быть произведены следующим образом.

Изменение положения поля:

Ø выделение поля;

Ø установка курсора мыши на треугольник слева от имени выделенного поля и методом drag&drop перемещение поля в нужное место.

Ø выделение поля, перед которым вставляется новое поле;

Ø щелчок мыши на инструменте «Добавить строки» с панели инструментов.

Ø выделение удаляемого поля;

Ø щелчок мыши на инструменте «Удалить строки» с панели инструментов.

С целью создания БД «Успеваемость» следует:

1. Согласно учебной таблице «Студенты» с помощью конструктора создать поля таблицы MS Access «Студенты» с учетом ограничений, указанных в таблице.

«Номер зачетки» – ключевое поле. Конструкции «060400 или 021100»,

«Экон или Юрид», «Дневное или Заочное» следует записывать соответственно правилам языка Visual Basic следующим образом «060400» or «021100», «Экон» or «Юрид», «Дневное» or «Заочное».В поле ограничений «Значение по умолчанию» для текстового типа данных данные следует вводить в кавычках, например «060400».

Ссылка на основную публикацию
Adblock
detector