SQooL
웹페이지에서 실행 가능한 교육 목적의 SQL 튜토리얼 사이트입니다. 별도의 설치 없이 기본 SQL 구문을 실습해 볼 수 있습니다.
sqlschool.co.kr
여기서 실습했음.
SELECT
데이터를 조회하거나 산술식, 함수 등을 실행할 때 사용.
SELECT * FROM student;
student의 모든 정보를 출력
SELECT 학번, 이름, 학과 FROM student;
student의 학번, 이름, 학과를 출력
SELECT 1+1;
SELECT (10 + 2) / 2;
DISTINCT
중복값을 제거.
SELECT DISTINCT 학과번호 FROM subject;
subject의 학과번호에서 중복제거하고 출력
ORDER BY
결과를 정렬. 오름차순 : ASC, 내림차순 : DESC
SELECT 학번, 학년, 이름 FROM student ORDER BY 학년 DESC;
학년을 내림차순으로 student에서 학번, 학년, 이름 출력
AS
별칭을 정함.
SELECT 학번, 이름 AS 성명, 연락처 AS 휴대폰번호 FROM student;
student에서 학번, 이름은 성명으로, 연락처는 휴대폰번호로 출력
산술계산
SELECT 연도, 금액 + 5000 FROM tuition;
tuition에서 연도, 금액 + 5000을 출력
연결 연산자
Oracle에서는 ||, MsSQL은 +, MySQL은 공백으로 연결 가능. CONCAT함수는 공통으로 사용 가능
SELECT 학년 || ' ' || 학과 || ' ' || 학년 AS Student_Info FROM student;

논리 연산
우선순위 NOT, AND, OR
SELECT 1 AND 0;
SELECT 1 OR 0;
SELECT NOT 0;
SELECT * FROM student WHERE 학번 LIKE '2019%' AND 마일리지 >= 100;
student에서 학번이 2019로 시작하고 마일리지가 100이상인것들을 출력
SELECT * FROM student WHERE 마일리지 >= 100 AND 학번 LIKE '2019%' OR 학번 LIKE '2020%';
student에서 학번이 2019 or 2020으로 시작하고 마일리지가 100이상인것들을 출력
SELECT * FROM student WHERE 마일리지 >= 100 AND NOT 학번 LIKE '2019%';
student에서 학번이 2019로 시작하지않고 마일리지가 100이상인것들을 출력
BETWEEN 연산
BETWEEN A AND B : A와 B를 포함한 사이의 값
SELECT 학번, 1학년1학기 FROM grade WHERE 1학년1학기 BETWEEN 3.0 AND 4.0;
1학년1학기 점수가 3.0에서 4.0 사이인 grade의 학번과 1학년1학기 출력
IN 연산
IN A : A안의 값과 일치하는 값을 조회
SELECT 학번, 이름, 학과 FROM student WHERE 학과 IN ('물리학과', '화학과');
학과가 물리학과 또는 화학과인 student의 학번, 이름, 학과를 출력
LIKE 연산
LIKE '비교문자', (% : 여러개, _ : 한글자), 대소문자를 안 가림
SELECT 학년, 이름, 지도교수 FROM student WHERE 지도교수 LIKE '%호준';
지도교수가 ~호준인 student의 학년, 이름, 지도교수를 출력
SELECT 학년, 이름, 지도교수 FROM student WHERE 지도교수 LIKE '이__';
지도교수가 이OO인 student의 학년, 이름, 지도교수를 출력
SELECT 학번, 이름, 학과, 생년월일 FROM student WHERE 생년월일 LIKE '%-04-%;
생년월일에 -04- 가 들어가는 student의 학번, 이름, 학과, 생년월일 출력
IS NULL
필드의 값이 NULL인 경우를 조회하고자 할 때 사용. NULL : 아예 값이 없어 알 수 없는 값. 0이나 공백은 아님
SELECT * FROM scholarship WHERE 성적장학금 IS NULL;
성적장학금이 NULL인 scholarship 출력
WHERE
데이터를 검색, 갱신, 삭제할 때 특정 데이터에 대한 조건을 설정할 때 사용하는 구문. 여러 연산자를 결합하여 사용 가능
SELECT 학년, 이름, 연락처 FROM student WHERE 학년 >= 3;
학년이 3이상인 student의 학년, 이름, 연락처 출력
INSERT
기존 테이블에 행을 삽입할 때 사용하는 구문
INSERT INTO [테이블명] ([컬럼1], [컬럼2], ...) VALUES ([값1, 값2, ...]);
INSERT INTO professor (이름, 학과, 이메일) VALUES ('김물리', '물리학과', 'asdf123@sqool.ac.kr');
professor테이블 이름, 학과, 이메일에 각각 김물리, 물리학과, asdf123@sqool.ac.kr인 값을 가지는 데이터를 삽입
UPDATE
데이터를 수정할 수 있음. WHERE절이 탐색 조건을 충족시키는 모든 행에 대해서 값을 변경
UPDATE [테이블명] SET [컬럼='변경할값'], [컬럼='변경할값'], ... WHERE [조건];
UPDATE student SET 이름='김동후', 학과='컴퓨터공학과' WHERE 학번=201900001;
학번이 201900001인 student의 이름을 '김동후', 학과를 '컴퓨터공학과'로 update
DELETE
DELETE 문을 사용하면 테이블에서 행을 제거할 수 있음.
DELETE FROM student WHERE 학번=201900001;
학번이 201900001인 student를 제거
TOP 과 LIMIT
많은 데이터 중에서 특정 개수만 출력. 방대한 데이터를 다룰 때 유용하게 사용
SELECT * FROM student LIMIT 3;
student중 3개만 출력
문자열 함수
SELECT DATE();
사용자의 현재 날짜
SELECT TIME();
사용자의 현재 시간
SELECT DATETIME();
현재의 날짜와 시간을 한꺼번에
SELECT STRTIME('%Y-%m-%d %H:%M:%S', 'now');
DATE, TIME값을 포맷에 맞춰서 반환
SELECT LOWER(교원번호) AS 교원번호 FROM professor;
LOWER : 소문자로
SELECT UPPER(이메일) AS 이메일 FROM professor;
UPPER : 대문자로
SELECT SUBSTR(주소, 1, 2) AS 주소 FROM Student;
SUBSTR(STRING, START, LENGTH) : 원하는 문자열을 start부터 length만큼 슬라이싱
SELECT REPLACE('Hello world', 'world', 'SQL');
REPLACE(string, find_string, replacement) : 원하는 문자열에서 find_string을 replacement로 변경
SELECT LENGTH(이름) FROM student;
LENGTH : 문자열의 길이 출력