반응형

SELECT문

 

- 데이터베이스 내의 테이블에서 원하는 정보를 추출하는 명령어

 

SELECT문 기본 형식

 

SELECT 열이름 FROM 테이블명 [where 조건] ;

[ ] 부분은 생략이 가능합니다. 

 

USE문

 

- SELECT문을 사용하기에 앞서 해당 테이블을 사용할 데이터베이스를 지정해서 접속하여야한다.

 

USE문 기본 형식

 

USE 데이터베이스명 ;

ex) 데이터베이스명이 user라면

USE user;

라고 입력해줍니다.

 

위와 같은 문장의 의미

user 데이터베이스를 사용하겠다.

지금부터 실행하는 쿼리문은 user DB에서 수행합니다.

 

간단한 예를 만들어보겠습니다.

 

서버에 존재하는 DB를 확인하는 명령어는 다음과 같습니다

 

SHOW DATABASES;

 

데이터베이스명과 테이블명은 제가 임의로 만들었습니다.

 

ex.sql

1
2
3
4
5
6
7
8
9
10
11
CREATE DATABASE USER;
 
 
CREATE TABLE information(num INT(4), irum CHAR(15), height INT(4));
 
INSERT INTO information VALUES (1'HongGildong'158);
INSERT INTO information VALUES (2'EGildong'180);
INSERT INTO information VALUES (3'SamGildong'177);
INSERT INTO information VALUES (4'SaGildong'169);
INSERT INTO information VALUES (5'OhGildong'188);
 
 

 

 

테이블을 만드는 명령어

 

CREATE TABLE 테이블명 (컬럼명1 데이터타입1, 컬럼명2 데이터타입2);

ex)

CREATE TABLE USER (num int(4), irum char(15));

 

 

데이터베이스명 : USER

테이블명 : information

 

1
2
3
USE USER;
 
SELECT * FROM information;

 

출력결과

 

 

* 해당 출력 결과는 제가 임의로 넣은 데이터입니다.

 

관계연산자 사용

 

- 번호가 3번 이후면서 키가 180 이상인 사람을 출력

해당과 같은 출력은 위에서 말씀드렸듯 SELECT문 뒤에 where 조건문을 추가해주어야합니다.

 

1
SELECT * FROM information WHERE num >= 3 AND height >= 180;

 

출력 결과

 

- 번호가 2번 이전이거나 키가 170 이상인 사람을 출력

이번 문제는 또는의 조건을 주었습니다.

1
SELECT * FROM information WHERE num <= 2 OR height >= 170;

 

출력결과

 

 

이번에는 그냥 AND가 아닌 BETWEEN AND와 IN, LIKE를 설명해보겠습니다.

- 키가 160 ~ 180 사이의 인원을 출력

 

위 문제처럼 다음과 같이 작성 가능하지만

1
SELECT * FROM information WHERE height >= 160 AND height <= 180;

이번에는 BETWEEN AND를 사용한다면

1
SELECT * FROM information WHERE height BETWEEN 160 AND 180;

다음과 같이 작성 가능합니다.

 

출력결과

 

이번에는 OR와 IN을 비교해보도록 하겠습니다.

- num이 1번 3번 5번을 출력

1
SELECT * FROM information WHERE num=1 OR num=3 OR num=5;

 

출력결과

 

OR을 연속적으로 사용하여 구분도 가능하지만

IN()을 사용할 수도 있습니다.

1
SELECT * FROM information WHERE num IN(1,3,5);

출력 결과는 위와 동일하게 나타납니다!

 

이번에는 LIKE연산자에 대해 설명해드리겠습니다.

 

예를들어 'Hong%' 인 경우 성이 'Hong' 이고 뒤에는 어떤 것이든 허용한다는의미이다. 이 말은 Hong이 맨 첫 글자에 있는 경우 다 출력한다.

 

다음으로 '_Gildong' 의 경우는 맨 첫 1칸은 아무 글자나 들어와도 상관없지만 뒤 나머지 글자가 Gildong으로 끝나는 경우를 출력해야 한다.

 

저의 경우 뒤에 글자가 다 Gildong이므로 'Hong_______'을 출력해보겠습니다. ( _ 를 7개 사용하였습니다.)

 
1
SELECT * FROM information WHERE irum LIKE 'Hong_______';

 

출력 결과

 

 

서브 쿼리

 

쿼리문 안에 또 다른 쿼리문이 존재하는 것을 뜻한다.

- 'SaGildong' 보다 키가 크거나 같은 사람을 출력

1
SELECT * FROM information WHERE height > (SELECT height FROM information WHERE irum = 'Sagildong');

 

출력결과

 

 

ORDER BY

조건이 주어지면 해당 조건에 따라서 순서대로 나열해준다.

 

키 순서대로 출력해보겠습니다.

1
SELECT * FROM information ORDER BY height;

 

출력결과

 

 

height 뒤에 DESC를 써주면 내림차순 정렬이지만 생략시에는 자동으로 ASC가 적용되어 오름차순으로 출력됩니다.

 

* 주의할 점 : ORDER BY절은 SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY, 중에서 가장 뒤에 작성되어야한다.

 

LIMIT

출력 문장 개수에 제한을 주는 명령어입니다.

 

위 문장에서는 키 순서대로 5개의 데이터가 전부 출력되었지만 이번에는 LIMIT 조건을 3으로 주어보겠습니다.

1
SELECT * FROM information ORDER BY height LIMIT 3;

 

출력결과

 

 

추가 ! 테이블을 복사하는 방법 !

테이블 복사 형식

CREATE TABLE 새로운테이블명 (SELECT 복사할컬럼 FROM 복사할테이블)

 

information 테이블을 information2로 복사한 후 출력해보겠습니다.

 

1
2
3
CREATE TABLE information2 (SELECT * FROM information);
 
SELECT * FROM information2;

 

출력 결과

 

 

동일하게 출력되는 것을 알 수 있습니다.

복사할 컬럼 부분에 원하는 조건만 추가하여 복사도 가능합니다.

 

집계함수

 

집계함수 형식

SELECT 집계함수(집계할컬럼내용) FROM 테이블명;

 

SUM과 AVG

SUM은 말 그대로 합을 뜻하며, AVG는 평균값을 뜻합니다.

5명의 키를 다 더하여 평균을 계산해보겠습니다.

 

1
2
3
SELECT SUM(height) FROM information;
 
SELECT AVG(height) FROM information;

 

출력결과

 

 

또 다른 집계 함수를 정리해보았습니다.

 

함수명 설명
AVG() 평균값
MIN() 최소값
MAX() 최대값
COUNT() 행의 개수
COUNT(DISTINCT) 행의 개수를 센다.

 

 

반응형

+ Recent posts