АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

ТЕОРЕТИЧЕСКАЯ ЧАСТЬ. По стандарту ANSI DCL является частью DDL

Читайте также:
  1. I ЧАСТЬ
  2. I. ПАСПОРТНАЯ ЧАСТЬ
  3. I. Теоретическая часть
  4. I. Теоретическая часть
  5. I. Теоретическая часть
  6. I. Теоретическая часть
  7. I. Теоретическая часть.
  8. II часть
  9. II. Основная часть
  10. II. Основная часть
  11. II. Практическая часть
  12. III часть урока. Выставка, анализ и оценка выполненных работ.

По стандарту ANSI DCL является частью DDL.

Синтаксис команд и примеры, рассмотренные в данном пособии, соответствуют синтаксису СУБД Sybase.

В командах SQL не различаются прописные и строчные буквы (за исключением строчных литералов). Каждая команда заканчивается символом ';'. Значения параметров по умолчанию выделено подчеркиванием, например, ALL.

Примем следующие обозначения для описания синтаксиса:

{} – содержимое скобок рассматривается как единое целое для остальных символов;

| – заменяет слово ИЛИ;

[] – содержимое этих скобок является необязательным;

… – всё, что предшествует этим символам, может повторяться произвольное число раз;

.,.. – всё, что предшествует этим символам, может повторяться произвольное число раз, каждое вхождение отделяется запятой.

1.4.1. Создание отношений

Создание нового отношения (таблицы) выполняется с помощью команды DDL CREATE TABLE. Команда CREATE TABLE используется для описания новой таблицы, её атрибутов (полей) и ограничений целостности. Упрощённый синтаксис этой команды:

CREATE TABLE <имя таблицы>
({<имя поля> <тип данных> [(<размер>)]
[<ограничения целостности поля>…]}.,..
[, <ограничения целостности таблицы>.,..]);

Расшифровка элементов описания приведена в табл. 1.

Для обязательных полей устанавливается ограничение not null. Это означает, что при изменении значения этого поля или при добавлении новых записей таблицы это поле должно содержать допустимое значение. Ограничение not null можно наложить на поле только один раз, иначе возникает ошибка.

Таблица 1. Описание команды CREATE TABLE

Элемент Описание
<имя поля> Имя поля (столбца) таблицы, обычный идентификатор.
<тип данных> Тип данных поля. Можно использовать одно из значений: – INTEGER, INT, SMALLINT – целые числа; – NUMERIC[(длина [, точность])], DECIMAL[(длина [, точность])] – числа с фиксированной запятой; – FLOAT, REAL, DOUBLE – вещественные числа; – CHAR[(длина)], VARCHAR(длина) – символьные строки фиксированной и переменной длины; – DATE – дата; TIME – время.
<размер> Размер поля в символах (для текста и чисел).
<ограничения целостности> Можно использовать следующие ограничения: – PRIMARY KEY – первичный ключ (обязательный и уникальный); – UNIQUE – уникальное значение поля в пределах столбца таблицы; – [NOT] NULL – [не] возможность не указывать значение поля; – CHECK (<условие>) – проверка условия для поля (полей); – DEFAULT <выражение> – задание значения поля по умолчанию; – REFERENCES <имя таблицы> [(<имя столбца>)] – внешний ключ.
<ограничения целостности таблицы> То же, что и для поля. Дополнительно используется: FOREIGN KEY [(<список полей>.,..)] REFERENCES <имя таблицы> [(<список полей>)] – внешний ключ.

Примеры создания таблиц:

  1. Таблица "Отделы" с полями "Номер отдела" (ПК), "Название отдела":

create table depart
(depno numeric(2) primary key,
name char(30) not null);

  1. Таблица "Сотрудники" с полями "Номер отдела" (внешний ключ), "Табельный номер сотрудника" (ПК), "ФИО сотрудника", "Должность", "Оклад", "Дата рождения", "Телефон":

create table emp
(depno numeric(2) references depart,
tabno char(3) primary key,
name char(40) not null,
post char(20) not null,
salary numeric(7,2) not null,
born data not null,
tel char(9));

  1. Таблица "Дети сотрудников" с полями "Табельный номер родителя" (внешний ключ), "Имя ребенка", "Пол", "Дата рождения":

create table children
(tabno char(3) references emp(tabno),
name char(20) not null,
sex char(1),
born date,
primary key(tabno, name), /* составной первичный ключ*/
check (sex in (‘м’, ‘ж’)));

Обратите внимание:

  • общие ограничения целостности и составные ключи указываются через запятую после последнего поля;
  • если внешний ключ ссылается на первичный ключ (ПК) другого отношения, имена полей ПК можно не указывать;
  • если внешний ключ составной, список полей входящий в ключ, указывается после перечисления всех полей таблицы с ключевым словом FOREIGN KEY:

create table tab
(id numeric(6) primary key,
class numeric(3),
fdate date,
group char(6),
foreign key (class, fdate) references exam(class, fdate));

1.4.2. Команды модификации данных

К командам модификации данных (DML) относятся добавление, удаление и изменение (обновление) кортежа (записи).

INSERT – добавление записи в таблицу. Синтаксис:

INSERT INTO <имя таблицы> [(<имя поля>.,..)]
VALUES (<список выражений>) | <запрос>;

Под <запросом> подразумевается команда SELECT (см. ниже), результаты работы которой добавляются в указанную таблицу.

В предложении VALUES указываются выражения, порождающие значения атрибутов новой записи таблицы. Типы значений выражений должны соответствовать типам полей таблицы. Если значения устанавливаются не для всех полей или порядок значений не соответствует тому порядку полей, который был установлен при создании таблицы, то после имени таблицы в скобках приводится список полей в соответствии со списком значений. Если в списке полей не указано обязательное поле таблицы (not null), то ему будет присвоено значение по умолчанию (default), если оно определено в командах CREATE TABLE или ALTER TABLE. (Подробнее о NULL -значениях см. п. 1.4.6).

Если в списке значений отсутствует хотя бы одно обязательное поле или нарушаются другие ограничения целостности, например, уникальность значения, то команда INSERT будет отвергнута.

Пример: Добавить в таблицу "Сотрудники" новую запись:

insert into emp

values(3, '112', 'Попов В.Г.', 'экономист', 400*13.5, '1979–12–23', '5–34–11');

UPDATE – обновление данных в таблице. Синтаксис:

UPDATE <имя таблицы>
SET {<имя поля> = <выражение>}.,..
[WHERE <условие>];

Запрос на обновление изменяет в указанной таблице значения указанных полей тех записей, которые удовлетворяют заданному условию отбора (where <условие>). Если условие не указано, обновляются все записи таблицы.

Пример: Изменить должность и зарплату сотрудника Попова В.Г., табельный номер 112:

update emp
set post = 'ст. экономист', salary = salary+1000
where tabno = '112';

DELETE – удаление записей из таблицы. Синтаксис этой команды:

delete from <имя таблицы> [ where <условие> ];

Внимание! Если не указывать условие выбора записей, то все записи таблицы будут удалены без предупреждения и без запроса на подтверждение!

Пример: Удалить запись о сотруднике Попове В.Г., табельный номер 112:

delete from emp where tabno = '112';

1.4.3. Извлечение данных из отношений

Извлечение данных из отношений выполняется с помощью команды SELECT (селекция). Эта команда не изменяет данные в БД.

Результатом выполнения команды SELECT является временное отношение, которое помещается в курсор (специальную область памяти СУБД) и обычно сразу выводится на экран. Синтаксис этой команды:

SELECT * | { [ ALL | DISTINCT ] <список выбора>.,..}
FROM {<имя таблицы> [<алиас>] }.,..
[ WHERE <условие>]
[ GROUP BY {<имя поля> | <целое>}.,.. [ HAVING <условие>] ]
[ ORDER BY {<имя поля> | <целое> [ ASC | DESC ] }.,..]

[ UNION [ ALL ] SELECT …];

Расшифровка элементов описания приведена в табл. 2.

Таблица 2. Элементы команды SELECT

Элемент Описание
<список выбора> Список элементов, разделённых запятыми. Элемент списка выбора – выражение и необязательный алиас. Выражение может включать имена полей, знаки операций, вызовы функций и константы.
<имя таблицы> Имя или синоним имени таблицы или представления.
<алиас> Временный синоним имени таблицы, определённый только внутри запроса.
<условие> Условие, которое может быть истинным или ложным для каждого поля или комбинации полей из таблицы (таблиц), определённых предложением FROM.
<имя поля> Имя поля (столбца) таблицы.
<целое> Число без десятичной точки. Номер поля в <списке полей>.

DISTINCT – предикат удаления из результирующего отношения повторяющихся кортежей.

ALL – предикат, обратный к DISTINCT (используется по умолчанию).

Рассмотрим основные предложения команды SELECT:

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

sal*0.87+bonus as salary

Если надо вывести все поля из тех отношений, к которым обращается данный запрос, можно указать символ * (если в отношениях нет полей с одинаковыми именами). В этом случае сначала будут выведены поля таблицы, стоящей первой в предложении FROM, затем – второй и т.д. Поля, относящиеся к одной таблице, будут выводиться в том порядке, в каком они были записаны при создании таблицы.

FROM – в этом предложении указывается имя таблицы (имена таблиц), в которой будет производиться поиск.

WHERE – содержит условия выбора отдельных записей.

GROUP BY – группирует записи по значению одного или нескольких полей. Каждой группе в результирующем отношении соответствует одна запись.

HAVING – позволяет указать условия выбора для групп записей. Может использоваться только после group by.

ORDER BY – упорядочивает результирующие записи по значению одного или нескольких полей: ASC – по возрастанию, DESC – по убыванию.

Порядок выполнения операции SELECT такой:

  1. Выбор из указанной таблицы тех записей, которые удовлетворяют условию отбора (where).
  2. Группировка полученных записей (group by).
  3. Выбор тех групп, которые удовлетворяют условию отбора (having).
  4. Сортировка записей в указанном порядке (order by).
  5. Извлечение из записей полей, заданных в списке выбора, и формирование результирующего отношения.

Если во фразе FROM указаны две и более таблицы, то эта последовательность действий выполняется для декартова произведения указанных таблиц.

Отношения для примеров приведены в таблицах 3-5.

Таблица 3. Отношение "Сотрудники" (Emp)

TabNo DepNo Name Post Salary Born Tel
  1 Рюмин В.П. начальник отдела 4850.0 01.02.60 5-26-12
  1 Серова Т.В. вед. программист 4850.0 20.10.71 5-91-19
  2 Волков Л.Д. программист 4650.0 16.10.72 null
  3 Петрова К.В. секретарь 3200.4 24.04.58 null
  2 Буров Г.О. бухгалтер 4588.5 22.05.65 5-46-32
  2 Малова Л.А. гл. бухгалтер 4924.0 24.11.54 4-24-55
  3 Сухов К.А. начальник отдела 4850.0 18.06.48 5-12-69

Таблица 4. Отношение "Отделы" (Depart)

DepNo Name
  Бухгалтерия
  Отдел кадров
  Отдел технического контроля
  Плановый отдел

Таблица 5.Отношение "Дети"(Children)

TabNo Name Born Sex
988 Вадим 03.05.85 м
110 Ольга 18.07.91 ж
023 Илья 19.02.77 м
023 Анна 26.12.79 ж
909 Инна 25.01.99 ж

Примеры:

  1. Выбрать все записи из таблицы "Отделы":

select * from depart;

DepNo Name
  Бухгалтерия
  Отдел кадров
  Отдел технического контроля
  Плановый отдел

 


1 | 2 | 3 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.007 сек.)