SELECT문
- 데이터베이스 내의 테이블에서 원하는 정보를 추출하는 명령어
SELECT문 기본 형식
SELECT 열이름 FROM 테이블명 [where 조건] ;
[ ] 부분은 생략이 가능합니다.
|
USE문
- SELECT문을 사용하기에 앞서 해당 테이블을 사용할 데이터베이스를 지정해서 접속하여야한다.
USE문 기본 형식
USE 데이터베이스명 ;
ex) 데이터베이스명이 user라면
USE user;
라고 입력해줍니다.
|
위와 같은 문장의 의미
user 데이터베이스를 사용하겠다.
지금부터 실행하는 쿼리문은 user DB에서 수행합니다.
간단한 예를 만들어보겠습니다.
서버에 존재하는 DB를 확인하는 명령어는 다음과 같습니다
데이터베이스명과 테이블명은 제가 임의로 만들었습니다.
ex.sql
|
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
|
USE USER;
SELECT * FROM information;
|
출력결과
* 해당 출력 결과는 제가 임의로 넣은 데이터입니다.
관계연산자 사용
- 번호가 3번 이후면서 키가 180 이상인 사람을 출력
해당과 같은 출력은 위에서 말씀드렸듯 SELECT문 뒤에 where 조건문을 추가해주어야합니다.
|
SELECT * FROM information WHERE num >= 3 AND height >= 180;
|
출력 결과
- 번호가 2번 이전이거나 키가 170 이상인 사람을 출력
이번 문제는 또는의 조건을 주었습니다.
|
SELECT * FROM information WHERE num <= 2 OR height >= 170;
|
출력결과
이번에는 그냥 AND가 아닌 BETWEEN AND와 IN, LIKE를 설명해보겠습니다.
- 키가 160 ~ 180 사이의 인원을 출력
위 문제처럼 다음과 같이 작성 가능하지만
|
SELECT * FROM information WHERE height >= 160 AND height <= 180;
|
이번에는 BETWEEN AND를 사용한다면
|
SELECT * FROM information WHERE height BETWEEN 160 AND 180;
|
다음과 같이 작성 가능합니다.
출력결과
이번에는 OR와 IN을 비교해보도록 하겠습니다.
- num이 1번 3번 5번을 출력
|
SELECT * FROM information WHERE num=1 OR num=3 OR num=5;
|
출력결과
OR을 연속적으로 사용하여 구분도 가능하지만
IN()을 사용할 수도 있습니다.
|
SELECT * FROM information WHERE num IN(1,3,5);
|
출력 결과는 위와 동일하게 나타납니다!
이번에는 LIKE연산자에 대해 설명해드리겠습니다.
예를들어 'Hong%' 인 경우 성이 'Hong' 이고 뒤에는 어떤 것이든 허용한다는의미이다. 이 말은 Hong이 맨 첫 글자에 있는 경우 다 출력한다.
다음으로 '_Gildong' 의 경우는 맨 첫 1칸은 아무 글자나 들어와도 상관없지만 뒤 나머지 글자가 Gildong으로 끝나는 경우를 출력해야 한다.
저의 경우 뒤에 글자가 다 Gildong이므로 'Hong_______'을 출력해보겠습니다. ( _ 를 7개 사용하였습니다.)
|
SELECT * FROM information WHERE irum LIKE 'Hong_______';
|
출력 결과
서브 쿼리
쿼리문 안에 또 다른 쿼리문이 존재하는 것을 뜻한다.
- 'SaGildong' 보다 키가 크거나 같은 사람을 출력
|
SELECT * FROM information WHERE height > (SELECT height FROM information WHERE irum = 'Sagildong');
|
출력결과
ORDER BY
조건이 주어지면 해당 조건에 따라서 순서대로 나열해준다.
키 순서대로 출력해보겠습니다.
|
SELECT * FROM information ORDER BY height;
|
출력결과
height 뒤에 DESC를 써주면 내림차순 정렬이지만 생략시에는 자동으로 ASC가 적용되어 오름차순으로 출력됩니다.
* 주의할 점 : ORDER BY절은 SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY, 중에서 가장 뒤에 작성되어야한다.
LIMIT
출력 문장 개수에 제한을 주는 명령어입니다.
위 문장에서는 키 순서대로 5개의 데이터가 전부 출력되었지만 이번에는 LIMIT 조건을 3으로 주어보겠습니다.
|
SELECT * FROM information ORDER BY height LIMIT 3;
|
출력결과
추가 ! 테이블을 복사하는 방법 !
테이블 복사 형식
CREATE TABLE 새로운테이블명 (SELECT 복사할컬럼 FROM 복사할테이블) |
information 테이블을 information2로 복사한 후 출력해보겠습니다.
|
CREATE TABLE information2 (SELECT * FROM information);
SELECT * FROM information2;
|
출력 결과
동일하게 출력되는 것을 알 수 있습니다.
복사할 컬럼 부분에 원하는 조건만 추가하여 복사도 가능합니다.
집계함수
집계함수 형식
SELECT 집계함수(집계할컬럼내용) FROM 테이블명; |
SUM과 AVG
SUM은 말 그대로 합을 뜻하며, AVG는 평균값을 뜻합니다.
5명의 키를 다 더하여 평균을 계산해보겠습니다.
|
SELECT SUM(height) FROM information;
SELECT AVG(height) FROM information;
|
출력결과
또 다른 집계 함수를 정리해보았습니다.
함수명 |
설명 |
AVG() |
평균값 |
MIN() |
최소값 |
MAX() |
최대값 |
COUNT() |
행의 개수 |
COUNT(DISTINCT) |
행의 개수를 센다. |