o Создайте скрипт, который позволит получать информацию об именах колонок, типах данных, допустимых объемах ячеек, а также о допустимости пустых ячеек. Пользователь должен иметь возможность вводить имя таблицы. Задайте псевдонимы для столбцов DATA_PECISION и DATA_SCALE. Сохраните скрипт в файле.
Например, если пользователь ввел DEPARTMENTS, он должен получить следующий результат:
COLUMN_NAME
DATA_TYPE
DATA_LENGTH
PRECISION
SCALE
N
DEPARTMENT_ID
NUMBER
N
DEPARTMENT_NAME
VARCHAR2
N
MANAGER_ID
NUMBER
Y
LOCATION_ID
NUMBER
Y
select column_name, data_type, data_length, data_precision PRECISION, data_scale SCALE, nullable from user_tab_columns where table_name=upper('&name');
COLUMN_NAME
DATA_TYPE
DATA_LENGTH
PRECISION
SCALE
NULLABLE
DEPARTMENT_ID
NUMBER
N
DEPARTMENT_NAME
VARCHAR2
N
MANAGER_ID
NUMBER
Y
LOCATION_ID
NUMBER
Y
Создайте скрипт для получения информации об именах колонок, именах ограничений, условиях поиска и статусе таблицы. Для получения необходимой информации Вы должны соединить таблицы USER_CONSTRAINTS и USER_CONS_COLUMNS. Пользователь должен иметь возможность вводить имя таблицы. Сохраните скрипт в файле.
Например, если пользователь ввел DEPARTMENTS, он должен получить следующий результат:
from user_cons_columns ucc join USER_CONSTRAINTS uc on(ucc.constraint_name=uc.constraint_name)
where ucc.table_name=upper('&name');
COLUMN_NAME
CONSTRAINT_NAME
SEARCH_CONDITION
STATUS
LAST_NAME
SYS_C00138204
"LAST_NAME" IS NOT NULL
ENABLED
EMAIL
SYS_C00138205
"EMAIL" IS NOT NULL
ENABLED
HIRE_DATE
SYS_C00138206
"HIRE_DATE" IS NOT NULL
ENABLED
JOB_ID
SYS_C00138207
"JOB_ID" IS NOT NULL
ENABLED
SALARY
EMP_SALARY_MIN
salary > 0
ENABLED
EMAIL
EMP_EMAIL_UK
ENABLED
EMPLOYEE_ID
EMP_EMP_ID_PK
ENABLED
DEPARTMENT_ID
EMP_DEPT_FK
ENABLED
MANAGER_ID
EMP_MANAGER_FK
ENABLED
JOB_ID
EMP_JOB_FK
ENABLED
Добавьте комментарий к таблице DEPARTMENTS. Затем обратитесь с запросом к представлению USER_TAB_COMMENTS, для проверки факта создания комментария.
COMMENTS
Company department information including name, code and location
COMMENT ON TABLE DEPARTMENTS
IS 'This is my comment';
COMMENT on table departments 'THIS IS MY COMMENT' succeeded.
select * from USER_TAB_COMMENTS where comments='This is my comment';
TABLE_NAME
TABLE_TYPE
COMMENTS
DEPARTMENTS
TABLE
This is my comment
Найдите имена всех синонимов в вашей схеме
select synonym_name from user_synonyms;
SYNONYM_NAME
EMP
SYNONYM_NAME
TABLE_OWNER
TABLE_NAME
DB_LINK
EMP
HR
EMPLOYEES
Из представления словаря данных USER_VIEWS выберите столбцы VIEW_NAME и TEXT.
Примечание:для просмотра содержимого столбца типа LONG выполните команду SETLONGn, где n – число выводимых запросом символов из столбца типа LONG.
select VIEW_NAME, TEXT from USER_VIEWS;
VIEW_NAME
TEXT
SALARY_VU
( select e.last_name "Employee", d.department_name "Department", e.salary "Salary", g.grade_level "Grade" from employees e left join departments d on (e.department_id=d.department_id) left join job_grades g on (e.salary between g.lowest_sal and highest_sal) )
EMPLOYEES_VU
( select employee_id, last_name EMPLOYEE, department_id from employees )
DEPT50
( select employee_id EMPNO, last_name EMPLOYEE, department_id DEPTNO from employees where department_Id=50 ) with check option
BOOKAUTHORPUBLISHER
SELECT DISTINCT Author.Famil, Book.bookName, publisher.publishName FROM Author, Book, Book_Author, Book_publicher, publisher WHERE (Book.isbn=book_Author.isbn and book_author.inn=author.inn) and (book.isbn=Book_publicher.isbn and book_publicher.regNo=publisher.regNo)
6. Найдите имена всех ваших последовательностей. Напишите запрос для получения следующей информации о ваших последовательностях: имя последовательности, максимальное значение, величина приращения, последнее значение. Сохраните скрипт в файле. Выполните скрипт.
SEQUENCE_NAME
MAX_VALUE
INCREMENT_BY
LAST_NUMBER
DEPARTMENTS_SEQ
EMPLOYEES_SEQ
1,0000E+27
LOCATIONS_SEQ
select sequence_name, max_value, INCREMENT_BY, LAST_NUMBER from user_sequences;
select * from user_tables;
select * from user_constraints;
select * from user_cons_columns;
select * from user_tab_columns;
select ucc.table_name, ucc.column_name, ucc2.column_name,max_column.columnID from user_cons_columns ucc
join user_constraints uc on(ucc.constraint_name=uc.constraint_name)
join user_cons_columns ucc2 on(ucc2.constraint_name=uc.constraint_name)
join (select max(ucc3.position) columnID,ucc3.table_name from user_cons_columns ucc3 join user_constraints uc3 on (ucc3.constraint_name=uc3.constraint_name)
where uc3.constraint_type='P'
group by ucc3.table_name) max_column on (max_column.table_name=ucc.table_name)
where ucc.position=1 and uc.constraint_type='P' and ucc2.position=2 and uc.constraint_type='P';
select max(ucc3.position) columnID,ucc3.table_name from user_cons_columns ucc3 join user_constraints uc3 on (ucc3.constraint_name=uc3.constraint_name)
where uc3.constraint_type='P'
group by ucc3.table_name;
select table_name, min(table_name_r) table_name_r from(
select p_con.table_name, r_con.table_name table_name_r from user_constraints p_con join user_constraints r_con on (p_con.constraint_name=r_con.r_constraint_name)
order by p_con.table_name) group by table_name;