Учебная работа. Реферат: Создание таблиц с помощью SQL-запросов
Содержание
Обзор
Создание таблиц при помощи SQL
Заключение
Обзор
На данном уроке мы познакомимся еще с одной возможностью сотворения таблиц — через посылку SQL-запросов. Как Вы, наверняка, могли увидеть на прошлом уроке, Database Desktop не владеет всеми способностями по управлению SQL-серверными базами данных. Потому при помощи Database Desktop комфортно создавать либо локальные базы данных либо лишь простые SQL-серверные базы данных, состоящие из маленького числа таблиц, не весьма очень связанных друг с другом. Если же Для вас нужно сделать базу данных, состоящую из огромного числа таблиц, имеющих сложные связи, можно пользоваться языком SQL (совершенно говоря, для этих целей лучше всего применять спец CASE-средства, которые разрешают в интерактивном режиме сгенерировать всю структуру базы данных и сформировать все связи; описание 2-ух более успешных CASE-средств — System Architect и S-Designor — дано в доп уроках). При всем этом можно пользоваться компонентом Query в Delphi, всякий раз посылая по одному SQL-запросу, а можно записать всю последовательность SQL-предложений в один так именуемый скрипт и отправить его на выполнение, используя, к примеру, Windows Interactive SQL (WISQL.EXE) — интерактивное средство посылки SQL-запросов к InterBase (в том числе и локальному InterBase), входящее в поставку Delphi. естественно, для этого необходимо отлично знать язык SQL, но, уверяю Вас, сложного в этом ничего нет! Определенные реализации языка SQL некординально различаются в разных SQL-серверах, но базисные предложения остаются схожими для всех реализаций. Практика указывает, что если нет необходимости создавать таблицы во время выполнения программки, то лучше пользоваться WISQL.
Создание таблиц при помощи SQL
Если Вы желаете пользоваться компонентом TQuery, поначалу расположите его на форму. Опосля этого настройте свойство DatabaseName на подходящий Для вас алиас (если базы данных еще не существует, удобней сделать ее в WISQL командой File|Create Database…, а потом уже настроить на нее новейший алиас). Опосля этого можно ввести SQL-предложение в свойство SQL. Для выполнения запроса, изменяющего структуру, вставляющего либо обновляющего данные на сервере, необходимо вызвать способ ExecSQL компонента TQuery. Для выполнения запроса, получающего данные с сервера (т.е. запроса, в каком главным является оператор SELECT), необходимо вызвать способ Open компонента TQuery. Это соединено с тем, что BDE при посылке запроса типа SELECT открывает так именуемый курсор, при помощи которого осуществляется навигация по выборке данных (подробней о этом см. в уроке, посвященном TQuery).
Как указывает опыт, проще пользоваться утилитой WISQL. Для этого в WISQL изберите команду File|Run an ISQL Script… и изберите файл, в каком записан ваш скрипт, создающий базу данных. Опосля нажатия клавиши «OK» ваш скрипт будет выполнен, и в нижнее окно будет выведен протокол его работы.
Приведем облегченный синтаксис SQL-предложения для сотворения таблицы на SQL-сервере InterBase (наиболее полный синтаксис можно поглядеть в Online-справочнике по SQL, поставляемом с локальным InterBase):
CREATE TABLE table
(<col_def> [, <col_def> | <tconstraint> …]);
где
table — имя создаваемой таблицы,
<col_def> — описание поля,
<tconstraint> — описание ограничений и/либо ключей (квадратные скобки [] означают необязательность, вертикальная черта | значит «либо»).
Описание поля состоит из наименования поля и типа поля (либо домена — см. урок 9), также доп ограничений, накладываемых на поле:
<col_def> = col Domain
[DEFAULT USER]
[NOT NULL] [<col_constraint>]
[COLLATE collation]
тут
col — имя поля;
datatype — хоть какой верный тип SQL-сервера (для InterBase таковыми типами являются — см. урок 11 — SMALLINT, INTEGER, FLOAT, DOUBLE PRECISION, DECIMAL, NUMERIC, DATE, CHAR, VARCHAR, NCHAR, BLOB), символьные типы могут иметь CHARACTER SET — набор знаков, определяющий язык страны. Для российского языка следует задать набор знаков WIN1251;
COMPUTED BY (<expr>) — определение вычисляемого на уровне сервера поля, где <expr> — правильное SQL-выражение, возвращающее единственное
Domain — имя домена (обобщенного типа), определенного в базе данных;
DEFAULT — система, определяющая
NOT NULL — система, указывающая на то, что поле не быть может пустым;
COLLATE — предложение, определяющее порядок сортировки для избранного набора знаков (для поля типа BLOB не применяется). Российский набор знаков WIN1251 имеет 2 порядка сортировки — WIN1251 и PXW_CYRL. Для правильной сортировки, включающей огромные буковкы, следует избрать порядок PXW_CYRL.
Описание ограничений и/либо ключей содержит в себе предложения CONSTRAINT либо предложения, описывающие неповторимые поля, первичные, наружные ключи, также ограничения CHECK (такие конструкции могут определяться как на уровне поля, так и на уровне таблицы в целом, если они затрагивают несколько полей):
<tconstraint> = [CONSTRAINT constraint
<tconstraint_def>]
<tconstraint>
тут
<tconstraint_def> = FOREIGN KEY (col [, col …]) REFERENCES other_table
search_condition =
{<val> operator (<select_one>)
| <val> [NOT] BETWEEN <val> AND <val>
| <val> [NOT] LIKE <val> [ESCAPE <val>]
| <val> [NOT] IN (<val> [, <val> …] |
<val> = <constant> [COLLATE collation]
<constant> = num | «string» | charsetname «string»
<functiont> = AVG ([ALL] <val>
<operator> = <
<select_one> = выражение SELECT по одному полю, которое возвращает в точности одно
Приведенного неполного синтаксиса довольно для большинства задач, решаемых в разных предметных областях. Проще всего синтаксис SQL можно осознать из примеров. Потому мы приведем несколько примеров сотворения таблиц при помощи SQL.
Пример A: Обычная таблица с конструкцией PRIMARY KEY на уровне поля
CREATE TABLE REGION (
REGION REGION_NAME NOT NULL PRIMARY KEY,
POPULATION INTEGER NOT NULL);
Предполагается, что в базе данных определен домен REGION_NAME, к примеру, последующим образом:
CREATE Domain REGION_NAME
AS VARCHAR(40) CHARACTER SET WIN1251 COLLATE
PXW_CYRL;
Пример B: Таблица с предложением UNIQUE как на уровне поля, так и на уровне таблицы
CREATE TABLE GOODS (
MODEL SMALLINT NOT NULL UNIQUE,
NAME CHAR(10) NOT NULL,
ITEMID INTEGER NOT NULL, CONSTRAINT MOD_UNIQUE
UNIQUE (NAME, ITEMID));
Пример C: Таблица с определением первичного ключа, наружного ключа и конструкции CHECK, также символьных массивов
CREATE TABLE JOB (
JOB_CODE JOBCODE NOT NULL,
JOB_GRADE JOBGRADE NOT NULL,
JOB_REGION REGION_NAME NOT NULL,
JOB_TITLE VARCHAR(25) CHARACTER SET WIN1251
COLLATE PXW_CYRL NOT NULL,
MIN_SALARY SALARY NOT NULL,
MAX_SALARY SALARY NOT NULL,
JOB_REQ BLOB(400,1) CHARACTER SET WIN1251,
LANGUAGE_REQ VARCHAR(15) [5],
PRIMARY KEY (JOB_CODE, JOB_GRADE, JOB_REGION),
FOREIGN KEY (JOB_REGION) REFERENCES REGION (REGION),
CHECK (MIN_SALARY < MAX_SALARY));
Данный пример делает таблицу, содержащую информацию о работах (профессиях). Типы полей основаны на доменах JOBCODE, JOBGRADE, REGION_NAME и SALARY. Определен массив LANGUAGE_REQ, состоящий из 5 частей типа VARCHAR(15). Не считая того, введено поле JOB_REQ, имеющее тип BLOB с подтипом 1 (текстовый блоб) и размером сектора 400. Для таблицы определен первичный ключ, состоящий из 3-х полей JOB_CODE, JOB_GRADE и JOB_REGION. Дальше, определен наружный ключ (JOB_REGION), ссылающийся на поле REGION таблицы REGION. И, в конце концов, включено предложение CHECK, позволяющее создавать проверку соотношения для 2-ух полей и вызывать исключительное состояние при нарушении такового соотношения.
Пример D: Таблица с вычисляемым полем
CREATE TABLE SALARY_HISTORY (
EMP_NO EMPNO NOT NULL,
CHANGE_DATE DATE DEFAULT «NOW» NOT NULL,
UPDATER_ID VARCHAR(20) NOT NULL,
OLD_SALARY SALARY NOT NULL,
PERC_CHANGE DOUBLE PRECISION DEFAULT 0 NOT NULL
CHECK (PERC_CHANGE BETWEEN -50 AND 50),
NEW_SALARY COMPUTED BY
(OLD_SALARY + OLD_SALARY * PERC_CHANGE / 100),
PRIMARY KEY (EMP_NO, CHANGE_DATE, UPDATER_ID),
FOREIGN KEY (EMP_NO) REFERENCES EMPLOYEE (EMP_NO));
Данный пример делает таблицу, где посреди остальных полей имеется вычисляемое (на физическом уровне не имеющееся) поле NEW_SALARY,
На диске приведен пример скрипта, создающего базу данных, осуществляющую ведение контактов меж людьми и организациями.
Заключение
Итак, мы разглядели, как создавать таблицы при помощи SQL-выражений. Этот процесс, хотя и не настолько комфортен, как интерактивное средство Database Desktop, но владеет более гибкими способностями по настройке Вашей системы и управления ее связями.
]]>