I’m trying to find a column in a very big table in ORACLE SQL Developer, its really difficult to find it visually.
Is there any easy way to find the column in the table?
For example, in DBeaver its just Tab and then Ctrl + f
Wai Ha Lee
8,55380 gold badges57 silver badges92 bronze badges
asked Dec 21, 2015 at 10:40
Oracle has an awesome data dictionary. Most of the time it will be even faster to write a query that accesses some of its views than use IDE features.
You can get columns from view ALL_TAB_COLUMNS
.
SELECT *
FROM ALL_TAB_COLUMNS
WHERE TABLE_NAME = :your_table_name
AND COLUMN_NAME LIKE '%YOUR_SEARCH_STRING%'
As for SQL Developer, you can open table from your connections tree, go to Columns tab and just use Edit -> Find (Ctrl/Cmd + F). Works for me in 4.0.2.15.
answered Dec 21, 2015 at 11:07
PaulPaul
1,07512 silver badges20 bronze badges
I would prefer writing a query is more faster compared to IDE provided buttons and clicks.
If so this would work out.
Use the following.
You can try this via SQL tool that is used by you
select table_name from all_tab_columns where column_name = 'PICK_COLUMN';
Or if you have DBA privileges,
select table_name from dba_tab_columns where column_name = 'PICK_COLUMN';
But if you are not sure about the column names you can add LIKE
statements to current query.
Eg:
select table_name from all_tab_columns where column_name LIKE '%PICK_COLUMN%';
answered May 8, 2018 at 6:03
Du-LacosteDu-Lacoste
11.2k2 gold badges67 silver badges50 bronze badges
There is no search feature in the SQL Developer data grids for finding/navigating to a specific Column, but I’ll add that as a feature request.
You may find the Single Record View handy for browsing very WIDE records.
answered May 8, 2018 at 13:33
thatjeffsmiththatjeffsmith
20k5 gold badges37 silver badges117 bronze badges
1
On toolbar, Click View->Find DB Object
Now select the connection, the type and which column the value has to be found in. (NAME,TYPE AND USAGE(ALL))
The tables are displayed, select the table to view the columns having the field you are searching for.
Harry Moreno
9,9217 gold badges61 silver badges112 bronze badges
answered Apr 3, 2018 at 7:03
Right click on column header in the data grid, then you have a menu Columns where you can filter columns you want to display
answered Dec 21, 2015 at 10:43
GiggsGiggs
954 bronze badges
1
- Right click on your connection name.
- Then click «Find DB Object» on the context menu.
- It will take you to a textbox. Write your column name
- And check the box with «Columns».
- Then press «enter» or click on «Go».
Then sqldeveloper will search your column and will show you the result [ column name with table name].
answered Dec 21, 2015 at 12:25
ShafiShafi
1,8403 gold badges22 silver badges44 bronze badges
I need to query the database to get the column names, not to be confused with data in the table. For example, if I have a table named EVENT_LOG
that contains eventID
, eventType
, eventDesc
, and eventTime
, then I would want to retrieve those field names from the query and nothing else.
I found how to do this in:
- Microsoft SQL Server
- MySQL
- PostgreSQL
But I need to know: how can this be done in Oracle?
asked Jan 16, 2009 at 23:53
0
You can query the USER_TAB_COLUMNS table for table column metadata.
SELECT table_name, column_name, data_type, data_length
FROM USER_TAB_COLUMNS
WHERE table_name = 'MYTABLE'
answered Jan 16, 2009 at 23:57
barettabaretta
7,3151 gold badge25 silver badges25 bronze badges
8
In SQL Server…
SELECT [name] AS [Column Name]
FROM syscolumns
WHERE id = (SELECT id FROM sysobjects WHERE type = 'V' AND [Name] = 'Your table name')
Type = ‘V’ for views
Type = ‘U’ for tables
answered Jan 17, 2009 at 2:25
EppzEppz
3,1482 gold badges19 silver badges26 bronze badges
0
You can do this:
describe EVENT_LOG
or
desc EVENT_LOG
Note: only applicable if you know the table name and specifically for Oracle.
answered Jan 16, 2009 at 23:55
For SQL Server 2008, we can use information_schema.columns for getting column information
SELECT *
FROM information_schema.columns
WHERE table_name = 'Table_Name'
ORDER BY ordinal_position
answered Aug 23, 2012 at 15:16
JomJom
1,8774 gold badges29 silver badges46 bronze badges
1
For SQLite I believe you can use something like the following:
PRAGMA table_info(table-name);
Explanation from sqlite.org:
This pragma returns one row for each column in the named table. Columns in the result set include the column name, data type, whether or not the column can be NULL, and the default value for the column. The «pk» column in the result set is zero for columns that are not part of the primary key, and is the index of the column in the primary key for columns that are part of the primary key.
See also: Sqlite.org Pragma Table Info
ThE uSeFuL
1,4561 gold badge16 silver badges29 bronze badges
answered Apr 25, 2013 at 22:00
shieldstroyshieldstroy
1,3071 gold badge10 silver badges24 bronze badges
3
That information is stored in the ALL_TAB_COLUMNS
system table:
SQL> select column_name from all_tab_columns where table_name = 'DUAL';
DUMMY
Or you could DESCRIBE
the table if you are using SQL*PLUS:
SQL> desc dual
Name Null? Type
----------------------------------------------------- -------- ---------------------- -------------
DUMMY VARCHAR2(1)
answered Jan 16, 2009 at 23:56
Jon EricsonJon Ericson
20.8k12 gold badges97 silver badges147 bronze badges
2
The other answers sufficiently answer the question, but I thought I would share some additional information. Others describe the «DESCRIBE table» syntax in order to get the table information. If you want to get the information in the same format, but without using DESCRIBE, you could do:
SELECT column_name as COLUMN_NAME, nullable || ' ' as BE_NULL,
SUBSTR(data_type || '(' || data_length || ')', 0, 10) as TYPE
FROM all_tab_columns WHERE table_name = 'TABLENAME';
Probably doesn’t matter much, but I wrote it up earlier and it seems to fit.
answered Jan 17, 2009 at 2:10
SashaSasha
1,1907 silver badges10 bronze badges
1
For Oracle
SELECT column_name FROM user_tab_cols WHERE table_name=UPPER('tableName');
answered Feb 7, 2013 at 10:19
jampez77jampez77
4,9627 gold badges30 silver badges52 bronze badges
describe YOUR_TABLE;
In your case :
describe EVENT_LOG;
answered Mar 1, 2013 at 6:24
RohitRohit
1091 silver badge8 bronze badges
Even this is also one of the way we can use it
select * from product where 1 != 1
Robert
5,27843 gold badges65 silver badges115 bronze badges
answered Feb 25, 2014 at 15:58
JaisankarJaisankar
4531 gold badge5 silver badges10 bronze badges
select column_name,* from information_schema.columns
where table_name = 'YourTableName'
order by ordinal_position
answered Oct 6, 2012 at 8:38
1
For MySQL, use
SELECT column_name
FROM information_schema.columns
WHERE
table_schema = 'Schema' AND table_name = 'Table_Name'
Nick Cox
35.2k6 gold badges31 silver badges47 bronze badges
answered Jan 21, 2013 at 18:23
ssamuel68ssamuel68
93213 silver badges10 bronze badges
For SQL Server:
SELECT [name] AS [Column Name]
FROM syscolumns
WHERE id = object_id('TABLE_NAME')
answered Apr 16, 2013 at 13:28
bstricksbstricks
8238 silver badges14 bronze badges
SELECT COLUMN_NAME 'all_columns'
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME='user';
answered May 27, 2014 at 11:35
1
You could also try this, but it might be more information than you need:
sp_columns TABLE_NAME
answered Jan 18, 2013 at 23:16
WEFXWEFX
8,2408 gold badges66 silver badges100 bronze badges
SELECT A.COLUMN_NAME, A.* FROM all_tab_columns a
WHERE table_name = 'Your Table Name'
AND A.COLUMN_NAME = 'COLUMN NAME' AND a.owner = 'Schema'
dreamcrash
46k25 gold badges90 silver badges113 bronze badges
answered Oct 25, 2013 at 19:30
HenryHenry
191 bronze badge
0
Mysql
SHOW COLUMNS FROM a_table_named_users WHERE Field REGEXP 'user_id|user_name|user_pass'
This will return a result something like this:
Field | Type | Null | Key | Default | Extra
user_id int(8) NO PRI NULL auto_increment
user_name varchar(64) NO MUL NULL
user_pass varchar(64) NO NULL
Then to pull out the values you can simply
fetch row[0]
This is also great for passing input dynamically since the REGEXP needs the ‘|’ for multiple inputs, but is also a way to keeps data separated and easy to store/pass to classes/functions.
Try throwing in dummy data as well for security when sending it out and compare what was returned when receiving any errors.
answered Sep 21, 2014 at 8:08
In Oracle, there is two views that describe columns:
-
DBA_TAB_COLUMNS describes the columns of all tables, views, and
clusters in the database. -
USER_TAB_COLUMNS describes the columns of the tables, views, and
clusters owned by the current user. This view does not display the
OWNER column.
answered Sep 6, 2017 at 9:03
Renaud KernRenaud Kern
1,0989 silver badges25 bronze badges
The answer is here: http://php.net/manual/en/function.mysql-list-fields.php
I’d use the following code in your case:
$result = mysql_query("SHOW COLUMNS FROM sometable");
if (!$result) {
echo 'Could not run query: ' . mysql_error();
exit;
}
$fields = array();
if (mysql_num_rows($result) > 0) {
while ($row = mysql_fetch_assoc($result)) {
$fields[] = $row['Field'];
}
}
answered Jul 9, 2013 at 15:39
you can run this query
SELECT t.name AS table_name,
SCHEMA_NAME(schema_id) AS schema_name,
c.name AS column_name
FROM sys.tables AS t
INNER JOIN sys.columns c ON t.OBJECT_ID = c.OBJECT_ID
WHERE c.name LIKE '%%' --if you want to find specific column write here
ORDER BY schema_name, table_name;
answered Oct 17, 2014 at 7:24
Try this
select * from sys.all_columns c join sys.objects o on c.object_id=o.object_id where o.name = 'TABLENAME' and c.name like '%COLUMN NAME%'
answered Jul 9, 2014 at 10:45
Just select first row from the table , for oracle : select * from <table name> where rownum = 1;
answered Apr 24, 2014 at 13:09
blue-skyblue-sky
51.6k147 gold badges422 silver badges738 bronze badges
1
Came across this question looking for access to column names on Teradata, so I’ll add the answer for their ‘flavour’ of SQL:
SELECT ColumnName
FROM DBC.Columns
WHERE DatabaseName='DBASE_NAME'
AND TableName='TABLE_NAME';
The info is stored in the DBC dbase.
Getting data types is a little bit more involved:
Get column type using teradata system tables
answered Jul 3, 2014 at 9:24
carnustcarnust
6111 gold badge8 silver badges10 bronze badges
I did it like this
SELECT
TOP 0
*
FROM
Posts
It works even in http://data.stackexchange.com whose service tables I am not aware of!
answered Sep 22, 2013 at 11:51
SELECT COLUMN_NAME
FROM YourDatabase.INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'YourTableName'
Luís Cruz
14.7k16 gold badges67 silver badges100 bronze badges
answered Dec 14, 2014 at 1:08
В этом учебном материале вы узнаете, как использовать SQL оператор ALTER TABLE для добавления столбца, изменения столбца, удаления столбца, переименования столбца или переименования таблицы (с множеством ясных и кратких примеров).
Описание
SQL оператор ALTER TABLE используется для добавления, изменения или удаления столбцов в таблице. SQL оператор ALTER TABLE также используется для переименования таблицы.
Добавить столбец в таблицу
Синтаксис
Синтаксис SQL оператора ALTER TABLE для добавления столбца в таблицу.
ALTER TABLE table_name
ADD column_name column_definition;
Пример
Давайте посмотрим на SQL ALTER TABLE пример, который добавляет столбец.
Например.
ALTER TABLE supplier ADD supplier_name char(50); |
Этот SQL пример ALTER TABLE добавит столбец с именем supplier_name в таблицу supplier.
Добавить несколько столбцов в таблицу
Синтаксис
Синтаксис SQL ALTER TABLE для добавления несколько столбцов в существующую таблицу.
ALTER TABLE table_name
ADD (column_1 column_definition,
column_2 column_definition,
…
column_n column_definition);
Пример
Давайте посмотрим на SQL ALTER TABLE пример, который добавляет более одного столбца.
Например.
ALTER TABLE supplier ADD (supplier_name char(50), city char(45)); |
Этот SQL ALTER TABLE пример добавит два столбца: supplier_name как поле char(50) и city как поле char(45) в таблицу supplier .
Изменить столбец в таблице
Синтаксис
Синтаксис SQL ALTER TABLE для изменения столбца в существующей таблице.
Для Oracle, MySQL, MariaDB.
ALTER TABLE table_name
MODIFY column_name column_type;
Для SQL Server.
ALTER TABLE table_name
ALTER COLUMN column_name column_type;
Для PostgreSQL.
ALTER TABLE table_name
ALTER COLUMN column_name TYPE column_definition;
Пример
Давайте посмотрим, как изменить столбец с именем supplier_name, используя команду ALTER TABLE. Обратите внимание, что в большинстве баз данных Синтаксис немного отличается.
Для Oracle.
ALTER TABLE supplier MODIFY supplier_name char(100) NOT NULL; |
Для MySQL и MariaDB.
ALTER TABLE supplier MODIFY supplier_name VARCHAR(100) NOT NULL; |
Для SQL Server.
ALTER TABLE supplier ALTER COLUMN supplier_name VARCHAR(100) NOT NULL; |
Для PostgreSQL.
ALTER TABLE supplier ALTER COLUMN supplier_name TYPE CHAR(100), ALTER COLUMN supplier_name SET NOT NULL; |
Изменить несколько столбцов в таблице
Синтаксис
Синтаксис SQL ALTER TABLE для изменения нескольких столбцов в существующей таблице.
Для Oracle.
ALTER TABLE table_name
MODIFY (column_1 column_type,
column_2 column_type,
…
column_n column_type);
Для MySQL и MariaDB.
ALTER TABLE table_name
MODIFY column_1 column_definition
[ FIRST | AFTER column_name ],
MODIFY column_2 column_definition
[ FIRST | AFTER column_name ],
…
;
Для PostgreSQL.
ALTER TABLE table_name
ALTER COLUMN column_name TYPE column_definition,
ALTER COLUMN column_name TYPE column_definition,
…
;
Пример
Давайте рассмотрим пример, который использует ALTER TABLE для изменения более одного столбца. В этом примере мы изменим два столбца с именами supplier_name и city.
Для Oracle.
ALTER TABLE supplier MODIFY (supplier_name char(100) NOT NULL, city char(75)); |
Для MySQL и MariaDB.
ALTER TABLE supplier MODIFY supplier_name VARCHAR(100) NOT NULL, MODIFY city VARCHAR(75); |
Для PostgreSQL.
ALTER TABLE supplier ALTER COLUMN supplier_name TYPE CHAR(100), ALTER COLUMN supplier_name SET NOT NULL, ALTER COLUMN city TYPE CHAR(75); |
Удалить столбец в таблиц
Синтаксис
Синтаксис ALTER TABLE для удаления столбца в существующей таблице.
ALTER TABLE table_name
DROP COLUMN column_name;
Пример
Давайте посмотрим на пример, который удаляет столбец из таблицы.
Например.
ALTER TABLE supplier DROP COLUMN supplier_name; |
Этот SQL пример ALTER TABLE удалит столбец supplier_name из таблицы supplier.
Переименовать столбец в таблице
Синтаксис
Синтаксис SQL ALTER TABLE для переименования столбца в существующей таблице.
Для Oracle и PostgreSQL.
ALTER TABLE table_name
RENAME COLUMN old_name TO new_name;
Для SQL Server (с использованием хранимой процедуры sp_rename).
sp_rename ‘table_name.old_column’, ‘new_name’, ‘COLUMN’;
Для MySQL и MariaDB.
ALTER TABLE table_name
CHANGE COLUMN old_name TO new_name;
Пример
Давайте рассмотрим пример, который переименовывает столбец в таблице supplier из supplier_name в sname.
Для Oracle (9i Rel2 и выше) и PostgreSQL.
ALTER TABLE supplier RENAME COLUMN supplier_name TO sname; |
Для SQL Server (с использованием хранимой процедуры sp_rename).
sp_rename ‘supplier.supplier_name’, ‘sname’, ‘COLUMN’; |
Для MySQL и MariaDB.
ALTER TABLE supplier CHANGE COLUMN supplier_name sname VARCHAR(100); |
В MySQL и MariaDB вы должны указать тип данных столбца при его переименовании.
Переименовать таблицу
Синтаксис
Синтаксис SQL ALTER TABLE для переименования таблицы.
Для Oracle, MySQL, MariaDB, PostgreSQL и SQLite.
ALTER TABLE table_name
RENAME TO new_table_name;
Для SQL Server (с использованием хранимой процедуры sp_rename).
sp_rename ‘table_name’, ‘new_table_name’;
Пример
Давайте рассмотрим пример, который переименовывает таблицу supplier в новое имя vendor.
Для Oracle, MySQL, MariaDB, PostgreSQL и SQLite.
ALTER TABLE supplier RENAME TO vendor; |
Для SQL Server (с использованием хранимой процедуры sp_rename).
sp_rename ‘supplier’, ‘vendor’; |
Практическое упражнение № 1
На основании приведенной ниже таблицы departments переименуйте таблицу departments в depts.
CREATE TABLE departments ( department_id int NOT NULL, department_name char(50) NOT NULL, CONSTRAINT departments_pk PRIMARY KEY (department_id) ); |
Решение для упражнения № 1
Следующий SQL оператор ALTER TABLE переименует таблицу departments в depts.
ALTER TABLE departments RENAME TO depts; |
Практическое упражнение № 2
На основе приведенной ниже таблицы employees добавьте столбец с именем salary, который имеет тип данных int.
CREATE TABLE employees ( employee_number int NOT NULL, employee_name char(50) NOT NULL, department_id int, CONSTRAINT employees_pk PRIMARY KEY (employee_number) ); |
Решение для упражнения № 2
Следующий SQL оператор ALTER TABLE добавит столбец salary в таблицу employees.
ALTER TABLE employees ADD salary int; |
Практическое упражнение № 3
На основе приведенной ниже таблицы customers добавьте два столбца — один столбец с именем contact_name, который является типом данных char(50), и один столбец с именем last_contacted, у которого тип данных date.
CREATE TABLE customers ( customer_id int NOT NULL, customer_name char(50) NOT NULL, address char(50), city char(50), state char(25), zip_code char(10), CONSTRAINT customers_pk PRIMARY KEY (customer_id) ); |
Решение для упражнения № 3
Следующий SQL оператор ALTER TABLE добавит столбцы contact_name и last_contacted в таблицу customers.
ALTER TABLE customers ADD (contact_name char(50), last_contacted date); |
Практическое упражнение № 4
На основании приведенной ниже таблицы employees измените столбец employee_name на тип данных char(75).
CREATE TABLE employees ( employee_number int NOT NULL, employee_name char(50) NOT NULL, department_id int, CONSTRAINT employees_pk PRIMARY KEY (employee_number) ); |
Решение для упражнения № 4
Следующий SQL оператор ALTER TABLE изменит тип данных для столбца employee_name на char(75).
ALTER TABLE employees MODIFY employee_name char(75); |
Практическое упражнение № 5
На основе приведенной ниже таблицы customer измените столбец customer_name, чтобы он не допускал значений NULL, и измените столбец state на тип данных char(2).
CREATE TABLE customers ( customer_id int NOT NULL, customer_name char(50), address char(50), city char(50), state char(25), zip_code char(10), CONSTRAINT customers_pk PRIMARY KEY (customer_id) ); |
Решение для упражнения № 5
Следующий SQL оператор ALTER TABLE изменит столбцы customer_name и state соответственно в таблице customers.
ALTER TABLE customers MODIFY (customer_name char(50) NOT NULL, state char(2)); |
Практическое упражнение № 6
На основе приведенной ниже таблицы employees удалите столбец salary.
CREATE TABLE employees ( employee_number int NOT NULL, employee_name char(50) NOT NULL, department_id int, salary int, CONSTRAINT employees_pk PRIMARY KEY (employee_number) ); |
Решение для упражнения № 6
Следующий SQL оператор ALTER TABLE удалит столбец salary из таблицы employees.
ALTER TABLE employees DROP COLUMN salary; |
Практическое упражнение № 7
На основании приведенной ниже таблицы departments переименуйте столбец department_name в имя_депта.
CREATE TABLE departments ( department_id int NOT NULL, department_name char(50) NOT NULL, CONSTRAINT departments_pk PRIMARY KEY (department_id) ); |
Решение для упражнения №
Следующий SQL оператор ALTER TABLE переименует столбец department_name в dept_name в таблице departments.
ALTER TABLE departments RENAME COLUMN department_name to dept_name; |
Узнайте как использовать оператор ALTER TABLE в распространенных БД:
- ALTER TABLE Oracle PL/SQL
- ALTER TABLE SQL Server
- ALTER TABLE MySQL
- ALTER TABLE PostgreSQL
- ALTER TABLE MariaDB
- ALTER TABLE SQLite
Вопрос:
У нас есть большая база данных Oracle со многими таблицами. Есть ли способ, которым я могу выполнить запрос или поиск, чтобы найти, есть ли таблицы с определенными именами столбцов?
IE показать мне все таблицы, которые имеют столбцы: id, fname, lname, address
Подробно Я забыл добавить: мне нужно иметь возможность выполнять поиск по различным схемам. Тот, который я должен использовать для подключения, не имеет собственных таблиц, которые мне нужно выполнить.
Лучший ответ:
Чтобы найти все таблицы с определенным столбцом:
select owner, table_name from all_tab_columns where column_name = 'ID';
Чтобы найти таблицы, в которых есть все или все из 4 столбцов:
select owner, table_name, column_name
from all_tab_columns
where column_name in ('ID', 'FNAME', 'LNAME', 'ADDRESS');
Чтобы найти таблицы, в которых есть все 4 столбца (без них отсутствует):
select owner, table_name
from all_tab_columns
where column_name in ('ID', 'FNAME', 'LNAME', 'ADDRESS')
group by owner, table_name
having count(*) = 4;
Ответ №1
Данные, которые вы хотите, находятся в таблице метаданных “cols”:
SELECT * FROM COLS WHERE COLUMN_NAME = 'id'
Это даст вам список таблиц, в которых есть все нужные столбцы:
select distinct
C1.TABLE_NAME
from
cols c1
inner join
cols c2
on C1.TABLE_NAME = C2.TABLE_NAME
inner join
cols c3
on C2.TABLE_NAME = C3.TABLE_NAME
inner join
cols c4
on C3.TABLE_NAME = C4.TABLE_NAME
inner join
tab t
on T.TNAME = C1.TABLE_NAME
where T.TABTYPE = 'TABLE' --could be 'VIEW' if you wanted
and upper(C1.COLUMN_NAME) like upper('%id%')
and upper(C2.COLUMN_NAME) like upper('%fname%')
and upper(C3.COLUMN_NAME) like upper('%lname%')
and upper(C4.COLUMN_NAME) like upper('%address%')
Чтобы сделать это в другой схеме, просто укажите схему перед таблицей, как в
SELECT * FROM SCHEMA1.COLS WHERE COLUMN_NAME LIKE '%ID%';
Если вы хотите совместить поиск многих схем с одним результатом вывода, вы можете сделать это:
SELECT DISTINCT
'SCHEMA1' AS SCHEMA_NAME
,TABLE_NAME
FROM SCHEMA1.COLS
WHERE COLUMN_NAME LIKE '%ID%'
UNION
SELECT DISTINCT
'SCHEMA2' AS SCHEMA_NAME
,TABLE_NAME
FROM SCHEMA2.COLS
WHERE COLUMN_NAME LIKE '%ID%'
Ответ №2
Чтобы найти имя столбца, используйте приведенный ниже запрос, если вы точно знаете имя столбца:
select owner,table_name from all_tab_columns where upper(column_name) =upper('keyword');
Чтобы найти имя столбца, если вы не знаете точное использование столбцов ниже:
select owner,table_name from all_tab_columns where upper(column_name) like upper('%keyword%');
Ответ №3
выберите table_name из dba_tab_columns где column_name = ‘THE_COLUMN_YOU_LOOK_FOR’;
Ответ №4
Вот один из них, который мы сохранили для findcol.sql, чтобы мы могли легко запускать его из SQLPlus
set verify off
clear break
accept colnam prompt 'Enter Column Name (or part of): '
set wrap off
select distinct table_name,
column_name,
data_type || ' (' ||
decode(data_type,'LONG',null,'LONG RAW',null,
'BLOB',null,'CLOB',null,'NUMBER',
decode(data_precision,null,to_char(data_length),
data_precision||','||data_scale
), data_length
) || ')' data_type
from all_tab_columns
where column_name like ('%' || upper('&colnam') || '%');
set verify on
Для того чтобы извлечь нужные столбцы из таблицы, поместите список этих столбцов после ключевого слова SELECT
, имя таблицы поместите после ключевого слова FROM
и выполните инструкцию. Приведенный ниже запрос возвратит список таблиц, владельцем которых вы являетесь, вместе с именами, назначенными табличным областям:
SELECT tablename.tablespacename FROM usertables;
Сортировка результатов запроса
Для сортировки результатов запроса вы можете использовать предложение ORDER BY
. В приведенном запросе результаты сортируются по имени таблиц:
SELECT tablename.tablespacename FROM user_tables ORDER BY tablename;
По умолчанию применяется сортировка по возрастанию. Вы можете отсортировать результаты в убывающем порядке, используя ключевое слово DESC
. Например:
ORDER BY tablename DESC;
Необязательное ключевое слово ASC
можно указать для задания сортировки по возрастанию. Приведенный ниже запрос сортирует таблицы сначала по убыванию имен табличных областей, затем по именам таблиц в возрастающем порядке:
SELECT tablename.tablespacename FROM user_tables ORDER BY tablespacename DESC tablename ASC;
Встроенная функция Oracle UPPER
позволяет производить сортировку с учетом регистра символов. Например:
SELECT table_name. tablespace_name
FROM user_tables
ORDER BY UPPER(table_name);
Для симметрии Oracle 12C, 18C также имеет встроенную функцию LOWER
. Функция LOWER
преобразует символы строки к нижнему регистру, a UPPER
— к верхнему.