- •СОДЕРЖАНИЕ
- •1.1. Эволюция технологии программирования
- •1.2. Сущность технологии объектно-ориентированного программирования
- •1.3. Использование объектных моделей при организации удаленных соединений
- •2.1. Классификация объектов БД
- •2.2. Свойства и особенности элементов языка
- •2.3. Создание и удаление баз данных
- •2.4. Создание и модификация таблиц баз данных
- •ЛЕКЦИЯ 3.
- •РАБОТА С ДАННЫМИ В ЯЗЫКЕ TRANSACT-SQL
- •3.2. Создание
- •3.3. Команды манипуляции данными
- •4.1. Стандарты синтаксиса Transact-SQL
- •4.3. Курсоры
- •5.1. Разграничение прав доступа
- •5.3. Пользователи
- •5.6. Командные манипуляции с БД
- •5.7. Связанные и удаленные серверы
- •СПИСОК РЕКОМЕНДУЕМОЙ ЛИТЕРАТУРЫ
- •ЛАБОРАТОРНАЯ РАБОТА № 3. ГЕНЕРИРОВАНИЕ ОТЧЕТОВ
- •ЛАБОРАТОРНАЯ РАБОТА № 4. УДАЛЕННОЕ СОЕДИНЕНИЕ С БД INTERBASE НА ОСНОВЕ BDE
- •ЛАБОРАТОРНАЯ РАБОТА № 5. РАБОТА С КОМПОНЕНТАМИ MICROSOFT SQL SERVER
- •САМОСТОЯТЕЛЬНАЯ РАБОТА:
- •ЛАБОРАТОРНАЯ РАБОТА № 6. КОМАНДЫ СОЗДАНИЯ, МОДИФИКАЦИИ И УДАЛЕНИЯ ТАБЛИЦ
2.3.Создание и удаление баз данных
Вкомандном языке Transact-SQL для создания базы данных используется команда CREATE DATABASE. Например:
CREATE DATABASE Test_x ON PRIM ARY
(NAME=tdb1_dat,
FILENAM E=’c:\data\tdb1_data.mdf, SIZE=10M B,
M AXSIZE= 100MB, FILEG RO W TH=10M B
)
LOG ON (NAME=tdb1 J o g ,
FILENAM E=’c:\data\tdb1_data.ldf, & SIZE=5M B, &
M AXSIZE=10G B, FILEG R O W TH =10%,
),
(NAME=tdb2_dat,
FILENAM E=’d:\data\tdb2_data.ndf S!ZE=10M B
M AXSIZE= 100MB FILEG RO W TH=10M B
),
FILEG RO UP DBGroupl (NAM E=td b_g roup 1 _dat,
FILENAM E=’f:\data\tdb_gr1_data.ndf SIZE=10M B
FILEG RO W TH=5%
).
(NAME=tdb_group2_dat, FILENAME=’g:\data\tdb_gr1_data.ndf SIZE=10MB
FILEGR0WTH=5%
).
Одна база данных может состоять из нескольких файлов данных, файло вых групп или журналов транзакций.
PRIMARY - файловая группа, которая рекомендуется для хранения всех системных таблиц SQL-сервера, и объектов, не назначенных другим файловым группам;
LOG ON - предназначен для хранения информации об активности в отношении базы данных (журнал транзакций);
- FILEGROUP - служит для описания файловых групп, с целью размещения объектов базы данных на других жестких дисках и группировки их свойств с точки зрения одинакового описания параметров;
-NAME - логическое имя БД или журнала, к которому можно обратиться при выполнении команд;
-FILENAME - указывает имя и путь к файлу в операционный системе (нельзя указывать сетевые диски с других компьютеров);
-SIZE - начальный размер файла, который может увеличиваться по мере необходимости;
-FILEGROWTH - приращение;
-MAXSIZE - максимальный размер файла.
Для удаления базы данных можно использовать команду DROP DATA BASE Test_x.
2.4. Создание и модификация таблиц баз данных
При проектировании таблиц часто бывает необходимо обеспечить авто матическое генерирование числовых (и не только) уникальных значений. В большинстве случаев это уникальность значений в пределах одного столбца. Существует несколько способов решения проблемы:
1.Обеспечение уникальности данных в пределах одного столбца путем определения для него ограничения целостности IDENTITY (основной способ).
2.Генерирование для столбца значений, уникальных в пределах базы данных с помощью timestamp.
3.Установка для столбца свойства rowguidcol, что обеспечивает генерирование для каждой новой строки глобального уникального идентификатора (постарайтесь не использовать).
SQL-синтаксис создания таблицы достаточно сложен. Поэтому рассмот рим его на серии примеров:
Простейшая таблица:
CREATE TABLE Т_1 (
id |
int, |
fio |
varchar(50) NULL |
); Таблица с полем-счетчиком:
CREATE TABLE T_1 (
id |
decimal(18,0) IDENTITY (1,1) NOT NULL, |
fio |
varchar(50) NULL |
); |
|
Таблица с первичным ключом:
CREATE TABLE ТJ (
id decimal(18,0) IDENTITY (1,1) NOT NULL PRIMARY KEY, fio varchar(50) NULL
);
Создание связанных таблиц:
CREATE TABLE T1
(id int INDENT1TY(1,1) not null, Fam varchar(50),
Data_r datetime,
Pasport varchar(13) not null, Data_v datetime,
CONSTRAINT PKJd PRIMARY KEY (id),
CONSTRAINT Check_data_v CHECK (data_v>data_r and data_v<getdate()), CONSTRAINT Check_data_r CHECK (data_r>’01-01-1900’),
CONSTRAINt Unique_pasport UNIQUE NONCLUSTERED (passport), CONSTRAINT Check_pasport CHECK (passport Like
‘([0-9] [0-9] [0-9] [0-9])[0-9] [0-9] [0-9] [0-9] [0-9] [0-9]’)); CREATE TABLE T2
(id int INDENTITY(1,1) not null, ld_parent int,
Dolgnost varchar(30) not null, CONSTRAINT PKJd PRIMARY KEY (id),
CONSTRAINT FKJd_parent FOREIGN KEY(id_parent) REFERENCES T2(id), CONSTRAINt Unique.dolgnost UNIQUE NONCLUSTERED (dolgnost)); CREATE TABLE T12
(id int INDENTITY(1,1) not null, ld_T1 int,
ld_T21 int,
Data_w datetime DEFAULT(getdate()) Null, CONSTRAINT PKJd PRIMARY KEY (id),
CONSTRAINT FKJdJI FOREIGN KEY(idJ1) REFERENCES T1 (id), CONSTRAINT FKJd_t2 FOREIGN KEY(idJ2) REFERENCES T2(id))
Если вы сомневаетесь в корректности ранее созданного объекта, оператор его создания можно просмотреть с помощью директивы:
sp_helptext 41*
Все операции с данными основаны на классических операторах:
SELECT * FROM ТJ
или SELECT fio as Worker_fio FROM T_1 или SELECT fio FROM T.Worker as TW INSERT INTO T_1 (fio) VALUES (’Иванов’);
UPDATE T J SET fio-Петров’ WHERE id=100;
DELETE FROM T_1 WHERE fio LIKE ’%OB’; Эти команды далее в тексте не поясняются. Удаление независимой таблицы:
drop table Т_1;
Удаление связанных таблиц: drop table Т2;
drop table Т1;
Все изменения структуры в схеме связанных таблиц настоятельно реко мендуется выполнять визуально, так как классический SQL-оператор ALTER TABLE имеет достаточно сложный синтаксис и требует знания точного наиме нования системных объектов, которые были созданы автоматически без участи разработчика:
ALTER TABLE [dbo].[T2] DROP CONSTRAINT FK_T2_T1
Еще одно замечание. В момент разработки структуры БД создаваемые объекты находятся в схеме разработчика (а обычно он не является владельцем БД “dbo”). Поэтому доступ к таким объектам из схем других пользователей несколько затруднен.
Например, команда SELECT * FROM t_person обратится сначала к своей схеме, а затем - к схеме dbo - и только если там имеется соответствующая таб лица, будет выполнена выборка. В противном случае мы получим сообщение об ошибке.
SELECT * FROM userl .t_person
Эта команда обращается к таблице, размещенной в схеме userl. Следует заметить, что в БД могут находиться объекты с одинаковыми названиями, но принадлежащие разным схемам (пользователям). Однако это нежелательно.
Для того чтобы к объектам (без уведомления владельца схемы) смогли об ращаться разные пользователи, следует размещать (исходно создавать) в схеме dbo. Для этого разработчик объекта должен быть наделен правом работы в схе ме владельца БД. Синтаксис оператора очень прост:
CREATE TABLE dbo.tl (... и т.д.)
Врезультате любой пользователь может выполнить одну и ту же команду
иполучить доступ к единому объекту БД.
SELECT * FROM t1