목록Infrastructure/MySQL (5)
DHistory
11-3-2 MySQL 연산자 BETWEEN 연산자 BETWEEN 연산자는 크거나 같다와 작거나 같다라는 두 개의 연산자를 하나로 합친 연산자입니다. 다른 비교 조건과 결합해 하나의 인덱스를 사용할 때 주의해야할 점이 있습니다. # 쿼리 1 SELECT * FROM dept_emp WHERE dept_no BETWEEN 'd003' AND 'd005' AND emp_no=10001 # unique key 설정을 바로 하면 오류날 수 있으니 api 호출하는 곳에 물어봐야함. ; # 쿼리 2 SELECT * FROM dept_emp WHERE dept_no IN ('d003', 'd004', 'd005') AND emp_no=10001 ; 쿼리1(사진 왼쪽, BETWEEN 연산)은 dept_emp 테이블의 ..
11-3-2 MySQL 연산자 Equal = 기호를 사용하여 비교를 수행합니다. 연산자는 = 연산자와 비슷하지만 NULL 값에 대한 비교까지 수행합니다. Not Equal 결과를 반대로 만드는 연산자로 NOT을 사용합니다. ! 연산자를 사용할 수도 있습니다. REGEXP 문자열 값이 어떤 패턴을 만족하는지 확인하는 연산자입니다. RLIKE와 동일하게 수행하는 연산자입니다. 문자열을 하나하나 분리하여 조합하기 때문에 index를 사용할 수 없습니다. LIKE REGEXP 연산자보다는 훨씬 단순한 문자열 패턴 비교 연산자입니다. DBMS엣는 LIKE 연산자를 더 많이 사용합니다. LIKE 연산자는 정규 표현식을 검사하는 것이 아닌 어떤 상수 문자열이 있는지 없는지 정도를 판단하는 연산자입니다. LIKE에서 ..
기본적인 연산자는 MySQL에서도 거의 비슷하게 사용하지만 MySQL만 사용하는 연산자나 표기법이 있습니다. ANSI 표준 형태가 아닌 연산자가 많이 있습니다. 가능하면 SQL의 가독성을 높이기 위해 ANSI 표준 형태의 연산자를 사용하길 권장합니다. 11-3-1 리터펄 표기법 문자열 문자열 SQL 홑따옴표 (') MySQL 홑따옴표 (') / 쌍따옴표 (") SELECT * FROM departments WHERE dept_no='d0001'; SELECT * FROM departments WHERE dept_no="d0001"; SQL 표준에서는 문자열 값에 홑따옴표가 포함돼 있을 때 홑따옴표를 두 번 연속해서 입력하면 됩니다. MySQL에서는 쌍따옴표와 홑따옴표를 혼합해서 이런 문제를 피해 가기도 ..
MySQL 매뉴얼에 명시된 SQL 문법은 사용할 수 있는 모든 키워드나 기능을 하나의 문장에 다 표기해뒀기 때문에 한눈에 이해되지 않는다는 단점이 있습니다. 하지만 해당 버전에 맞는 SQL 문법을 참조하기에는 매뉴얼만큼 정확한 자료가 없습니다. INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE] [INTO] tabl_name [PARTITION (partition_name [, partition_name] ...)] [(col_name [, col_name] ...)] {VALUES | VALUE} (value_list) [, (value_list)] ... [ON DUPLICATE KEY UPDATE assignment_list] 대괄호 [] 선택 사항..
11-1-1 SQL 모드 MySQL 서버의 설정 파일에서 sql_mode를 설정할 때는 구분자(,)를 이용해 키워드를 동시에 설정할 수 있습니다. STRICT_ALL_TABLES & STRICT_TRANS_TABLES MySQL 서버에서 INSERT나 UPDATE 문장으로 데이터를 변경하는 경우 칼럼의 타입과 저장되는 값의 타입이 다를 때 자동으로 타입 변경을 수행합니다. ANSI_QUOTES MySQL에서는 문자열 값(리터럴)을 표현하기 위해 홑따옴표와 큰따옴표를 동시에 사용할 수 있습니다. Oracle 같은 DBMS에서는 홑따옴표를 문자열 값을 표기하는 데 사용하고, 큰따옴표는 칼럼명이나 테이블명과 같은 식별자를 구분하는 용도로만 사용합니다. => 문자열을 표현할 때는 홑따옴표를 사용하는 습관을 길러..