: <테이블명>이나 테이블명 이나 테이블 이나 똑같은 것입니다. (처음에 괄호를 넣어서 적다가 나중에 안적게됨... 추후 수정하겠습니다.)
: 명령문 끝에는 ; 를 넣어야합니다.
명령문 |
기능 |
show databases |
db 목록 |
show tables |
table 목록 |
desc 테이블명 |
table의 colum 목록 |
CREATE TABLE 테이블명( | 테이블을 생성한다. |
SELECT 문
명령문 |
기능 |
desc <테이블명> |
테이블의 스키마를 표시한다 |
select * from <테이블명> |
테이블의 레코드를 모두 표시한다 |
select * from <테이블명> where <레코드명>='???' |
테이블에서 해당 레코드명에 해당하는 것을 찾아 표시한다 |
select * from <테이블명> where <레코드명> > 1000 |
테이블에서 해당 레코드의 1000이 넘는 것을 찾아 표시한다 |
INSERT 문
명령문 |
기능 |
INSERT into <테이블명>(<컬럼명>) values(값) |
해당 테이블에 컬럼에 값을 집어넣어 레코드를 추가한다 |
INSERT into <테이블명> values (전체 컬럼에 해당하는 값) |
해당 테이블에 레코드를 추가한다 |
UPDATE 문
명령문 |
기능 |
update <테이블명> set <컬럼명> = '???' where <컬럼명> = '???' |
테이블에서 해당컬럼이 ???인 컬럼의 값을 ???로 바꾼다. |
DELETE 문
명령문 |
기능 |
delete from <테이블명> where <컬럼명> ='???' |
테이블에서 컬럼값이 ???인 레코드를 삭제한다 |
DISTINCT 연산자
명령문 |
기능 |
SELECT DISTINCT<컬럼명> from <테이블명> WHERE <컬럼명> = '???' |
SELECT문에서 특정컬럼이 중복되서 출력될시 이를 제거하여 하나만 출력되게 함 |
논리연산자 (AND, OR, NOT)
명령문 |
기능 |
SELECT * FROM <테이블명> WHERE (NOT) 조건1 AND/OR (NOT) 조건2... |
SELECT 문의 조건절에 논리 조건을 적용하여 검색 |
논리연산자 (IN, BETWEEN)
명령문 |
기능 |
... WHERE <컬럼> IN (값의 배열) |
값 OR 값 OR 값 .... 연산역할을 함 |
... WHERE (컬럼 BETWEEN 값 AND 값) | '컬럼 >= 값 AND 컬럼' <= 값 의 의미를 띔 |
결과 정렬(ORDER BY)
명령문 |
기능 |
SELECT * FROM <테이블명> WHERE 조건절 ORDER BY 컬럼명 ASC/DESC, 추가조건절... |
SELECT문의 결과값을 특정 칼럼 기준으로 오른차순/내림차순으로 정렬해서 표시 |
결과값 일부 조회 (MYSQL - LIMIT, ORACLE - ROWNUM, SQLSever - TOP)
명령문 |
기능 |
SELECT 컬럼 FROM 테이블 WHERE 조건절 LIMIT 숫자 |
상위 해당 숫자만큼의 결과만 보여줌 |
집합함수 (Aggregation Function)
명령문 |
기능 |
SELECT count(컬럼) FROM 테이블 WHERE 조건 |
조건에 해당하는 컬럼이 몇개인지 센다. |
SELECT sum(컬럼) FROM 테이블 WHERE 조건 |
합계 |
SELECT avg(컬럼) FROM 테이블 WHERE 조건 |
평균 |
SELECT min(컬럼) FROM 테이블 WHERE 조건 |
최솟값 |
SELECT max(컬럼) FROM 테이블 WHERE 조건 |
최댓값 |
유용한 함수
명령문 |
기능 |
SELECT length(컬럼) FROM 테이블 WHERE 조건 |
해당 컬럼의 글자수를 표시 |
SELECT upper(mid(컬럼,시작글자(1~),마지막글자(~n))) FROM 테이블 WHERE 조건 |
해당 컬럼의 지정 범위만큼의 글자를 자른 뒤, 대문자로 바꾼다. |
SELECT lower(mid(컬럼,시작글자(1~),마지막글자(~n))) FROM 테이블 WHERE 조건 |
해당 컬럼의 지정 범위만큼의 글자를 자른 뒤, 소문자로 바꾼다. |
SELECT round(컬럼,0) FROM 테이블 WHERE 조건 |
소수점 첫째자리에서 반올림한다. |
JOIN
: 서로다른 테이블을 공통 컬럼을 기준으로 합치는 테이블 단위 연산이다.
: 조인 시 서로 다른 테이블에 같은 컬럼명이 존재할 경우, 테이블명.컬럼명으로 사용하여 구별한다.
: default는 inner join 이다.
명령문 |
기능 |
SELECT 컬럼 FROM 테이블 JOIN 테이블 ON 테이블1.컬럼 = 테이블2.컬럼 |
테이블1.컬럼과 테이블2.컬럼을 JOIN 하여 표시한다. |
SELECT 컬럼 FROM 테이블 INNER JOIN 테이블 ON 테이블1.컬럼 = 테이블2.컬럼 | 조인시 매칭되는 결과가 없는 레코드는 빠진다. |
SELECT 컬럼 FROM 테이블 LEFT JOIN 테이블 ON 테이블1.컬럼 = 테이블2.컬럼 | 조인시 JOIN의 왼쪽 테이블의 매칭되지 않는 테이블을 모두 표시 |
SELECT 컬럼 FROM 테이블 RIGHT JOIN 테이블 ON 테이블1.컬럼 = 테이블2.컬럼 | 조인시 JOIN의 오른쪽 테이블의 매칭되지 않는 테이블을 모두 표시 |
SELECT 컬럼 FROM 테이블 FULL JOIN 테이블 ON 테이블1.컬럼 = 테이블2.컬럼 | 조인시 JOIN의 모든 테이블의 매칭되지 않는 테이블을 모두 표시 : MySQL은 지원하지 않음. |
ALIAS
: SQL 쿼리 결과 생성시 컬럼명에 대한 별명을 사용해 표시하는 기능
: 조인할 때 많이 사용한다.
명령문 |
기능 |
SELECT 컬럼 AS 별명 FROM ... |
해당 컬럼을 별명으로 표시함. |
VIEW
: SQL 쿼리의 결과 값을 임시테이블로 저장해서 사용함
: 사용용도가 끝나면 삭제해야함. (DROP VIEW 뷰이름)
명령문 |
기능 |
CREATE VIEW 뷰이름 AS SELECT... |
해당 SELECT의 결과로 뷰이름에 해당하는 테이블을 생성함. |
SELECT * FROM 뷰이름 | 뷰를 확인 |
DROP VEIW 뷰이름 | 뷰를 삭제 |
SELECT INTO
: 쿼리결과로 새 테이블을 만든다.
: 기존에 존재하지 않는 테이블이 새로 생성된다.
명령문 |
기능 |
CREATE TABLE 테이블명 SELECT * FROM 테이블명 |
해당 결과를 테이블로 만든다. |
INSERT INTO SELECT
: 쿼리 결과를 기존 테이블에 추가한다(기존테이블이 존재해야한다.)
: 컬럼이 모두 매칭이 되야 한다.
명령문 |
기능 |
INSERT INTO 테이블 SELECT * FROM 테이블 |
결과를 기존 테이블에 추가한다. |
CASE...WHEN...END
: 조건에 다른 처리를 할 수 있다.
명령문 |
기능 |
SELECT CASE WHEN 조건1 THEN 실행 WHEN 조건2 THEN 실행 END FROM 테이블명 |
조건에 따라 다른 결과를 표시한다. |
LIKE 검색
: 정확한 키워드를 모를 경우 일부만으로 검색하는 방법
: 와일드카드를 사용하여 패턴 매칭한다. (% : 0~N 글자 , _ : 1글자)
: LIKE 검색 시 논리 조건자(OR, AND)를 섞지 않는게 좋다
명령문 |
기능 |
SELECT * FROM 테이블명 WHERE 컬럼명 LIKE 'k%' |
컬럼명 첫글자에 k가 들어가는 단어를 모두 찾아준다. |
SELECT * FROM 테이블명 WHERE 컬럼명 LIKE '%k' | 컬럼명 마지막 글자에 k가 들어가는 단어를 모두 찾아준다. |
SELECT * FROM 테이블명 WHERE 컬럼명 LIKE '%k%' | 컬럼명 중간에 k가 들어가는 단어를 모두 찾아준다. |
SELECT * FROM 테이블명 WHERE 컬럼명 LIKE 'k_' | 첫글자에 k가들어가고 뒤에 한글자가 더있는 글자를 찾아준다. |
NULL 값
명령문 |
기능 |
SELECT * FROM 테이블 WEHRE 컬럼 IS NULL |
해당 컬럼이 NULL 인 레코드를 찾아준다. |
SELECT * FROM 테이블 WEHRE 컬럼 IS NOT NULL |
해당 컬럼이 NULL 이 아닌 레코드를 찾아준다. |
NULL 함수
: 숫자칼럼을 연산할 때 NULL을 처리해주는 함수
: 보통 NULL이나오면 자동으로 제외하고 계산한다.(SUM()같은 함수에 내장되어있음)
명령문 |
기능 |
SELECT avg(IFNULL(컬럼,0)) FROM 테이블 |
해당 컬럼에 NULL 이 있을 경우 0을 넣어 평균한다. 적용시/미적용시 차이가 난다. (미 적용시 제외하고 계산하기때문.) |
GROUP BY
: distinct 와 sort의 기능을 합쳐놓은 듯한 명령어이다.
: 특정 칼럼의 연산 결과를 확인할때 보통 사용한다.
: GROUP BY 에 선언한 컬럼만 출력할 수 있다.
: 정확한 역할은 잘 모르겠다.
명령문 |
기능 |
SELECT 컬럼,집합함수(컬럼)... FROM 테이블 GROUP BY 컬럼,컬럼... |
출력 컬럼은 GROUP BY에 선언되어있어야한다. |
HAVING
: GROUP BY 에서 WHERE 조건절을 대체하여 사용한다.
명령문 |
기능 |
SELECT 컬럼 FROM 테이블 GROUP BY 컬럼 HAVING 조건 |
조건에 해당하는 컬럼만 출력해라. |
SUBQUERY
: 쿼리문 내에 또 다른 쿼리문이 있는 형태
: SELECT/FROM/WHERE/HAVING/ORDER BY/VALUES(INSERT)/SET(UPDATE)...등에서 사용가능하다.
- 단일행 서브쿼리
: 결과가 레코드 하나인 서브쿼리
: 일반연산자(=,>,<...) 사용
- 다중행 서브 쿼리
: 결과 레코드가 여러개
: IN, ALL, ANY, EXISTS 사용
ALL == 결과 레코드 중 가장 큰 값과 비교한다.
ANY == 결과 레코드 중 가장 작은 값과 비교한다.
IN/EXISTS == 결과 값 중 모두와 비교하라. ( IN의 경우 값들을 집어 넣고 // EXISTS 의 경우 TRUE/FALSE 의 경우만 생각한다.)
- 멀티 컬럼 서브쿼리
: 결과가 컬럼 여러개인 서브쿼리
: IN, ALL, ANY, EXISTS 사용
단일행 서브쿼리 |
|
SELECT 컬럼 FROM 테이블1 WHERE 컬럼= |
조건에 해당하는 테이블2.컬럼과 동일한 컬럼값을 가지는 테이블1.컬럼을 찾는다. |
ALL/ANY |
|
SELECT 컬럼 FROM 테이블 WHERE 컬럼 > |
ALL: 해당 컬럼에 해당하는 값 중 최댓값과 비교한다. |
IN/EXISTS |
|
SELECT 컬럼 FROM 테이블1 WHERE 컬럼 |
INT : 조건에 해당하는 컬럼 값과 만족하는 레코드를 출력 |
: EXISTS 는 잘 모르겠다.
집합연산
: 결과값의 집합연산을 지원한다.
UNION - 합집합
INTERSECT - 교집합
MINUS - 차집합
: 결과 형식이 동일해야하며, DISTINCT 적용이 된다. (UNION ALL 사용시 DISTINCT 미적용)
: 다른테이블이어도 됨.
: MySQL 은 INTERSECT, MINUS를 지원하지 않는다.
명령어 |
기능 |
쿼리 UNION 쿼리 |
두 결과의 합집합 |
쿼리 UNION ALL 쿼리 |
DISTINCT 미적용된 합집합 |
쿼리 INTERSECT 쿼리 | 교집합 |
MySQL에서는 조건절에 서브쿼리 IN을 사용하여 대체한다. | 교집합 |
쿼리 MINUS 쿼리 | 차집합 |
MySQL에서는 조건절에 서브쿼리 NOT IN을 사용하여 대체한다. | 차집합 |
'프로그래밍 > RDBMS - MySQL' 카테고리의 다른 글
INDEX (0) | 2017.03.28 |
---|---|
DCL(Data Control Language) 명령어 (0) | 2017.03.27 |
DDL(Data Definition Language) 명령어 (0) | 2017.03.27 |
3. SQL (0) | 2017.03.24 |
1. DBMS 기초 (0) | 2017.03.20 |