SQL

SQL 쿼리문

UserDonghu 2023. 10. 25. 00:02

https://sqlschool.co.kr/

 

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 : 문자열의 길이 출력