: <테이블명>이나 테이블명 이나 테이블 이나 똑같은 것입니다. (처음에 괄호를 넣어서 적다가 나중에 안적게됨... 추후 수정하겠습니다.)

: 명령문 끝에는 ; 를 넣어야합니다.


명령문 

기능 

show databases 

db 목록 

show tables 

table 목록 

desc 테이블명 

table의 colum 목록

 CREATE TABLE 테이블명(
       컬럼이름 자료형(길이) NULL여부 기타,
ex)    id int (11) not null auto_increment,
       name varchar(10),
       primary key(id)                   // pimary key를 id로 정함.
);

테이블을 생성한다. 


 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에 선언되어있어야한다.
 집합 함수에 들어가는 컬럼은 선언이 되어있지 않아도 된다.
 자동으로 DISITINCT 와 SORT가 적용되는 것 같다.


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 컬럼=
       (SELECT 컬럼 FROM 테이블2 WHERE 조건);

 조건에 해당하는 테이블2.컬럼과 동일한 컬럼값을 가지는 테이블1.컬럼을 찾는다.

 ALL/ANY

 

 SELECT 컬럼 FROM 테이블 WHERE 컬럼 >
        ALL/ANY(SELECT 컬럼 FROM 테이블)

ALL: 해당 컬럼에 해당하는 값 중 최댓값과 비교한다. 
ANY: 해당 컬럼에 해당하는 값 중 최솟값과 비교한다.  

 IN/EXISTS

 

 SELECT 컬럼 FROM 테이블1 WHERE 컬럼
        IN/EXISTS (SELECT 컬럼 FROM 테이블2 WHERE 조건)

INT : 조건에 해당하는 컬럼 값과 만족하는 레코드를 출력
EXISTS : 조건에 해당하는 컬럼이 있으면 해당 레코드를 출력

: 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

+ Recent posts