| СУБД Oracle "с нуля": Выпуск ?22 | |||
|
|||
|   |
|
|
| SELECT | Получение данных Извлечение данных из БД. |
INSERT UPDATE DELETE MERGE |
DML (Data Manipulation Language - язык манипуляции данными ) Вставка новых строк, изменение существующих строк, удаление нежелательных строк из БД. |
CREATE ALTER DROP RENAME TRUNCATE |
DDL (Data Definition Language - язык описания данных ) Создание, изменение и удаление структур данных. |
COMMIT ROLLBACK SAVEPOINT |
Управление транзакциями Группировка изменений в логические транзакции. |
GRANT REVOKE |
DCL ( Data Control Language - язык контроля данных) Предоставляет и отнимает права доступа как к БД, так и к структурам данных. |
Мы начнем изучение с наиболее распространенной операции - извлечение данных (оператор SELECT). Этот оператор позволяет осуществлять следующее:
- Проекция ( projection ): Вы можете выбрать лишь те столбцы из таблицы, которые нужны. Можно выбрать любое количество столбцов, имеющееся в таблице.
- Селекция ( selection ): Вы можете извлечь часть строк из таблицы, которые отвечают заданным условиям.
- Объединение ( joining ): Вы можете извлекать данные одновременно из нескольких таблиц, создавая связи между ними.
Наиболее простая синтаксическая конструкция оператора SELECT :
SELECT * | { [DISTINCT] столбец | выражение [синоним], ... }
FROM таблица;
Где:
SELECT - открытие списка одного или более столбцов;
* - выбор всех столбцов;
DISTINCT - устранение повторяющихся строк;
столбец | выражение - выборка указанного столбца или выражения;
синоним - заголовок столбца в результате выборки;
FROM таблица - указывается таблица, из которой выбираются столбцы.
В предыдущем выпуске рассылки я просил подготовить пробную схему данных HR для занятий. Если Вы установили СУБД Oracle (например, версию XE) и подготовили схему HR, то можете опробовать следующие примеры.
Для начала подключимся к схеме HR :
Start - > Run... - > cmd SQL*Plus: Release 10.2.0.1.0 - Beta on Sun Dec 4 14:21:20 2005 Copyright (c) 1982, 2005, Oracle. All rights reserved. SQL> connect hr/hr Connected.
Пример 1. Вы можете сделать выборку всех столбцов таблицы указав * (звездочку) сразу после оператора SELECT. Выберем все данные из таблицы подразделений:
SQL> SELECT *
2 FROM departments;
DEPARTMENT_ID DEPARTMENT_NAME MANAGER_ID LOCATION_ID
------------- ------------------------------ ---------- -----------
10 Administration 200 1700
20 Marketing 201 1800
30 Purchasing 114 1700
40 Human Resources 203 2400
50 Shipping 121 1500
60 IT 103 1400
70 Public Relations 204 2700
80 Sales 145 2500
90 Executive 100 1700
100 Finance 108 1700
110 Accounting 205 1700
...
27 rows selected.
Совершенно эквивалентный запрос:
SELECT department_id, department_name, manager_id, location_id FROM departments;
Пример 2. Вы можете сделать выборку не всех столбцов таблицы, а только тех, которые представляют интерес. Для этого после ключевого слова SELECT перечислите через запятую все необходимые столбцы:
SQL> SELECT department_id, location_id
2 FROM departments;
DEPARTMENT_ID LOCATION_ID
------------- -----------
10 1700
20 1800
30 1700
40 2400
50 1500
60 1400
70 2700
80 2500
90 1700
100 1700
110 1700
...
27 rows selected.
Практика. Выведите только наименования всех стран из таблицы COUNTRIES (страны).
Примечание: Описание схемы HR смотрите в 21-м выпуске рассылки. Ответ на задание будет дан в следующем выпуске.
Вопросы читателей
Вопрос:Доброе вам время суток...
вот есть такой вопрос, который встречался не уже не раз, и каждый раз
вызывает затруднения у всех моих знакомых...
После установки Oracle на машину, у нее было изменено сетевое имя и, как
следствие, возникают проблемы...
Можно как-нибудь раскрыть этот вопрос в ближайшем выпуске...
Заранее благодарен
--
Всего вам доброго
Леонгардт Александр
Ответ: Это вопрос по сетевым настройкам. На самом деле все зависит от того, как у Вас настроено разрешение имен. В одном из самых простых случаев (если настроено локальное разрешение имен), надо перенастроить слушатель сети (Listener) для этого рекомендую использовать утилиту Oracle Net Manager. Эта утилита представляет собой визуальный инструмент управления несколькими файлами настройки сети. В частности, listener.ora и tnsnames.ora. Все что надо сделать - это изменить имя прослушиваемого сервера для слушателя сети.
Кроме этого, на всех рабочих местах, которые работают с базой данных надо тоже перенастроить файл tnsnames.ora с помощью той же утилиты Net Manager. Для этого в разделе 'Service naming' во всех используемых сервисах следует изменить Host name (имя сервера).
Если в сети много рабочих станций, то файл tnsnames.ora можно скопировать с уже настроенной машины (которая может подключаться к удаленной БД) на все остальные.
Файл tnsnames.ora расположен в директории $ORA_HOME\network\ADMIN.
Читайте также книгу Net Services Administrator's Guide ( главы 5, 6, 9).
Вопрос: добрый день,
хочу воспользоваться вашим предложением по поводу вопросов.
У меня он пока один наболевший вопрос: существует ли в 9 оракле возможность упаковать базу (разрослась до 15 Гб )
без операции экспорта-импорта и почистить временные журналы без того
чтобы не грохнуть что-нибудь важное. У меня в базе несколько
схем, которые взаимосвязаны между собой.
--
Best regards,
vamfiri
Ответ: Во-первых, все зависит от самих данных, хранимых в базе. Как Вы уже упомянули, можно воспользоваться экспортом-импортом для того, чтобы избавиться от миграции строк, а также произвести дефрагментацию табличных пространств. Но, поскольку экспорт-импорт не интересует, то есть еще вариант избавиться от неиспользуемых индексов. Индексы на свою поддержку требуют дополнительных системных ресурсов и съедают некоторый объем свободного места на дисках. Эту процедуру я не смогу объяснить в двух словах, поэтому поищите в документации. Если читатели заинтересуются этой темой, то можно ее раскрыть в отдельном выпуске.
Во-вторых, Вы спрашиваете: ' существует ли : возможность : почистить временные журналы без того чтобы не грохнуть что-нибудь важное'. Вопрос сам по себе не совсем корректен. Такого понятия как 'временный журнал' не существует. Мне кажется, Вы имели в виду архивные журналы. Если СУБД работает в архивном режиме ( archive log ), то определенная директория постоянно пополняется архивными файлами журналов. Для освобождения дискового пространства можно удалить эти файлы сразу после создания полной резервной копии базы данных.
Что дальше?
В следующем выпуске будет продолжена тема управления таблицами, колонка по изучению SQL и вводная статья по PL/SQL, написанная одним из читателей рассылки. По SQL и PL/SQL будут приведены практические примеры и задания для самостоятельного изучения.
Теперь несколько слов о переводе документации. Как я уже сказал, группа переводчиков очень активна, и это радует. Мы уже практически закончили 2 книги: "Руководство по установке Oracle Database 10g XE для MS Windows", и "Вводное руководство Oracle Database XE для MS Windows". Более того, переведено уже более половины книги "Oracle Database 10g Двухдневный курс администратора". Все это скоро появится на сайте рассылки. Следите за новостями.
Чем Вы можете помочь рассылке?
- Пишите мне письма! Я обязательно прочитаю КАЖДОЕ из пришедших писем. И отвечу КАЖДОМУ читателю. Самые интересные письма будут опубликованы. Если Вы не хотите, чтобы Ваше письмо было опубликовано, то укажите об этом в письме.
- Если Вы способны перевести одну-две страницы в неделю, то пишите мне письмо о своем желании участия в проекте перевода.
- Если Вы хотите написать статью для этой рассылки, но не знаете о чем можно написать, то обращайтесь ко мне. Я пришлю список возможных тем. Это позволит Вам лучше понять рассматриваемый вопрос, оказать услугу другим читателям и познакомится с другими читателями (которые наверняка захотят прислать письмо автору по возникшим вопросам).
Я рад, что Вы подключились к этой рассылке, надеюсь на Ваше посильное участие.
Злыгостев А.А. aka Lemon - lemon@oranet.ru или zlygostev@gmail.com
|   |
|
Статья оценена: (2 голосов) Оценить файл |
| Вернуться к разделу | На главную |



