기본적으로 SQL 표준을 가지지만 MySQL만의 특징이 있다.
❗ 여기서 잠깐! 대소문자를 구분하기 위해서는 String이 아닌 binary 형태로 저장되어야 한다.
varbinary type
으로 저장 varcharbinary type
으로 저장binary()
함수 사용select *
from employees
where binary(first_name) = "steven"
USE dbname;
CREATE DATABASE 데이터베이스이름;
create option
CHARACTER SET
COLLATE
-- <다국어 처리>
CREATE DATABASE dbname
DEFAULT CHARACTER SET utf8mb3
COLLATE utf8mb3_general_ci;
-- <이모지 문자까지 처리>
CREATE DATABASE dbname
DEFAULT CHARACTER SET utf8mb4
COLLATE utf8mb4_general_ci;
제약조건 | 설명 |
---|---|
UnSIGNED | 양수로 제한 |
Auto INCREMENT | 새 레코드가 추가 될 때마다 필드 값을 자동으로 1증가 |
-- dbtest의 character set, collate 변경
ALTR DATABASE dbtest
default character set utf8mb4 collate utf8mb4_general_ci;
utf8mb3 - 한글 지원
utf8mb4 - 이모지까지 지원
DROP DATABASE 데이터베이스이름
select 절 | 설명 |
---|---|
* | FROM 절에 나열된 테이블에서 모든 열 선택 |
ALL | 선택된 모든 행을 반환, DISTINCT와 다르게 default며 생략 가능 |
DISTINCT | 선택된 모든 행 중 중복된 행을 제거 |
alias | 별칭 (as 로 사용) |
-- 모든 사원의 사번, 이름, 급여, 급여에 따른 등급표시 검색.
-- 급여에 따른 등급
-- 15000 이상은 “고액연봉“으로 분류
-- 8000 이상은 “평균연봉”으로 분류
-- 8000 미만은 “저액연봉"으로 분류
SELECT employee_id, first_name, salary,
CASE
WHEN salary >= 15000 THEN "고액연봉"
WHEN salary >= 8000 THEN "평균연봉"
ELSE "저액연봉"
END "급여 등급"
FROM employees;
where문 키워드 | 설명 |
---|---|
AND | & 연산 |
OR | || 연산 |
NOT | ! 연산 (!도 사용가능) |
속성 IN (값1,값2,...) | ()에 있는 값과 속성 값이 같으면 해당 데이터 반환 (or연산을 한번에 가능) |
속성 NOT IN (값1,값2,...) | ()에 있는 값과 속성 값이 같은게 하나도 없으면 데이터 반환 |
속성 BETWEEN 값1 AND 값2 | 값1<=속성<=값2 |
속성 IS NULL | null인 값 반환 (속성 = null로 검색 불가) |
속성 IS NOT NULL | null인 값 반환 |
속성 LIKE "wild card" | wild card (% : 1개 이상, _ : 반드시 1개) |
🤔 논리연산 중 NULL 연산 시 주의점
✔ NULL : "모르다"라는 의미
NULL and NULL : NULL
TRUE and NULL : NULL
NULL and FALSE : FALSE
NULL or NULL : NULL
TRUE or NULL : TRUE
NULL or FALSE : NULL
|order by option|설명|
|ASC|오름차순 정렬|
|DESC|내림차순 정렬|
select 속성이름
from 테이블 이름
order by 속성1 [ASC|DESC], 속성2 [ASC|DESC],...
INNER JOIN
으로 교집합을 구현하기-- table1과 table2를 각 테이블의 id가 같은 것을 기준으로 join연산
select *
from table1 INNER JOIN table2
ON table1.id = table2.id;
not in
으로 차집합을 구현하기--- table1중 table2에 존재하지 않으면 반환
select *
from table1
where not in (
select *
from table2
);
not exists
로 차집합을 구현하기select *
from table1 t1
where not exists (
select *
from table2 t2
where t1.id = t2=id
);
left outer join
으로 차집합 구현하기select *
from table1 t1 LEFT JOIN table2 t2
on t1.id = t2.id;