- •Оглавление
- •Введение
- •1. Типы данных в sql
- •2. Данные, используемые в примерах
- •3. Создание новых таблиц и модификация данных в таблицах
- •4. Формирование запросов
- •4.1. Выборка данных из единственной таблицы
- •4.2. Выборка данных из нескольких таблиц
- •4.3. Вложенные запросы (подзапросы)
- •4.4. Специальные операторы для обработки подзапросов
- •4.5. Объединение результатов нескольких запросов
- •4.6. Вставка результатов запроса в другую таблицу
- •Приложение 1
- •Текстовый тип
- •Числовые типы
- •Приложение 2
- •Приложение 3
- •Числовые функции
- •Символьные функции
- •Агрегатные функции(применяются к полям таблиц)
3. Создание новых таблиц и модификация данных в таблицах
Команды языка SQL - это инструкции, которые определяют конечный результат операции, которую следует выполнить над БД. Команды состоят из одной или более логических частей, называемых предложениями. Каждое предложение начинается с ключевого слова, кроме которого в состав предложения входят аргументы.
Каждая команда языка SQL начинается глаголом (ключевое слово), определяющим имя базовой операции. Помимо глагола в состав команды входят предложения, уточняющие выполнение базовой операции. В частности, в команде SQL необходимо определить данные (таблицы, поля таблиц), которые будут обрабатываться и, возможно, операции, которые требуется выполнить над ними.
В тексте примеров использования команд языка SQL ключевые слова всегда будут выделяться заглавными буквами, написанными жирным шрифтом. Напомним, что наименования таблиц выделяются жирным шрифтом, пишутся курсивом и начинаются с заглавной буквы. Имена полей пишутся прописными буквами без выделения шрифтом, за исключением первого символа имени поля, который определяет тип хранимых в поле данных (C - текстовые данные, N - числовые данные).
Новая таблица создается с помощью команды CREATE TABLE, синтаксис которой в общем виде:
CREATE TABLE <имя таблицы>
( <имя поля> <тип данных> [ (<размер данных>) ], ... )
<имя таблицы> - имя, присваиваемое реляционной таблице. В данном случае это имя файла, в котором будет содержаться таблица после создания (применительно к FoxPro в имя файла может включаться указание носителя файла и путь доступа к нему). Две таблицы, размещаемые в файлах, хранящихся в одном каталоге, не могут иметь одинаковые имена.
<имя поля> - имя столбца создаваемой таблицы.
<размер данных> - количество позиций, отводимых для хранения данных указанного типа. Возможно, что в качестве размера потребуется задание двух значений - собственно длины поля и количества позиций, отводимых под дробную часть чисел.
В стандартном SQL указание размера необязательно, он может устанавливаться по умолчанию. В FoxPro размер должен задаваться явно для полей тех типов, длина которых не является фиксированной. Для числовых полей в случае, если второй размер (число десятичных знаков) не указывается, он принимается равным нулю.
, ... - признак повторяющейся конструкции.
Создаваемая таблица должна иметь хотя бы один столбец (т.е. должны быть определены параметры хотя бы одного поля). После создания таблицы она пуста, в ней нет ни одной строки.
В качестве примера использования команды CREATE TABLE приведем команду, которая создает пустую таблицу Subject (см. приложение 2), предназначенную для хранения сведений о предметах:
CREATE TABLE Subject ( Nsub N(5,0), Cname C(25), Nhour N(3,0),
Nteach N(5,0) )
Примечание: согласно синтаксису языка SQL каждая команда должна заканчиваться символом “;”. Однако в командных файлах FoxPro этот символ используется как признак продолжения команды на следующей строке. Чтобы не вносить путаницы, автор отказался от использования символа “;” во всех случаях.
После создания таблицы необходимо иметь возможность модифицировать данные, хранящиеся в ней. Существуют три основные операции, осуществляемые над данными таблицы:
-добавить строку в таблицу;
-исключить строку из таблицы;
-изменить значения полей в строке
и, соответственно, три команды, реализующие эти операции.
Новая строка в существующую таблицу добавляется командой, имеющей синтаксис:
INSERT INTO <имя таблицы> [ (список полей) ]
VALUES (<значение-1>,<значение-2>, ... )
где <значение-1>,<значение-2>, ... - список значений полей новой строки. Количество значений, типы и порядок их расположения должны
строго соответствовать числу, типам и порядку следования полей, указанных в списке полей, а если он отсутствует, то числу, типам и порядку следования полей, определенным при создании таблицы. Новая строка физически всегда добавляется в конец таблицы.
Например, для формирования новой строки в таблице Subject следует использовать команду:
INSERT INTO Subject
VALUES ( 103, ‘Информационные системы’, 90, 210 )
Если же требуется сформировать в таблице новую строку, содержащую лишь наименование предмета и объем занятий, команда приобретает следующую форму:
INSERT INTO Subject ( Cname, Nhour )
VALUES ( ‘Информационные системы’, 90 )
Для неуказанных в команде INSERT полей значения определяются по умолчанию.
Исключение строк из таблицы происходит по команде, имеющей следующий синтаксис:
DELETE FROM <имя таблицы> [ WHERE <условия отбора> ]
Примечание: в FoxPro данная команда SQL не поддерживается.
Например, для удаления всех строк таблицы Student требуется команда:
DELETE FROM Student
Если же требуется удалить только строки, соответствующие студентам математического факультета, команда удаления будет выглядеть таким образом:
DELETE FROM Student WHERE Ndep=100
Замена значений полей в строках таблицы выполняется командой:
UPDATE <имя таблицы> SET <имя поля>=<выражение>, ...
[ WHERE <условие отбора> ]
Примечание: в FoxPro данная команда SQL не поддерживается.
В отличие от команды INSERT в команде UPDATE допускается использование выражений в качестве новых значений полей. Например, замену кода одного из факультетов (физического) и кодов преподавателей, работающих на этом факультете, на другие значения можно выполнить по команде:
UPDATE Teacher SET Ndep=Ndep*2, Nteach=Nteach+300
WHERE Ndep=200
Упражнения к разделу 3
1. Напишите последовательность команд, необходимых для создания таблицы Student, описанной в предыдущем разделе, и заполнения ее требуемыми данными.