반응형

 

- MySQL , postgreSQL, MariaDB

SELECT * FROM 테이블이름
	WHERE 컬럼명 LIKE CONCAT(‘%’, #{파라미터}, ‘%’)

 

- Oracle

SELECT * FROM 테이블명
	WHERE 컬럼명 LIKE '%'||#{파라미터}||'%'
반응형

'SQL' 카테고리의 다른 글

SQL 기본편 - INSERT / UPDATE / DELETE  (0) 2020.03.08
SQL 기본편 - SELECT  (0) 2020.03.06
반응형

SQL문은 크게 DML , DDL , DCL로 분류 가능합니다.

 

DML은 데이터를 조작하는데 사용되는 언어로

SELECT / INSERT / UPDATE / DELETE 가 이 구문에 해당된다.

 

DDL은 데이터베이스 / 테이블 / 뷰 / 인덱스 등의 데이터베이스 개체를 생성 / 삭제 / 변경하는 역할을 한다.

자주 사용하는 DDL은 CREATE , DROP ,ALTER가 있다.

 

DCL은 사용자에게 권한을 부여하거나 빼앗을 때 주로 사용한다.

GRANT / REVOKE / DENY 가 있다.

 

INSERT

데이터를 삽입하는 명령어

 

INSERT 형식

INSERT INTO 테이블 [ 컬럼의 부분을 추가할 경우 입력 ] VALUES (값들);

자동으로 증가시켜야할 경우 AUTO_INCREMENT를 사용해줍니다.

 

AUTO_INCREMENT 형식

CREATE TABLE 만들테이블명 (num int AUTO_INCREMENT PRIMARY KEY, ... 새로운 컬럼명2 조건2)

 

AUTO_INCREMENT로 지정할 때는 PRIMARY KEY 또는 UNIQUE 설정을 해주어야하고 데이터 형은 숫자 형식만 사용 가능합니다.

 

UPDATE

기존에 입력되어있는 데이터 값을 변경

 

UPDATE 형식

UPDATE 테이블명 SET 열1=값1 , 열2=값2 where 조건;

이전 글에서 작성했던 데이터베이스에서 'HongGildong'을 'ilGildong'으로 수정해보겠습니다.

 

1
UPDATE information SET irum='HongGildong' , irum='ilGildong' WHERE irum='HongGildong';

 

출력 결과

 

 

where 조건문을 사용하지 않는 경우 다음과 같이 전부 다 바뀌는 경우가 생기니 조심해주도록 합니다.

 

1
UPDATE information SET irum='HongGildong' , irum='ilGildong';

 

출력결과

 

DELETE

데이터를 삭제하는 명령어입니다.

 

DELETE 형식

DELETE FROM 테이블명 WHERE 조건;

 

조금전에 변경했떤 'ilGildong'을 삭제해보겠습니다.

1
DELETE FROM information WHERE irum='ilGildong';

 

출력결과

 

 

반응형

'SQL' 카테고리의 다른 글

[SQL] Mybatis XML 작성 시 SQL 별로 LIKE 동적 쿼리 사용 방법  (0) 2022.05.17
SQL 기본편 - SELECT  (0) 2020.03.06
반응형

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