Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Удаление баз данных




Для удаления базы данных используется следующая команда:

DROP DATABASE database_name […..n]

Аргумент database_name задает имя базы данных, которую необходимо удалить. Одной командой можно удалить несколько баз данных, перечислив их через запятую.

Пример 3.

DROP DATABASE Kafedra_1.

2.4. Работа с таблицами

Вся хранящаяся в базе данных пользовательская информация содержится в объектах, называемых таблицами (tables).

Таблицы имеют следующую структуру.

- Столбцы (column). Каждый столбец представляет собой атрибут или совокуп­ность атрибутов объектов, например идентификационные номера служащих, рост, цвет машин и т.п. Часто в отношении столбца используется термин поле с указанием имени, например " в поле Name ".

- Строки (rows). Каждая строка (или запись) представляет собой совокупность атрибутов конкретного объекта, например, в строке может содержаться иден­тификационный номер служащего, размер оклада этого служащего, год его рождения, цвет глаз и т. п. Строки таблиц не именуются.

Некоторые поля в строке могут быть вычисляемыми (computed) – в таких полях указывается не конкретное значение, а выражение (формула), в соответствии с которым генерируется значение для этого поля. Выражение может включать имена других столбцов таблицы, константы, вызовы функций, а также любые операторы. Использование переменных запрещается.

Виды таблиц:

- Системные таблицы. SQL Server хранит данные, определяющие конфигурацию сервера и всех его баз данных, в специальном наборе таблиц, известном как системные таблицы (system tables). Следует разделять данные, относящиеся к серверу, и данные, относящиеся к конкретной базе данных. Первые хранятся в системной базе данных master, тогда как вторые – в соответствующей базе данных.

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

Для изменения данных в системных таблицах необходимо использовать специ­альные системные хранимые процедуры, поставляемые вместе с SQL Server и расположенным в базе данных master. Другой альтернативой является примене­ние приложений, использующих интерфейс SQL-DMO API. Имеющийся набор храни­мых процедур охватывает практически все возможные ситуации управления сер­вером и базами данных, так что необходимость прямого доступа к системным таблицам почти полностью исключена. Кроме того, использование в прикладных приложениях хранимых процедур позволяет гарантировать, что работоспособность программы сохранится даже в случае возможного изменения структуры систем­ных таблиц в следующих версиях SQL Server.

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

В распоряжении пользователей имеются два вида временных таблиц.

- Локальные временные таблицы (local temporary tables). Названия этих таблиц начинаются с одного символа #, например #results. Таким образом, для созда­ния локальной временной таблицы необходимо перед именем таблицы при ее создании указать один символ #. В дальнейшем для ссылки на созданную таб­лицу в ее имени также необходимо указывать символ #.

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

- Глобальные временные, таблицы (global temporary tables). Доступ к временным таблицам этого типа может быть получен из любого соединения, установлен­ного с текущим сервером, и независимо от того, в каком именно из этих соеди­нений была создана глобальная временная таблица. При этом также не важно, какой конкретно пользователь создал эту временную таблицу и в контексте какой базы данных.

Названия глобальных временных таблиц начинаются с символов ##, например ## minutes. Таким образом, чтобы создать глобальную временную таблицу, достаточно в начале ее имени указать символы ##. Однако так как глобальная временная таблица видна из любого соединения, ее имя должно быть уникально в пределах сервера.

Когда сервер встречает имя таблицы, начинающееся с символов # или ##, он обращается к базе данных tempdb для поиска указанной таблицы. При этом игнорируется имя владельца таблицы и имя базы данных. Указание имени сервера при обращении к временной таблице вообще не разрешается. Таким образом, создание временной таблицы возможно только на текущем сервере. При попытке указать имя сервера при создании временной таблицы будет выдано сообщение об ошибке. В остальном же работа с временными таблицами ничем не отличается от работы с обычными таблицами.

В процессе проектирования таблиц принимается решение о том, какие таблицы должны входить в базу данных, какие типы данных будут использованы для по­строения таблиц, какие пользователи получат доступ к каждой из таблиц. В процессе проектирова­ния необходимо ответить на следующие вопросы:

- какие данные, каких типов должны быть включены в таблицы?

- какие столбцы будут составлять каждую из таблиц (если потребуется, то с указанием их размера)? При этом необходимо стремиться хотя бы к третьей нормальной форме. Одновременно с этим требуется выбрать имена для столбцов таблицы. (SQL Server позволяет включать в одну таблицу до 1024 столбцов.)

- какие столбцы могут содержать значения NULL?

- будут ли использованы ограничения целостности или значения по умолчанию и правила для столбцов и если будут, то где?

- необходимо ли индексирование столбцов? Если да, то какие типы индексов, для каких столбцов будут применены?

- какие столбцы будут входить в первичные и внешние ключи?

Типы данных

Одним из свойств столбца является его тип данных. Поскольку каждый столбец представляет один признак объекта, данные в каждом столбце подобны, то есть тип данных значений, хранящихся в одном и том же столбце, одинаков. SQL Server имеет набор встроенных типов данных, называемых системными. Этот набор приведен в табл. 1.

Таблица 1.

Типы данных, используемые в SQL Server 2000

Тип данных Описание
   
bit Один бит. В столбце с этим типом может храниться либо 0, либо 1
binary(n) Двоичные данные фиксированной длины до 8000 байт
varbinary(n) Двоичные данные переменной длины до 8000 байт
Image Двоичные данные длиной до 2 Гбайт. Пространство для хранения данных этого типа отводится страницами, размер которых составляет 8 Кбайт
decimal Используется для хранения дробных чисел с фиксированным количеством знаков до и после десятичной точки
numeric Является аналогом типа данных decimal
float(n) Используется для хранения дробных чисел с приблизительной точностью
real Является аналогом float (24)
int Занимает 4 байта и может хранить целые числа в диапазоне от -231 до 231-1
smallint Небольшое целое. Занимает 2 байта и может хранить целые числа в диапазоне от -215 до 215-1 (от -32 768 до 32 767)
tinyint Маленькое целое. Занимает 1 байт и может хранить целые числа в диапазоне от 0 до 255
bigint Большое целое. Занимаете байт и может хранить целые числа в диапазоне от -263 до 263-1
char(n) Строковый тип данных фиксированной длины без поддержки Unicode длиной до 8000 символов
nchar(n) Строковый тип данных фиксированной длины с поддержкой Unicode длиной до 4000 символов
  Окончание таблицы 1
   
varchar(n) Строковый тип данных переменной длины без поддержки Unicode длиной до 8000 символов
nvarchar(n) Строковый тип данных переменной длины с поддержкой Unicode длиной до 4000 символов
text Строковый тип данных без поддержки Unicode длиной до 2 миллиардов символов. Пространство для хранения данных этого типа отводится страницам, размер которых составляет 8 Кбайт
ntext Строковый тип данных с поддержкой Unicode длиной до 1 миллиарда символов. Пространство для хранения данных этого типа отводится страницам, размер которых составляет 8 Кбайт
datetime Тип данных для хранения даты и времени с высокой точностью в диапазоне от 1 января 1753 года и до 31 декабря 9999 года, занимающий 8 байт
small datetime Тип данных для хранения даты и времени с нормальной точностью в диапазоне с 1 января 1900 года и до 6 июня 2079 года, занимающий 4 байт
money Используется для хранения денежных данных в большом диапазоне. Обеспечивает точность до 4 знаков после десятичной точки и занимает 8 байт
smallmoney Используется для хранения денежных данных в нормальном диапазоне. Обеспечивает точность до 4 знаков после десятичной точки и занимает 4 байта
sql_variant Тип данных, позволяющий хранить данные нескольких типов в одном и том же столбце. Например, при использовании этого типа данных в столбце могут одновременно находиться данные целочисленные, дробные, символьные и др.
sysname Этот тип данных, по сути, является не встроенным, а пользовательским (user-defined data type), создаваемым в системных базах данных автоматически при установке SQL Server 2000. Используется для указания имен объектов.
timestamp Временной штамп. Значения в столбце этого типа изменяются SQL Sewer 2000 автоматически при каждом изменении строки. Для типа данных timestamp также можно использовать псевдоним rowversion
table Этот тип данных предназначен для временного хранения сложных наборов данных. Поддерживается создание переменных типа table. Кроме того, функции пользователя могут возвращать значения типа table, что предоставляет широкие возможности для разработчиков. Однако тип данных table не может использоваться для столбцов таблицы. Он подходит только для переменных Transact-SQL, параметров хранимых процедур и для значений, возвращаемых функциями пользователя
uniqueidentifier Используется для хранения глобальных уникальных идентификаторов (Global Unique Identifier, GUID)
cursor Предназначен для хранения ссылок на курсоры.

Итак, каждый столбец таблицы должен содержать данные, соответствующие типу данных столбца. Например, допускается неявное преобразование типа данных int в тип данных decimal или значений типа данных varchar в значения типа данных char. При необходимости можно использовать функции преобразования типов данных.

Значение NULL

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

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

Создание таблиц

Создание таблицы выполняется при помощи команды CREATE TABLE. Данная команда имеет довольно сложный синтаксис:

CREATE TABLE

[database_name.[ owner ]. | owner. ] table_name

({ <column_definition>

| column_name AS computed_co1umn_expression

I < table_constraint > } [ __n ]

)

[ ON { filegroup | DEFAULT } ]

Рассмотрим последовательно все ее параметры.

- database_name – название базы данных, в которой создается таблица. Если значение этого параметра опускается, то таблица создается в текущей базе данных. Прежде чем пользователь сможет создать таблицу, ему должны быть предоставлены соответствующие права в базе данных.

- owner – с помощью этого параметра указывается имя пользователя, который будет являться владельцем создаваемой таблицы. Этот пользователь уже должен существовать в базе данных, в которой создается таблица.

- table_name – имя создаваемой таблицы. При выборе имени для таблицы необходимо следовать стандартным правилам формирования идентификаторов объектов. Комбинация имени таблицы и ее владельца (owner.tablename) должна быть уникальной в пределах базы данных. Если таблица создается не в текущей базе данных, необходимо включить в описание имени таблицы ссылку на требуемую базу данных. Длина имени таблицы не должно превышать 128 символов. Если в начале имени указываются символы # или ##, то будут созданы соответственно локальная и глобальная временные таблицы. Длина имен временных таблиц, включая символы # и ##, не должна превышать 116 символов.

- column_name – название столбца таблицы. Названия столбцов должны соответствовать правилам для идентификаторов и быть уникальными в пределах таблицы. Параметр column_name может быть опущен для столбцов, имеющих тип данных timestamp. По умолчанию столбцу с таким типом данных присваивается имя timestamp.

- computed_column_expression – выражение, задающее значение для вычисляемого столбца. Вычисляемые столбцы являются виртуальными столбцами, то есть физически такие столбцы в таблице не хранятся. Они вычисляются с использованием значений столбцов той же самой таблицы

- ON {filegroup | DEFAULT} – обозначает группу файлов, в которой предполагается хранить таблицу. Данная файловая группа уже должна существовать для базы данных. Если указан идентификатор DEFAULT или описанный параметр не определяется вообще, таблица будет сохранена в файловой группе по умолчанию. Помимо собственно таблицы параметр ON {filegroup | DEFAULT} может быть указан и для ограничений целостности PRIMARY KEY и UNIQUE. Для работы этих ограничений SQL Server автоматически создает индекс, который и будет расположен в указанной группе файлов. Если явно не указано, в какой группе файлов следует хранить данные индекса, то они будут сохранены в той же группе файлов, что и сама таблица.

Рассмотрим пример создания таблицы " Students ", содержащей такие столбцы, как: " ID " – первичный ключ, идентификатор записи; " Name " – имя студента; " Surname " – отчество студента; " Birth " – дата рождения студента; " _ID_Group " – идентификатор группы студента:

Пример 4.

USE Kafedra

CREATE TABLE Students (

ID int IDENTITY (1, 1) PRIMARY KEY,

Name varchar (50) NOT NULL,

Surname varchar (50) NOT NULL,

Birth datetime NOT NULL,

ID_Group int NOT NULL

)

 

Поделиться:





Читайте также:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...