본문 바로가기
카테고리 없음

SQL 기본 활용 DML - 국민대학교 김남규 교수님 강의

by 오잉쿡 2024. 5. 24.
반응형

#SQL = SEQUEL (Structured Qurery Language)

- 관계형 데이터베이스에서 데이터 정의(DDL), 조작(DML), 제어(DCL) / TCL 를 위해 사용하는 언어
- 표준 SQL : ISO의 표준 규격을 따르는 SQL > 우리가 배우는 SQL이 표준SQL
- SQL 기본 작성 규칙
ㄴ 문장 마지막은 세미콜론(;)으로 끝남
ㄴ 명령어/객체명/변수명은 대/소문자 구분 없음 (**데이터 값은 대/소문자 구분함)
ㄴ 날짜와 문자열에는 ‘작은 따옴표’ 사용
name = ‘홍길동’
ㄴ 단어와 단어 사이는 공백 또는 줄바꿈으로 구분
ㄴ 주석문
- - 이것은 주석입니다
/* 여기부터
여기까지 주석입니다 */

#SQL 구문 유형
데이터 정의어(DDL) Data Definition Language
ㄴ 데이터의 구조를 정의하기 위한 명령어
ㄴ CREATE, ALTER, DROP, RENAME, TRUNCATE

데이터 조작어(DML) Date Manipulation Language
ㄴ 데이터를 검색 또는 변형하기 위한 명령어
ㄴ SELECT (조회) / INSERT, UPDATE, DELETE (갱신)

데이터 제어어(DCL) Date Contrl Lantuage
ㄴ 사용자에게 객제에 대한 권한을 부여/취소하기 위한 명령어
ㄴ GRANT, REVOKE

트랜젝션 제어어(TCL) Transaction Control Language
ㄴ 변경 내용을 확정/ 취소하기 위한 명령어
ㄴ COMMIT, ROLLBACK

SELECT * FROM DUAL;

#테이블명에 대한 테이블 구조 불러오기.
DESCRIBE 테이블명;
DESC 테이블명;

# 테이블명에 있는 모든 걸 다 가져와줘
SELECT *
FROM 테이블명;

# SELECT (ALL) 컬럼명1, 컬럼명2, 컬럼3
FROM 테이블명

*ALL : 중복 데이터 모두 출력 (default)
*DISTINCT : 중복 데이터를 1건으로 출력 (SELECT DISTINCT ~)
ㄴ DISTINCT키워드는 첫 칼럼의 앞에 위치해야함.
ㄴ 칼럼의 조합에 대해 중복 체크
ㄴ null 값도 하나의 값으로 간주함

FROM DUAL;
행 1줄

SELECT - 별칭 사용
ㄴ 조회 결과에 일종의 별치(ALIAS)를 부여하여 칼럼 테이블을 변경함
ㄴ 칼럼명과 별칭 사이에 AS키워드를 사용 (옵션)
ㄴ 별칭이 공백, 특수문자 등을 포함하는 경우 “큰 따옴표” 사용


#ORDER BY
ㄴ 출력시 정렬 기준 설정
ㄴ SQL 문장의 맨 마지막에 위치
ㄴ 오름차순 : ASC (생략가능), 내림차순 : DESC
*참고 : 오라클에서 null은 가장 큰 값으로 취급됨
예 ) 선수명과 키를 키 오름차순으로 출력

SELECT 선수명, 키
FROM 선수명
ORDER BY 키 ASC;

=
ORDER BY 2;
— 선수명 : 1 / 키 : 2
오더바이 2라고 써도 동일한 결과값 나옴, 오름차순이 디폴트값.

**SELECT 문에 없는 컬럼명도 ORDER BY에 써도 오류 발생 안함!

#WHERE 절
ㄴ 특정 조건을 만족하는 데이터를 한정하기 위해 사용
ㄴ SELECT~ FROM ~WHERE ~ 형태로 사용함

#WHERE 연산자
||  : 두 문자열을 하나로 연결한 문자열 반환
str = ‘a’ || ‘bcd’ => str = ‘abcd’

BETWEEN a AND b  : a와 b의 사이의 값 반환 (a,b 포함)
NOT BETWEEN a AND b
IN(list) : list 에 있는 값 중 하나만 일치해도 참
LIKE ‘비교문자열’ : 비교 문자열과 일치하면 참 , 와일드카드(%,_) 사용 가능함
IS NULL : NULL 값인 경우 참
ㄴ NAME = ‘Kim’
NAME = Null (X)
NAME IS NULL
*null값과 비교할 때는 등호가 아닌 IS NULL을 쓴다
부정 : IS NOT NULL (영어문법과 동일)
*NULL에는 비교 연산자는 사용 불가

#연산자 우선 순위
( ) > NOT 연산자 > 비교 연산자, SQL 연산자 > AND > OR

#논리 연산자
ㄴ 모든 자료형에 대해 적용
ㄴ NOT > AND > OR

# NOT ( ) AND( )
괄호 밖 NOT이 괄호 안 AND 가 만나면 OR로 바뀌게 된다!

#SQL 연산자
ㄴ 합성(연결) 연산자 - 문자열과 문자열을 연결함
방법1 : CONCAT(str1, str2)
방법2 : str || str2

텍스트 || 숫자
SELECT 선수명 || ‘선수:’ || 키 || ‘cm’ AS ‘선수 신장’
FROM 선수테이블

선수 신장
1. 손흥민 선수: 184cm
2. 박지성 선수: 180cm

#LIKE
ㄴ 문자열 비교 연산
ㄴ 와일드카드 사용 가능
‘%’ : 임의의 문자 N개 / ‘_’ 임의의 문자 1개

#ROWNUM (TOP N개의 레코드 반환
ㄴ 사용자가 아닌 시스템이 관리하는 의사 알고리즘
ㄴ 채번 출력 개수 지정 등에 활용 가능
ㄴ 작거나 같다(<=), 작다(<) 부등호만 쓸 수 있음. 등호(=) 안됨
**예외 = 뒤에 1은 허용 (콩가루 족보..)

#INSERT INTO
ㄴ 테이블에 한 건의 레코드를 추가함
ㄴ 여러 건 입력 시 INSERT ALL ~구문 활용
ㄴ 문자 또는 날짜 값의 경우 작은 따옴표로 묶음
ㄴ 수자 데이터는 작은 따옴표 없이 사용
INSERT INTO 테이블명 VALUES
ㄴ 전체 컬럼의 모든 값을 순서대로 입력해야함
ㄴ 빈 값은 NULL 또는 작은따옴표 둘(‘’)로 입력(주의! ‘ ‘ 아님)

#INSERT ALL
ㄴ 동시에 여러 레코드를 추가하는 경우
ㄴ 테이블 생성 추 초기 데이터 일괄 업로드 필요한 경우
ㄴ 기존 테이블의 레코드를 조회 후 다른 테이블에 삽입하는 경우
ㄴ INSERT ALL 은 무조건 SELECT랑 같이 써야함.
SELECT * FROM DUAL; 그냥 한번 써줘!

#DELETE
ㄴ 테이블에 존재하는 전체 레코드 삭제 > WHERE 절 안쓰면 됨.
DELETE 테이블명 또는 DELETE FROM 테이블명
ㄴ 일반적으로는 WHERE절을 사용하여 원하는 조건의 부분 레코드 삭제함

#UPDATE SET
ㄴ 테이블에 존재하는 전체 레코드의 값 변경
UPDATE 테이블명 SET 칼럼명 = 새로운 값
ㄴ 일반적으로 WHERE절을 사용하여 특정 레코드의 값을 변경함



반응형

댓글