이 문서는 지원되지 않는 Postgre토토 베이 버전에 대한 것입니다.
당신은 다음과 같은 페이지를 보고 싶을 수도 있습니다.Postgre배트맨 토토 : 문서 : 17 : 4 장 배트맨 토토 구문버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

4장. 토토 베이 구문

이 장에서는 토토 베이 구문에 대해 설명합니다. 이는 다음 장을 이해하기 위한 기초 토토 베이 명령이 정의 및 정의에 적용되는 방법에 대해 자세히 설명합니다. 데이터를 수정합니다.

또한 이미 토토 베이에 익숙한 사용자에게는 다음 내용을 읽어볼 것을 권장합니다. 여러 가지 규칙이 있으므로 이 장에서는 주의 깊게 살펴보세요. 토토 베이 데이터베이스 간에 일관되지 않게 구현되는 개념 또는 다음과 관련된 것입니다.포스트그레토토 베이.

4.1. 어휘 구조

토토 베이 입력은 다음의 시퀀스로 구성됩니다.명령. 명령은 시퀀스로 구성됩니다. 의토큰, 세미콜론으로 종료됨 (";"). 입력 스트림의 끝 또한 명령을 종료합니다. 유효한 토큰은 다음에 따라 다릅니다. 특정 명령의 구문.

토큰은 다음과 같습니다.키워드, 안식별자, 아인용된 식별자, 아리터럴(또는 상수) 또는 특수 문자 상징. 토큰은 일반적으로 공백(공백, 탭, 줄 바꿈), 그러나 모호함이 없다면 그럴 필요는 없습니다. 일반적으로 특수 문자가 인접한 경우에만 해당됩니다. 다른 토큰 유형으로).

추가로,댓글다음에서 발생할 수 있습니다. 토토 베이 입력. 그것들은 토큰이 아니며 사실상 동일합니다. 공백으로.

예를 들어, 다음은 (구문적으로) 유효한 토토 베이입니다 입력:

SELECT * FROM MY_TABLE;
업데이트 MY_TABLE SET A = 5;
MY_TABLE 값에 삽입(3, '안녕하세요');

이것은 한 줄에 하나씩 세 가지 명령의 시퀀스입니다(비록 이는 필수가 아닙니다. 한 줄에 둘 이상의 명령이 올 수 있습니다. 명령은 여러 줄에 걸쳐 유용하게 분할될 수 있습니다.)

토토 베이 구문은 어떤 토큰에 관해 일관성이 없습니다. 명령과 피연산자 또는 매개변수를 식별합니다. 는 처음 몇 개의 토큰은 일반적으로 명령 이름이므로 위의 예에서 우리는 일반적으로 a"선택","업데이트""삽입"명령. 그러나 예를 들어업데이트명령에는 항상 다음이 필요합니다.SET특정 항목에 표시되는 토큰 위치 및 이 특정 변형삽입또한 다음이 필요합니다완전해지려면. 정확한 구문 각 명령에 대한 규칙은 다음에 설명되어 있습니다.파트 VI.

4.1.1. 식별자 및 키 단어

다음과 같은 토큰선택, 업데이트또는에 위의 예는 다음의 예입니다.키 단어, 즉 고정된 의미를 갖는 단어입니다. 토토 베이 언어. 토큰MY_TABLE그리고A다음의 예입니다식별자. 테이블 이름을 식별하고, 명령에 따라 열 또는 기타 데이터베이스 개체 그들은 사용됩니다. 따라서 때로는 간단히 호출됩니다."이름". 키워드 및 식별자 동일한 어휘 구조를 가지고 있어 알 수 없음을 의미합니다. 토큰이 식별자인지 아니면 키워드인지 여부 언어를 아는 것. 핵심 단어의 전체 목록은 다음과 같습니다. 에서 발견됨스포츠 토토 PostgreSQL : 문서 : 8.0 : SQL 키어.

토토 베이 식별자와 키워드는 문자로 시작해야 합니다 (a-z하지만 발음 구별 부호가 있는 문자와 라틴 문자가 아닌 문자도 포함) 또는 밑줄(_). 후속 식별자나 키워드의 문자는 문자일 수 있습니다. 밑줄, 숫자(0-9) 또는 달러 기호($). 달러 기호는 허용되지 않습니다. 토토 베이 표준 문자에 따른 식별자이므로 이를 사용하면 응용 프로그램의 이식성이 떨어질 수 있습니다. 토토 베이 표준은 숫자나 숫자가 포함된 키워드를 정의하지 않습니다. 밑줄로 시작하거나 끝나므로 이 식별자는 형태는 미래와의 충돌 가능성에 대해 안전합니다. 표준의 확장입니다.

시스템은 다음을 사용하지 않습니다. 이상NAMEDATALEN-1자 식별자; 명령으로 더 긴 이름을 쓸 수 있지만 잘릴 것입니다. 기본적으로,NAMEDATALEN은 64이므로 최대 식별자는 길이는 63입니다. 이 제한에 문제가 있는 경우 늘릴 수 있습니다. 를 변경하여NAMEDATALEN상수 에서src/include/postgres_ext.h.

식별자 및 키 단어 이름은 대소문자를 구분합니다. 그러므로

MY_TABLE 세트 A 업데이트 = 5;

동등하게 다음과 같이 쓸 수 있습니다.

업데이트 my_Table Set a = 5;

자주 사용되는 관례는 키워드를 대문자로 쓰는 것입니다. 대소문자 및 이름은 소문자로, 예:

UPDATE my_table SET a = 5;

두 번째 종류가 있습니다 식별자: the구분됨 식별자또는인용된 식별자. 임의의 문자 시퀀스를 포함하여 구성됩니다. 큰따옴표("). 구분된 식별자는 항상 식별자이지 키워드가 아닙니다. 그래서"선택"을 참조하는 데 사용될 수 있습니다. 이름이 지정된 열 또는 테이블"선택", 반면에 인용되지 않은선택아마도 키워드로 간주되므로 구문 분석 오류가 발생합니다. 테이블이나 열 이름이 필요한 곳에 사용될 때. 는 예는 다음과 같이 인용된 식별자를 사용하여 작성할 수 있습니다.

업데이트 "my_table" SET "a" = 5;

인용된 식별자에는 다음 문자 이외의 모든 문자가 포함될 수 있습니다. 큰 따옴표 자체. (큰따옴표를 포함하려면 두 개를 쓰세요. 큰따옴표.) 이를 통해 테이블이나 열을 구성할 수 있습니다. 다른 방법으로는 불가능할 이름(예: 공백이나 앰퍼샌드를 포함합니다. 길이 제한은 여전히 적용됩니다.

식별자를 인용하면 대소문자도 구분됩니다. 따옴표가 없는 이름은 항상 소문자로 접혀집니다. 에 대한 예, 식별자FOO, foo"foo"다음과 같은 것으로 간주됩니다.포스트그레토토 베이하지만"푸"그리고"FOO"있습니다 이 세 가지와 서로 다릅니다. (접이식 따옴표가 없는 이름을 소문자로 변환포스트그레토토 베이토토 베이과 호환되지 않습니다. 표준에 따르면 인용되지 않은 이름은 접혀야 합니다. 대문자. 따라서,foo해야 합니다 에 해당함"FOO"아님"foo"표준에 따릅니다. 원한다면 휴대용 애플리케이션을 작성하려면 항상 다음을 수행하는 것이 좋습니다. 특정 이름을 인용하거나 절대 인용하지 마세요.)

4.1.2. 상수

세 가지 종류가 있습니다암시적으로 유형이 지정된 상수포스트그레토토 베이: 문자열, 비트 문자열 및 숫자. 상수는 명시적 유형으로 지정할 수도 있습니다. 보다 정확한 표현이 가능하며, 시스템에 의한 효율적인 처리. 이러한 대안은 다음 하위 섹션에서 논의됩니다.

4.1.2.1. 문자열 상수

문자열 상수 토토 베이은 다음으로 둘러싸인 임의의 문자 시퀀스입니다. 작은따옴표('), 예를 들어'이것은 문자열입니다'. 는 작은따옴표 문자를 작성하는 표준 호환 방법 문자열 상수 내에서 두 개의 인접한 단일을 쓰는 것입니다 따옴표(예:'다이앤'의 말'. 포스트그레토토 베이또한 허용합니다 백슬래시()로 이스케이프할 작은따옴표\), 예를 들어 동일한 문자열은 다음과 같을 수 있습니다. 작성됨'다이앤의 말'.

또 다른Postgre토토 베이확장은 C 스타일 백슬래시 이스케이프를 사용할 수 있다는 것입니다.\b백스페이스입니다.\f폼피드입니다.\n개행 문자입니다.\r캐리지 리턴입니다.\t은 탭입니다. 그리고\xxx, 여기서xxx은 8진수이고 바이트입니다. 해당 코드로. (그것은 당신의 책임입니다 생성한 바이트 시퀀스가 유효한 문자인지 확인하세요. 서버 문자 세트 인코딩.) 기타 모든 문자 백슬래시 뒤에 오는 것은 문자 그대로 받아들여집니다. 따라서 포함하려면 문자열 상수에 백슬래시를 넣으면 두 개를 씁니다. 백슬래시.

코드 0이 있는 문자는 문자열에 포함될 수 없습니다. 상수.

다음으로만 구분되는 두 개의 문자열 상수 공백적어도 개행 하나연결되어 효과적으로 처리됩니다. 마치 문자열이 하나의 상수로 쓰여진 것처럼 말입니다. 에 대한 예:

'foo' 선택
'바';

다음과 동일함

'foobar' 선택;

하지만

'foo' '바' 선택;

은 유효한 구문이 아닙니다. (이 약간 이상한 행동은 에 의해 지정됨토토 베이; Postgre토토 베이팔로잉 중 표준입니다.)

4.1.2.2. 달러 인용 문자열 상수

문자열을 지정하는 표준 구문은 상수는 일반적으로 편리하지만 어려울 수 있습니다. 원하는 문자열에 단일 문자열이 많이 포함되어 있는 경우 이해 따옴표나 백슬래시는 각각 두 배로 늘려야 하기 때문입니다. 이러한 상황에서 더 읽기 쉬운 쿼리를 허용하려면,Postgre토토 베이제공 다른 방법으로, 호출됨"달러 인용", 문자열 상수를 작성합니다. 달러 인용 문자열 상수는 달러 기호($), 선택사항"태그"0개 이상의 문자, 또 다른 문자 달러 기호, 임의의 문자 시퀀스 문자열 내용, 달러 기호, 동일한 태그 이 달러 견적과 달러 기호를 시작했습니다. 예를 들어, 문자열을 지정하는 두 가지 방법이 있습니다."다이앤의 말"달러 사용 인용:

$$다이앤의 말$$
$SomeTag$Dianne의 말$SomeTag$

달러로 묶인 문자열 내부에는 단일 이스케이프할 필요 없이 따옴표를 사용할 수 있습니다. 실제로, 달러로 묶인 문자열 안에는 문자가 없습니다. 이스케이프됨: 문자열 내용은 항상 문자 그대로 작성됩니다. 백슬래시는 특별하지 않으며 달러 기호도 마찬가지입니다. 오프닝과 일치하는 시퀀스의 일부가 아닌 한 태그.

달러로 묶인 문자열 상수를 다음과 같이 중첩할 수 있습니다. 각 중첩 수준에서 다른 태그를 선택합니다. 이것이 가장 함수 정의를 작성할 때 일반적으로 사용됩니다. 에 대한 예:

$기능$
시작
    RETURN ($1 ~ $q$[\t\r\n\v\\]$q$);
끝;
$기능$

여기, 순서$q$[\t\r\n\v\\]$q$은 달러로 묶인 리터럴 문자열[\t\r\n\v\\], 다음 경우에 인식됩니다. 함수 본문은 다음과 같이 실행됩니다.Postgre토토 베이. 하지만 시퀀스 이후로 외부 달러 인용 구분 기호와 일치하지 않습니다.$기능$, 좀 더 남았네요 외부 문자열까지 상수 내의 문자 우려된다.

달러로 묶인 문자열의 태그가 있는 경우 다음과 같습니다. 따옴표가 없는 식별자와 동일한 규칙입니다. 달러 기호가 포함되어 있습니다. 태그는 대소문자를 구분하므로$tag$String 콘텐츠$tag$이다 맞지만$TAG$문자열 콘텐츠$태그$그렇지 않습니다.

키워드 뒤에 오는 달러 인용 문자열 또는 식별자는 공백으로 구분되어야 합니다. 그렇지 않으면 달러 인용 구분 기호가 다음과 같이 사용됩니다. 이전 식별자의 일부입니다.

달러 인용은 토토 베이 표준의 일부는 아니지만 복잡한 문자열을 작성하는 데 더 편리한 방법인 경우가 많습니다. 표준 호환 작은따옴표 구문이 아닌 리터럴입니다. 문자열을 표현할 때 특히 유용합니다. 종종 필요한 것처럼 다른 상수 내부의 상수 절차적 함수 정의. 작은따옴표 구문을 사용하면 위 예의 각 백슬래시는 다음과 같아야 합니다. 4개의 백슬래시로 작성되며 2개로 줄어듭니다. 원래 문자열 상수를 구문 분석할 때 백슬래시를 사용하고 그런 다음 내부 문자열 상수가 다시 구문 분석되면 1로 변경됩니다. 함수 실행 중.

4.1.2.3. 비트 문자열 상수

비트 문자열 상수는 일반 문자열 상수처럼 보입니다. 와 함께B(대문자 또는 소문자) 시작 인용문 직전(중재 없음) 공백), 예:B'1001'. 는 비트 문자열 상수 내에서 허용되는 문자만 다음과 같습니다.0그리고1.

또는 다음에서 비트 문자열 상수를 지정할 수 있습니다. 16진수 표기법, 선행 사용X(대문자 또는 소문자), 예:X'1FF'. 이 표기법은 각각 4개의 이진수로 구성된 비트 문자열 상수 16진수.

두 가지 형태의 비트 문자열 상수가 계속될 수 있습니다. 일반 문자열 상수와 같은 방식으로 줄을 넘어갑니다. 비트열 상수에는 달러 인용을 사용할 수 없습니다.

4.1.2.4. 숫자 상수

숫자 상수는 다음 일반 항목에서 허용됩니다. 양식:

숫자
숫자.[숫자][e[+-]숫자]
[숫자].숫자[e[+-]숫자]
자리e[+-]숫자

어디에서숫자하나 또는 더 많은 소수 자릿수(0~9). 최소한 한 자리 숫자는 필수입니다. 소수점을 사용하는 경우 소수점 앞이나 뒤에 있어야 합니다. 에 지수 표시() 뒤에는 최소한 한 자리의 숫자가 와야 합니다.e)(있는 경우). 없을 수도 있다 상수에 포함된 공백 또는 기타 문자. 참고 선행하는 더하기 또는 빼기 기호는 실제로는 그렇지 않습니다. 상수의 일부로 간주됩니다. 적용된 연산자입니다 상수로.

다음은 유효한 숫자 상수의 몇 가지 예입니다:

42
3.5
4.
.001
5e2
1.925e-3

A 소수점이나 소수점을 포함하지 않는 숫자 상수 지수는 처음에 유형으로 간주됩니다.정수값이 유형에 맞는 경우정수(32비트); 그렇지 않은 경우에는 다음과 같은 것으로 추정됩니다. 유형이 되세요비긴트그 값이 적합하다면 유형비긴트(64비트); 그렇지 않으면 유형으로 간주됩니다.숫자. 소수점 및/또는 지수를 포함하는 상수는 다음과 같습니다. 처음에는 항상 유형으로 추정됩니다.숫자.

숫자 상수의 처음에 할당된 데이터 유형 유형 분석의 시작점일 뿐입니다. 알고리즘. 대부분의 경우 상수는 다음과 같습니다. 가장 적절한 유형으로 자동으로 강제 변환됩니다. 상황에 따라. 필요한 경우 강제로 특정 데이터 유형으로 해석되는 숫자 값 캐스팅합니다.예를 들어, 숫자 값을 강제로 유형으로 처리할 수 있습니다.실제 (float4) 서면으로

REAL '1.23' -- 문자열 스타일
1.23::REAL -- Postgre토토 베이(역사적) 스타일

이것들은 사실 일반의 특별한 경우일 뿐입니다. 캐스팅 표기법은 다음에 논의됩니다.

4.1.2.5. 상수 다른 유형

an의 상수임의의유형을 입력할 수 있습니다. 다음 표기법 중 하나를 사용합니다.

유형 '문자열'
'문자열'::유형캐스트('문자열' 그대로유형 )

문자열 상수의 텍스트가 입력으로 전달됩니다 라는 유형에 대한 변환 루틴유형. 결과는 표시된 유형. 명시적인 유형 캐스트는 다음과 같은 경우 생략될 수 있습니다. 상수의 유형에 대해서는 모호함이 없습니다. (예를 들어 테이블에 직접 할당하는 경우 열), 이 경우 자동으로 강제됩니다.

문자열 상수는 다음 중 하나를 사용하여 작성할 수 있습니다. 토토 베이 표기법 또는 달러 인용.

다음을 사용하여 유형 강제를 지정하는 것도 가능합니다. 함수형 구문:

유형 이름 ( '문자열' )

그러나 모든 유형 이름이 이런 방식으로 사용될 수 있는 것은 아닙니다. 참조섹션 4.2.8자세한 내용은.

::, 캐스트()및 함수 호출 구문도 가능합니다. 임의의 런타임 유형 변환을 지정하는 데 사용됩니다. 에서 논의된 표현,섹션 4.2.8. 하지만 형식은유형 '문자열'다음 용도로만 사용할 수 있습니다. 리터럴 상수의 유형을 지정합니다. 또 다른 제한 사항 에유형 '문자열'그런가요 배열 유형에서는 작동하지 않습니다. 사용::또는캐스트()에 배열 상수의 유형을 지정합니다.

4.1.3. 운영자

연산자 이름은 최대의 순서입니다NAMEDATALEN-1(기본적으로 63) 문자 다음 목록:

+ - * / <  = ~ ! @ # % ^ & | ` ?

거기 그러나 연산자 이름에는 몇 가지 제한 사항이 있습니다.
  • --그리고/*연산자 어디에도 나타날 수 없습니다 이름은 시작으로 간주되므로 댓글.

  • 여러 문자로 된 연산자 이름은 다음으로 끝날 수 없습니다.+또는-, 이름에 다음 중 하나 이상이 포함되어 있지 않은 경우 문자:

    ~ ! @ # % ^ & | ` ?

    용 예@-허용됩니다 운영자 이름이지만*-그렇지 않습니다. 이 제한은 다음을 허용합니다.Postgre토토 베이토토 베이 규격을 구문 분석하기 위해 토큰 사이에 공백이 필요 없는 쿼리입니다.

토토 베이 표준이 아닌 연산자 이름으로 작업할 때, 일반적으로 인접한 연산자를 공백으로 구분해야 합니다. 모호함을 피하기 위해. 예를 들어, 왼쪽을 정의한 경우 이름이 지정된 단항 연산자@, 넌 할 수 없어 쓰다X*@Y; 당신은 작성해야합니다X* @Y그것을 보장하기 위해Postgre토토 베이두 개의 연산자로 읽습니다. 이름이 하나도 없습니다.

4.1.4. 특수문자

영숫자가 아닌 일부 문자에는 특수 문자가 있습니다. 즉, 운영자와는 다르다는 뜻이다. 세부정보 사용법은 해당 위치에서 찾을 수 있습니다. 구문 요소가 설명됩니다. 이 섹션은 다음 목적으로만 존재합니다. 이들의 존재를 조언하고 목적을 요약합니다. 문자.

  • 달러 기호($) 다음에 숫자는 위치 매개변수를 나타내는 데 사용됩니다. 함수 정의의 본문 또는 준비된 문의 내용입니다. 에서 다른 상황에서는 달러 기호가 식별자 또는 달러로 묶인 문자열 상수입니다.

  • 괄호 (())는 표현을 그룹화하고 시행하는 일반적인 의미 우선순위. 어떤 경우에는 괄호가 필요합니다. 특정 토토 베이 명령의 고정 구문의 일부입니다.

  • 괄호([])은 다음과 같은 용도로 사용됩니다. 배열의 요소를 선택합니다. 참조섹션 8.10자세한 내용은 배열.

  • 쉼표(,)는 일부에서 사용됩니다. 요소를 분리하는 구문 구조 목록.

  • 세미콜론(;) 종료 토토 베이 명령. 내의 어느 곳에도 나타날 수 없습니다. 명령(문자열 상수 또는 인용부호 제외) 식별자.

  • 콜론(:)은 다음과 같은 용도로 사용됩니다. 선택"슬라이스"배열에서. (참조PostgreSQL : 문서 : 8.0 : 토토 커뮤니티.) 특정 경우 토토 베이 언어(예: Embedded 토토 베이)에서는 콜론을 사용하여 접두사 변수 이름.

  • 별표(*)는 다음에서 사용됩니다. 테이블 행의 모든 필드를 나타내는 일부 컨텍스트 또는 복합 가치. 사용될 때에도 특별한 의미가 있습니다. 의 주장으로개수집계 함수.

  • 기간(.)는 다음에서 사용됩니다. 숫자 상수, 스키마, 테이블 및 열 이름.

4.1.5. 댓글

댓글은 시작하는 임의의 문자 시퀀스입니다. 이중 대시가 있고 줄 끝까지 확장됩니다. 예:

-- 표준 토토 베이 주석입니다.

또는 C 스타일 블록 주석을 사용할 수 있습니다:

/* 여러 줄 주석
 * 중첩 있음: /* 중첩된 블록 주석 */
 */

댓글이 다음으로 시작하는 곳/*그리고 일치하는 항목으로 확장됨*/. 이러한 블록 주석은 다음에 지정된 대로 중첩됩니다. 토토 베이 표준이지만 C와 달리 주석 처리가 가능합니다. 기존 블록을 포함할 수 있는 더 큰 코드 블록 댓글.

댓글은 추가 진행 전에 입력 스트림에서 제거됩니다. 구문 분석으로 효과적으로 대체됩니다. 공백.

4.1.6. 어휘 우선순위

테이블 4-1다음의 우선순위와 연관성을 보여줍니다. 연산자Postgre토토 베이. 대부분의 연산자는 동일한 우선순위를 가지며 왼쪽 연관. 우선순위와 연관성 연산자는 파서에 내장되어 있습니다. 이는 다음으로 이어질 수 있습니다. 비직관적인 행동; 예를 들어 부울 연산자<그리고다음과 다른 우선순위를 가집니다. 부울 연산자<=그리고=. 또한 때로는 필요할 수도 있습니다. 바이너리와 바이너리의 조합을 사용할 때 괄호를 추가하려면 단항 연산자. 예를 들어

선택 5 ! - 6;

다음과 같이 구문 분석됩니다

5개를 선택하세요! (-6);

파서가 모르기 때문에 — 너무 늦을 때까지 — 그!접미어로 정의됩니다. 중위 연산자가 아닌 연산자입니다. 원하는 동작을 얻으려면 이 경우에는 다음과 같이 작성해야 합니다.

선택 (5 !) - 6;

이것은 확장성을 위해 지불하는 대가입니다.

표 4-1. 연산자 우선순위 (감소)

연산자/요소 연관성 설명
. 왼쪽 테이블/열 이름 구분 기호
:: 왼쪽 Postgre토토 베이-스타일 형변환
[ ] 왼쪽 배열 요소 선택
- 맞아요 단항 빼기
^ 왼쪽 지수
* / % 왼쪽 곱셈, 나눗셈, 모듈로
+ - 왼쪽 덧셈, 뺄셈
IS 사실입니다, 거짓입니다, IS 알 수 없음, NULL입니다
ISNULL 널 테스트
NOTNULL Null이 아닌지 테스트
(기타) 왼쪽 기타 모든 기본 및 사용자 정의 연산자
IN 멤버십 설정
사이 범위 격리
겹침 시간 간격 중복
좋아요 좋아요 유사 문자열 패턴 일치
< 보다 작음, 보다 큼
= 맞아요 평등, 할당
아님 맞아요 논리적 부정
그리고 왼쪽 논리적 접속사
또는 왼쪽 논리적 분리

연산자 우선순위 규칙은 다음에도 적용됩니다. 동일한 이름을 가진 사용자 정의 연산자 위에서 언급한 내장 연산자. 예를 들어, 만약 당신이 정의하다"+"일부 연산자 사용자 정의 데이터 유형은 내장"+"연산자, 상관없음 당신이 하는 일이 무엇인지.

스키마 한정 연산자 이름이 다음에서 사용되는 경우운영자구문(예: 에서

3명의 연산자 선택(pg_catalog.+) 4;

운영자구조물이 사용되었습니다 다음과 같은 기본 우선순위를 갖습니다.표 4-1for"기타"연산자. 이것은 사실이다 내부에 어떤 특정 연산자 이름이 나타나든 상관없습니다연산자().