MySQL 뷰 목록을 가져오려면 어떻게 해야 합니까?
데이터베이스에 모든 보기를 나열하는 방법을 찾고 있습니다.
처음에 MySQL 포럼에서 다음과 같은 답변을 찾아 시도했습니다.
SELECT table_name
FROM information_schema.views
WHERE information_schema.views.table_schema LIKE 'view%';
빈 세트를 반납하는 게 어떻게 안 되는 거야? (그들이 안에 있는 거 알아!)
이것들도 실패합니다.
mysql> use information_schema;
Database changed
mysql> select * from views;
ERROR 1102 (42000): Incorrect database name 'mysql.bak'
mysql> select * from tables;
ERROR 1102 (42000): Incorrect database name 'mysql.bak'
왜 안 되지?
SHOW FULL TABLES IN database_name WHERE TABLE_TYPE LIKE 'VIEW';
데이터베이스에서 모든 보기를 찾기 위한 MySQL 쿼리
인스턴스의 모든 데이터베이스에서 모든 보기를 찾는 방법은 다음과 같습니다.
SELECT TABLE_SCHEMA, TABLE_NAME
FROM information_schema.tables
WHERE TABLE_TYPE LIKE 'VIEW';
특정 보기에 대한 추가 정보를 얻으려면 다음과 같이 하십시오.
두 개의 유효한 답변이 있더라도
SHOW FULL TABLES IN your_db_name WHERE TABLE_TYPE LIKE 'VIEW';
SELECT TABLE_SCHEMA, TABLE_NAME
FROM information_schema.TABLES
WHERE TABLE_TYPE LIKE 'VIEW' AND TABLE_SCHEMA LIKE 'your_db_name';
다음 사항을 적용할 수 있습니다(더 좋다고 생각합니다).
SELECT TABLE_SCHEMA, TABLE_NAME
FROM information_schema.VIEWS
WHERE TABLE_SCHEMA LIKE 'your_db_name';
와 직접 작업하는 것이 좋습니다.information_schema.VIEWS(이제 관찰은 더 이상 테이블이 아닌 VIEWS입니다)따라서 더 많은 데이터를 취득할 수 있습니다.DESC VIEWS자세한 것은, 을 참조해 주세요.
+----------------------+---------------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------------------+---------------------------------+------+-----+---------+-------+
| TABLE_CATALOG | varchar(64) | YES | | NULL | |
| TABLE_SCHEMA | varchar(64) | YES | | NULL | |
| TABLE_NAME | varchar(64) | YES | | NULL | |
| VIEW_DEFINITION | longtext | YES | | NULL | |
| CHECK_OPTION | enum('NONE','LOCAL','CASCADED') | YES | | NULL | |
| IS_UPDATABLE | enum('NO','YES') | YES | | NULL | |
| DEFINER | varchar(93) | YES | | NULL | |
| SECURITY_TYPE | varchar(7) | YES | | NULL | |
| CHARACTER_SET_CLIENT | varchar(64) | NO | | NULL | |
| COLLATION_CONNECTION | varchar(64) | NO | | NULL | |
+----------------------+---------------------------------+------+-----+---------+-------+
예를 들어,VIEW_DEFINITION를 사용할 수 있습니다.
SELECT TABLE_SCHEMA, TABLE_NAME, VIEW_DEFINITION
FROM information_schema.VIEWS
WHERE TABLE_SCHEMA LIKE 'your_db_name';
물론 고려할 수 있는 필드가 더 있습니다.
select * FROM information_schema.views\G;
이거면 될 거야.
USE INFORMATION_SCHEMA;
SELECT TABLE_SCHEMA, TABLE_NAME
FROM information_schema.tables
WHERE TABLE_TYPE LIKE 'VIEW';
그것을 움직여 보세요.mysql.bak에서 디렉토리화하다./var/lib/mysql말하다/root/뭐 그런 거.mysql이 그것을 발견하고 있는 것 같고, 그것이 원인일 수 있습니다.ERROR 1102 (42000): Incorrect database name 'mysql.bak'에러입니다.
표시되는 오류는 MySQL 데이터 디렉토리에 MySQL이 아닌 디렉토리가 생성되었기 때문일 수 있습니다.MySQL은 데이터베이스 구조를 파일 시스템에 직접 매핑하고 데이터베이스는 디렉토리에 매핑되며 테이블은 이러한 디렉토리에 있는 파일입니다.
작동하지 않는 데이터베이스의 이름은 누군가가 mysql 데이터베이스 디렉토리를 백업에 복사한 후 MySQL의 데이터 디렉토리에 남겨둔 것처럼 보입니다.데이터베이스를 아무 용도로나 사용하지 않는 한 이 문제는 없습니다.그러나 정보 스키마는 발견된 모든 데이터베이스를 검사하고 이 데이터베이스가 실제 데이터베이스가 아님을 발견하면 문제가 발생합니다.
해결책은 하드 디스크에서 mysql.bak 디렉토리를 찾아 MySQL에서 멀리 옮기는 것입니다.
Mysql 데이터베이스에 뷰를 작성한 경우 특정 데이터베이스에 있는 모든 테이블을 볼 수 있습니다.
기입:
--mysql> SHOW TABLES;
데이터베이스 테이블 및 뷰 목록이 나타납니다.
모든 보기를 찾는 다른 방법:
information_schema에서 DISTING table_name을 선택합니다.표 여기서 table_type = '보기'
언급URL : https://stackoverflow.com/questions/2834016/how-to-get-a-list-of-mysql-views
'programing' 카테고리의 다른 글
| 'local value'와 'master value'의 차이점은 무엇입니까? (0) | 2023.01.15 |
|---|---|
| 링크를 클릭할 때 확인 대화 상자를 표시하는 방법은 무엇입니까? (0) | 2023.01.15 |
| 루프에서 반복을 건너뛰는 방법 (0) | 2023.01.15 |
| Python은 해석됩니까, 컴파일됩니까, 아니면 둘 다입니까? (0) | 2023.01.15 |
| php - 연관 배열의 숫자 인덱스를 가져옵니다. (0) | 2023.01.15 |