9.5 식의 구문
다음 규칙은 MySQL에서의 식의 구문이 정의됩니다. 여기에 나온 문법은 MySQL 소스 배포판의 sql/sql_yacc.yy
파일에서 주어진 문법에 따라 있습니다. 일부 조건에 대한 자세한 내용은 문법 후에 표시되는 지침을 참조하십시오.
expr
:expr
ORexpr
|expr
||expr
|expr
XORexpr
|expr
ANDexpr
|expr
&&expr
| NOTexpr
|!expr
|boolean_primary
IS [NOT] {TRUE | FALSE | UNKNOWN} |boolean_primary
boolean_primary
:boolean_primary
IS [NOT] NULL |boolean_primary
<=>predicate
|boolean_primary
comparison_operator
predicate
|boolean_primary
comparison_operator
{ALL | ANY} (subquery
) |predicate
comparison_operator
: = |> = |> | <= | <| <> |! =predicate
:bit_expr
[NOT] IN (subquery
) |bit_expr
[NOT] IN (expr
[,expr
] ...) |bit_expr
[NOT] BETWEENbit_expr
ANDpredicate
|bit_expr
SOUNDS LIKEbit_expr
|bit_expr
[NOT] LIKEsimple_expr
[ESCAPEsimple_expr
] |bit_expr
[NOT] REGEXPbit_expr
|bit_expr
bit_expr
:bit_expr
|bit_expr
|bit_expr
&bit_expr
|bit_expr
<<bit_expr
|bit_expr
>>bit_expr
|bit_expr
+bit_expr
|bit_expr
-bit_expr
|bit_expr
*bit_expr
|bit_expr
/bit_expr
|bit_expr
DIVbit_expr
|bit_expr
MODbit_expr
|bit_expr
%bit_expr
|bit_expr
^bit_expr
|bit_expr
+interval_expr
|bit_expr
-interval_expr
|simple_expr
simple_expr
:literal
|identifier
|function_call
|simple_expr
COLLATEcollation_name
|param_marker
|variable
|simple_expr
||simple_expr
| +simple_expr
| -simple_expr
| ~simple_expr
|!simple_expr
| BINARYsimple_expr
| (expr
[,expr
] ...) | ROW (expr
,expr
[,expr
] ...) | (subquery
) | EXISTS (subquery
) | {identifier
expr
} |match_expr
|case_expr
|interval_expr
참고 :
연산자 우선 순위에 대해서는 섹션 12.3.1 "연산자 우선 순위" 를 참조하십시오.
리터럴 값의 구문은 섹션 9.1 "리터럴 값" 을 참조하십시오.
식별자의 구문은 섹션 9.2 "스키마 객체 이름" 을 참조하십시오.
변수는 사용자 변수 시스템 변수 저장 프로그램의 로컬 변수 또는 매개 변수가 있습니다.
사용자 변수 : 섹션 9.4 "사용자 정의 변수"
시스템 변수 : 섹션 5.1.5 "시스템 변수 사용"
로컬 변수 : 섹션 13.6.4.1 "로컬 변수 DECLARE 구문"
파라미터 : 섹션 13.1.15 "CREATE PROCEDURE 및 CREATE FUNCTION 구문"
param_marker
은 준비된 문 플레이스 홀더에 사용되는 것처럼 ?
입니다. 섹션 13.5.1 "PREPARE 구문" 을 참조하십시오.
는 단일 값을 반환 서브 쿼리, 즉 스칼라 서브 쿼리를 나타냅니다. 섹션 13.2.10.1 "스칼라 피연산자로 서브 쿼리" 를 참조하십시오. ( subquery )
{
는 ODBC 이스케이프 구문이며, ODBC과의 호환성을 위해 인정 받고 있습니다. 값은 identifier
expr
}expr
입니다. 구문의 칼 한 괄호는 문자 그대로 기록해야합니다. 그들은 구문 설명의 다른 부분에서 이용되고있는 것 같은 메타 구문은 없습니다.
match_expr
는 MATCH
식을 나타냅니다. 섹션 12.9 "전체 텍스트 검색 함수" 를 참조하십시오.
case_expr
는 CASE
식을 나타냅니다. 섹션 12.4 "제어 흐름 함수" 를 참조하십시오.
interval_expr
시간 간격을 나타냅니다. 구문은 INTERVAL
입니다. 여기서 expr
unit
unit
는 HOUR
, DAY
, WEEK
등의 지정자입니다. unit
지정자의 전체 목록은 섹션 12.7 "날짜 및 시간 함수" 의 DATE_ADD()
함수의 설명을 참조하십시오.
일부 연산자의 의미는 SQL 모드에 따라 다릅니다.
기본적으로
||
논리OR
연산자입니다.PIPES_AS_CONCAT
이 활성화되어있는 경우,||
는^
와 단항 연산자 간의 우선 순위를 가진 문자열 연결입니다.기본적으로
!
는NOT
보다 높은 우선 순위입니다.HIGH_NOT_PRECEDENCE
이 활성화되어있는 경우!
와NOT
의 우선 순위는 동일합니다.
섹션 5.1.7 "서버 SQL 모드" 를 참조하십시오.