데이터베이스에 들어있는 데이터를 조회하거나 검색하기 위한 명령어이다.
SELECT (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; // 오름차순으로 정렬하라.
// 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가 들어가는 사원들의 이름을 출력한다.
// 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'
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
여러 개의 컬럼의 값을 가지고 결과값을 하나로만 만드는 함수이다.
// 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;