SELECT * INTO table_copy FROM original 4 страница

· добавление трех новых столбцов в таблицу (опция ADD), допускающих NULL и не имеющих значений,

· удаление одного из добавленных выше столбцов из таблицы (DROP) (по Вашему усмотрению),

· изменение (типа) для одного из добавленных столбцов (опция ALTER),

· добавление одного нового столбца в таблицу (опция ADD) с ограничением UNIQUE,

· добавление одного нового столбца в таблицу (опция ADD) с ограничением DEFAULT. Столбец выбираете сами,

· добавление двух-трех новых столбцов с ограничениями по Вашему желанию (опция ADD),

· добавление нового столбца, допускающего NULL, но имеющего значение по умолчанию (ADD),

· удаление одного из добавленных ограничений (например, UNIQUE) (опция DROP),

· добавление и удаление первичного ключа по выбранным столбцам (ADD):

· по одному столбцу,

o некластеризованного индекса,

o кластеризованного индекса,

o разберитесь, в чем разница результатов, получаемых при использовании кластеризованных и некластеризованных индексов,

· по двум столбцам,

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

4. Предъявить результаты преподавателю в отдельном файле. Объяснить результаты.

 

 

Контрольные вопросы

 

1. С какой целью используется команда ALTER TABLE?

2. Опишите формат команды ALTER TABLE. Приведите пример использования команды.

3. Как добавить ограничение для существующего поля?

4. Как убрать ограничения для существующего поля?

5. Чем отличается команда ALTER TABLE от команды UPDATE?

6. Что означает опция ADD? Для каких действий она предназначена?

7. Назовите возможные опции команды ADD.

8. Как добавить в таблицу новый столбец? Удалить столбец?

9. Как изменить тип столбца?

10. Как добавить столбец с ограничениями?

11. Как отключить, а затем снова добавить ограничение?


 

 

СРЕДСТВА ЗАЩИТЫ СЕТЕВОГО ДОСТУПА. ЗНАКОМСТВО С ТАБЛИЦАМИ РАЗРЕШЕНИЙ. USER, DB, HOST, TABLES_PRIV, COLUMNS_PRIV, ВИДЫ ПРИВИЛЕГИЙ. ДЕЛЕГИРОВАНИЕ ПОЛНОМОЧИЙ (КОМАНДА GRANT)

 

Порядок выполнения

 

При выполнении данной работы по умолчанию предполагается, что обучаемые имеют порядковые номера, определенные преподавателем (или физическим размещением компьютеров в аудитории). Считается, что сосед слева имеет меньший предыдущий номер, а сосед справа – следующий больший номер. Первый и последний номера также являются соседями. Иной порядок может быть установлен преподавателем.

1) Изучить структуры таблиц USER, DB, HOST, TABLES_PRIV, COLUMNS_PRIV базы данных MySQL. Структуры таблиц приведены в файле Priveleg в папке sql (и в приложении 4). Проанализировать характер информации в таблицах.

2) Просмотреть списка привилегий (SHOW GRANTS) для пользователя.

3) Создать в своей базе данных таблицу dostup_r (Владелец таблицы, Номер машины справа, Фамилия пользователя справа, Имя пользователя справа). Заполнить таблицу одной записью, указав в ней свою фамилию, а также данные соседа справа (по кругу).

4) Передать соседу справа привилегии SELECT, INSERT.

5) Убедиться в получении привилегий от левого соседа, просмотрев список привилегий (SHOW GRANTS).

6) Дополнить таблицу dostup_r левого соседа двумя записями, заполнив два правых поля его таблицы. Просмотреть эту таблицу с выводом результатов в выводной файл.

7) Просмотреть свою таблицу dostup_r после добавления в нее двух записей соседом справа. Отменить привилегии для соседа справа.

8) Удалить таблицу dostup_r.

9) Создать в своей базе данных таблицу dostup_l (Владелец таблицы, Номер машины слева, Фамилия пользователя слева, Имя пользователя слева). Заполнить таблицу одной записью, указав в ней свою фамилию, а также данные соседа слева (по кругу).

10) Передать соседу слева (или по указанию преподавателя) привилегии SELECT, INSERT.

11) Убедиться в получении привилегий от правого соседа, просмотрев список привилегий (SHOW GRANTS).

12) Дополнить таблицу dostup_l правого соседа двумя записями, заполнив два правых поля его таблицы. Просмотреть эту таблицу с выводом результатов в выводной файл.

13) Просмотреть свою таблицу dostup_l после добавления в нее двух записей соседом слева. Отменить привилегии для соседа слева.

14) Удалить таблицу dostup_l.


 

Список использованной литературы

 

1. Методические указания по выполнению контрольных работ по дисциплине Базы данных и управление ими. ‑ Екатеринбург: 2002. – 21 с.

2. Аткинсон Л. MySQL. Библиотека профессионала. Пер. с англ. – М.: Издательский дом "Вильямс", 2002. – 624 с.; ил.

3. Дюбуа П. MySQL: ‑ М.: Издательский дом "Вильямс", 2001.‑ 816 с.: ил.

4. Астахова И.Ф. SQL в примерах и задачах: Учеб. Пособие / И.Ф. Астахова, А.П. Толстобров, В.М. Мельников. – Мн.: Новое знание, 2002. – 176 с.


 

Приложение 1

Список функций SQL для MSSQL

 

Ниже приведены формат и содержание некоторых функций MSSQL. Полный набор функций существенно шире. Для их изучения необходимо обратиться к руководству пользователя или к специальной литературе.

 

 

CEILING(x) ‑ возвращает ближайшее целое число, большее или равное значению аргумента х (округляет вверх).

STR1+STR2+… ‑ возвращает строку, созданную путем объединения аргументов.

GETDATE(), SYSDATETIME() – возвращает текущее системное время.

DAY(date) ‑ возвращает число из указанной даты.

MONTH(date) ‑ возвращает значение месяца из указанной даты.

YEAR(date) ‑ возвращает значение года из указанной даты.

DATEADD(datepart, number, date) ‑ возвращает новую дату после добавления number интервалов времени типа datepart к значению даты date (возможные значения параметра datepart – YEAR, QUARTER, MONTH, WEEK, DAY, HOUR, MINUTE, SECOND, MILLISECOND…).

DATENAME(datepart, date) ‑ возвращает номер (или наименование) фрагмента даты (квартала, месяца, недели, дня, часа,..) по дате date.

EXP(x) ‑ возвращает значение экспоненциальной функции (ex).

FLOOR(x) ‑ возвращает ближайшее целое число, меньшее или равное значению аргумента х (округляет вниз).

CHARINDEX(str1, str2 [, pos]) ‑ возвращает номер позиции вхождения подстроки str1 в строку str2, начиная с позиции pos подстроки str2.

LEFT(str, len)/RIGHT(str, len) ‑ возвращает len левых/правых крайних символов из строки str.

LEN(str) – возвращает количество символов в строке str.

LOG(x) ‑ возвращает значение натурального логарифма аргумента х.

LOG10(x) ‑ возвращает значение десятичного логарифма аргумента х.

LTRIM(str) ‑ возврашает подстроку после удаления из нее начальных пробелов.

RTRIM(str) – возвращает подстроку после удаления из нее конечных пробелов.

X%Y ‑ возвращает остаток от деления Х на У.

REPLACE(str, str1, str2) ‑ возвращает строку str после замены в ней всех вхождений подстроки str1 подстрокой str2.

ROUND(x[,d]) ‑ возвращает значение аргумента х, округленное до d десятичных разрядов. Округление выполняется до d знаков после десятичной точки, если d>0 и до d знаков до десятичной точки, если d<0.

SIN(x) ‑ возвращает тригонометрический синус аргумента х. Аргумент х измеряется в радианах.

SPACE(n) ‑ возвращает строку из n пробелов.

SQRT(x) ‑ возвращает положительный квадратный корень из неотрицательного числа х.

 


Приложение 2

Типы данных SQL Server

Перед созданием первой таблицы необходимо ознакомиться с типами данных, которые могут храниться в таблице в SQL Server. Определение таблицы может быть выполнено как в SQL Server Management Studio, так и с помощью Query Editor (Редактор запросов). Первую таблицу мы создадим с помощью SQL Server Management Studio. Это будет таблица Student для хранения подробных данных о каждом студенте. Но прежде рассмотрим различные типы данных, которые можно хранить в таблице.

Типы данных в таблицах

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

Некоторые типы данных покажутся вам знакомыми, но учтите, что каждый тип данных имеет специфику использования. Например, не применяйте типы данных с префиксом "n" без настоятельной необходимости хранить символы в коде Unicode. Символы в Unicode, которые вынужден будет хранить SQL Server, займут больше места, чем стандартные символы из-за потенциально широкого набора символов. А также для чисел с максимальным значением 00 в столбце не следует выбирать тип данных, позволяющий хранить боль­шие числа. Это неэкономное расходование пространства на диске.

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

Char

Тип данных char имеет фиксированную длину. Если определить для столбца длину 20 символов, то храниться будут 20 символов. Если ввести меньше символов, чем определено, то оставшаяся часть будет дополнена пробелами справа. Следовательно, если столбец был определен как char (10), то "ааа" будет храниться как "ааа ". Этот тип данных следует использовать в случае, если данные в столбце должны иметь фиксированную длину, например, идентификаторы клиентов или идентификаторы банковских счетов.

Nchar

Тип данных nchar аналогичен типу char, но символы хранятся в формате Unicode, а не ANSI. Формат Unicode имеет более широкий набор символов, чем ANSI. Набор символов ANSI содержит только 256 символов, а набор символов Unicode содержит до 65 536 различных символов. Типы данных Unicode занимают в SQL Server больше памяти; фактически SQL Server внутри выделяет в два раза больше места, поэтому при отсутствии острой необходимости хранить в базе этот тип лучше придерживаться ANSI.

Varchar

Тип данных varchar содержит алфавитно-цифровые данные точно так же, как char. Отличие в том, что каждая строка может содержать различное количество символов в пределах указанной максимальной длины. Если стол определен, как varchar(50), то данные в столбце могут иметь длину 50 символов. Но если сохранить строку из 3 символов, то будет использовано пространство только для 3 символов. Это определение подходит для случаев, когда данные не имеют определенной длины— например, фамилии люд или описания, в которых длина сохраняемого элемента не имеет значения. Максимальный размер столбца varchar составляет 8000 символов. Но если. указать столбец без длины (т. е. varchar () ), то по умолчанию будет выбрана длина 1.

Можно также использовать другую настройку, превышающую лимит е 8000 символов, путем определения типа с модификатором max. Такая настройка используется, когда в основном данные имеют длину меньше 8000 символов, но требуется учесть отдельные случаи, при которых данные могут превышать этот лимит. Если есть основания полагать, что лимит в 8000 символов будет превышен, по крайней мере, в одной строке, используйте это* вариант. Кроме того, можно использовать модификатор max для больших блоков текста, т. к. он, в конечном счете, заменяет тип данных text.

Nvarchar

Тип данных nvarchar определяется аналогично типу varchar, но из-за использования формата Unicode для хранения данных потребуется в два раза больше пространства.

Text

Тип данных text хранит данные с длиной более 8000 символов. Но использовать этот тип данных не рекомендуется.

Ntext

Тип данных ntext является Unicode-версией типа данных text и тоже не должен использоваться.

 

Image

Тип данных image очень похож на тип данных text, за исключением того, что он предназначен для любого типа двоичных данных, включая изображения, но в него могут также входить фильмы, музыка и т. п.

Int

Тип данных int или integer используется для хранения числовых значений без десятичной точки (целые числа). Для значений хранящихся в нем чисел существует ограничение: тип int предназначен для хранения чисел в диапазоне от -2 147 483 648 до 2 147 483 647.

Bigint

Тип данных bigint или big integer очень похож на тип int, но хранящиеся в нем числа могут принимать значения в диапазоне от
-9 223 372 036 854 775 808 до 9 223 372 036 854 775 807.

 

Small int

Тип данных smailint или small integer содержит небольшие целые числа в диапазоне от -32 768 до 32 767. Будьте внимательны при определении столбцов с этим типом данных, удостоверьтесь, что возможность превышения этих пределов действительно отсутствует. При создании столбца с этим типом данных существует большая вероятность, что придется возвращаться назад и менять тип данных, поэтому в сомнительных случаях выбирайте тип int.

Tiny int

Тип данных tinyint или tiny integer предназначен для хранения еще меньших чисел, чем в smallint, и может содержать числа от 0 до 255.

Decimal/numeric

Оба типа данных, decimal и numeric, хранят одинаковые по точности и диапазону данные. Диапазон значений от -1038 + 1 до 10" - 1. Это очень большие диапазоны: от -0.00000000000000000000000000000000000001 до
10 000 000 000 000 000 000 000 000 000. Но будьте аккуратны, нельзя хранить по 38 цифр слева и справа от десятичной точки. Хранить можно только 38 цифр и меньше. Поэтому, чем большая точность требуется справа от десятичной точки, тем меньше цифр остается слева для представления всего числа.

Float

Тип данных float используется для чисел с плавающей десятичной точкой. Типы данных float содержат очень большие числа в диапазоне от -1.79x10308 до 1.79x10308 . В отношении этого типа данных следует сделать предупреждение: значения не могут отображаться с точностью 100%, т. к. они могут быть аппроксимированы. Аппроксимация возникает из-за физического хранения числа в виде двоичного кода. Проблемы появляются, если число заканчивается на .3, .6 или .7. Сохраняемое значение аппроксимируется или округляется, т. к. некоторые значения не могут быть сохранены точно из-за того, что имеют больше десятичных разрядов, чем может быть обеспечено. Общеизвестным примером является число пи.

Real

Тип данных real очень похож на тип float, за исключением того, что real может хранить числа только в диапазоне от -З.40х1038 до 3.40x1038. Этот тип данных также содержит аппроксимированные значения.

Money

Тип данных money служит для хранения числовых значений с точностью до четырех десятичных разрядов после точки. Если требуется сохранить более четырех десятичных разрядов, следует воспользоваться другим типом данных, например, типом decimal. В действительности этот тип данных не хранит символ денежной единицы для обозначения монетарного типа, поэтому не следует использовать его для значений различных валют, но столбец данных этого типа можно скомбинировать со вторым столбцом, определяющим тип денежной единицы. Тип данных money имеет диапазон значений от -922 337 203 685 477.5808 до 922 337 203 685 477.5807. Если необходимо сохранить символ денежной единицы валюты ($ или USD для долларов, £ или GBP для британских фунтов стерлингов и т. д.), то придется сохранить его отдельно, т. к. тип данных money не содержит символ денежной единицы. Столбец, определенный как money, будет хранить деньги с точность до 1/10000 (одной десятитысячной) от десятичной единицы, что немного расточительно, если вы храните значения в турецких лирах.

Smallmoney

Этот тип данных подобен типу данных money за исключением диапазона значений: от-214 748.3648 до 214 748.3647.

Date

Новый тип данных date был создан исключительно для хранения дат от 1 января 1 г. н. э. до 31 декабря 9999 г. в формате YYYY-MM-DD. До этой версии SQL Server невозможно было хранить дату и время как два отдельных типа данных без собственноручной реализации этой возможности с помощью NET. Следовательно, в прошлом приходилось хранить излишние данные. Этот тип позволяет уменьшить путаницу и уточнить данные, содержащиеся в таком столбце. Прежняя ситуация была нелогичной. Раньше вы не знали, какие именно данные хранятся в столбце, определенном с помощью предшественника этого типа данных — datetime.

Datetime

Тип данных datetime может содержать любую дату от 1 января 1753 г. до 31 декабря 9999 г. Но в нем хранится не только дата, но и время в формате YYYY-MM-DD hh:mm:ss. Если указать в качестве значения в столбце, определенном как datetime, только дату, то будет также сохранено время по умолчанию 12:00:00.

Datetime2

Подобно типу datetime тип данных datetime2 используется для хранения даты и времени. Отличие состоит в том, что datetime2 может содержать для большей точности дробные значения секунд. В этом типе данных также могут храниться даты от 1 января 1 г. н.э. до 31 декабря 9999г. в формате YYYY-MM-DD hh:mm:ss[.nnnnnnn].

Smalldatetime

Тип данных smalldatetime очень похож на тип datetime, за исключением диапазона дат: от 1 января 1900 г. до 6 июня 2079 г. Причина странной даты, обозначающей конец диапазона, состоит в двоичном представлении это типа в памяти.

Datetimeoffset

Если требуется хранить дату и время для определенного часового пояса, то следует определить столбец с типом данных datetimeoffset. Дата и время записываются в этом типе данных в UTC (Coordinated Universal Time, мировое координированное время), а затем определяется количество времени, которое необходимо добавить или отнять в зависимости от часового пояса, с которым должно быть связано значение. Например, значение для 6 часов вечера 24 марта 2008 г. по стандартному восточному времени США будет вы­глядеть как 2008-03-24 13:00:00'+05:00, т. к. время в Нью-Йорке на пять часов опережает UTC. Формат для этого типа данных: YYYY-MM-DD hh:mm:ss[.nnnnnnn] [+|-]hh:mm.

Time

Если необходимо хранить время в 24-часовом виде, определите столбец с типом данных time в формате: hh:mm:ss[.nnnnnnn]. Тип данных time так же, как и тип данных date, был введен для предоставления столбцов с правиль­ным типом данных для хранения времени. Как видно из формата, в типе дан­ных time могут храниться значения с точностью до 100 наносекунд, что спе­циально предназначается для приложений, требующих большей точности, чем может предоставить тип данных datetime.

Hierarchyid

До SQL Server 2008 создание иерархии данных могло показаться сложным и, как правило, включало самосоединение данных (self-join). Теперь же можно определить столбец данных типа hierarchyid, который позволяет указать, какое место данная строка занимает в общей иерархии строк. Это составной тип данных на основе CLR (Common Language Runtime, общая система поддержки времени выполнения), который в рамках данного лабораторного практикума не рассматривается.

Geometry

Тип данных geometry — это планарный тип данных на основе CLR, который позволяет сохранять географическую информацию "на плоскости". Данные в этом типе данных могут принадлежать к одному из 11 различных геометрических измерений, включая точку, кривую и многоугольник. В каждом определенном столбце может храниться только один тип измерений, и часть хранимых данных будет определяться этим типом данных.

Geography

Тип данных geography на основе CLR хранит данные "на шаре". Поэтому данные хранятся в виде градусов географической широты и долготы, но здесь используются те же самые типы измерений, что и в типе данных geometry.

Rowversion

Тип данных rowversion необычен, т. к. он используется для столбца, значения в который заносятся не вами. Тип данных rowversion содержит сгенерированное SQL Server двоичное число, уникальное для каждой строки в базе данных. Каждый раз при модификации записи столбец с этим типом данных в записи будет модифицироваться для отражения времени модификации. Следовательно, столбцы с этим типом данных можно использовать в расширенных методах, где требуется сохранять историю изменений. Тип данных rowversion раньше назывался timestamp, и, возможно, вы уже встречали тип данных timestamp в базах данных, созданных в старых версиях SQL Server.

Uniqueiden tifier

Тип данных uniqueidentifier содержит глобально уникальный идентифика­тор (GUID, Globally Unique Identifier). Он подобен типу данных timestamp в том, что этот идентификатор создается командой SQL Server при вставке или изменении записи. Идентификатор создается на основе информации сетевой платы машины, идентификатора процессора, а также даты и времени. Если сетевая плата отсутствует, то uniqueidentifier генерируется на основе информации машины. Эти идентификаторы должны быть уникальны в мировом масштабе.

Binary

Данные в типе данных binary хранятся в двоичном формате. Этот тип данных в основном используется для хранения флажков или комбинаций флажков. Предположим, например, что требуется хранить флажки, относящиеся к клиенту. Необходимо знать, активен ли клиент (значение равно I), размещал ли он заказы в последний месяц (значение равно 2), размещал ли он последний заказ более чем на 1000 $ (значение равно 4) или соответствует ли он критерию лояльности (значение равно 8), Такая информация могла бы занять в базе данных четыре столбца. Но в двоичной системе значение 13 соответст­вовало бы сумме 1 + 4 + 8 и означало бы, что клиент активен, его последний заказ был более чем на 1000 $, и что клиент удовлетворяет критерию лояльности. При определении в двоичном формате столбца установленной длины все данные будут иметь эту длину.

Varbinary

Тип данных varbinary очень похож на тип данных binary за исключением того, что физический размер данных в столбце по строкам будет меняться в зависимости от хранимого значения. В varbinary (max) могут содержаться значения длиной более 8000 символов, используемые для хранения таких данных, как изображения.

Bit

Тип данных bit содержит значения 0 или I. Как правило, bit служит для определения значений true (I) или false (0).

Xml

Данные XML могут храниться в собственном специальном типе данных, а не в столбце varchar (так). Существуют особые команды запросов для запроса и обработки этих данных. До SQL Server 2005 данные XML почти не использовались из-за отсутствия типа данных, и ранние версии SQL Server имели очень ограниченную функциональность для обработки существующих данных XML.

Программные типы данных

Существуют еще три типа данных, которые могут использоваться в программах. Их мы сейчас и рассмотрим.

Cursor

Данные могут храниться в структуре, называемой cursor, которая постоянно находится в памяти. Этот тип данных подобен таблице, т. к. имеет строки и столбцы данных, но на этом сходство заканчивается. Например, в нем нет индексов. Курсор используется с целью создания набора данных для по­строчной обработки.

Table

Тип данных table имеет сходство как с курсором, так и с таблицей. Он со­держит строки и столбцы данных, но эти данные невозможно индексировать. 3 этом случае обрабатывается один набор данных, как обычная таблица. Типы данных cursor и table будут рассмотрены позже, т. к. они относятся к дополнительной тематике.

Sql_variant

Существует тип данных, который может содержать несколько различных ти­пов данных. Не рекомендуется использовать этот тип данных, т.к. он показывает неуверенность пользователя в своих данных, демонстрирует, что тот не знает, какого типа данные следует ожидать. Думается, что прежде чем помещать данные в тип данных, необходимо узнать, какого типа данные вы получаете. Несмотря на то, что sql_variant программный тип данных, он может также служить типом данных для столбца, и все вышесказанное там тоже применимо. В данной книге этот тип данных далее рассматриваться не будет.

Значения по умолчанию

При добавлении строки в таблицу, в противоположность принуждению раз­работчиков добавлять значения к столбцам, которые мог бы заполнить SQL Server (как например, это делается со столбцом, заполняемым датой и временем добавления строки), имеется возможность помещать в них значения по умолчанию. Значением по умолчанию может быть любое допустимое для указанного типа данных значение.

Генерация значений IDENTITY

При добавлении новой строки к таблице SQL Server может потребоваться присвоение этой строке уникального, но легко опознаваемого идентификационного номера, который используется для связи строки одной таблицы со строкой в другой таблице. В базе данных ApressFinancial будет находиться таблица со списком транзакций, которая должна быть связана с таблицей пользователей. Не стоит пытаться выполнить соединение по значениям, ко­торые не могут гарантировать уникальность соединения (например, по имени и фамилии). Эту возможность предоставляет значение уникального числового идентификатора, при условии, что он используется вместе с уникальным индексом. Если в таблице Customers существует клиент с идентификатором 100 и имеется соединение с таблицей Transaction через этот идентификатор, то можно извлечь все финансовые операции для клиента при внешнем ключе, равном 100. Но это означает, что для ввода нового клиента придется вычис­лять следующий идентификатор с помощью кода T-SQL или с помощью таблицы, которая просто содержит "следующие номера". Не беспокойтесь, для такого случая в определении столбца имеется параметр identity.

При определении столбца с использованием identity вы информируете SQL Server о том, что:

· столбец будет иметь значение, сгенерированное в SQL Server;

· будет определена начальная точка (начальное значение);

· будет задано значение шага приращения, сообщающее SQL Server о том, насколько должен увеличиваться каждый новый идентификатор;

· распределением идентификаторов будет управлять SQL Server.

Как правило, пользователю не приходится вводить значение; SQL Server создает его автоматически. Явные значения можно вводить при помощи инструкции set identity_insert с целью изменения настройки на значение on для конкретной таблицы.

Если бы SQL Server этого не делал, то все эти задачи пришлось бы решать Вам. Поэтому благодаря этой возможности при определении столбца вы с помощью сгенерированного значения создаете эффективную, надежную и уникальную связь одной таблицы с другой, вместо того чтобы полагаться на менее точные критерии выбора.

Приложение 3

 

Как скопировать таблицу в MS SQL?

 

С этой задачей прекрасно справляется простейший запрос:

SELECT * INTO table_copy FROM original

Здесь table_copy создается автоматически при выполнении запроса, а original – исходная таблица, структура или данные из которой копируются. Указав условие WHERE, можно скопировать часть таблицы, которая удовлетворяет поставленным требованиям.

Если данные копировать не нужно, то придется выполнить 2 запроса: