'SQL'에 해당되는 글 5건
- 2020.04.14 :: [SQL] JOIN VIEW,별명알아보자
- 2020.04.14 :: [SQL] 일부결과 및 집합함수
- 2020.04.14 :: [SQL] 연산 논리 (기초 배우기 )
- 2020.04.14 :: [SQL] SQL 이란 무엇일까? (기초배우기 정의,종류)
- 2020.04.11 :: [SQL] 설치하기 / 다운로드
JOIN 의 개념
서로 다른 테이블을 공통 컬럼을 기준으로 합치는(결합하는) 테이블 단위 연산
조인의 결과 테이블은 이전 테이블의 컬럼 수의 합과 같다.
SELECT * FROM 테이블 1 JOIN 테이블 2 ON 테이블1.컬럼명 = 테이블2.컬럼명 ...
조인 시 서로 다른 테이블에 같은 컬럼명이 존재하면 구분을 위해 테이블명.컬럼명으로 사용해서 표시
예제
- city 테이블과 country 테이블을 조인하시오. (city.CountryCode = country.Code)
- 국가코드와 해당 나라의 GNP 를 표시하시오
결과 확인
- SELECT * FROM city JOIN country ON city.CountryCode = country.Code;
- SELECT city.CountryCode, country.GNP FROM city join country ON
city.CountryCode = country.Code;
JOIN 의 종류
조인 시 NULL 값을 허용하는 내부 조인(불가)과 외부조인(허용)으로 구분
INNER JOIN / LEFT JOIN / RIGHT JOIN / FULL JOIN
INNER JOIN
조인 시 NULL 값을 허용하지 않음
(NULL 값을 가진 레코드는 조인결과에 빠짐)
LEFT JOIN
조인 시 JOIN 의 왼쪽 테이블의 NULL 값을 포함해서 표시
RIGHT JOIN
조인 시 JOIN 의 오른쪽 테이블의 NULL 값을 포함해서 표시
FULL JOIN
MySQL 은 지원하지 않음
예제
- city 테이블에 국가코드가 없는 도시가 있는지 확인
- country 테이블에는 존재하지만 도시가 하나도 없는 나라가 있는지 확인
- 이 때 INNER JOIN / LEFT JOIN / RIGHT JOIN 의 차이점으로 확인
결과 확인
- SELECT COUNT(*) FROM city WHERE CountryCode is NULL;
- SELECT COUNT(*) FROM city LEFT JOIN country ON city.CountryCode = country.Code;
(country 값이 존재하지 않는 city 는 포함)
- SELECT COUNT(*) FROM city RIGHT JOIN country ON city.CountryCode = country.Code;
(country 중 도시 수가 하나도 없는 country 는 포함)
별명(ALIAS)
SQL 쿼리 결과 생성 시 컬럼명에 대한 별명을 사용해 표시하는 기능
SELECT 테이블명1.컬럼명1 AS 별명1, 테이블명2.컬럼명2 AS 별명2 FROM ....
조인할 때 많이 사용된다
예제
- city 테이블과 country 테이블을 조인해서 국가코드 'KOR' 인 나라의 축약표시명(Abbr) 과 정식명(Full Name)을 표시하시오
결과 확인
- SELECT city.CoutryCode AS Abbr, country.Name AS FullName FROM city JOIN country on city.CountryCode = country.Code WHERE city.CountryCode = 'KOR';
뷰 (VIEW)
SQL 쿼리의 결과값을 임시 테이블로 저장해서 사용할 수 있음
사용 용도가 끝나면 명시적으로 삭제해야 함 (DROP VIEW ....)
CREATE VIEW 뷰명 AS SELECT ...
예제
CREATE VIEW sampleView AS SELECT city.CountryCode AS Abbr, country.Name AS FullName FROM city JOIN country ON city.CountryCode = country.Code WHERE city.CountryCode = 'KOR';
SELECT * FROM sampleView;
'SQL' 카테고리의 다른 글
[SQL] 일부결과 및 집합함수 (0) | 2020.04.14 |
---|---|
[SQL] 연산 논리 (기초 배우기 ) (0) | 2020.04.14 |
[SQL] SQL 이란 무엇일까? (기초배우기 정의,종류) (0) | 2020.04.14 |
[SQL] 설치하기 / 다운로드 (0) | 2020.04.11 |
결과값 일부 조회 (ROWNUM, TOP)
SQL 쿼리 결과 중 상위 몇 개만 보여주는 쿼리
SELECT 컬럼명 1, 컬럼명 2, ... FROM 테이블명 WHERE 조건절 LIMIT 숫자
대표적인 비표준기능 (DBMS 종류마다 다름)
예제
- 국가코드가 'KOR' 인 도시들 중 인구수 많은 순서로 상위 10개만 표시하시오
결과 확인
- SELECT CountryCode FROM city WHERE CountryCode = 'KOR' ORDER BY Population DESC LIMIT 10;
집합함수 (Aggregation Function)
테이블의 전체 레코드를 대상으로 특정 컬럼을 적용해서 한 개의 값을 리턴하는 함수
COUNT(), AVG(), SUM(), MIN(), MAX(), FIRST(), LAST(), ....
- COUNT() -> 레코드의 개수를 리턴하는 함수
- SUM() / AVG() -> 컬럼값의 합/평균을 리턴
- MIN() / MAX() -> 컬럼값의 최소/최대값을 리턴
사용법 : SELECT aggregation_function(컬럼명) FROM 테이블명 WHERE 조건절
예제
- City 테이블에서 국가코드가 'KOR' 인 도시의 수를 표시하시오
- City 테이블에서 국가코드가 'KOR' 인 도시들의 인구수 총합 / 평균을 구하시오
- City 테이블에서 국가코드가 'KOR' 인 도시들의 인구수 중 최대값 / 최소값을 구하시오
결과 확인
- SELECT COUNT(*) FROM city WHERE CountryCode = 'KOR'
- SELECT SUM(Population) FROM city WHERE CountryCode = 'KOR'
- SELECT AVG(Population) FROM city WHERE CountryCode = 'KOR'
- SELECT MIN(Population) FROM city WHERE CountryCode = 'KOR'
- SELECT MAX(Population) FROM city WHERE CountryCode = 'KOR'
유용한 함수들
LENGTH() - 레코드의 문자열 컬럼의 글자수를 리턴한다.
MID() - 문자열의 중간부분을 리턴한다.
UPPER() / LOWER() - 문자열을 대문자/소문자로 리턴한다.
ROUND() - 레코드의 숫자 컬럼값을 반올림
'SQL' 카테고리의 다른 글
[SQL] JOIN VIEW,별명알아보자 (0) | 2020.04.14 |
---|---|
[SQL] 연산 논리 (기초 배우기 ) (0) | 2020.04.14 |
[SQL] SQL 이란 무엇일까? (기초배우기 정의,종류) (0) | 2020.04.14 |
[SQL] 설치하기 / 다운로드 (0) | 2020.04.11 |
DISTINCT 연산자
SELECT 문의 결과 값에서 특정 컬럼만 출력할 경우 중복된 값들이 나오는 경우에 이를 제거해서 표시하는 기능
SELECT DISTINCT 컬럼명 1, 컬럼명 2, ... FROM 테이블명
예제
- 국가코드가 'KOR' 인 도시들의 국가코드를 표시하시오.
- 국가코드가 'KOR' 인 도시들의 국가코드를 중복제거해서 표시하시오.
결과 확인
- SELECT CountryCode FROM city WHERE CountryCode = 'KOR';
- SELECT DISTINCT CountryCode FROM city WHERE CountryCode = 'KOR';
논리연산자 (AND, OR, NOT)
SELECT 문의 조건절에 논리 조건 적용해서 적용할 수 있는 연산자
SELECT * FROM 테이블명 WHERE (NOT) 조건 1 AND/OR (NOT) 조건 2 .....
예제
- 국가코드가 'KOR' 이면서 인구가 100만 이상인 도시를 찾으시오
- 국가코드가 'KOR', 'CNN', 'JPN' 인 도시를 찾으시오
- 국가코드가 'KOR' 이 아니면서 인구가 100만 이상인 도시를 찾으시오.
결과 확인
- SELECT * FROM city WHERE CountryCode = 'KOR' AND Population > 1000000
- SELECT * FROM city WHERE CountryCode = 'KOR' OR CountryCode = 'CNN' OR CountryCode = 'JPN'
- (위와 같은 코드) SELECT * FROM city WHERE CountryCode in ('KOR', 'CNN', 'JPN')
- SELECT * FROM city WHERE CountryCOde != 'KOR' AND Population > 1000000
'SQL' 카테고리의 다른 글
[SQL] JOIN VIEW,별명알아보자 (0) | 2020.04.14 |
---|---|
[SQL] 일부결과 및 집합함수 (0) | 2020.04.14 |
[SQL] SQL 이란 무엇일까? (기초배우기 정의,종류) (0) | 2020.04.14 |
[SQL] 설치하기 / 다운로드 (0) | 2020.04.11 |
SQL (Structured Query Language) :
- 관계형 데이터베이스에서 사용하는 표준 질의언어를말한다.
- 사용 방법이나 문법이 다른 언어(Java, C, C#, Java)보다 단순하다.
- 모든 DBMS에서 사용 가능하다.
- 인터프리터 언어
- 대소문자 구별하지 않는다.
DML :
- 데이터베이스의 테이블에 있는 내용을 직접 조작하는 기능
- 테이블의 레코드를 CRUD (Create, Retrieve, Update, Delete)
SQL 문
내용
insert
데이터베이스 객체에데이터를 입력
delete
데이터베이스 객체에데이터를 삭제
update
데이터베이스 객체 안의데이터 수정
select
데이터베이스 객체 안의데이터 조회
DDL :
- 데이터베이스의 스키마를 정의, 생성, 수정하는 기능
- 테이블 생성, 컬럼 추가, 타입 변경, 각종 제약조건 지정,수정 등
SQL 문
내용
create
데이터베이스 객체를생성
drop
데이터베이스 객체를삭제
alter
기존에 존재하는데이터베이스 객체를다시 정의
DCL :
- 데이베이스의 테이블에 접근 권한이나 CRUD 권한을 정의하는기능
- 특정 사용자에게 테이블의 조회권한 허가 / 금지 등
SQL문
내용
grant
데이터베이스 객체에권한을 부여
revoke
이미 부여된데이터베이스 객체권한을 취소
CRUD (Create, Retrieve, Update, Delete) :
이름
조작
SQL
create
read (retrieve)
생성
읽기 (인출)
insert
select
update
갱신
update
delete (destroy)
삭제
delete
Create : 데이터베이스 객체 생성
- insert into
- 새로운 레코드를 추가
Update : 데이터베이스 객체 안의 데이터 수정
- update
- 특정 조건의 레코드의 컬럼 값을 수정
Delete : 데이터베이스 객체의 데이터 삭제
- delete
- 특정 조건의 레코드를 삭제
Retrieve : 데이터베이스 객체 안의 데이터 검색
- select
- 조건을 만족하는 레코드를 찾아 특정 컬럼 값(모두표시 *)을 표시
select 명령문 :
select 컬럼명 from 테이블명 where 조건절;
- "world" DB에서의 쿼리 예제
국가 코드가 'KOR' 으로 되어 있는 도시들의 이름을구하시오
select Name from city where CountryCode='KOR';
인구가 500만 이상인 도시들의 이름을 구하시오
select Name from city where Population > 5000000;
insert into 명령문 :
insert into 테이블명 (컬럼명) values (값);
- 예제
# 각각의 필드와 대응 시켜줘서 insert 를 시켜주어야한다.
insert into city (ID, Name, CountryCode, District, Population) values (10000, "Sample", "KOR", "Test", 1000000);
# 이 경우에는 모든 컬럼 값들이 일일히 필드와대응되면 생략 가능
insert into city values (20000, "SampleTest", "KOR", "Test", 2000000);
- 결과 확인
# ID 가 100000 인 레코드 출력
select * from city where ID = 20000;
# ID 가 200000 인 레코드 출력
select * from city where ID = 10000;
update 명령문 :
update 테이블명 set 컬럼명=값, ..... where 조건절;
- 예제
# ID 가 10000 인 레코드의 name 을"SampleRevised" 로 변경
update city set name = "SampleRevised" where id = 10000;
- 결과 확인
# ID 가 100000 인 레코드 출력
select * from city where ID = 10000;
delete 명령문 :
delete from 테이블명 where 조건절;
- 예제
# ID 가 20000 이며 Population 이 2000000 인레코드를 삭제
delete from city where (ID = 20000) AND (Population = 2000000);
# ID 가 10000 이며 Population 이 1000000 인레코드를 삭제
delete from city where (ID = 10000) AND (Population = 1000000);
- 결과 확인
# ID 가 100000 인 레코드 출력
select * from city where ID = 10000;
# ID 가 200000 인 레코드 출력
select * from city where ID = 20000;
'SQL' 카테고리의 다른 글
[SQL] JOIN VIEW,별명알아보자 (0) | 2020.04.14 |
---|---|
[SQL] 일부결과 및 집합함수 (0) | 2020.04.14 |
[SQL] 연산 논리 (기초 배우기 ) (0) | 2020.04.14 |
[SQL] 설치하기 / 다운로드 (0) | 2020.04.11 |
'SQL' 카테고리의 다른 글
[SQL] JOIN VIEW,별명알아보자 (0) | 2020.04.14 |
---|---|
[SQL] 일부결과 및 집합함수 (0) | 2020.04.14 |
[SQL] 연산 논리 (기초 배우기 ) (0) | 2020.04.14 |
[SQL] SQL 이란 무엇일까? (기초배우기 정의,종류) (0) | 2020.04.14 |