Не могу понять что синтаксис oracle sql
Вопрос задан
Изменён 7 лет 6 месяцев назад
Просмотрен 231 раз
ALTER TABLESPACE PROBATBS ADD DATAFILE 'C:\ORACLE\ORADATA\PROBA\PRBTWO.DAT' SIZE 50M REUSE AUTOEXTEND ON NEXT 10M MAXSIZE 100M
То что он создаст базу с изначальным размером 10мегабайт и будет расширятся до 100мегабайт это понятно. А вот что это подразумевает "ON NEXT 10M"
? что он будет делать на 10 мегабайт.
- sql
- oracle
Изначально создаст 50 М
расширять будет по 10 М
максимальный размер 100 М
REUSE — будет использовать удаленные ячейки
UPDATE
команда
ALTER TABLESPACE PROBATBS ADD DATAFILE 'C:\ORACLE\ORADATA\PROBA\PRBTWO.DAT' SIZE 50M REUSE AUTOEXTEND ON NEXT 10M MAXSIZE 100M
добавляет новый файл в разделе C:
для Tablespace
PROBATBS
дополнительный файл размером 50М
. Этот раздел может увеличиватся до 100М
с шагом 10М
автоматически. То есть, файл когда достигнет 100М он дальше не будет увеличиваться.
если вам нужно еще расширить этот tablespace вы можете сделать это используя другой диск. к примеру
ALTER TABLESPACE PROBATBS ADD DATAFILE 'D:\ORACLE\ORADATA\PROBA\PRBT_2.DAT' SIZE 50M REUSE AUTOEXTEND ON NEXT 10M
тут как видите нету MAXSIZE 100M
он будет расширятся до упора
а удаленные ячейки (мусор)
С:
диске всегда было место до 100М
P.S. добавил Update после комментариев
3
Ребята,
- нет никаких «автоочистка сама запустится»
- REUSE — это не про «ячейки», это говорит о том, что если файл с таким именем уже существует, команда не выпадет с ошибкой, а переиспользует (перезатрет) существующий файл
- ячеек, кстати, тоже нет — есть блоки данных, но сейчас тут у вас речь не про них
- если авторасширение (autoextend) настроено для табличного пространства — тот факт, что в нем периодически будет 99% занято — не проблема, как только Оракл не сможет выделить очередной
При необходимости расширит размер пространства:
AUTOEXTEND ON — включает функцию авторасширения размера файла
NEXT 10M — минимальный размер приращения к размеру файла при расширении
Полезные ссылки:
http://docs. oracle.com/cd/B28359_01/server.111/b28310/dfiles003.htm
http://www.dba-oracle.com/t_alter_autoextend_on.htm
Зарегистрируйтесь или войдите
Регистрация через Facebook
Регистрация через почту
Отправить без регистрации
Почта
Необходима, но никому не показывается
Отправить без регистрации
Почта
Необходима, но никому не показывается
sql — Каков синтаксис для функционального аналога SELECT TOP(N) в Oracle?
Предположим, есть таблица TABLE
ID | DEF 1 | Один 2 | Два 3 | Три 4 | Четыре
Тогда запрос в MS SQL Server
SELECT TOP(2) * FROM TABLE ORDER BY ID DESC
Даст нам выдачу:
ID | DEF 4 | Четыре 3 | Три
А аналогичный запрос в Oracle (аналог, который мне предложился в интернетах)
SELECT * FROM TABLE WHERE ROWNUM <= 2 ORDER BY ID DESC
Даст нам выдачу:
ID | DEF 2 | Два 1 | Один
Как получить действительно аналогичный по функциональности синтаксис для Oracle?
- sql
- база-данных
- sql-server
- oracle
- plsql-developer
0
В оракле до 11-й версии включительно — через подзапрос с row_number
:
select * from (select t. *, row_number() over (order by id desc) rn from t) where rn <= 2
В 12-й версии появился синтаксис для первых N строк с LIMIT
и OFFSET
, почти как в постгресе (запрос скопипастил из интернета, 12-го оракла под рукой нет):
select * from t order by id desc OFFSET 5 ROWS FETCH NEXT 5 ROWS ONLY;
Дело в том, что Oracle
сначала выполняет условие where
и только потом производит сортировку. То есть в вашем случае сначала остаются строки с id in (1, 2)
и потом они и сортируются.
Для получения аналогичного результата сначала надо отсортировать все данные и потом обернув запрос получить нужное количество строк:
SELECT * FROM (SELECT * FROM TABLE ORDER BY ID DESC) WHERE ROWNUM <= 2
Вам придётся воспользоваться подзапросом. Т.е. ваш запрос с основными условиями и сортировкой перенесите в подзапрос, а ограничение на выбор поставьте в секцию
внешнего запроса.
SELECT * FROM ( SELECT * FROM TABLE ORDER BY ID DESC ) WHERE ROWNUM <= 2
1
Начиная с версии 12.1.0.1 Oracle БД поддерживает введённый в стандарте SQL:2008 FETCH FIRST|NEXT
синтаксис (см. row_limiting_clause для полного описания).
Воспроизводимый рабочий пример:
with tab (id, def) as ( select rownum, trim (column_value) from xmlTable ('"Один", "Два", "Три", "Четыре"') ) select * from tab order by id desc fetch first 2 rows only;
Результат:
ID DEF ---------- ---------- 4 Четыре 3 Три
Надо отметить, что поддерживаемый MS SQL Server SELECT TOP(N)
синтаксис не является стандартным.
Зарегистрируйтесь или войдите
Регистрация через Google
Регистрация через Facebook
Отправить без регистрации
Почта
Необходима, но никому не показывается
Отправить без регистрации
Почта
Необходима, но никому не показывается
Нажимая на кнопку «Отправить ответ», вы соглашаетесь с нашими пользовательским соглашением, политикой конфиденциальности и политикой о куки
Рабочий лист SQL для базового синтаксиса SQL
Сожалеем. Мы не смогли найти совпадение по вашему запросу.
Мы предлагаем вам попробовать следующее, чтобы найти то, что вы ищете:
- Проверьте правильность написания вашего ключевого слова.
- Используйте синонимы для введенного вами ключевого слова, например, попробуйте «приложение» вместо «программное обеспечение».
- Начать новый поиск.
Связаться с отделом продаж
Меню МенюПосле выполнения этого руководства вы сможете понять, как использовать рабочий лист SQL для ввода команд SQL и SQL*Plus.
1. Введение
Oracle SQL Developer предоставляет рабочий лист SQL, который можно использовать для запроса данных путем написания простых или сложных операторов SQL. В этом практическом руководстве мы рассмотрим самые основные из них, выберем все данные в таблице и ограничим этот запрос, сократив извлекаемые столбцы или строки.
2. Требования к программному обеспечению
- Oracle Database 9.
2.0.1 или выше - Доступ к образцу учетной записи пользователя HR
3. Просмотрите свои данные
3.1. Напишите оператор Select
После подключения к базе данных вы готовы просматривать схему, запрашивать и изменять данные.
1. После создания соединения с базой данных необходимо убедиться, что у вас открыт рабочий лист SQL. Если рабочий лист не открыт, используйте контекстное меню, чтобы открыть его.
2. После подключения вы должны увидеть окно рабочего листа SQL.
3. Теперь вы готовы начать. Запросите все данные в таблице DEPARTMENTS. Введите
выбрать * из отделов;
Щелкните Выполнить оператор или F9.
Обратите внимание, что количество извлеченных строк отображается под вкладкой «Результаты».
3.2. Извлечение столбцов
Вместо того, чтобы выбирать все столбцы из таблицы, вы можете их детализировать, выбирая только те данные, которые вам нужны.
1. Вместо того, чтобы вводить имя каждого столбца, вы можете просто перетащить имя таблицы из Навигатора подключений. Разверните узел Таблицы и перетащите таблицу EMPLOYEES на рабочий лист.
Для более сложных запросов или инструкций используйте функцию Format (Ctrl+F7), чтобы упростить чтение SQL. Это можно найти в контекстном меню.
2. Теперь удалите последние 3 столбца из выписки. Пример показан ниже.
Удалите «,» после столбца SALARY и нажмите F9, чтобы получить записи.
3.3. Получить строки
Часто требуется ограничить количество возвращаемых записей. Вы добавляете предложение Where, чтобы сделать это. Они могут быть сложными и запутанными. Начнем с самого основного.
1. Используя тот же оператор Select, что и выше, удалите ‘ ; ‘ и добавьте
, где Department_id = 100;
Нажмите F9. На вкладке «Результаты» показано меньше возвращенных записей.
4. Используйте команды SQL*Plus
Рабочий лист SQL позволяет использовать набор команд SQL*Plus. Команды SQL*Plus должны быть интерпретированы рабочим листом SQL перед передачей в базу данных. Некоторые команды не поддерживаются и поэтому игнорируются и не отправляются в базу данных Oracle. Список неподдерживаемых команд SQL*Plus см. в разделе SQL Developer на OTN.
1. Чтобы использовать команду «Описать» для описания объекта схемы, введите:
описать сотрудников
Вместо нажатия F9 выберите «Выполнить сценарий» или F5.
Обратите внимание, что количество извлеченных строк отображается на вкладке Script Output.
2. Используем это. Чтобы определить, какими объектами владеет эта схема и что они из себя представляют, вы можете посмотреть таблицу словаря user_objects.
Вместо использования ‘SELECT * from USER_OBJECTS’ вам нужно найти более конкретную информацию, введите:
ОПИСАНИЕ ПОЛЬЗОВАТЕЛЬСКИХ_ОБЪЕКТОВ
Нажмите F5.
3. Теперь, когда вы увидели столбцы, определяющие таблицу, вы можете написать оператор выбора. Введите:
выберите имя_объекта, тип_объекта из пользовательских_объектов;
Нажмите F9.
Отображаемые результаты — это объекты, принадлежащие вашей схеме HR.
Дополнительные ресурсы
Запрос данных из одного или нескольких столбцов таблицы
Резюме : в этом руководстве вы узнаете, как использовать Oracle Оператор SELECT
для запроса данных из одной таблицы.
В Oracle таблицы состоят из столбцов и строк. Например, таблица клиентов
в образце базы данных имеет следующие столбцы: customer_id
, имя
, адрес
, веб-сайт
и кредит_лимит
. В таблице клиентов
также есть данные в этих столбцах.
Чтобы получить данные из одного или нескольких столбцов таблицы, вы используете SELECT 9Оператор 0121 со следующим синтаксисом:
SELECT столбец_1, столбец_2, ... ОТ имя_таблицы;
В этом операторе SELECT
:
- Сначала укажите имя таблицы, из которой вы хотите запросить данные.
- Во-вторых, укажите столбцы, из которых вы хотите получить данные. Если у вас более одного столбца, вам нужно разделить каждый запятой (,).
Обратите внимание, что оператор SELECT
очень сложный и состоит из множества предложений, таких как ЗАКАЗАТЬ
, ГРУППИРОВАТЬ
, ИМЕТЬ
, ПРИСОЕДИНЯТЬСЯ
. Для простоты в этом руководстве мы сосредоточимся только на предложениях SELECT
и FROM
.
Давайте рассмотрим несколько примеров использования инструкции Oracle SELECT
, чтобы понять, как она работает.
A) запросить данные из одного столбца
Чтобы получить имена клиентов из таблицы клиентов
, используйте следующий оператор:
ВЫБОР имя ОТ клиенты;
Следующий рисунок иллюстрирует результат:
B) Запрос данных из нескольких столбцов
Чтобы запросить данные из нескольких столбцов, укажите список имен столбцов, разделенных запятыми.
В следующем примере показано, как запросить данные из столбцов customer_id
, name
и Credit_limit
таблицы customer
.
ВЫБЕРИТЕ Пользовательский ИД, имя, кредитный лимит ОТ клиенты;
Ниже показан результат:
C) Запрос данных из всех столбцов таблицы
В следующем примере извлекаются все строки из всех столбцов таблицы клиентов
:
SELECT Пользовательский ИД, имя, адрес, Веб-сайт, кредитный лимит ОТ клиенты;
Вот результат:
Для удобства вы можете использовать сокращенную звездочку (*), чтобы указать Oracle возвращать данные из всех столбцов таблицы следующим образом:
ВЫБЕРИТЕ * ОТ клиентов;
Обратите внимание, что никогда не следует использовать звездочку (*) при внедрении запроса в приложения.