|
Программирование >> Руководство по sql
Значения по умолчанию (автоматически вводимые значения, например текущая дата в соответствующем столбце заказа). Ограничения на возможные значения в столбцах (например, в столбце pubJd можно вводить только значения 0736, 0877 или 1389). Ограничения на определение первичных ключей. Проверка соответствия между первичными и внещними ключами. Мы начнем с упрощенного синтаксиса оператора CREATE TABLE (имя столбца, тип данных и статус нуля), а офаничения рассмофим далее в этой главе. Команда SQL для определения таблицы записывается в виде CREATE TABLE. (Перед использованием оператора CREATE TABLE убедитесь, что вы используете подходящую базу данных.) Упрощенный синтаксис оператора CREATE TABLE имеет следующий вид: CREATE TABLE имя таблицы (имя столбца тип данных [NULL NOT NULL] [ , имя столбца тип данных [NULL NOT NULL]] ) В качестве примера рассмофим оператор CREATE TABLE, с помощью которого создается таблица authors: SQL: create table authors (au id char(11) not null, au lname varchar(40) not null, au fname varchar(20) not null, phone char(12) null, address varchar(40) null, city varchar(20) null, state char(2) null, zip char(5) null ) Давайте изучим синтаксис этого оператора, так как до сих пор в этой книге вы не сталкивались со столь сложными консфукциями. Первое предложение - CREATE TABLE - не вызывает особых зафудне-ний, если, конечно, выбранное имя таблицы соответствует правилам записи идентификаторов в ващей системе. Вторая строка начинается с открывающейся круглой скобки, ввод которой обязателен. Затем задайте имя первого столбца и через пробел укажите его тип данных. (В некоторых базах данных вы должны определить длину, размер или точность данных - обычно в виде целого числа в скобках, следующих сразу за описанием типа данных.) Ключевые слова NULL и NOT NULL, заключенные в квадратные скобки, необязательны. Вертикальная черта между ними означает, что можно использовать только одну из этих опций, а не две сразу. Если вы ничего не выберете, система сделает это за вас. По умолчанию SQL-92 разрешает нулевые значения, но по этому пути следуют не все коммерческие версии. Возьмите за привычку всегда явно указывать одну из этих опций, даже если вас усфаивают значения, выбираемые по умолчанию. В будущем это может существенно упростить ващу работу. Третья сфока, заключенная в квадратные скобки и с многоточием в конце, повторяет определение столбца. Квадратные скобки указывают, что определять второй столбец необязательно, а многоточие означает, что таким образом можно определить любое необходимое число столбцов (в рамках Офаничений системы - обратитесь к справочному руководству по своей СУБД). Обратите внимание, что каждое определение столбца отделяется от предыдущего определения запятой, а также не забудьте о закрывающейся круглой скобке после списка столбцов. Кроме системных ограничений на число столбцов, которое можно включить в одну таблицу, узнайте об ограничениях на длину строки (суммарное количество байтов, которое могут использовать все столбцы). Обычно это достаточно больщая величина, и вам вообще не придется об этом беспокоиться. Однако если вы определили таблицу с большим количеством столбцов или слишком широкими столбцами, вам следует аккуратно вычислить длину каждой строки, просуммировав длины максимально возможных значений для каждого столбца или исходя из описания типов данных столбцов. Выбор типа данных Тип данных столбца определяет, какого рода данные будут содержаться в этом столбце (символы, числа, даты и т.д.). Благодаря этому система узнает о физическом представлении данных и методах их обработки. Например, символьный тип данных поддерживает буквы, цифры и специальные символы, в то время как целый тип допускает только цифры. Над данными в столбцах целого типа можно выполнять арифметические операции, в отличие от столбцов символьного типа. Реляционные системы поддерживают самые разнообразные типы данных. Однако надо быть исключительно внимательным - даже если две системы используют одно и то же название типа данных, значения типов могут отличаться. Обратитесь к справочному руководству по своей системе, чтобы выяснить имеющиеся в ней типы данных и правила работы с ними. Выбор правильных типов данных является не менее сложным, чем проектирование структуры базы данных, так как во многих версиях SQL сложно корректно изменить тип данных столбца. Тем не менее в большинстве SQL реализованы специальные функции преобразования типов. Например, даже если в символьном столбце содержатся только числа, изменить его тип будет сложно или вообще невозможно. Однако с помощью специальных функций над этими числами можно будет выполнять арифметические операции, недопустимые для символьных столбцов. Ниже описаны некоторые возможные типы данных и приведены советы по их использованию. Символьные типы данных (character datatypes) содержат буквы, цифры и специальные символы. Двумя основными типами являются символы с фиксированной длиной {character или char) и символы с переменной длиной {variable character или varchar). В некоторых наборах символов также поддерживаются национальные символы фиксированной и переменной длины {national character, nchar, national character varying, nvarchar). Ряд систем допускают использование специальных символьных типов данных для записи больших текстовых фрагментов. Обычно они называются типами long или text. Большинство символьных типов данных используется с параметром, определяющим максимальный размер столбца (число в скобках после описания типа данных). Символьные типы удобно использовать и в ряде неочевидных случаев - например при записи почтовых кодов и номеров телефонов. Почтовые коды лучше хранить в символьных столбцах, так как довольно часто возникает потребность в их сортировке, а коды, начинающиеся с нуля и представленные в числовом формате, могут сортироваться некорректно. Правда, некоторые системы просто отбрасывают все начальные нули во всех числах. (Порядок сортировки также различается от системы к системе.) Кроме того, в символьных столбцах можно использовать специальные символы, например дефисы и скобки в номерах телефонов. Целые типы данных (whole-number datatypes) поддерживают только целые числа (никаких дробных частей или десятичных точек). Они обычно известны под именами number, integer, int, smallint и tinyint. Во всех коммерческих версиях SQL над целыми типами разрешается выполнять арифметические операции и применять к ним афегирующие функции для поиска максимальных, минимальных, средних и суммарных значений столбца, а также подсчета количества значений в столбце. В некоторых реализациях SQL поддерживаются и другие возможности, например статистические операции. Десятичные типы данных (decimal datatypes) описывают числа с дробной частью. Для десятичных чисел с плавающей точкой используются имена decimal или numeric. Обычно разрешается определять их точность (общее количество цифр и количество цифр после запятой). Вещественные числа в стандартном виде описываются ключевыми словами real, double, double precision, float и smallfloat. Их точность и количество значащих цифр меняется от одной системы управления базами данных к другой, а также может зависеть от используемого вами аппаратного обеспечения. Денежные типы данных (money datatypes) используются для описания денежных величин. Если в вашей системе такой тип отсутствует, используйте для этих целей десятичные числа с плавающей точкой. Дата и время (data and time datatypes) используются для записи дат, времени и их комбинаций. В некоторых системах имеются функции, позволяющие определять интервал между двумя датами или добавлять, или вычитать определенное количество времени к конкретной дате. Двоичные типы данньге (binary datatypes) используются для хранения двоичных и шестнадцатеричных кодов. Аналогично символьным данным, они могут иметь фиксированную или переменную длину. Последовательные типы данных (serial datatypes) используются для представления последовательно возрастающих числовых последовательностей. В одних системах - это отдельный тип, в других такие последовательности строятся с помощью специальных функций, оперирующих с данными основных типов. Познакомившись с характеристиками типов данных в своей системе, вы сможете эффективнее использовать их. Выбор длины типа данных. Прежде всего уточните, как физически хранятся в вашей системе данные разных типов. Узнайте, какие из них имеют фиксированную длину, другими словами, для каких типов данных дисковое пространство, выделяемое в операторе CREATE TABLE, не зависит от введенного в столбец значения. Например, под все значения столбца, определенного как char(10), всегда будет отводиться по десять байт дискового пространства, независимо от того, какое значение будет введено. Более длинные значения будут подрезаться, а к более коротким справа будут добавляться пробелы: Greenjeans Kangaroo Rumpelstil Типы данных, не предусматривающие спецификацию длины, обычно имеют фиксированную длину. Если в вашей системе под целое значение отводится восемь байт, то все они будут использоваться, независимо от того, какое значение вводится - 3 или 300000. Данные переменной длины занимают в памяти только минимально необходимое им место. Пусть, например, ваша система поддерживает символьный тип переменной длины, и вы определили столбец как varchar(10) вместо char(10). При этом значение 10 будет просто определять максимально допустимую длину данных этого типа, но к более коротким значениям не будут дописываться пробелы. Для перпого значении из приме[)а р.ьпие (Greenjeans) пофебуются все десять байт, для ьторою (Kaiigaiou;...... юсемь, а длк ipcrbCiO (Но) - только два. Если многие значения имеют заведомо меньшую длину, чем используемая при определении типа, применение типов данных с фиксированной длиной может привести к излишнему расходу дискового просфанства.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |