mysql에서는 "CREATE VIEW" 문을 사용하여 뷰를 만들 수 있습니다. 구문 형식은 "CREATE VIEW eed5c230ec1e936e29d1cc474d0d3a9d"이며, 여기서 "eed5c230ec1e936e29d1cc474d0d3a9d"은 포함할 수 없습니다. 절의 하위 쿼리는 준비된 문 매개변수를 참조할 수 없습니다. 语句>
(권장 튜토리얼: mysql 비디오 튜토리얼)
뷰 생성은 기존 MySQL 데이터베이스 테이블에 뷰를 설정하는 것을 의미합니다. 뷰는 하나의 테이블 또는 여러 테이블에 생성될 수 있습니다.
기본 구문
CREATE VIEW 문을 사용하여 뷰를 생성할 수 있습니다.
구문 형식은 다음과 같습니다.
CREATE VIEW <视图名> AS <SELECT语句>
구문 설명은 다음과 같습니다.
Create View의 SELECT 문의 사양에는 다음과 같은 제한 사항이 있습니다.
CREATE VIEW 권한 외에도 사용자는 작업과 관련된 기본 테이블 및 기타 뷰에 대한 관련 권한도 갖습니다.
SELECT 문은 시스템 또는 사용자 변수를 참조할 수 없습니다.
SELECT 문은 FROM 절에 하위 쿼리를 포함할 수 없습니다.
SELECT 문은 준비된 문 매개변수를 참조할 수 없습니다.
뷰 정의에서 참조하는 테이블이나 뷰가 존재해야 합니다. 그러나 뷰를 생성한 후 정의가 참조하는 테이블이나 뷰를 삭제할 수 있습니다. CHECK TABLE 문을 사용하여 이러한 문제에 대한 뷰 정의를 확인할 수 있습니다.
ORDER BY 문은 뷰 정의에서 허용되지만 자체 ORDER BY 문을 사용하는 특정 뷰에서 선택하면 뷰 정의의 ORDER BY가 무시됩니다.
뷰 정의에서 TEMPORARY 테이블(임시 테이블)을 참조할 수 없으며, TEMPORARY 뷰를 생성할 수 없습니다.
WITH CHECK OPTION은 뷰 수정 시 삽입된 데이터가 WHERE에서 설정한 조건을 충족하는지 확인하는 것을 의미합니다.
단일 테이블을 기반으로 뷰 생성
MySQL은 단일 데이터 테이블에 뷰를 생성할 수 있습니다.
아래와 같이 test_db 데이터베이스에 있는 tb_students_info 테이블의 데이터를 확인하세요.
mysql> SELECT * FROM tb_students_info;
+----+--------+---------+------+------+--------+------------+
| id | name | dept_id | age | sex | height | login_date |
+----+--------+---------+------+------+--------+------------+
| 1 | Dany | 1 | 25 | F | 160 | 2015-09-10 |
| 2 | Green | 3 | 23 | F | 158 | 2016-10-22 |
| 3 | Henry | 2 | 23 | M | 185 | 2015-05-31 |
| 4 | Jane | 1 | 22 | F | 162 | 2016-12-20 |
| 5 | Jim | 1 | 24 | M | 175 | 2016-01-15 |
| 6 | John | 2 | 21 | M | 172 | 2015-11-11 |
| 7 | Lily | 6 | 22 | F | 165 | 2016-02-26 |
| 8 | Susan | 4 | 23 | F | 170 | 2015-10-01 |
| 9 | Thomas | 3 | 22 | M | 178 | 2016-06-07 |
| 10 | Tom | 4 | 23 | M | 165 | 2016-08-05 |
+----+--------+---------+------+------+--------+------------+
10 rows in set (0.00 sec)
【예제 1】tb_students_info 테이블에 view_students_info라는 뷰를 생성합니다. 입력 SQL 문과 실행 결과는 다음과 같습니다.
mysql> CREATE VIEW view_students_info
-> AS SELECT * FROM tb_students_info;
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT * FROM view_students_info;
+----+--------+---------+------+------+--------+------------+
| id | name | dept_id | age | sex | height | login_date |
+----+--------+---------+------+------+--------+------------+
| 1 | Dany | 1 | 25 | F | 160 | 2015-09-10 |
| 2 | Green | 3 | 23 | F | 158 | 2016-10-22 |
| 3 | Henry | 2 | 23 | M | 185 | 2015-05-31 |
| 4 | Jane | 1 | 22 | F | 162 | 2016-12-20 |
| 5 | Jim | 1 | 24 | M | 175 | 2016-01-15 |
| 6 | John | 2 | 21 | M | 172 | 2015-11-11 |
| 7 | Lily | 6 | 22 | F | 165 | 2016-02-26 |
| 8 | Susan | 4 | 23 | F | 170 | 2015-10-01 |
| 9 | Thomas | 3 | 22 | M | 178 | 2016-06-07 |
| 10 | Tom | 4 | 23 | M | 165 | 2016-08-05 |
+----+--------+---------+------+------+--------+------------+
10 rows in set (0.04 sec)
기본적으로 생성된 뷰에는 기본 테이블과 동일한 필드가 있습니다. 뷰 필드 이름을 지정하여 뷰를 생성할 수도 있습니다.
【예제 2】tb_students_info 테이블에 v_students_info라는 뷰를 생성합니다. 입력 SQL 문과 실행 결과는 다음과 같습니다.
mysql> CREATE VIEW v_students_info
-> (s_id,s_name,d_id,s_age,s_sex,s_height,s_date)
-> AS SELECT id,name,dept_id,age,sex,height,login_date
-> FROM tb_students_info;
Query OK, 0 rows affected (0.06 sec)
mysql> SELECT * FROM v_students_info;
+------+--------+------+-------+-------+----------+------------+
| s_id | s_name | d_id | s_age | s_sex | s_height | s_date |
+------+--------+------+-------+-------+----------+------------+
| 1 | Dany | 1 | 24 | F | 160 | 2015-09-10 |
| 2 | Green | 3 | 23 | F | 158 | 2016-10-22 |
| 3 | Henry | 2 | 23 | M | 185 | 2015-05-31 |
| 4 | Jane | 1 | 22 | F | 162 | 2016-12-20 |
| 5 | Jim | 1 | 24 | M | 175 | 2016-01-15 |
| 6 | John | 2 | 21 | M | 172 | 2015-11-11 |
| 7 | Lily | 6 | 22 | F | 165 | 2016-02-26 |
| 8 | Susan | 4 | 23 | F | 170 | 2015-10-01 |
| 9 | Thomas | 3 | 22 | M | 178 | 2016-06-07 |
| 10 | Tom | 4 | 23 | M | 165 | 2016-08-05 |
+------+--------+------+-------+-------+----------+------------+
10 rows in set (0.01 sec)
view_students_info와 v_students_info 두 뷰의 필드 이름은 다르지만 데이터는 동일한 것을 볼 수 있습니다. 따라서 뷰를 사용할 때 사용자는 실제 테이블의 데이터는 물론이고 기본 테이블의 구조까지 이해할 필요가 없어 데이터베이스의 보안을 확보할 수 있다.
여러 테이블을 기반으로 뷰 생성
MySQL에서는 CREATE VIEW 문을 사용하여 두 개 이상의 테이블에 뷰를 생성할 수도 있습니다.
【예제 3】tb_student_info 테이블과 tb_departments 테이블에 v_students_info 뷰를 생성합니다. 입력 SQL 문과 실행 결과는 다음과 같습니다.
mysql> CREATE VIEW v_students_info
-> (s_id,s_name,d_id,s_age,s_sex,s_height,s_date)
-> AS SELECT id,name,dept_id,age,sex,height,login_date
-> FROM tb_students_info;
Query OK, 0 rows affected (0.06 sec)
mysql> SELECT * FROM v_students_info;
+------+--------+------+-------+-------+----------+------------+
| s_id | s_name | d_id | s_age | s_sex | s_height | s_date |
+------+--------+------+-------+-------+----------+------------+
| 1 | Dany | 1 | 24 | F | 160 | 2015-09-10 |
| 2 | Green | 3 | 23 | F | 158 | 2016-10-22 |
| 3 | Henry | 2 | 23 | M | 185 | 2015-05-31 |
| 4 | Jane | 1 | 22 | F | 162 | 2016-12-20 |
| 5 | Jim | 1 | 24 | M | 175 | 2016-01-15 |
| 6 | John | 2 | 21 | M | 172 | 2015-11-11 |
| 7 | Lily | 6 | 22 | F | 165 | 2016-02-26 |
| 8 | Susan | 4 | 23 | F | 170 | 2015-10-01 |
| 9 | Thomas | 3 | 22 | M | 178 | 2016-06-07 |
| 10 | Tom | 4 | 23 | M | 165 | 2016-08-05 |
+------+--------+------+-------+-------+----------+------------+
10 rows in set (0.01 sec)
이 뷰를 통해 기본 테이블의 데이터를 안전하게 보호할 수 있습니다. 뷰에는 s_id, s_name 및 dept_name이 포함되며, s_id 필드는 tb_students_info 테이블의 id 필드에 해당하고, s_name 필드는 tb_students_info 테이블의 name 필드에 해당하며, dept_name 필드는 tb_departments 테이블의 dept_name 필드에 해당합니다.
위 내용은 mysql에서 뷰를 어떻게 생성하나요? create 문이란 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!