AS "은 FROM 절에 하위 쿼리를 포함할 수 없습니다. 준비된 명령문 매개변수를 참조하십시오."/> AS "은 FROM 절에 하위 쿼리를 포함할 수 없습니다. 준비된 명령문 매개변수를 참조하십시오.">

 >  기사  >  데이터 베이스  >  mysql에서 뷰를 어떻게 생성하나요? create 문이란 무엇입니까?

mysql에서 뷰를 어떻게 생성하나요? create 문이란 무엇입니까?

青灯夜游
青灯夜游원래의
2020-10-13 16:11:5219514검색

mysql에서는 "CREATE VIEW" 문을 사용하여 뷰를 만들 수 있습니다. 구문 형식은 "CREATE VIEW eed5c230ec1e936e29d1cc474d0d3a9d"이며, 여기서 "eed5c230ec1e936e29d1cc474d0d3a9d"은 포함할 수 없습니다. 절의 하위 쿼리는 준비된 문 매개변수를 참조할 수 없습니다. 语句>语句>

mysql에서 뷰를 어떻게 생성하나요? create 문이란 무엇입니까?

(권장 튜토리얼: mysql 비디오 튜토리얼)

뷰 생성은 기존 MySQL 데이터베이스 테이블에 뷰를 설정하는 것을 의미합니다. 뷰는 하나의 테이블 또는 여러 테이블에 생성될 수 있습니다.

기본 구문

CREATE VIEW 문을 사용하여 뷰를 생성할 수 있습니다.

구문 형식은 다음과 같습니다.

CREATE VIEW <视图名> AS <SELECT语句>

구문 설명은 다음과 같습니다.

  • 3fc120a62974e3a500e68b9c612170f3: 보기의 이름을 지정합니다. 이름은 데이터베이스에서 고유해야 하며 다른 테이블이나 뷰와 동일한 이름을 가질 수 없습니다.

  • eed5c230ec1e936e29d1cc474d0d3a9d: 여러 기본 테이블이나 소스 뷰를 쿼리하는 데 사용할 수 있는 뷰를 생성하려면 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.