프로그래밍 언어/SQL 6

프로시저(Procedure)

프로시저: 절차형 SQL을 활용하여 특정 기능을 수행하는 일종의 트랜잭션 언어 호출을 통해 실행되어 미리 저장해 놓은 SQL 작업을 수행 프로시저 구성도 - DECLARE: 프로시저의 명칭, 변수, 인수, 데이터 타입을 정의하는 선언부 - BEGIN / END: 프로시저의 시작과 종료 의미 - CONTROL: 조건문, 반복문이 순차적으로 처리됨 - SQL: DML, DCL이 삽입 - EXCEPTION: BEGIN ~ END 안에서 예외가 발생하면 이를 처리하는 방법을 정의 - TRANSACTION: 수행된 데이터 작업들을 DB에 적용할지 취소할지를 결정 프로시저 생성 CREATE [OR REPLACE] PROCEDURE 프로시저명(파라미터) [지역변수 선언] BEGIN 프로시저 BODY; END; // ..

문자열 관련 함수, Case(조건문)

문자열 쪼개기: SUBSTRING_INDEX(속성명, '기준문자', 가져올_조각_위치) select user_id, email, SUBSTRING_INDEX(email, '@', 1) from users //이메일에서 아이디만 가져오기 (1번째 조각) select user_id, email, SUBSTRING_INDEX(email, '@', -1) from users //이메일에서 도메인만 가져오기 (마지막 조각) 문자열 일부 출력: SUBSTRING(속성명, 시작위치, 글자개수) select order_no, created_at, substring(created_at,1,10) as date from orders //날짜시간에서 앞의 날짜 부분(첫글자 위치, 글자 개수)만 출력 select substr..

Subquery, WITH

자주 쓰이는 서브 쿼리 유형 WHERE절에 들어가는 서브 쿼리 WHERE 속성명 IN (subquery) 서브쿼리의 결과를 조건으로 활용하고 싶을 때 SELECT절에 들어가는 서브쿼리 SELECT 속성명1, 속성명2, (subquery) FROM ... 기본 테이블에 함께 보고 싶은 통계 데이터를 붙이고 싶을 때 FROM절에 들어가는 서브쿼리 FROM 테이블 a INNER JOIN (subquery) b ON a.속성명 = b.속성명; 내가 만든 SELECT문을 한 테이블처럼 다른 테이블과 JOIN하고 싶을 때 1번 예시 - 전체 유저의 포인트 평균보다 큰 유저들의 데이터 추출하기 SELECT * from point_users pu where point > ( select avg(point) from p..

DML(insert, delete, update, select, union, join)

DML: 사용자가 저장된 데이터를 실질적으로 관리하는데 사용하는 언어 INSERT INTO: 테이블에 새로운 튜플 삽입 INSERT INTO 테이블명([속성명1, 속성명2, ...]) VALUES (데이터1, 데이터2, ...); DELETE FROM: 테이블의 특정 튜플을 삭제 DELETE FROM 테이블명 [WHERE 조건]; UPDATE SET: 테이블의 특정 튜플의 내용을 변경 UPDATE 테이블명 SET 속성명=데이터[, 속성명=데이터, ...] [WHERE 조건]; SELECT: 테이블에서 튜플 검색 SELECT [PREDICATE] [테이블명.]속성명 [AS 별칭] [, [테이블명,]속성명, ...] [, 그룹함수(속성명) [AS 별칭]] [, Window함수 OVER (PARTITION B..

DCL(grant, revoke, commit, rollback, savepoint)

DCL: 데이터의 보안, 무결성, 회복 ,병행 제어 등을 정의 GRANT / REVOKE: 사용자에게 권한 부여 및 취소 사용자 등급 지정 및 해제 GRANT 사용자등급 TO 사용자_ID_리스트 [IDENTIFIED BY 암호]; REVOKE 사용자등급 FROM 사용자_ID_리스트; // 사용자 등급: DBA, RESOURCE(테이블 생성자), CONNECT 테이블 및 속성에 대한 권한 부여 및 취소 GRANT 권한_리스트 ON 개체 TO 사용자 [WITH GRANT OPTION]; REVOKE [GRANT OPTION FOR] 권한_리스트 ON 개체 FROM 사용자 [CASCADE]; // WITH GRANT OPTION: 부여받은 권한을 다른 사용자에게 부여 가능 COMMIT: 트랜잭션의 내용을 데이..

SQL 개념, DDL(create, alter, drop)

SQL 관계형 데이터베이스를 지원하는 언어 관계대수와 관계해석을 기초로 한 혼합 데이터 언어 SQL 종류 DDL(Data Define Language, 데이터 정의어): CREATE, ALTER, DROP DML(Data Manipulation Language, 데이터 조작어): SELECT, INSERT, DELETE, UPDATE DCL(Data Control Language, 데이터 제어어): COMMIT, ROLLBACK, GRANT, REVOKE SQL에서 지원하는 기본 데이터 타입 정수: INTEGER(4Byte 정수), SMALLINT(2Byte 정수) 실수: FLOAT, REAL, DOUBLE PRECISION 형식화된 숫자: DEC(i, j) // i: 전체 자릿수, j: 소수부 자릿수 ..