Мне нужно найти следующую информацию о всех определяемых пользователем таблиц в одном запросе в Oracle11g:Получить подробную информацию из системного каталога в Oracle 11G
- Имя таблицы
- Имя столбца
- Constraint имя
- Constraint Тип - используйте 'ПК', 'ФК', 'СК' и 'NN' вместо 1 буквенные коды
- Поиск Условия для любого Check (CK) ограничения
- Таблица и колонки, что каждый FK ссылается
До сих пор мне удалось это:
SELECT table_name FROM user_tables ORDER BY table_name;
TABLE_NAME
---------------
CLIENT
EMPLOYEE
FAULTREPORT
OUTLET
RAGREEMENT
VEHICLE
SELECT table_name, constraint_name, constraint_type
FROM user_constraints
WHERE table_name IN ('CLIENT','EMPLOYEE','FAULTREPORT','OUTLET','RAGREEMENT','VEHICLE')
ORDER BY table_name;
TABLE_NAME CONSTRAINT_NAME C SEARCH_CONDITION
--------------- ------------------------------ - --------------------------------------------------------------------------------
CLIENT CLIENT_CLIENTNAME_NN C clientName IS NOT NULL
CLIENT CLIENT_STREET_NN C street IS NOT NULL
CLIENT CLIENT_CITY_NN C city IS NOT NULL
CLIENT CLIENT_STATE_NN C state IS NOT NULL
CLIENT CLIENT_EMAIL_CK C REGEXP_LIKE(email,'^[A-Z0-9._%-][email protected][A-Z0-9.-]+\.[A-Z]{2,}$','i') AND email IS NOT
NULL
CLIENT CLIENT_PHONE_CK C REGEXP_LIKE(phone,'^(\(\d{3}\))([[:blank:]])\d{3}-\d{4}$|^\d{3}(-)\d{3}(-)\d{4}$
|^\d{10}$')
AND phone IS NOT NULL
CLIENT CLIENT_CLIENTNO_PK P
EMPLOYEE EMPLOYEE_LNAME_NN C lname IS NOT NULL
EMPLOYEE EMPLOYEE_NUM_PK P
EMPLOYEE EMPLOYEE_OUTLET_NUM_FK R
EMPLOYEE EMPLOYEE_FNAME_NN C fname IS NOT NULL
EMPLOYEE EMPLOYEE_DOB_CK C hireDate >= ADD_MONTHS(dob, 216)
EMPLOYEE EMPLOYEE_PHONE_CK C REGEXP_LIKE(phone,'^(\(\d{3}\))([[:blank:]])\d{3}-\d{4}$|^\d{3}(-)\d{3}(-)\d{4}$
|^\d{10}$')
AND phone IS NOT NULL
EMPLOYEE EMPLOYEE_GENDER_CK C gender in ('MALE', 'FEMALE')
FAULTREPORT FAULTREPORT_DATECHECKED_NN C dateChecked IS NOT NULL
FAULTREPORT FAULTREPORT_REPORTNUM_PK P
FAULTREPORT FAULTREPORT_EMPLOYEE_NUM_FK R
FAULTREPORT FAULTREPORT_RENTAL_NUM_FK R
FAULTREPORT FAULTREPORT_LICENSENO_NN C licenseNo IS NOT NULL
OUTLET OUTLET_STREET_NN C street IS NOT NULL
OUTLET OUTLET_NUM_PK P
OUTLET OUTLET_STATE_NN C state IS NOT NULL
OUTLET OUTLET_ZIPCODE_NN C zipCode IS NOT NULL
OUTLET OUTLET_PHONE_CK C REGEXP_LIKE(phone,'^(\(\d{3}\))([[:blank:]])\d{3}-\d{4}$|^\d{3}(-)\d{3}(-)\d{4}$
|^\d{10}$')
AND phone IS NOT NULL
OUTLET OUTLET_CITY_NN C city IS NOT NULL
OUTLET OUTLET_MGR_NUM_FK R
RAGREEMENT RAGREEMENT_CLIENT_NUM_FK R
RAGREEMENT RAGREEMENT_LICENSE_NUM_FK R
RAGREEMENT RAGREEMENT_MILEAGE_CK C mileagebefore < mileageafter
RAGREEMENT RAGREEMENT_INSURANCETYPE_NN C insurancetype IS NOT NULL
RAGREEMENT RAGREEMENT_PK P
RAGREEMENT RAGREEMENT_STARTDATE_NN C startdate IS NOT NULL
RAGREEMENT RAGREEMENT_MILEAGEBEFORE_NN C mileagebefore IS NOT NULL
VEHICLE VEHICLE_DAILYRATE_NN C dailyrate IS NOT NULL
VEHICLE VEHICLE_MODEL_NN C model IS NOT NULL
VEHICLE VEHICLE_MAKE_NN C make IS NOT NULL
VEHICLE SYS_C0010620 C "LICENSENO" IS NOT NULL
VEHICLE VEHICLE_LICENSE_NUM_PK P
VEHICLE VEHICLE_YEAR_CK C EXTRACT(YEAR FROM year) > 2005 AND year IS NOT NULL
VEHICLE VEHICLE_OUT_NUM_FK R
40 rows selected.
Может кто-нибудь помочь мне? Благодаря!
Как насчет всех t он столбцы в таблице и те, которые имеют ограничение на это? – AngryPanda
Это дает мне комбинацию всех столбцов и ограничений. – AngryPanda