[SQL] 3. DML이란? (1)

gyrud02·2021년 12월 27일
0

데이터베이스(DB)

목록 보기
4/8

3. DML(DataBase Manipulation Language)

데이터베이스에 들어있는 데이터를 조회하거나 검색하기 위한 명령어이다.

1) SELECT : 검색

SELECT (DISTINCT) 컬럼명(ALIAS)
FROM 테이블명;
  • DISTINCT : 중복된 데이터를 제외하고 검색하고자 하는 데이터(컬럼)을 나열한다.
  • ALIAS : 나타날 컬럼에 대한 다른 이름을 부여한다.
  • FROM : 선택한 컬럼이 있는 테이블을 명시한다.
// 예시
SELECT *
FROM department;

SELECT deptno 
FROM department; // deptno컬럼의 데이터만 볼 수 있다.

desc department; // 테이블의 구조를 볼 수 있다.

SELECT deptno 부서번호, name 부서명 from department;
// deptno의 alias는 부서번호, name의 alias는 부서명이다.
// 문제: employee 테이블에서 직원의 사번(empno), 이름(name), 직업(job)을 출력하라

SELECT empno, name, job
FROM employee;
① 정렬
SELECT empno, name 
FROM employee 
ORDER BY name desc; // 내림차순으로 정렬하라.
ORDER BY name ASC; // 오름차순으로 정렬하라.
  • ORDER BY : 정렬한다. 기본값은 오름차순이다.
② WHERE절 (조건절)
// WHERE = 조건
SELECT *
FROM employee
WHERE empno = 7934;
// IN = WHERE절을 쓸 때 사용한다.
SELECT *
FROM employee
WHERE deptno in (10,30); // deptno가 10과 30인 데이터만 나열한다.
// OR = where절을 쓸 때 사용한다.
SELECT *
FROM employee
WHERE deptno = 10 or deptno = 30; // deptno가 10이거나 30인 데이터만 나열한다.
// AND = WHERE절을 쓸 때 사용한다.
SELECT *
FROM employee
WHERE deptno = 10 and deptno = 30; // deptno가 10이고 30인 데이터만 나열한다.
// LIKE = WHERE절을 쓸 때 사용한다.
SELECT *
FROM employee
WHERE name LIKE  'A%'; // A로 시작하는 사원들의 이름을 출력한다.

WHERE name LIKE  '%A'; // A로 끝나는 사원들의 이름을 출력한다.

WHERE name LIKE  '%A%'; // A가 들어가는 사원들의 이름을 출력한다.
  • IN (조건1, 조건2) : 조건1과 조건2에 만족하는 모든 데이터를 결과로 출력한다.
  • OR : 두 개의 값 중 하나라도 만족하는 데이터를 결과로 출력한다.
  • AND : 두 개의 값 모두가 만족하는 값을 결과로 출력한다.
  • LIKE : %, '_', 와일드카드를 사용하여 특정 문자를 포함한 값에 대한 조건을 처리한다.
③ 함수
// LOWER()
SELECT LOWER(name) 
FROM employee;
// LPAD()
SELECT LPAD(name, 10, '+') 
FROM employee; 
// 컬럼명의 데이터를 출력하는데 데이터가 10자리가 안될 경우, 왼쪽 데이터에 + 기호를 붙여서 10자리로 만든다.


// SUBSTR()
SELECT SUBSTR(store_name, 3)
FROM geography
WHERE store_name = 'Los Angeles'; // 결과값 : 's Angeles'
// 앞에서 3번째 문자열부터 출력한다.

SELECT SUBSTR(store_name, 2, 4)
FROM geography
WHERE store_name = 'San Diego'; // 결과값 : 'an D'
// 앞에서 2번째부터 4번째까지의 문자열만 출력한다.


// TRIM()
SELECT TRIM(' Sample '); // 결과값 : 'Sample'

// LTRIM()
SELECT LTRIM(' Sample '); // 결과값 : 'Sample '

// RTRIM()
SELECT RTRIM(' Sample '); // 결과값 : ' Sample'
  • UPPER() : 데이터를 대문자로 변경하여 출력한다.
  • LOWER() : 데이터를 소문자로 변경하여 출력한다.
  • UCASE() : 데이터를 대문자로 변경하여 출력한다.
  • LCASE() : 데이터를 소문자로 변경하여 출력한다.
  • SUBSTRING(str, pos), SUBSTR(str, pos) : 하나의 필드 데이터의 일부를 읽는데 사용한다.
  • LPAD(col, number, 기호) : 컬럼명의 데이터를 출력하는데 데이터가 10자리가 안될 경우, 왼쪽 데이터에 + 기호를 붙여서 10자리로 만든다.
  • RPAD(col, number, 기호) : 컬럼명의 데이터를 출력하는데 데이터가 10자리가 안될 경우, 오른쪽 데이터에 + 기호를 붙여서 10자리로 만든다.
  • TRIM() : 하나의 문자열의 시작 또는 끝 부분을 제거하는데 사용된다.
  • LTRIM() : 문자열의 시작 부분의 공백을 제거한다.
  • RTRIM() : 문자열의 끝 부분의 공백을 제거한다.
  • ABS(x) : x의 절대값을 구한다.
  • MOD(n, m) : n을 m으로 나눈 나머지 값을 출력한다.
  • FLOOR(x) : x보다 크지 않은 가장 큰 정수를 반환한다. BIGINT로 자동 변환한다.
  • CEILING(x) : x보다 작지 않은 가장 작은 정수를 반환한다.
  • ROUND(x) : x에 가장 근접한 정수를 반환한다.
  • ROW(x,y), POWER(x,y) : x의 y제곱 승을 반환한다.
  • GREATEST(x, y, ...) : 가장 큰 값을 반환한다.
  • LEAST(x, y, ...) ; 가장 작은 값을 반환한다.
  • CURDATE(), CURRENT_DATE : 오늘 날짜를 'YYYY-MM-DD' 혹은 'YYYYMMDD'형식으로 반환한다.
  • CURTIME(), CURRENT_TIME : 현재 시각은 'HH:MM:SS' 혹은 'HHMMSS'형식으로 반환한다.
  • NOW(), SYSDATE(), CURRENT_TIMESTAMP : 오늘 현시각을 'YYYY-MM-DD HH:MM:SS' 혹은 'YYYYMMDDHHMMSS'형식으로 반환한다.
  • DATE_FORMAT(date, format) : 입력된 date를 format 형식으로 반환한다.
  • PERIOD_DIFF(p1, p2) : 'YYMM'이나 'YYYYMM'으로 표기되는 p1과 p2의 차이 개월을 반환한다.
④ CAST 형변환

CAST 함수는 type을 변경(지정)하는데 유용한다.

// CAST()
SELECT CAST(NOW() AS date); 

SELECT CAST(1-2 AS unsigned);

SELECT CAST(29.8 AS INT); // 결과값 : 29

// CONVERT() 예시
CONVERT(data_type[(legnth)], expression[style])

SELECT CONVERT(NVARCHAR(10), 컬럼) AS 컬럼명 // AS 컬럼명 (생략가능)
FROM 테이블명 // 테이블명에 해당하는 컬럼을 VARCHAR로 변환한다.

SELECT CONVERT(INT, 컬럼) AS 컬럼명 // AS 컬럼명 (생략가능)
FROM 테이블명 // 테이블명에 해당하는 컬럼을 INT로 변환한다.

SELECT CONVERT(CHAR, 컬럼) AS 컬럼명 // AS 컬럼명 (생략가능)
FROM 테이블명 // 테이블명에 해당하는 컬럼을 CHAR로 변환한다.


// 예제 - 테이블(MY_TABLE)의 나이(AGE)칼럼을 INT에서 CHAR로 형변환
SELECT CONVERT(NVARCHAR(10), AGE)+'세' AS 나이
FROM MY_TABLE;

// 예제 - 테이블(MY_TABLE)에서 날짜(DTS)칼럼을 INT에서 DATE로 형변환
SELECT CONVERT(DATE, SUBSTRING(DTS, 1, 8) AS 날짜
FROM MY_TABLE
  • expression : 유효한 식
  • data_type : 대상 데이터 형식 별칭 데이터 형식은 사용할 수 없다.
  • length : 대상 데이터 형식의 길이를 지정하는 선택적 정수, 기본값 30.
  • style : CONVERT함수가 식을 변환하는 방법을 지정하는 정수식이다. style이 NULL이면 NULL값이 반환된다.
⑤ GROUP 함수

여러 개의 컬럼의 값을 가지고 결과값을 하나로만 만드는 함수이다.

// CONCAT()
// 문제 : employee 테이블에서 사번과 부서번호를 하나의 컬럼으로 출력하라.

SELECT concat(empno, '-', deptno) AS '사번-부서번호'
FROM employee;


// COUNT()
SELECT COUNT(*)
FROM employee;

SELECT COUNT(boss)
FROM employee; // NULL값을 제외하고 숫자를 센다.


// AVG()
SELECT AVG(salary) 
FROM employee;
  • CONCAT(컬럼명, 컬럼명): 하나의 컬럼으로 합쳐주는 함수이다.
  • COUNT() : NULL이 아닌 ROW의 숫자를 반환한다.
  • AVG() : 평균값을 반환한다.
  • MIN() : 최소값을 반환한다.
  • MAX() : 최대값을 반환한다.
  • SUM() : 합계를 반환한다.
  • GROUP_CONCAT() : 그룹에서 concatenated한 문자를 반환한다.
  • VARIANCE() : 분산한다.
  • STDDEV() : 표준 편차를 반환한다.
profile
Back-End Engineer

0개의 댓글