КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Типы данных SQL
Таблицы Для сохранения информации в БД необходимо создать одну или несколько таблиц. Для создания таблицы нужно выполнить оператор языка SQL create table, его упрошенный синтаксис приведен ниже: create table <имя таблицы> ( <имя столбца 1> <тип 1> [, <имя столбца 2> <тип 2> [, … ] ][2]) go
Альтернативный способ создания таблицы — команда Создать таблицу…, вызываемая из контекстного меню узла Таблицы дерева объектов, подчиненного узлу, соответствующему БД, в которой создается таблица. Созданная база данных появляется в дереве объектов (окно Обозреватель объектов) после обновления узла Таблицы (команда контекстного меню Обновить). Основные типы данных языка SQL (на примере диалекта Transact-SQL Microsoft SQL Server 2008) приведены в таблице 1.1. Таблица 1.1.
Ниже приведен пример создания таблицы Студент (Ном_зач – номер зачетной книжки):
create table Студент ( Ном_Зач int, ФИО varchar(50), Группа char(5)) go
Для удаления таблицы служит оператор 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) go
В примере столбец Ном_Зач является первичным ключом таблицы, директива primary key автоматически влечет ограничения not null (значение первичного ключа не может быть неопределенным) и unique (все значения в столбцах первичного ключа должны быть различны). Столбцы ФИО и Группа являются обязательными (не содержат NULL-значений), столбец Адрес может не заполняться (допускает NULL-значения). Серия и номер паспорта студента (Сер_Ном_Пасп) обязательный столбец, кроме того, все значения в нем должны быть различны. Столбец Гражданство является необязательным, но для него определено значение по умолчанию, которое будет подставляться, если соответствующее значение не указано при вставке данных в таблицу. Для столбца Факультет задано условие проверки – значение должно соответствовать одному из четырех элементов множества (оператор in возвращает логическое значение И или Л, в зависимости от того принадлежит или не принадлежит элемент множеству). В общем случае в директиве check может задаваться логическое условие, в котором используются имя столбца, константы, операции сравнения (>, >=, < …), логические операции (and, or, not), рассмотренный выше оператор in, скобки. СУБД будет отклонять попытки добавления записей в таблицы, если добавляемые значения нарушают ограничения столбцов, определенные в create table. Директивы primary key, unique, check могут задаваться как на уровне столбца (в определении столбца), так и на уровне таблицы (в конце create table), в последнем случае они обеспечивают возможности создания составных ключей (включающих более одного столбца), проверки уникальности сочетания значений различных столбцов, совместную проверку значений различных столбцов таблицы. В приведенном ниже примере:
create table Студент ( Ном_Зач int primary key, ФИО varchar(50) not null, Сер_Пасп char(5) not null, Ном_Пасп char(6) not null, Факультет char(1) not null check (Факультет in ('1', '2', '3', '4')), Группа char(5) not null, unique (Сер_Пасп, Ном_Пасп), check (Факультет = left(Группа,1))) go
директива unique использована для обеспечения уникальности значений столбцов Сер_Пасп и Ном_Пасп, таким образом, серии и номера паспортов, хранимые в отдельных столбцах таблицы, могут совпадать у различных студентов, но их сочетание должно быть уникальным в каждой из записей. Для полей Факультет и Группа проверяется, что бы первый символ в столбце Группа совпадал с номером факультета. Составные первичные ключи используются, когда в таблице нет столбца, значения которого обеспечивают уникальную идентификацию строк, примером такой таблицы может служить: create table Оценка ( Ном_Зач int not null, Дисциплина varchar(50) not null, Оценка tinyint not null, primary key (Ном_Зач, Дисциплина)) go
Студент получает оценки по разным дисциплинам, по одной дисциплине получают оценки много студентов, таким образом, только сочетание значений в столбцах Ном_Зач и Дисциплина позволяет произвести однозначную идентификацию записи. Приведенный пример иллюстрирует возможность использования составного ключа, вместе с тем, при создании таблиц следует стремиться, что бы ключи были как можно короче, поэтому использование столбца с типом данных varchar(50) в качестве ключевого не является удачным. В таких случаях вводят специальный (системный, «суррогатный») ключ. Так как значения данных ключей не имеет смысла с точки зрения предметной области и используются только в целях идентификации записей, организации ссылок, современные СУБД предлагают механизм для их автоматического формирования. В MS SQL для этих целей реализована директива identity [ (<начальное значение> [, <приращение> ]) ], используемая в сочетании с типом данных int. Если <начальное значение> и <приращение> опущены, в качестве их значений используется 1. Примером автоматического формирования ключа в таблице Оценка может служить следующий (предыдущая версия таблицы Оценка должна быть удалена директивой drop table):
create table Оценка ( Id int identity primary key, Ном_Зач int not null, Дисциплина varchar(50) not null, Оценка tinyint not null) go
Дата добавления: 2015-05-09; Просмотров: 2168; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |