noname02

쿼리 본문

Web/MYSQL

쿼리

kimtaku 2015. 8. 18. 15:19

  • 문자열 값은 작은따옴표나 큰따옴표로 묶어서 작성한다.
  • 여러개의 칼럼이나 값을 넣는 경우 괄호로 묶고 콤마로 구분해준다.
0-1. Syntax

USE
- DATABASE name : db 선택

CREATE
- DATABASE name : 데이터베이스 생성
- TABLE name : 테이블 생성
- name : 칼럼 생성
- DEFAULT value : 기본값을 value로 설정
- AUTO_INCREMENT : 연속으로 번호 부여(기본키 속성 필수)
- PRIMARY KEY : 기본키 속성(중복(X), NULL(X))
- UNIQUE KEY : 고유키 속성(중복(X), NULL(O))
- INDEX name : 인덱스 name 생성
- ON tbname(column_name) : 테이블 tbname의 칼럼 column_name에 설정
- NOT NULL : NULL 값 허용하지 않음.

DROP
- DATABASE name : 데이터베이스 삭제
- TABLE name : 테이블 삭제
- INDEX name : 색인 삭제
- ON tbname : 테이블에 있는 색인 삭제

ALTER
- TABLE name : 테이블 변경
- MODIFY name dataformat : 칼럼의 자료형, 위치, 기본값 변경
- CHANGE before_name after_name after_dataformat  : MODIFY기능 + 이름 변경
- ADD name dataformat : 칼럼 추가
- DROP : 삭제
- colume_name : 칼럼
- FIRST : 맨 앞에
- AFTER name : name 뒤에
- DEFAULT value : 기본값을 value로 설정
- AUTO_INCREMENT : 연속으로 번호 부여(기본키 속성 필수)
- PRIMARY KEY : 기본키 속성(중복(X), NULL(X))
- UNIQUE KEY : 고유키 속성(중복(X), NULL(O))
- INDEX (column_name) : 칼럼에 인덱스 설정
- INDEX index_name : name 인덱스 설정
- AUTO_INCREMENT=0 : 값 초기화

INSERT INTO
name (colume_name1, colume_name2) : 테이블 name에 칼럼1, 칼럼2 삽입
- VALUES (value1, value2) : 데이터1, 데이터2 입력

SHOW
- DATABASES : 데이터베이스 목록 확인
- INDEX : 색인 확인
- FROM name : 테이블에 설정한 색인 확인

SELECT
- name1, name2 : 칼럼1, 칼럼2 추출
- 사칙연산 가능. 칼럼의 데이터들 각각에 적용됨( + - * / )
- 함수사용 가능.
- FROM name : 테이블 name에서 추출
- AS name : 칼럼을 name으로 표시하여 추출. 특수기호 사용시 큰따옴표로 묶는다.
- LIMIT number : number 갯수만큼만 표시
- OFFSET number : nubmer번째 부터 데이터 표시(첫번째는 0)
- DISTINCT : 중복데이터 1회 표시
- GROUP BY column : 그룹별로 표시
- column의 같은 값을 그룹으로 묶어서 랜덤으로 한개의 데이터를 표시한다.
- 딱히 의미없는..
- CASE 
- WHEN condition THEN "string"
- ELSE string : 작성한 조건들이 맞지 않으면 ELSE의 string을 출력
- END
- AS name : 조건에 맞는 데이터들을 string으로 표시하고 이를 name칼럼으로 추출
- ORDER BY column : column 기준으로 오름차순
- ASC : 오름차순(기본값)
- DESC : 내림차순
- WHERE 조건 : 조건에 맞는 데이터 추출
- >, <, >=, <= 등 비교연산자 사용.
- a IN b : b 중에 a가 있는 경우
- a NOT IN b : b 중에 a가 없는 경우
- a BETWEEN b AND c : b부터 c 사이에 a가 있다
- a NOT BETWEEN b AND c : b부터 c 사이에 a가 없다
- LIKE "string" : 퍼지검색(string을 포함한 단어 검색)
- 와일드카드 문자 사용 가능.
- % : 임의의 문자열. (ex: %시 -> 서울시, 성남시  %산% -> 부산시, 울산시, 산, 산수)
- _ : 임의의 문자. (ex: 경_도 -> 경기도, 경상도)
- NOT LIKE : 포함하지 않은 단어 검색
- IS NULL : NULL값 추출
- IS NOT NULL : NULL이 아닌 값 추출
- AND : 그리고
- OR : 또는
- AND와 OR이 함께 사용될 때에는 AND가 먼저 처리된다.
- 따라서 적절하게 괄호로 묶어서 사용하는게 좋다.


0-2. Function

AVG() : 평균값
SUM() : 합계
COUNT() : 데이터 갯수
PI() : 파이
VERSION() : MySQL버전
DATABASE() : 현재 사용중인 데이터베이스 표시
USER() : 현재 사용자 표시

CHARSET() : 인자 문자의 문자코드 표시
CONCAT(word1, word2...) : 문자열 결합(칼럼, 직접입력한 문자열 등)
RIGHT(column, num) : column의 데이터를 오른쪽에서부터 num개 문자표시
LEFT(column, num) : column의 데이터를 왼쪽에서부터 num개 문자표시
SUBSTRING(column, from, num) : column의 데이터를 from번째 문자부터 num개 표시
REPEAT(string, column) : column의 데이터 수만큼 string으로 반복표시
REVERSE(column) : 문자열을 거꾸로 표시

NOW() : 현재 날짜와 시간 표시

1. 데이터베이스 생성

CREATE DATABASE dbname;


2. 데이터베이스 목록 확인


SHOW DATABASES;


3. 데이터베이스 지정


USE dbname;


4. 현재 사용중인 데이터베이스 표시


SELECT DATABASE();


5. 테이블 만들기


CREATE TABLE tbname (column_name1 dataformat, column_name2 dataformat ...);


6. 모든 테이블 표시


SHOW TABLES;


7. 테이블 칼럼구조 표시하기


DESC tbname;


8-1. 데이터 추가하기(칼럼 순서대로)


INSERT INTO tbname VALUES (data1, data2 ...);


8-2. 데이터 추가하기(칼럼 이름을 지정하여)


INSERT INTO tbname (column_name1, column_name2 ...) VALUES (data1, data2 ...);


8-3. 데이터 추가하기(여러개의 데이터 입력)


INSERT INTO tbname (column_name1, column_name2 ...) VALUES (data1-1, data1-2 ...), (data2-1, data2-2 ...);


9. 칼럼별 데이터 표시


SELECT column_name1, column_name2 FROM tbname;


10. 모든 데이터 표시


SELECT * FROM tbname;


11. 테이블 복사하기 (ctbname 테이블의 내용을 ptbname으로 복사)


CREATE TABLE ptbname SELECT * FROM ctbname;


12. 칼럼 자료형 변경


ALTER TABLE tbname MODIFY column_name dataformat;


13-1. 칼럼 추가하기 (맨 뒤로)


ALTER TABLE tbname ADD column_name dataformat;


13-2. 칼럼 추가하기 (맨 앞으로)


ALTER TABLE tbname ADD column_name dataformat FIRST;


13-3. 칼럼 추가하기 (acolumn_name 뒤에 column_name을 추가)


ALTER TABLE tbname ADD column_name dataformat AFTER acolumn_name;


14-1. 칼럼 위치 맨 앞으로 변경하기


ALTER TABLE tbname MODIFY column_name dataformat FIRST;


14-2. 칼럼 위치 변경하기 (acolumn_name 뒤로 column_name 옮기기)


ALTER TABLE tbname MODIFY column_name dataformat AFTER acolumn_name;


15. 칼럼 이름, 자료형, 위치 변경하기


ALTER TABLE tbname CHANGE before_column_name after_column_name after_dataformat;


16. 칼럼 삭제하기


ALTER TABLE tbname DROP column_name;


17-1. 기본키 속성을 갖는 테이블 만들기(중복 (X), NULL (X))


CREATE TABLE tbname (column_name dataformat PRIMARY KEY, ...);


17-2. 고유키 속성을 갖는 테이블 만들기(중복 (X), NULL (O))


CREATE TABLE tbname (column_name dataformat UNIQUE KEY, ...);


18. 연속 번호가 자동으로 입력되는 칼럼 만들기

  • 자료형은 정수형이어야 한다.
  • AUTO_INCREMENT 선언한다.
  • PRIMARY KEY 등으로 유일하게 설정한다.
  • 데이터 추가시 연속 번호가 입력되는 칼럼에 아무값도 입력하지 않거나 0을 입력하면 순서대로 입력이 된다.

CREATE TABLE tbname (column_name dataformat AUTO_INCREMENT PRIMARY KEY, ...);


19. 연속 번호의 초깃값 설정하기

  • 데이터를 모두 지운 뒤, 데이터를 새로 추가하면 기존에 있던 번호에 +1이 되어 입력이 된다.
  • 이러한 경우 연속 번호를 1부터 다시 입력하게 하려면 초기화를 해야 한다.
CREATE TABLE tbname (column_name dataformat AUTO_INCREMENT PRIMARY KEY) AUTO_INCREMENT=number;

ALTER TABLE tbname AUTO_INCREMENT=1;


20. 기본값이 있는 칼럼 만들기


CREATE TABLE tbname (column_name dataformat DEFAULT default_value, ...);


21. 색인 설정하기


CREATE INDEX name ON tbname (column_name);


22. 색인 표시하기


SHOW INDEX FROM tbname;


23. 색인 삭제하기


DROP INDEX name ON tbname;

ALTER TABLE tbname DROP INDEX index_name;


24-1. 테이블 칼럼 구조와 데이터 복사(속성은 복사되지 않음. KEY, AUTO_INCREMENT 등. 11번과 동일)


CREATE TABLE tbname SELECT * FROM copytbname


24-2. 테이블 칼럼 구조만 복사 (속성까지 복사)


CREATE TABLE tbname LIKE copytbname


24-3. 테이블 데이터만 복사 (동일 칼럼)


INSERT INTO tbname SELECT * FROM copytbname


24-4. 특정 칼럼 데이터만 복사


INSERT INTO tbname (column) SELECT copy_column FROM copytbname;


25-1. 테이블 삭제


DROP TABLE tbname;


25-2. 특정 테이블이 있는 경우 삭제


DROP TABLE IF EXISTS tbname;


26. 데이터베이스 삭제


DROP DATABASE dbname;


27. 데이터 삭제


DELETE FROM tbname;


28. 칼럼 표시

  • 칼럼을 중복해서 여러개 표시할 수도 있다. (동일칼럼을 여러번 입력)
  • 칼럼 작성 순서대로 표시되므로 순서를 바꿀 수도 있다.


 SELECT column1, column2, column3 ... FROM tbname


29. 별명 사용

  • 특수문자를 지정할 때에는 큰따옴표로 감싸야 한다.

SELECT column AS name FROM tbname


30. 칼럼 값 계산하여 표시

  • 아래의 경우 칼럼에 1만을 곱한 값을 표시한다.

SELECT column * 10000 FROM tbname


31. 함수 사용

  • 아래의 경우 column의 평균값을 표시한다.

SELECT AVG(column) FROM tbname


32. 각종 정보 출력


SELECT VERSION() : MySQL버전 표시

SELECT DATABASE() : 현재 사용중인 데이터베이스 표시

SELECT USER() : 현재 사용자 표시

SELECT CHARSET("string") : 문자코드 표시


33. 문자열 조작 함수

  • column의 오른쪽 2개의 문자 표시

SELECT RIGHT(column, 2) FROM tbname;

  • column의 왼쪽 2개의 문자 표시

SELECT LEFT(column, 2) FROM tbname;

  • column의 2번째 문자부터 3개의 문자 표시

SELECT SUBSTRING(column, 2, 3) FROM tbname;

  • column의 수만큼 string 표시

SELECT REPEAT(column, "string") FROM tbname;

  • column의 문자열을 거꾸로 표시

SELECT REVERSE(column) FROM tbname;

  • column1, column2의 문자열을 붙이고 "님"이라는 문자열도 붙임
SELECT CONCAT(column1, column2, "님") FROM tbname;


34. 레코드 수를 제한해서 표시


SELECT column FROM tbname LIMIT number;


35. WHERE 조건

  • 작다
SELECT * FROM tbname WHERE column<num;
  • 아니다 ( <> )
SELECT * FROM tbname WHERE column<>num;
    • 사이에 있다 (a 이상 b 이하)
    SELECT * FROM tbname WHERE column BETWEEN a AND b;
      • 사이에 없다 (a 미만 b 초과)
      SELECT * FROM tbname WHERE column NOT BETWEEN a AND b;
        • ~중에 있다

          SELECT * FROM tbname WHERE column IN(a, b);
            • 문자열 조건
            SELECT * FROM tbname WHERE column="string";

                36. 퍼지검색

                SELECT * FROM tbname WHERE column LIKE "condition"


                37. 조건에 NULL 사용

                • NULL인 경우
                SELECT * FROM tbname WHERE column IS NULL
                • NULL이 아닌 경우

                  SELECT * FROM tbname WHERE column IS NOT NULL


                  38. 중복데이터 제외하고 추출


                  SELECT DISTINCT column FROM tbname;


                  39. 조건 설정


                  SELECT * FROM tbname WHERE column1>=50 AND(OR) column2>=50


                  40. CASE WHEN


                  SELECT column1, ...

                  CASE

                  WHEN column_a > 10 THEN "string1"

                  WHEN column_b > 10 THEN "string2"

                  ...

                  ELSE "string10"

                  END AS "end_column" FROM tbname


                  41. 오름/내림차순 정렬


                  SELECT * FROM tbname ORDER BY column ASC/DESC


                  42. n+1번째 부터 표시


                  SELECT * FROM tbname OFFSET n


                  43-1. 그룹화 표시


                  SELECT * FROM tbname GROUP BY column


                  43-2.

                  'Web > MYSQL' 카테고리의 다른 글

                  자료형  (0) 2015.08.18
                  Comments