We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
MySQL 서버의 시스템 설정에 따라 SQL 작성 규칙이 달라질 수 있다.
sql_mode 시스템 설정에 여러 개의 값이 동시에 설정
sql_mode
STRICT_ALL_TABLES & STRICT_TRANS_TABLES
ANSI_QUOTES
ONLY_FULL_GROUP_BY
PIPE_AS_CONCAT
||
PAD_CHAR_TO_FULL_LENGTH
NO_BACKSLASH_ESCAPES
IGNORE_SPACE
REAL_AS_FLOAT
NO_ZERO_IN_DATE & NO_ZERO_DATE
ANSI
TRADITIONAL
MYSQL 서버는 설치된 운영체제에 따라 테이블명의 대소문자를 구분한다 (윈도우는 구분 X, 유닉스는 구분) 운영체제와 관계없이 대소문자 구분 영향을 받지 않게 하려면 lower_case_table_names 시스템 변수 설정
lower_case_table_names
데이터베이스나 테이블 칼럼의 이름을 예약어와 같은 키워드로 생성하면 해당 칼럼이나 테이블을 SQL에서 사용할 때 역따옴표나 쌍따옴표로 감싸야한다 예약어를 모두 기억하기 어려우므로 직접 MYSQL 테이블을 생성해서 예약어인지 알아볼 수 있다(에러로 알려줌)
매뉴얼
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE] [INTO] tbl_name [PARTITION (partition_name [, partition_name] ...)] [(col_name [, col_name] ...)] { {VALUES | VALUE} (value_list) [, (value_list)] ... } [AS row_alias[(col_alias [, col_alias] ...)]] [ON DUPLICATE KEY UPDATE assignment_list]
[]
|
{}
...
문자열
숫자
SELECT * from test WHERE number_column = '10001'; SELECT * from test WHERE string_column = 10001;
날짜
불리언
동등 비교
부정 비교
Not 연산자
AND, OR 연산자
DIV, MOD 연산자
REGEXP 연산자
LIKE 연산자
BETWEEN 연산자
IN 연산자
Null 값 비교 및 대체
현재 시각 조회
날짜와 시간의 포맷
날짜와 시간의 연산
타임스탬프 연산
문자열 처리
문자열 결합
GROUP BY 문자열 결합
값의 비교와 대체
타입의 변환
이진값과 16진수 문자열 변환
암호화 및 해시 함수
SLEEP
벤치마크
IP 주소 변환
JSON 포맷
JSON 필드 크기
JSON 필드 추출
->
->>
JSON 오브젝트 포함 여부 확인
The text was updated successfully, but these errors were encountered:
https://puzzle-cowbell-508.notion.site/11-1-d8f7a9f351d641cbac55e08da998881d
Sorry, something went wrong.
https://puzzle-cowbell-508.notion.site/11-4-select-752cfa71ea6f4303ab49b44cc2840aa0
SooKim1110
No branches or pull requests
Chapter11. 쿼리 작성 및 최적화
1. 쿼리 작성과 연관된 시스템 변수
MySQL 서버의 시스템 설정에 따라 SQL 작성 규칙이 달라질 수 있다.
1-1. SQL 모드
테이블 및 인덱스 통계 정보
sql_mode
시스템 설정에 여러 개의 값이 동시에 설정STRICT_ALL_TABLES & STRICT_TRANS_TABLES
: insert, update 시 칼럼 타입과 저장되는 값의 타입이 다를 때 타입 변경ANSI_QUOTES
: 문자열 값에 홑따옴표만 사용ONLY_FULL_GROUP_BY
: GROUP BY 절이 사용된 문장의 SELECT 절에는 GROUP BY 절에 명시된 칼럼과 집계 함수만 사용PIPE_AS_CONCAT
:||
을 문자열 연결 연산자로 사용PAD_CHAR_TO_FULL_LENGTH
: CHAR 타입에서 유효 문자열 뒤의 공백 문자 제거NO_BACKSLASH_ESCAPES
: 역슬래시 문자를 이스케이프 문자로 사용IGNORE_SPACE
: 스토어드 프로시저나 함수명과 괄호 사이의 공백을 무시REAL_AS_FLOAT
: REAL 타입이 기본적으로 DOUBLE의 동의어로 사용되는데 FLOAT로 바꿀지NO_ZERO_IN_DATE & NO_ZERO_DATE
: DATE, DATETIME 타입 칼럼에 잘못된 날짜 저장ANSI
: MySQL 서버가 최대한 SQL 표준에 맞게 동작하도록TRADITIONAL
: 더 엄격하게 SQL 작동 제어 (STRICT_ALL_TABLES & STRICT_TRANS_TABLES)영문 대소문자 구분
MYSQL 서버는 설치된 운영체제에 따라 테이블명의 대소문자를 구분한다 (윈도우는 구분 X, 유닉스는 구분)
운영체제와 관계없이 대소문자 구분 영향을 받지 않게 하려면
lower_case_table_names
시스템 변수 설정MYSQL 예약어
데이터베이스나 테이블 칼럼의 이름을 예약어와 같은 키워드로 생성하면 해당 칼럼이나 테이블을 SQL에서 사용할 때 역따옴표나 쌍따옴표로 감싸야한다
예약어를 모두 기억하기 어려우므로 직접 MYSQL 테이블을 생성해서 예약어인지 알아볼 수 있다(에러로 알려줌)
1-2. 매뉴얼의 SQL 문법 표기를 읽는 방법
매뉴얼
[]
해당 키워드나 표현식이 선택사항일 때|
앞과 뒤의 키워드나 표현식 중에서 하나만 선택해서 사용{}
괄호 내 아이템 중 반드시 하나를 사용...
은 앞에 명시된 키워드나 표현식 조합이 반복될 수 있음을 의미1-3. MySQL 연산자와 내장 함수
리터럴 표기법 문자열
문자열
숫자
=> 숫자 값은 숫자 타입의 칼럼에만 저장하자
날짜
불리언
MySQL 연산자
동등 비교
부정 비교
Not 연산자
AND, OR 연산자
DIV, MOD 연산자
REGEXP 연산자
LIKE 연산자
BETWEEN 연산자
IN 연산자
MySQL 내장 함수
Null 값 비교 및 대체
현재 시각 조회
=> NOW()를 사용하는 것이 좋다
날짜와 시간의 포맷
날짜와 시간의 연산
타임스탬프 연산
문자열 처리
문자열 결합
GROUP BY 문자열 결합
값의 비교와 대체
타입의 변환
이진값과 16진수 문자열 변환
암호화 및 해시 함수
SLEEP
벤치마크
IP 주소 변환
JSON 포맷
JSON 필드 크기
JSON 필드 추출
->
,->>
연산자를 대신 사용 가능JSON 오브젝트 포함 여부 확인
The text was updated successfully, but these errors were encountered: