--PAGE_BREAK--
1.3 Системные базы данных SQL Server2000
Система управления MS SQL Server 2000 в своей работе использует несколько системных баз данных, которые создаются автоматически при установке SQL Server 2000 и не должны удаляться. Вся информация о настройке сервера хранится в этих базах данных. Системные базы данных MS SQL SERVER 2000, создаваемые при его установке, их назначение и имена соответствующих им файлов представлены в приложении Е, таблице 1.
Все перечисленные в приложении Е, таблице 1 системные базы данных, как и пользовательские базы данных, в обязательном порядке содержат 18 системных таблиц, которые хранят информацию, определяющую структуру и организацию соответствующей базы данных. Имена всех системных таблиц начинаются с символов sys. В приложении Ж, таблице 2 перечислены системные таблицы с кратким описанием их назначения.
Не следует напрямую работать с системными таблицами с помощью команд SQLInsert, Updateи Delete. Для изменения данных в системных таблицах в SQL Server 2000 имеется набор системных хранимых процедур, с помощью которых можно выполнить практически любые действия по администрированию сервера. Фирма Microsoft настоятельно рекомендует использовать эти хранимые процедуры, а не изменять данные непосредственно. Это связано не только с опасностью повреждения системных данных, но еще и с обеспечением совместимости. Microsoft может изменить структуру системных таблиц и назначение колонок в следующих версиях SQL Server. Если приложение напрямую изменяет системные таблицы SQL Server 2000 и при этом корректно работает, то нет никакой гарантии, что оно станет правильно работать в следующих версиях. При использовании системных хранимых процедур Microsoft обещает, что приложение будет корректно работать даже при существенных изменениях в системных базах данных.
Системная база данных master. Эта системная база данных является главной базой данных SQL Server 2000. Остальные системные базы данных имеют второстепенное значение и их можно считать вспомогательными. В базе данных master хранится вся системная информация о параметрах конфигурации сервера, имеющихся на сервере пользовательских баз данных, пользователях, имеющих доступ к серверу, и другая системная информация.
В базе данных master имеется набор таблиц с системной информацией. Наименование таблиц базы данных master и их назначение приведены в приложении З, таблице 3. По умолчанию база данных master создается в каталоге Data установочного каталога SQL Server 2000.
Системная база данных model. Cистемная база данных model служит шаблоном для создания новых баз данных. Технология создания новой базы данных в SQL Server 2000 построена следующим образом: сервер копирует базу данных model в указанное место и изменяет ее имя соответствующим образом. Если при создании базы данных не указаны никакие параметры, кроме ее имени, то новая база данных будет являться полной копией базы данных model. Если же размер и состав файлов создаваемой базы данных указан явно, то скопированная база данных изменяется соответствующим образом. Но в любом случае в качестве основы используется база данных model. Независимо от того, создаете ли вы базу данных с помощью интерфейса EnterpriseManagerили команд Transact-SQL, последовательность действий будет одинакова.
Изменяя параметры базы данных model, можно управлять параметрами по умолчанию создаваемых баз данных. Кроме того, базу данных model можно использовать в качестве корпоративного стандарта на содержимое и свойства базы данных.
--PAGE_BREAK--
3.2 Константы, имена, идентификаторы, переменные TRANSACT–SQL
В языке Transact–SQL имеются следующие виды констант:
· битовые: 0 и 1;
· логические: FALSE и TRUE;
· бинарные в шестнадцатеричном представлении: 0x9E70DA;
· символьные: ‘ABC’; “ABC” (если QUOTED_IDENTIFIER= OFF), N‘ABC’ или N “ABC” (Unicode);
· целые: 1; 2; 175;
· с фиксированной точкой: 12.35; — 16.753;
· с плавающей точкой: 1.75Е5; 3.84Е – 3;
· для даты: “ April 15.2003”; “4/15/2003”; “20031207”;
· для времени: 14:30; 14:30:20:999; 4am; 4pm;
· денежные: $100;?200; 2.15.
Комментарии в языке бывают двух типов: строчные, начинающиеся с двух символов минуса («--») и блочные, заключаемые символами /* и */. Все объекты базы данных должны иметь имена, которые используются в командах для ссылки на эти объекты. Любой объект базы данных должен быть уникально идентифицирован. Помимо программных имен сервер автоматически генерирует внутренние уникальные имена для идентификации объектов баз данных, например, PK_ _Table X_ _ 014543FA. Программные имена задаются идентификаторами двух типов:
стандартными идентификаторами: Table X; Key Col;
· ограниченнымиидентификаторами: [My Table]; [Order]; “My Table”; “Order”;
· (еслиQUOTED_IDENTIFIER = ON).
Длина идентификатора – от 1 до 128 символов. Идентификатором не может быть какое-либо зарезервированное ключевое слово языка. Стандартный идентификатор в качестве первого символа может иметь любую латинскую или русскую букву, знаки #, ##, @, @@ и знак подчеркивания _. Последующими знаками, помимо указанных знаков, могут быть еще и десятичные цифры.
Ограниченные идентификаторы могут включать и другие символы, в том числе зарезервированные слова. В этом случае они должны заключаться в квадратные скобки или двойные кавычки.
В соответствии с идеологией SQL Server 2000 каждый объект создается определенным пользователем и принадлежит той или иной базе данных. В свою очередь база данных расположена на конкретном сервере. Из имен объекта, пользователя, базы данных и сервера создается полное имя (complete name) или полностью определенное имя (full qualified name), записываемое в следующем виде:
[[[server.].[database].[owner_name].] object_name.
Варианты обращения к объектам базы данных: A.B.C.D; A.B..D; A..C.D; A..D; B.C.D; B..D; C.D; D. Чтобы сослаться на конкретный столбец таблицы или представления, необходимо в полном имени указать пятый элемент: А.В.С.D.E.
В Transact–SQL существует несколько способов передачи данных между командами. Одним из таких способов является передача данных через локальные переменные, объявляемые следующим образом:
DECLARE {@ имя локальной переменной тип данных}[,…n]
Таким образом, знак @ является признаком имени локальной переменной. Этот же знак используется для определения имен параметров функций и хранимых процедур. Часть синтаксиса [,…n] означает повторение синтаксической конструкции, взятой в фигурные скобки:
DECLARE @Ivar int илиDECLARE @IBit bit.
Значения переменным можно присвоить с помощью команд SET и SELECT. Командой SET можно присвоить значение только одной переменной: SET @Ivar = 5
или SET @IBit = 0.
Для присваивания значений нескольким переменным, вычисляемых с помощью выражений, следует использовать команду SELECT, которая выводит результаты в окно Grids:
SELECT @Ivar = SUM (price) FROM titles _ _ см. окноResult.
Для вывода значений переменных следует использовать команды:
· SELECT – для вывода данных в стандартный набор строк;
· PRINT – для вывода данных как служебной информации.
Примеры команд вывода значений переменных:
· SELECT @Ivar _ _ вокноGrids утилитыQuery Analyzer;
· PRINT @IBit _ _ вокноMessages утилитыQuery Analyzer.
Константы, переменные и параметры функций и хранимых процедур, вызовы функций, имена столбцов и подзапросы являются операторами арифметических и логических выражений. В качестве операнда может быть также само выражение типа CFSE, NULLIFи COALESCE.
Операторами выражения могут быть унарные («+» или «-»), бинарные арифметические операторы (+, -, *, % ), оператор присваивания (=), строковая операция конкатенации (+), операторы сравнения (=, >, =, =, != или , !), логические операторы (NOT, AND, OR, ALL, ANY, BETWEEN, EXIST, IN, LIKE, SOME ) и битовые операторы (&, |, ^).
Константы, переменные, операнды и выражения используются при записи команд и программирования функций и хранимых процедур, которые, все вместе взятые, составляют основную часть системы программирования SQL Server 2000 и определяют ее выразительную мощь. Команды позволяют создавать, модифицировать и удалять базы данных и их объекты, формировать сложные запросы на ввод, обработку и извлечение данных из баз знаний, выполнять функции администрирования и обслуживания баз данных. Функции и хранимые процедуры реализуют разнообразные алгоритмы обработки данных или выполнение служебных функций сервера.
3.3 Типы данных SQL Server2000
При объявлении переменной с помощью команды DECLARE необходимо указать ее тип данных. Тип данных определяет, какая информация может храниться в переменной, и какие операции могут выполняться над этими данными. В общем, понятие и использование типов данных в Transact-SQL соответствуют большинству современных языков программирования.
Типы данных играют большую роль при работе с таблицами. Каждый столбец должен иметь конкретный тип данных. В одной таблице может быть множество столбцов, как с одинаковыми, так и с различными типами данных. Наконец, типы данных активно используются при работе с хранимыми процедурами, определяя вид значений, указываемых при вызове.
В SQL Server 2000 набор типов данных несколько расширен по сравнению с предыдущей версией SQL Server – добавлены типы данных bigint, table и sql_variant.
В итоге в распоряжении пользователей имеется набор из встроенных типов данных:
· binary(n) – двоичные данные фиксированной длины до 8000 байт; для n байтов выделяется n+4 байта памяти, значения задаются с помощью шестнадцатеричных чисел 0x;
· image – двоичные данные длиной до 231–1, место во внешней памяти выделяется в виде цепочки страниц;
· char(n) – строковый тип данных фиксированной длины без поддержки Unicode длиной до 8000 байтов, данные зависят от кодовой страницы; если для столбца не задана опция NULL, то строка при необходимости будет дополняться справа пробелами; если эта опция задана, то дополнение пробелами будет иметь место при условии ANSI_PADDING=ON, в противном случае пробелы добавляться не будут;
· varchar(n) – строковый тип, как и char(n), но не с фиксированной длиной, если ANSI_PADDING=OFF, то будет выполняться удаление конечных пробелов, если ANSI_PADDING=ON, то удаление пробелов производиться не будет;
· nchar(n) — строковый тип, как и char(n), но с поддержкой Unicode, поэтому максимальное количество символов составляет 4000, в этом случае для строковых констант надо задавать впереди букву N (например, N’ABC’);
· nvarchar(n) – строковый тип, как varchar(n), но с поддержкой Unicode;
· text – строковый тип без поддержки Unicode длиной до 2 Гбайт; память выделяется страницами по 8 Кбайт, связываемыми в цепочку;
· ntext – строковый тип как и text, но с поддержкой Unicode, поэтому длина строки не более 1 Гбайта;
· int – целый тип длиной в 4 байта и с диапазоном от –231 до 231-1;
· smalling – целый тип длиной в 2 байта с диапазоном от –215 до 215-1;
· tinyint – целый тип длиной в 1 байт и диапазоном от 0 до 255;
· bigint – целый тип длиной в 8 байт и с диапазоном от-263 до 263-1;
· decimal[(p[,s])] – десятичный двоично-кодированный тип с p десятичными разрядами, из которых s – дробных; максимальное значение p достигает 38, поэтому диапазон значений составляет от –(1038-1) до 1038-1;
· numeric[(p[,s])] – тип, аналогичныйтипуdecimal[(p[,s])];
· float[(n)] – плавающий (приблизительный) тип длиной в 4 байта и с диапазоном от –1.79x10308 до 1.79x10308; значение n определяет количество бит для хранения мантиссы и может принимать значения от 1 до 53;
· real – плавающий тип, являющийся аналогом float(240);
· datetime – тип данных для хранения даты (4 первых байта) и времени (4 последних байта) в диапазоне от 1.1.1753 и до 31.12.9999 года, дата хранится в виде смещения относительно базовой даты 1.1.1753, а время является количеством миллисекунд после полуночи;
· smalldatetime – тип данных для хранения даты (первых 2 байта) и времени (последние 2 байта) в диапазоне от 1.1.1900г. до 6.6.2079г., время задается с точностью до минуты;
· money – тип данных для хранения больших денежных величин с точностью до 4 знаков после запятой в диапазоне от –922 337 203 685 477.5808 до +922 337 203 685 477.5807, для хранения данных отводится 8 байт;
· smallmoney – тип данных для хранения нормальных денежных величин с точностью до 4 знаков после запятой в диапазоне от –214 748.3648 до 214 748.3647, для хранения данных отводится 4 байта;
· bit – битовый (логический) тип со значениями 0 и 1; для хранения выделяется 1 разряд байта памяти;
· timestamp – тип данных временный штамп для учета числа изменений данных в записи (версий строки row version), значение timestamp уникально в пределах базы данных и позволяет идентифицировать конкретное значение записи;
· uniqueidentifier – тип данных для хранения глобальных уникальных идентофикаторов длиной в 16 байт, генерируемых функций NEWID и используемых для идентификации строк (записей), при генерации используется номер сетевой карты компьютера и текущее время;
· sysname – тип данных для хранения имен объектов базы данных; аналог
nvarchar (128);
· sql_variant – вариантный тип данных для хранения данных любого типа, кроме text, ntext, image, timestamp;
· table – тип таблицы для временного хранения наборов данных с использованием переменных.
На основе некоторых из базовых типов данных могут быть созданы новые типы данных, называемые пользовательскими (user-defined). Примером такого типа данных может служить тип sysname (основанный на nvarchar(l28)), активно применяемый в системных таблицах для хранения имен объектов.
Типы данных SQL Server 2000 можно разбить на следующие группы:
· целочисленные(Integers) – bigint, int, smallint иtinyint;
· нецелочисленные(Decimal) – decimal, numeric, float иreal;
· денежные(Money) – money иsmallmoney;
· датаивремя(Date and Time) – datetime иsmalldatetime;
· двоичные(Binary) – binary, varbinary иimage;
· строковые(String) – char, varchar, nchar иnvarchar;
· текстовые(Text) – text иntext;
· специальные(Specials) – timestamp, uniqueidentifier, bit, cursor, table иsql variant.
3.4 Создание и удаление баз данных, таблиц и представлений
3.4.1 Создание и удаление баз данных
Любая пользовательская база данных может быть создана командой CREATE DATABASE. Для создания базы данных и для ее обслуживания нужно иметь соответствующие права. По умолчанию такими правами обладают члены фиксированных ролей сервера sysadmin и dbcreator. При необходимости такие права можно предоставить и другим пользователям. Лицо создающее базу данных, автоматически становится ее владельцем. Имя базы данных должно точно отражать ее назначение и создаваться по правилам построения системных идентификаторов. Длина имени не более 128 символов. Для команды CREATE DATABASE запись синтаксиса на этом метаязыке будет выглядеть следующим образом:
CREATE DATABASE database_name
[ON
[ [,…n]]
[ [,…n]]
]
[LOG ON { [,…n]}]
[COLLATE collation_name]
[FOR LOAD| FOR ATTACH]
:: =
[PRIMARY]
( [NAME=Logial_file_name,]
FILENAME=’os_file_name’
[, SIZE=size]
[, MAXSIZE={MAX_SIZE|UNLIMITED}]
[, FILEGROWTH=growth_increment]) [,…n]
:: =
FILEGROUP filegroup_ name [,…n]
Эта команда определяет новую базу данных и файлы для хранения данных или подключает ранее созданную базу данных, используя ее файлы.
Из определения синтаксиса команды CREATE DATABASE следует:
· для создания базы данных в ряде случаев достаточно задать лишь ее имя;
· имеется возможность задавать полные пути и имена файлов, как для данных, так и для журнала транзакций (logon);
· явно указывать первичный файл, который содержит необходимые сведения об остальных файлах;
· можно использовать группы файлов для ускорения операций ввода – вывода.
Большинство действий по изменению конфигурации базы данных выполняется с помощью команды ALTER DATABASE. Для уменьшения размера базы данных можно также использовать команды DBCC SHRINKDATABASE, DBCC SHRINKFILE. На логическом уровне изменяются такие параметры, как выполнение автоматического усечения журнала транзакций, автоматическое создание и обновление статистики, возможность выполнения вложенных триггеров и т.п. – всего 22 параметра. Изменять эти параметры можно командой ALTER DATABASE с параметром SET.
продолжение
--PAGE_BREAK--
3.4.2 Создание и удаление таблиц
Пользовательская таблица создается командой Transact-SQL CREATE TABLE. При этом необходимо задать имя таблицы, перечислить имена столбцов, задать тип данных для каждого столбца, упорядоченность символов для сортировки символьных данных, значения по умолчанию, а также ограничения на столбцы или таблицу в целом.
Командой DELETE TABLE можно удалить любую таблицу. Но прежде, чем это сделать, необходимо удалить все объекты базы данных, которые ссылаются на данную таблицу, либо изменить их таким образом, чтобы они не ссылались на удаляемую таблицу.
Чтобы получить информацию о таблице, необходимо выполнить следующую хранимую процедуру: sp_help имя таблицы. После исполнения этой команды на экране появляется целый ряд информационных таблиц: таблица с общей информацией, таблица со свойствами колонок, таблица с ограничением IDENTITY, таблица с информацией о размещении на файлах, таблица с информацией об индексах, таблица с данными об ограничениях, таблица с информацией о ссылающихся таблицах.
3.4.3 Создание представлений
Представление (View) для пользователей баз данных выглядит как таблица, но при этом оно не содержит данных, а лишь представляет данные, расположенные в одной или нескольких таблицах. Подобно реальным таблицам представления содержат именованные столбцы и строки с данными, которые они динамически выбирают из таблиц и предлагают эти данные пользователю для просмотра. Представления часто применяются для ограничения доступа к конфиденциальным данным в таблицах баз данных. Когда в представление не включается столбец исходной таблицы, то считают, что на таблицу наложен вертикальный фильтр. Если в SQL – запросе установлено одно или несколько условий для выборки строк, то считают, что на таблицу наложен горизонтальный фильтр.
Представление может выбирать данные из других представлений, которые, в свою очередь, могут также основываться на представлениях или таблицах. Вложенность представлений не должна превышать 32. Представления можно создавать, используя базы данных одного сервера (текущего). Максимальное количество столбцов в представлении равно 1024. Представление не может ссылаться на временные таблицы. Кроме того, нельзя создавать временное представление.
Для представления нельзя определить ограничения целостности, триггеры, правила, или умолчания, а также создать обычный или полнотекстовый индекс. В основном представления используются для выборки данных. Однако с помощью представлений можно выполнять и изменение данных в таблицах, на основе которых построено представление, при этом требуется соблюдение ряда правил:
· представление должно содержать, как минимум, одну таблицу в параметре FROM команды SELECT;
· не разрешается использование функций агрегирования и др.
Как и для таблиц, для представлений можно определить следующие права доступа:
· SELECT – просмотр данных;
· INSERT – добавление данных через представления;
· UPDATE – изменение данных в исходных таблицах;
· DELETE –удаление данных в исходных таблицах.
Чтобы иметь возможность создавать представления, надо обладать правами владельца баз данных и иметь соответствующие разрешения для любых таблиц или представлений, упомянутых в запросе на создание этого представления. Для создания представления используется следующая команда Transact-SQL:
CREATE VIEW [Имя базы данных.] [имя владельца.]
Имя представления
[(Имя колонки [,… n])]
[WITH{ENCRYPITION\SHEMABINDING\
VIEW_METADATA}
AS КомандаSELECT
[WITH CHECK OPTION]
Если в команде не заданы имена колонок представления, то они определяются по именам выбираемых колонок в команде SELECT. Параметр ENCRYPTION скрывает код создания этого представления, а параметр SHEMABINDING обеспечивает контроль структуры исходных объектов, к которым обращается оператор SELECT. Опция WITH CHEC OPTION не позволяет изменять строки таким образом, чтобы они исчезли при отборе командой SELECT.
Наиболее полная информация по созданию и удалению баз данных приводится в [1, 3, 5, 6, 9]
3.5 Создание и управление индексами
Создание индекса командами языка Transact – SQL производится следующим
образом:
· автоматически при создании первичного ключа, когда создается кластерный индекс (если не указан параметр NONCLUSTERED);
· автоматически при реализации ограничения целостности UNIQUE, когда создается не кластерный индекс;
· автоматически при создании таблицы, когда для столбца указываются параметры CLUSTERED или NONCLUSTERED;
· с помощью специальной команды CREATE INDEX.
Как только индексы созданы для таблицы, сервер обеспечивает их эффективное автоматическое использование при поиске запрашиваемых или модифицируемых строк. Пользователю не предоставляется никаких средств для указаний серверу, какие индексы и каким способом использовать при выполнении того или иного запроса.
Формат команды для явного создания индекса следующий:
CREATE [UNIQVE] [CLUSTERED\NONCLUSTERED] INDEX
Имяиндекса
ON {Имя индекса\Имя представления}
(column[ASC\DESC] [,…n])
[WITH [PAD_INDEX]
[[,] FILLFACTOR = Факторзаполнения]
[[,] IGNOR_DUP_KEY]
[[,] DROP_EXISTING]
[[,] STATISTICS_NORECOMPUTE]
[[,] SORT_IN_TEMP_DB]
]
[ON Имя группы файлов]
Если автоматическое создание кластерного индекса не предполагается, то перед созданием не кластерного индекса надо создать кластерный, так как некластерный индекс всегда ссылается на кластерный. Можно создать 249 некластерных индексов с использованием до 16 столбцов в каждом индекс, при этом общая длина индекса не должна превышать 900 байтов. Столбцы с типами данных text, ntext или image в индексах не допускаются. Порядок столбцов при определении ключа очень важен. Желательно их указывать в порядке возрастания длины данных. Параметры ASC и DESC определяют метод сортировки ключевых элементов – соответственно по возрастанию или по убыванию.
Параметр PAD_INDEX обеспечивает резервирование на каждой странице индекса места для вставки новых записей и используется вместе с параметром FILLFACTOR.
Параметр IGNORE_DUP_KEY не приводит к отказу транзакции при добавлении дублирующих строк, при этом сами дублирующие строки игнорируются, и сервером выдается сообщение об ошибке. Остальные параметры команды используются редко. Созданный тем или иным способом индекс, можно переименовать с помощью системной хранимой процедуры sp_rename, можно его удалить командой DROP INDEX или перестроить для упорядочивания свободного места на индексных страницах, используя команды DROP INDEX и CREATE INDEX или команду DBCC DBREINDEX. Для получения информации об индексах используется системная хранимая процедура:
sp_helpindex [@objname] ‘name’, где name – имя рассматриваемой таблицы текущей базы данных.
Для просмотра индивидуальных свойств конкретного индекса следует применять команду:
INDEXPROPERTY(table_ID, index, property), в которой table_ID = OBJECT_ID (имя таблицы) – идентификационный номер таблицы, index – имя индекса, а property – рассматриваемое свойство: Index Depth (глубина индекса), Is Clustered (кластерный), Is Unique (уникальный) и др.
Для сбора и анализа статических данных при использовании индексов используются следующие команды и процедуры: CREATE STATISTICS, UPDATE STATISTICS, sp_autostats, sp_statisticsи др.
3.6 Вставка, удаление и изменение данных
Изначально целью любой системы управления базами данных является предоставление пользователям удобных и эффективных механизмов управления данными. Любая СУБД предоставляет пользователям инструменты для ввода, изменения, удаления и выборки данных. Остальные возможности, такие, как репликация, резервное копирование, автоматическое администрирование, перенос данных и другие, являются лишь дополнительными компонентами, обеспечивающими более эффективное решение все тех же задач ввода, изменения, удаления и выборки данных.
SQL Server 2000 предлагает несколько различных механизмов управления данными. Например, вставка данных может выполняться не только средствами Transact-SQL, но и с помощью утилиты bср.ехе или служб трансформации данных (DTS, Data Transformation Services).
Для добавления данных в языке Transact-SQL используются команды INSERT и SELECT INTO, для изменения данных – команда UPDATE и для удаления строкиз таблиц – команда DELETE.
Команда INSERT позволяет вставить в таблицу одну или несколько строк. Упрощенный синтаксис этой команды таков:
INSERT [INTO] имя модифицируемой таблицы
[WITH (уровень блокировки запроса)]
{[(список колонок модифицируемой таблицы)]
{VALUES (список значений новой строки)\
команда SELECT}}\
DEFAULT VALUES
Если необходимо явно вставлять значения в колонки – счетчики, имеющие свойство IDENTITY, то для модифицируемой таблицы надо выполнить команду:
SET IDENTITY_INSERT имямодифицируемойтаблицыON
Если список столбцов не задан, то сервер будет вставлять данные последовательно во все столбцы, начиная с первого. Для каждого столбца должен быть указан аргумент, имеющий соответствующий тип. Аргументами могут быть константы, выражения соответствующего типа, значение NULL и значение по умолчанию DEFAULT. В списке столбцов можно не указывать столбцы со свойством IDENTITY, столбцы, допускающие значение NULL и столбцы типа timestamp.
Если в команде задан источник данных DEFAULT VALUES, то строка будет содержать только значения по умолчанию или значения NULL.
Если в данной команде в место имени таблицы задать имя представления, то новая строка будет вставлена в представление, а точнее, в ту исходную таблицу, на основе которой было создано представление, при этом изменение данных через представление должно быть разрешено специальной командой. Для представления невозможно задать уровень блокировки.
Если необходимо быстро создать таблицу, имеющую такую структуру, чтобы в ней можно было сохранить результат выполнения запроса, то следует использовать следующую команду:
SELECT список выбираемых колонок исходных таблиц
INTO имя автоматически создаваемой таблицы
FROM список исходных таблиц
[условия выбора значений из таблиц]
Имена колонок новой таблицы либо совпадают с именами колонок исходных таблиц, либо задаются после ключевого слова AS, следующего за именем колонки исходной таблицы. Имя создаваемой таблицы должно быть уникальным в пределах базы данных. Чаще всего эта команда используется для создания временных локальных (#) и глобальных (##) таблиц.
Для любой базы данных использование команды SELECT… INTO запрещено. Для установки разрешения на ее использование необходимо выполнить команду:
EXES sp_dboption ‘имябазыданных’, ‘select into/bulkcopy’, ‘on’
Изменение данных в таблицах или задание значений переменным производится командой UPDATE:
UPDATE имя таблицы или представления WITH блокировка
SET имя колонки или переменной = выражение…
FROM имена исходных таблиц
WHERE условия поиска
Удаление данных из таблиц производится командой DELETE:
DELETE FROM имя таблицы или представления
или
DELETE FROM имя таблицы
WHERE условие поиска OPTION (уровни блокировки).
--PAGE_BREAK--