суббота, 18 апреля 2009 г.

Управление данными

Назначение любой базы данных заключается работа с данными, под которой понимается ввод новых данных, их изменение и удаление, а также выборка данных в соответствии с некоторыми критериями.
Большинство баз данных не хранят статистические данные, которыми приходится непрерывно управлять. SQL-Server предлагает следующие способы модификации данных в таблицах:
• INSERT. Добавление одной или нескольких записей в таблицу базы данных.
• SELECT … INTO. Копирование результата выполнения запроса в таблицу.
• BULK INSERT. Закачка исходных данных, хранящихся в текстовых файлах.
• UPDATE. Обновление записей таблицы базы данных.
• DELETE. Удаление записей таблицы базы данных.
Вставка записей
С помощью команды INSERT осуществляется вставка новых записей в таблицу, но не модифицирование уже существующих.
Эта команда имеет 4 синтаксические формы: в первых двух задаются значения полей одной записи, а две другие позволяют добавить несколько записей, являющихся результатом выборки данных, хранимой процедуры или другой конструкции:
INSERT [INTO] имя_таблицы [ (список_полей) ] VALUES ( { DEFAULT | значение } [,…n] )
INSERT [INTO] имя_таблицы DEFAULT VALUES
INSERT [INTO] имя_таблицы [ (список_полей) ] команда_SELECT
INSERT [INTO] имя_таблицы [ (список_полей) ] конструкция_SQL
Необязательный параметр INTO используется лишь для обозначения того, что следующий параметр имя_таблицы является именем таблицы, в которую будут вставлены данные.
Параметр список_полей указывает имена полей, разделенных запятыми, в которые будет производиться вставка данных. В списке полей должны присутствовать все поля, для которых запрещены Null-значения и не определены значения по умолчанию. Запрещено указание вычисляемых полей. Если аргумент список_полей опущен, то данные будут вставляться последовательно во все поля таблицы, начиная с первого.
Набор вставляемых данных определяется в параметре VALUES, причем количество аргументов и их значения должны соответствовать количеству полей в списке и их типам, а порядок аргументов должен соответствовать порядку полей.
Зарезервированное слово DEFAULT VALUES указывает на то, что запись будет содержать только значения по умолчанию.

Например, в таблицу Students (StudentID, FirstName, LastName, BirthDate), будет добавлена запись с заданными значениями полей, в поле счетчика – сгенерировано автоматически:
INSERT INTO Students (FirstName, LastName, BirthDate)
VALUES ( ‘Иван’, ‘Иванов’, Convert (datetime,'01.01.1988',104) )

Выполнение команды
INSERT INTO Students DEFAULT VALUES
приведет к ошибке, т.к. не для всех полей указаны значения по умолчанию.

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

Например, следующей командой в таблицу Students вставляются данные из таблицы DimEmployee базы данных AdventureWorksDW:
INSERT INTO Students (FirstName, LastName, BirthDate)
SELECT FirstName, LastName, BirthDate
FROM AdventureWorksDW..DimEmployee
Задание 1. В таблицу Сотрудники Вашей базы данных внесите сведения о двух сотрудниках с помощью первой синтаксической формы INSERT.
Задание 2. В таблицу Заказчики Вашей базы данных внесите сведения о заказчиках из таблицы DimCustomer базы данных AdventureWorksDW.

Закачка данных из файла
Используется для вставки больших объемов данных их текстового файла в существующую таблицу при помощи команды BULK INSERT, которая имеет следующий синтаксис:
BULK INSERT имя_таблицы FROM имя_файла
[ WITH (
[ DATAFILETYPE [=’тип’,] ]
[ FIELDTERMINATOR [=’символ’], ]
[ KEEPIDENTITY, ]
[ ROWTERMINATOR [=’символ’], ]
[ FIRSTROW [=номер], ]
[ LASTROW [=номер], ]
) ]
В данной команде обязательно указывается таблица, в которую вставляются данные, и полное имя файла данных, по отношению к компьютеру на котором функционирует SQL-Server.
Параметр DATAFILETYPE определяет метод представления данных в файле при его создании. Значение ‘char’ указывает на то, что данные в файле представлены в текстовом формате.
В параметре FIELDTERMINATOR задается символ-разделитель полей в файле (применяется для файлов типа ‘char’), по умолчанию – используется символ табуляции (‘\t’).
В параметре ROWTERMINATOR задается символ-разделитель записей в файле, по умолчанию – символ конца строки (‘\n’).
При указании KEEPIDENTITY в таблицу разрешается вставка данных в поля с установленным ограничением IDENTITY, если же этот параметр опущен, то сервером автоматически генерируются необходимые значения.
Параметры FIRSTROW и LASTROW определяют соответственно номера начальной и конечной строк диапазона, который переносится в таблицу. По умолчанию перенос начинается с первой и заканчивается последней строкой.

Задание 3. Заполните таблицу Заказы Вашей базы данных из текстового файла (не менее 4 записей).
Ввод данных с помощью интерфейса пользователя
Конечно, данные в таблицу можно ввести, открыв ее в Обозревателе объектов.
Задание 4. Заполните таблицу Товары Вашей базы данных, открыв эту таблицу в Обозревателе объектов (не менее 4 записей).

Изменение записей
Обновление записей осуществляется с помощью команды UPDATE, которая позволяет выполнять как простое обновление данных в поле, так и сложные модификации данных во множестве записей таблицы.
При выполнении данной команды обновляются записи только одной таблицы базы данных, если же ни одна запись не обновлена, то генерируется сообщение об ошибке.
Данная команда имеет следующий синтаксис:
UPDATE имя_таблицы
SET { имя_поля = выражение | DEFAULT } [,…n]
[ FROM имя_таблицы ]
[ WHERE условие_отбора ]
В результате выполнения команды происходит обновление одного или нескольких полей, указанных в разделе SET.
Значение поля является значением некоторого выражения, содержащего стандартные функции, переменные и поля таблиц, заданных в разделе FROM.
С помощью зарезервированного слова DEFAULT полю присваивается значение, определенное по умолчанию.
Изменению подвергаются все записи таблицы, удовлетворяющие условию отбора, указанному в разделе WHERE, а его правила записи аналогичны правилам в команде SELECT.

Например, чтобы изменить номер телефона у студента по фамилии Иванов необходимо выполнить следующую команду:
UPDATE Students
SET Phone = ‘35-35-35’
WHERE LastName like ‘Иванов’

В качестве выражения при обновлении значения поля записи может быть использован подзапрос. При этом необходимо учитывать, что подзапрос должен возвращать единственное значение для каждой записи.

Например, пусть имеются связанные таблицы Teacher (TeacherID, FirstName, LastName) и Lessons (Group, Subject, TeacherID). Чтобы указать, что занятия по информатике должен проводить только преподаватель по фамилии Петров, необходимо выполнить следующую команду:
UPDATE Lessons
SET TeacherID = (SELECT TeacherID FROM Teacher WHERE (LastName like ‘Петров’) )
WHERE Subject like ‘%[Ии]нформ%’

Задание 5. Измените название города на ‘Киров’ для заказчика с заданным наименованием.
Задание 6. Измените дату выполнения заказа на сегодняшнюю для тех заказов, которые были сделаны не позднее, чем 30 дней назад.
Задание 7. Составьте команду, изменяющую данные таблицы Заказы таким образом, чтобы для всех заказов с заданным наименование (например, ‘ручная работа’) был указан конкретный товар (например, ‘плетеная мебель’).

Удаление записей
Удаление данных из таблицы осуществляется построчно, при этом можно выполнить удаление как одной записи, так и нескольких, удовлетворяющих некоторому условию.
Синтаксис данной команды:
DELETE [ FROM ] имя_таблицы
[ WHERE условие_отбора ]
Параметр условие_отбора определяет набор записей, которые необходимо удалять. Правила записи данного раздела аналогичны правилам этого раздела команды SELECT.
Для удаления всех записей некоторой таблицы используется команда:
TRUNCATE TABLE ИмяТаблицы.
При этом удаляются все записи, однако структура таблицы сохраняется, как и связанные с ней объекты. Данная команда выполняет быстрее команды DELETE, т.к. сервером регистрируется только освобождение страниц памяти, а не удаление каждой записи со страницы.

Задание 8. Удалите из таблицы Сотрудники тех, кому в прошлом году исполнилось более 60 лет.


Приобрел мягкое и удобное одеяло, не нарадуюсь теперь. Спишь, как младенец, и не холодно, и не жарко.
Самые свежие и актуальные Новости Балаково: все, что интересно узнать!
Черный Город - бесплатная он-лайн игра