ПОНЯТНО О Visual Basic NET (том 3)

       

Изменяем в коде содержимое таблицы, создаем и стираем таблицы


SQL-оператор SELECT не меняет содержимое базы данных, а только делает выборку. В этом подразделе мы на примерах познакомимся с SQL-операторами, которые изменяют содержимое таблицы базы данных, а также создают таблицы и удаляют их. Это операторы INSERT, DELETE, UPDATE, CREATE TABLE, DROP TABLE. Для их испытания вполне можно использовать наш последний проект. В текстовое поле вы вводите SQL-оператор и нажимаете кнопку Выполнить запрос. В исходной базе данных происходят изменения. Однако, в нижней сетке вы не увидите ничего. Чтобы наблюдать изменения, нужно нажать кнопку  Из базы – на экран  и посмотреть в верхнюю сетку.

Добавляем записи в таблицу. Оператор INSERT. Следующий оператор приказывает вставить в таблицу роман Толстого «Воскресение» объемом в 700 страниц:

INSERT INTO   Книги (Avtor, Nazvanie, Kol_str)

VALUES   ('Толстой', 'Воскресение', 700)

Точный смысл:

ВСТАВИТЬ В

таблицу Книги новую запись. В этой записи полям Avtor, Nazvanie, Kol_str, придать соответственно

ЗНАЧЕНИЯ

«Толстой», «Воскресение», 700.

Поля, которым не придано значение, остаются пустыми (в сетке мы увидим значение (null) ). Обратите внимание, что строковые константы берутся не в двойные, а в одинарные кавычки.

Вместо констант можно писать выражения. Пример:

INSERT INTO Книги (Avtor, Nazvanie, Kol_str)

VALUES ('Толстой', 'Воскресение', 400+300)



Удаляем записи из таблицы. Оператор DELETE. Следующий оператор приказывает стереть из таблицы все тонкие книги Толстого:

DELETE FROM   Книги

WHERE   (Kol_str<100) And (Avtor='Толстой')

Точный смысл:

СТЕРЕТЬ ИЗ

таблицы Книги  все записи,

ГДЕ число страниц меньше 100 и автор – Толстой.

Если часть WHERE не писать, будут стерты все записи таблицы:

DELETE FROM Книги

Обратите внимание, что в верхней сетке при нажатии на кнопку Из базы – на экран  записи «не стираются». Создается ошибочное впечатление, что они не стираются и в самой базе данных. Оно создается потому, что указанные SQL-операторы выполняют изменения именно в базе данных, а не в DataSet. Адаптер, отправляя при нажатии на верхнюю кнопку из измененного файла в DataSet, скажем, 5 записей (а в DataSet их все еще 7), обновляет в DataSet только эти 5 записей, остальные не трогая. Чтобы избежать такого впечатления, нужно перед оператором заполнения DataSet


        OleDbDataAdapter1.Fill(DataSet11)

выполнить оператор, опустошающий DataSet:

        DataSet11.Книги.Clear()

Изменяем записи в таблице. Оператор UPDATE. Следующий оператор во всей таблице меняет Толстого на Льва Толстого:

UPDATE   Книги

SET   Avtor='Лев Толстой'

WHERE   Avtor='Толстой'

Точный смысл:

ИЗМЕНИТЬ

таблицу Книги, а именно:

УСТАНОВИТЬ

полю Avtor значение «Лев Толстой» везде,

ГДЕ значением поля Avtor является «Толстой»

Следующий оператор все тонкие книги  делает толстыми и антикварными:

UPDATE   Книги

SET   Kol_str= [Kol_str]+500,  Data=#1/1/1600#

WHERE   Kol_str<100

точнее, во всех записях, где число страниц меньше 100, оно увеличивается на 500 и устанавливается дата – 1 января 1600 года.

Таким образом, оператор UPDATE может менять значения всех полей во всех записях, удовлетворяющих условию.

Создаем таблицу. Оператор CREATE TABLE. Следующий оператор создает в нашей базе данных вдобавок к таблице «Книги» новую таблицу с двумя строковыми полями, без ключевого поля:

CREATE TABLE Сотрудники (Фамилия STRING, Отдел INTEGER)

Точный смысл:

СОЗДАТЬ ТАБЛИЦУ

 с именем Сотрудники  и с такими полями: Фамилия типа STRING и Отдел типа INTEGER

Типы данных в базах. Следующий оператор иллюстрирует основные типы полей, встречающиеся в таблицах баз данных, совместимых с Access:

CREATE TABLE Книги2 (Avtor STRING, Nazvanie STRING,  Data DATETIME,  Kol_str INTEGER, Качество LOGICAL, Цена CURRENCY, Рейтинг DOUBLE)

Пояснения: Здесь я создаю таблицу Книги2 с 7 полями. Описания полей приведены в скобках и разделены запятыми. Первое поле – Avtor, второе – Nazvanie и так далее.

В базах данных типы STRING, INTEGER, SINGLE, DOUBLE, DATETIME означают примерно то же самое, что и одноименные типы VB. Вместо Boolean пишем LOGICAL. При этом «Истина» и «Ложь»  могут изображаться числами -1 и 0, или флажком  (установленным или неустановленным) Можно пользоваться числовым типом CURRENCY – «Деньги». При этом число 48,2 может изображаться как 48,20р. Можете попробовать и другие простые типы VB, но не все они поддерживаются и не все под привычными именами.



Создание ключевого поля. Следующий оператор иллюстрирует создание ключа:

CREATE TABLE Книги3 (Avtor STRING, Nazvanie STRING,  Код INTEGER CONSTRAINT Ключ PRIMARY KEY)

Пояснения: Здесь я создаю таблицу Книги3 с 3 полями. Последнее поле Код я сделал ключевым. Чтобы создать ключевое поле с именем Код, я использовал выражение

Код  INTEGER CONSTRAINT  Ключ  PRIMARY KEY

Здесь INTEGER – тип поля, это целые числа. Слово CONSTRAINT  означает, что на значения в этом поле накладываются какие-то ограничения, они не могут быть произвольными целыми числами. Слова PRIMARY KEY конкретизируют эти ограничения. Имеется в виду, что поле является ключом (так называемым первичным ключом), а значит, значения не могут повторяться. Если вы случайно попытаетесь ввести туда число, которое уже встречалось, VB или Access не даст вам это сделать. Слово Ключ – это произвольное имя ключа, в простейшем случае оно вам не понадобится.

Очень удобно, когда ключевое поле само собою заполняется числами 1, 2, 3 … Для этого вместо INTEGER нужно выбрать тип COUNTER:

Код  COUNTER CONSTRAINT  Ключ  PRIMARY KEY

В этом случае уже нельзя самостоятельно вводить числа в это поле.

Ключевым можно сделать любое поле, если вы уверены, что значения в нем не повторяются. Например:

CREATE TABLE Книги4 (Avtor STRING, Nazvanie STRING CONSTRAINT Ключ PRIMARY KEY)

Здесь ключевым будет поле Nazvanie и компьютер будет присматривать за тем, чтобы одинаковых названий не встречалось.

Уничтожаем таблицу. Оператор DROP TABLE. Следующий оператор уничтожает в базе данных таблицу Сотрудники:

DROP TABLE Сотрудники


Содержание раздела