Разделы

Авто
Бизнес
Болезни
Дом
Защита
Здоровье
Интернет
Компьютеры
Медицина
Науки
Обучение
Общество
Питание
Политика
Производство
Промышленность
Спорт
Техника
Экономика

Определение данных и манипулирование данными SQL

База данных во многих СУБД представляет собой контейнер, содержащий таблицы, представления (виртуальные таблицы), триггеры (для отслеживания ограничений целостности – непротиворечивости данных), хранимые процедуры и другие объекты.

Для создания базы данных используется команда:
CREATE DATABASE  <имя_БД>
[необязательные_параметры].
Состав необязательных параметров зависит от используемой СУБД, при их отсутствии в команде используются значения по умолчанию.
Например, для создания БД в Visual FoxPro с именем BASA1 используется команда:
CREATE  DATABASE BASA1

Для определения структуры таблицы данных используются команды создания (CREATE TABLE) и изменения (ALTER TABLE) структуры таблицы. Таблица создается в активной БД. Если нет активной БД, то в СУБД, допускающих наличие свободных таблиц, создается свободная таблица (не входящая в состав БД).

Команда создания структуры таблицы данных имеет следующий формат:
CREATE TABLE <имя_таблицы> (<определение_поля1> [,<определение_поля2>...][определение_ограничений])
Команда создает новую таблицу данных с указанным именем. Для каждого поля задаются его имя и тип. Для типов полей, которые могут иметь разную ширину, дополнительно необходимо указать требуемую ширину. Для числовых полей с плавающей запятой указывается также точность (число десятичных разрядов). Если создаваемое поле будет являться  ключевым (индексом), то необходимо указать тип ключа (индекса). Кроме того, в определении поля можно указать признак (NOT NULL) обязательного заполнения поля при вводе данных в таблицу, значения полей по умолчанию  и ограничения на ввод  значений. Определение ограничений таблицы используется для задания ограничений на уровне таблицы, могут указываться также определения первичного и внешнего ключей.

В Visual FoxPro команда CREATE TABLE создает новую таблицу данных (DBF-файл) с указанным именем. Для каждого поля задаются его имя и тип (одной из букв: C - символьный; N - числовой; F - с плавающей запятой; D - дата; L - логический; M - примечание и т.д.). Например, для создания структуры таблицы KADR, предназначенной для хранения следующей информации: фамилий (поле FAM, символьного типа, длиной 25 символов); табельных номеров (поле TAB, целого типа, является первичным ключом - индексом); дат рождения (поле DTR, типа даты); размера зарплаты (поле ZARP, числового типа, общей длиной 8 символов, из которых 2 символа под дробную часть числа)  - необходимо использовать следующую команду:
CREATE TABLE KADR (FAM C(25),
TAB I PRIMARY KEY, DTR D, ZARP N(8,2))

Можно создать временную таблицу, с которой можно работать как с обычной таблицей данных, называемую курсором (CURSOR). Курсор располагается в оперативной памяти в свободной рабочей области и доступен сразу после создания до тех пор, пока он не будет закрыт. При закрытии курсора временная таблица удаляется из памяти. Команда создания курсора CREATE CURSOR аналогична команде CREATE TABLE.

Кроме того, с помощью команды CREATE можно создать индекс (CREATE INDEX), триггер (CREATE TRIGGER), представление (CREATE VIEW), значение по умолчанию (CREATE DEFAULT), ограничение на данные (CREATE RULE), хранимую процедуру (CREATE PROCEDURE), пользовательскую функцию (CREATE FUNCTION), схему данных (CREATE SCHEME).

При изменении структуры таблицы используется команда ALTER TABLE с ключевыми словами, которые позволяют добавить, удалить, переименовать поле, изменить параметры поля. Эта команда имеет формат:
ALTER TABLE <имя_таблицы>
[ADD <определение_добавляемого_поля>]
[DROP <имя_удаляемого_поля>]
[RENAME <старое_имя_поля>  TO <новое_имя_поля>]
[ALTER <имя_изменяемого_поля>
<определение_изменяемых_параметров_поля>]
Например, для добавления символьного поля FAX шириной 12 позиций и удаления поля TELEFON в таблице KADR можно использовать команду:
ALTER TABLE KADR ADD FAX C (12) DROP TELEFON
Кроме того, с помощью команды ALTER можно изменить триггер (ALTER TRIGGER), представление (ALTER VIEW), хранимую процедуру (ALTER PROCEDURE), пользовательскую функцию (ALTER FUNCTION).
С помощью команды DROP можно удалить любые объекты, созданные командой CREATE.
Можно удалить всю таблицу целиком командой:
DROP TABLE <имя_таблицы>
Например, следующая команда удалит таблицу BD1:
DROP TABLE BD1
Для удаления базы данных со всеми таблицами используется команда:
DROP DATABASE <имя_базы_данных>
Например, следующая команда удалит базу данных BASA1:
DROP DATABASE BASA1

Дополнять записями базу данных можно используя в качестве источника данных выражения, массивы, переменные, константы, результат запроса.
Для дополнения записей в таблицу БД используется команда INSERT, которая предварительно открывает закрытую таблицу БД. Формат команды INSERT:
INSERT INTO <имя_таблицы> [(<имя_поля1>[, <имя_поля2> …])] VALUES (<выражение1> [, <выражение2> …])

Команда добавляет записи в конец существующей таблицы, используя выражения, перечисленные после слова VALUES. Выражения заносятся в указанные поля. Если опущены имена полей, выражения будут записываться в последовательные поля таблицы данных в соответствии с ее структурой.
Например, результат следующих двух команд будет одинаковым:
INSERT INTO KADR (FAM, ZARP) VALUES ("Киров", 18200)
INSERT INTO KADR (ZARP, FAM) VALUES (18200, "Киров")

В качестве выражений могут использоваться значения переменных или элементов массивов переменных. Например, в СУБД Visual FoxPro для дополнения записей в таблицу данных с использованием массивов используется следующая команда SQL:
INSERT INTO <имя_таблицы>
FROM ARRAY <имя_массива>
Команда добавляет  записи в конец таблицы данных, используя данные, содержащиеся в указанном массиве. Данные из массива заносятся последовательно в поля, начиная с первого. Типы соответствующих полей и элементов массива должны совпадать.

Например, для определения значения элементов массива C1 и добавления этих данных из массива в поля таблицы данных KADR в Visual FoxPro необходимо использовать следующую последовательность команд:
C1(1)="Ахметов"
C1(2)=235
C1(3)={12/20/74}
C1(4)=8000
INSERT INTO KADR FROM ARRAY C1
Во многих СУБД (но не во всех) SQL-команду INSERT можно использовать с подзапросом - вложенной командой SELECT, если множество дополняемых данных является результатом запроса:
INSERT INTO <имя_таблицы> [(<имя_поля1> [, <имя_поля2> ...])] <подзапрос>
Например, дополнение в таблицу STUD1 фамилий студентов (поле FAM) из таблицы STUD2 осуществляется следующей командой:
INSERT INTO STUD1 (FAM) VALUES
SELECT DISTINCT FAM FROM STUD2
Для модификации данных в таблице БД используется команда UPDATE, которая имеет следующий формат:
UPDATE <имя_таблицы> SET <имя_поля1>= <выражение1> [,<имя_поля2> = <выражение2>..] [WHERE <условие>]

Замена значений происходит в записях, удовлетворяющих условию, указанному после опции WHERE. Если эта опция отсутствует, то замена значений происходит во всех записях таблицы. Например, для замены фамилии (поле FAM) ‘Ахметов’ на ‘Ахмет’ в таблице STUD необходимо использовать следующую команду:
UPDATE STUD SET FAM =‘Ахмет’ WHERE FAM=’Ахметов’
При модификации данных можно использовать подзапрос - вложенную команду SELECT для формирования операнда условия:
UPDATE <имя_таблицы> SET <имя поля>=<выражение>
[WHERE <операнд_условия> <оператор_условия> (<подзапрос>)]
Например, установка надбавки к стипендии студентов (поле STIP) на 25% в таблице STUD1, если фамилии этих студентов (поле FAM) имеются в таблице STUD2, реализуется следующей командой:
UPDATE  STUD1 SET STIP=1.25*STIP
WHERE FAM IN (SELECT FAM FROM STUD2)
Для удаления записей в SQL используется команда DELETE, имеющая следующий формат:
DELETE  FROM <имя_таблицы> [WHERE <условия>]

Удаляются записи, удовлетворяющие условию, указанному после опции WHERE. Если эта опция отсутствует, то удаляются все записи из таблицы.
При удалении можно использовать подзапрос - вложенную команду SELECT для формирования операнда условия:
DELETE  FROM <имя_таблицы>
[WHERE <операнд_условия> <оператор_условия> (<подзапрос>)]

В Visual FoxPro поддерживается команда SQL - DELETE, которая помечает записи на удаление без физического удаления записей. Физическое удаление записей можно реализовать командой PACK. Например, для пометки на удаление данных о сотруднике с табельным номером 65 (поле TAB) из таблицы KADR используется команда:
DELETE FROM KADR WHERE TAB=65

Для пометки на удаление всех записей из таблицы KADR необходима команда:
DELETE FROM KADR

Пометка на удаление из таблицы STUD1 данных о студентах, если фамилии этих студентов (поле FAM) имеются в таблице STUD2 реализуется следующей командой:
DELETE FROM STUD1 WHERE FAM IN
(SELECT FAM FROM STUD2)

Источник: Айтхожаева Е.Ж. Структурированный язык запросов SQL. /Методические указания к лабораторным работам. / - Алматы: КазНТУ

Дата публикации:2012-10-30

Просмотров:1511

Вернуться в оглавление:

Комментария пока нет...


Имя* (по-русски):
Почта* (e-mail):Не публикуется
Ответить (до 1000 символов):







 

2012-2017 lekcion.ru. За поставленную ссылку спасибо.