Автор работы: Пользователь скрыл имя, 16 Мая 2014 в 11:20, контрольная работа
Мы с вами живем 21 веке — веке информационных технологий и данных. Нас повсюду окружает информация. Но ее бывает настолько много, что естественно ее всю мы не можем запомнить. Чтобы всю эту информацию запомнить и в случаи необходимости воспользоваться - используется компьютеры. Например все наши телекоммуникационные компании хранят информацию о своих абонентах. У многих из этих компаний количество абонентов превышает миллион. И каждый из абонентов ежедневно совершает или принимает несколько звонков. Следовательно не трудно представить о каком объеме информации идет речь. Конечно же если просто загрузить эту информацию в компьютер без определенного порядка — этим мы ничего не добьемся. И тогда нам на помощь приходит база данных.
Мы часто сталкиваемся с понятиями база данных и СУБД. Для начало уясним для себе, что база данных – это особая структура служащие для хранения информации, а СУБД (Система Управления Базами Данных) – это программный комплекс служащий для управления с базой данных. Имеется большое количество
Имена объектов не должно быть зарезирвированными словами базы данных.
Изучив правила именования, которым должно придерживаться наши объекты базы даных – приступим к непосредственному созданию. Чтобы создать таблицу для этого вам необходимо, чтобы у вас были соотвествующие привелегии (*) и физическое простанство. Но, а синтаксис создания таблицы выглядит так.
CREATE TABLE [shema.]table_name
(column datatype [DEFAULT expr] [, …])
где
[shema.] – указывает, что таблица может быть созданна в любой схеме, если
конечно у вас на это есть права. Если вы создаете, таблицу в своей
схеме, то имя текущего вашего пользователя можно не указывать.
column – имя будушего столбца
datatype - тип данных, который будет у столбца
DEFAULT expr – это выражение или константа, которая будет автоматически заполнятся если для этого столбца не будет определно значение во время вставки.
Внимательные читатели наверное заметили, что в двух местах выше я утопребил слово схема. Так и не дав определения этому слову. Постарюсь объяснить как можно просто. В базе данных у каждого пользователя есть своя схема – справедливо соотвествие один пользователь - одна схема. Все что владеет пользователь является частью схемы. Поэтому при вызове объекта не из своей схеме, то есть вы хотите вызвать объект принадлежащий другому пользователю, то вы должны указывать с чьей схеме вам необходим данный объект.
SELECT * FROM SOMEBODY.emp_table
Приведем пример создание таблицы
CREATE TABLE tab_new
( id integer,
cur_date date default sysdate,
ename varchar2(50)
);
(*) Привелегиям посвещена глава 16, там подробно все описывается. Если вы работаете под пользователем SCOTT в ORACLE-е, то все нормально - данные привилегия у него уже есть.
CREATE TABLE используя подзапрос
Часто бывают случаи, что результат некоторого вывода вашего запроса – необходимо сохранить в таблицу. Конечно можно сперва создать таблицу, а затем воспользовавшись INSERT с опцией SUBQUERY вставить необходимый запрос. Но это можно сделать и одной командой создания таблицы. Синтаксис такой команды выглядит следующим образом:
CREATE TABLE table_name [(column, column, ..)]
AS SUBQUERY
где
table_name [(column, column, ..)] – имя создаваемой таблице, конечно этот параметр обязателен. Также вы можете указать имена столбцов для новой таблицы, но это является не обязательным параметром, так как имена столбцов могут быть взяты из подзапроса.
SUBQUERY непосредственно
сам запрос результат, которого
будет сохранен в новой
CREATE TABLE tab_emp
AS
select * from scott.emp
where deptno=20;
ALTER TABLE
И так мы с вами разобрали, как создавать таблицу. Но как показывает практика нам всегда бывает необходимо либо что-то изменить либо удалить. Разберем сейчас и эти аспекты работы с таблицами.
Для добавления столбца к таблице используется следующий механизм
ALTER TABLE table_name
ADD (column datatype [DEFAULT expr]
[,column datatype, ..])
ALTER TABLE scott.bonus
ADD sername varchar2(50);
Для изменения типа, значения по умолчанию, размера столбца используется также команда ALTER только в следующем ввиде:
ALTER TABLE table_name
MODIFY (column datatype [DEFAULT expr]
[,column datatype, ..])
ALTER TABLE scott.bonus
MODIFY sername number
Как видно из примеров выше мы сперва добавили столбец, затем изменили ему тип данных. Конечно после тестов необходимо удалить ненужный столбец для этого используем следующую команду:
ALTER TABLE table_name
DROP column column_name
ALTER TABLE scott.bonus
DROP COLUMN sername
DROP TABLE
Сейчас мы с вами разберем, как можно удалить таблицу. Но прежде рассмотрим, что же при этом происходит:
l При удалении тблицы – все данные и структура таблица удаляется
l
Все незафиксированные
l Все индексы связанные с этой таблицей удаляются
l Вы не сможете выполнив команду ROLLBACK вернуть таблицу назад
Синтаксис команды:
DROP TABLE [shema.]tablename
Удалим ранее созданную таблицу:
DROP table tab_emp
Если у вас выйдет ошибка, что подобный таблицы нет то это будет естественно, так как удалять необходимо те объекты, который уже есть в базе и в той схеме на которую вы имеете права.
Надо отметить, что если вы будете удалять таблицу которая существует в базе (также при SELECT), но прав у вас на эту таблицу у вас нет, то бужет выходить ошибка – “Такого объекта не существует” – ORACLE это сделал в целях безопасности, чтоб хакеры перебира названия таблиц, не нашли название таблиц использующиеся вашим приложением.
RENAME TABLE
Допустим, что у нас есть таблица BONUS и мы хотим ее переименовать например на BONUS2 – тогда в этом случаи, так же будет использована команда DDL языка RENAME:
RENAME old_table_name TO new_table_name
Как видно все очень просто всего необходимо указать текущее имя и то имя на которое желаеете поменять.
RENAME bonus TO bonus2
TRUNCATE TABLE
Осталось еще одна DDL команда, которую мы с вами еще не разобрали – это команда TRUNCATE. При выполнении команды происходит следующее:
l Удаляются все данные в таблицы
l
Освобождается физическое
l Вы не сможете выполнив команду ROLLBACK для возврата данных назад
l Как альтернативу TRUNCATE вы можете использовать DELETE
l Если таблица связанна при помощи ограничений с другими таблицами – то над ней не может быть совершенна операция TRUNCATE
Синтаксис команды очень прост, где необходимо указать только имя таблицы
TRUNCATE TABLE [shema.]tablename
TRUNCATE TABLE bonus
Оператор TRUNCATE применяемый при удаление данных из базу данных, позволяет меньше нагружать систему и освобождать физическое пространство занимаемое таблицей. Насчет того, что он меньше нагружает систему – это правда, но главная разница между TRUNCATE (DDL) и DELETE (DML) заключается в том, что при операции TRUNCATE процесс удаленние данных из таблицы не логируется, логируется всего лишь команда DDL TRUNCATE – понятие логирование в журнальных файлах более близко к администратором базы данных, поэтому посоветуем вам пообщаться с администратором базы данных для более глубокого понятие принципа работы TRUNCATE.