Удаление таблиц выполняется с помощью команды DROP TABLE <имя таблицы>
Например: Удалить таблицу Employees из базы данных Avto.mdbможно SQL запросом, который показан ниже:
DROP TABLE Employees
Модификация таблиц
Модификацию таблиц с помощью SQL-запросов можно выполнить следующей последовательностью процедур:
- создать новую таблицу с помощью CREATE TABLE NewTab (<описание столбцов>);
- перенести данные из старой таблицы в новую с помощью запроса INSERT INTO <условия отбора данных>;
- Удалить исходную таблицу с помощью DROP TABLE <имя таблицы>.
Изменить структуру созданной таблицы можно с помощью команд
- ALTER TABLE – добавить столбец;
- DROP COLUMN – удалить столбец;
- ALTER COLUMN – изменить параметры столбца;
- RENAME COLUMN – переименовать столбец;
Пример добавления столбца NewPrice в таблицу Price:
ALTER TABLE Price ADD COLUMN NewPrice FLOAT
Пример удаления столбеца NewPrice из таблицы Price:
ALTER TABLE Price DROP COLUMN NewPrice
Пример описания базы даны «Автосалон»
База данных «Автосалон» (avtoshop.mdb) предназначена для регистрации продаж в автосалоне. База данных avtoshop.mdb состоит из 4-х таблиц: «Продавцы» (salespeople), «Покупатели» (customers), «Цена» (price) и «Заказы»( orders). Описание каждой таблицы на языке SQL приведено ниже:
create table Salespeople
( snum char(4) not null primary key,
sname char(30) not null,
saddress char(60),
comm float ,
stel char(20),
semail char(40) );
create table Customers
( cnum char(4) not null primary key,
cname char(30) not null,
caddress char(60),
rating int ,
ctel char(20),
cemail char(40) );
create table Price
( pnun char(4) not null primary key,
pname char(60) not null,
peddim char(10),
price float ,
pdate datetime Not null );
create table Orders
( onum char(4) not null primary key,
odate datetime Not null,
amount float ,
snum char(4) not null,
cnum char(4) not null,
pnun char(4) not null );
Выполнить каждый из выше приведенных запросов можно в среде СУБД Access в режиме Запросы®Конструктор®Режим SQL. Войдя в режим редактора SQL, скопируйте из методического руководства текст запроса на создание таблицы Orders (см. рис. 43) и выполните его.
Рис.43. Пример подготовки запроса на создание таблицы в среде Access (редактор SQL-запросов)
Замечание: следует отметить, что при благополучном выполнении запросов СУБД Access не выдает никаких сообщений, а результат выполнения запроса на создание новой таблицы можно просмотреть в режиме Таблицы. В случае обнаружения ошибки в тексте запроса на экран выдается сообщение, комментирующее тип ошибки.
В результате реализации всех SQL-запросов в среде СУБД Access получаем базу данных, схема которой приведена на рис.44. ниже.
Одно из важных преимущест описания структуры базы данных на языке SQL является то, что отлаженный набор SQL-запросов можно легко перенести в другую СУБД (например, в СУБД SQL Server 2000), что позволяет создать «двух-ступенчатую» технологию разработки баз данных:
- сначала отработать схему базы данных в локальной версии СУБД Access;
Рис.44. Схема базы данных «Автосалон» (avtoshop.mdb)
- затем с минимальными переделками перенести набор отлаженных SQL-запросов в серверную версию СУБД SQL Server 2000, используя для этого Query Analyzer.
Вариант SQL-запроса для создания базы данных AvtoShop в среде SQL Server 2000 и запроса создания в новой базе данных таблицы Salespeople показан ниже:
create databases avtoshop;
use avtoshop;
create table salespeople
( snum char(4) not null primary key,
sname char(30) not null,
saddress char(60),
comm float(6,2) default 0,
stel char(20),
semail char(40) );
Занятие 6. Создание приложений с использованием запросов на языке SQL.
Особенно полно преимущества языка SQL, как инструмента доступа к реляционным базам данных, раскрываются в приложениях, разработанных с применением языков программирования типа Си, Visual Basic, Visual Basic for Application, VBScript, JavaScript, JavaScript или Delphi. Мощь процедурных языков в сочетании с гибкостью языка SQL дает принципиально новые возможности для быстрых технологий создания пользовательских диалоговых приложений. Ниже рассматриваются некоторые примеры таких реализаций на VBA и VBScript.
Приложение в среде VBA
Разработка диалоговых приложений в среде VBA подробно разобрано в работе [2]. Поэтому здесь напомним только основные приемы создания модулей для доступа к базам данных через объекты (компоненты объектной библиотеки) ADO (ActiveX Data Object).
Для создания приложения будем использовать Ecxel (Пуск®Программы®Excel). В Excel перейдем в режим редактора VBA (Alt+F11) и создадим модуль (Insert®Module), создадим модуль Test_AvtoShop().
Затем подключим библиотеку MS ADO (Tools®References ®<выбор компоненты MS ADO>) и разработаем скрипт (текст программы), который выполнит следующие процедуры:
- коннекция к базе данных;
- обработка SQL-запроса;
- вывод отобранных данных на лист в форме отчета.
Пусть база данных avtoshop.mdb находится в директории D:\Учебное пособие по SQL В Access.
Пример простого скрипта, выполняющего эти процедуры применительно к учебной базе данных avtoshop.mdb показан ниже.
Sub Test_AvtoShop()
'1 - коннекция к базе данных --
'--Создание объекта <ADODB >
Set Db = CreateObject("ADODB.Connection")
'---- формирование стринга для связи с базой данных---
StrOpen = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Учебное пособие по SQL в Access\AvtoShop.mdb"
Db.Open StrOpen
'2 - Выполнение SQL-запроса -
'- Создание объекта типа <запись> --
Set rs = CreateObject("ADODB.Recordset")
Set rs.ActiveConnection = Db
'------формирование стринга для отбора записей ------
StrSQL = "SELECT * FROM Salespeople;"
'---- подготовка набора записей
rs.Open StrSQL
'3 ---Ввывод записей в таблицу ----
'-если набор пуст, то товара нет на складе -----
If rs.EOF = True Then
MsgBox "Записей нет"
Exit Sub
End If
'-- вывод строки заголовков столбзов ---
Nstr = 1
RabTab = "Лист1"
k = 1
With Sheets(RabTab)
For Each fl In rs.Fields
.Cells(Nstr, k).Value = fl.Name
k = k + 1
Next
'------ вывод тела таблицы -----
Nstr = 2
Do Until rs.EOF = True
k = 1
For Each fl In rs.Fields
.Cells(Nstr, k ).Value = fl.Value
k = k + 1
Next
'-----------
rs.MoveNext
Nstr = Nstr + 1
Loop
'----------------------------------
End With
End Sub
Результат будет выводится в виде отчетной таблицы на Лист1.
Более сложный пример, который использует диалоговую форму для выбора SQL-запроса описан в приложении 2.