두 개 이상의 테이블에서 조인을 사용하지 않고 연관된 데이터를 조회할 때 사용, *SELECT절의 칼럼 수가 동일하고 SELECT 절의 동일 위치에 존재하는 칼럼의 데이터 타입이 상호 호환할 때 사용 가능* ⇒ 조건에 맞지 않을 경우 에러 반환
SELECT 칼럼명_1 FROM 테이블명 A WHERE 조건절
집합연산자
SELECT 칼럼명_2 FROM 테이블명 B WHERE 조건절
SELECT 칼럼명
FROM 테이블명
WHERE 조건절
START WITH 조건
CONNECT BY [NOCYCLE] 조건
[ORDER SIBLINGS BY 칼럼]
하나의 SQL 문 안에 포함되어있는 또다른 SQL문, 알려지지 않은 기준을 이용한 검색에 사용된다.
=
, <
, >
등)CREATE VIEW 뷰 이름 AS SELECT ...;
DROP VIEW 뷰 이름;
WITH 뷰 이름 AS (SELECT ...)
합계 계산 함수, NULL을 빼고 집계, 결과값 없는 행은 출력하지않는다.
행과 행 사이의 관계를 쉽게 정의하거나 행과 행간을 비교, 연산하는 함수
FIRST_VALUE : 파티션별 윈도우의 처음 값
LAST_VALUE : 파티션별 윈도우의 마지막 값
⇒ 동일한 등수를 의도적으로 정렬하고 싶다면 인라인 뷰, ORDER BY를 이용한다.
LAG : 파티션별 윈도우에서 이전 몇 번째 행의 값
LAG (인수, 몇 행 전, 없는 경우)
LEAD : 파티션별 윈도우에서 이후 몇 번째 행의 값
LEAD (인수, 몇 행 뒤, 없는 경우)
유저를 생성하고 권한을 제어할 수 있는 명령어
-- 임시 사용자 사용자_1에게 유저 생성 권한 부여
GRANT CREATE USER TO 사용자_1;
CONN 사용자명_1/PW;
CREATE USER 유저명 IDENTIFIED BY 비밀번호;
-- 로그인 위해 CREATE SESSION 권한 부여
CONN 사용자_1/PW;
GRANT CREATE SESSION TO 유저명;
CONN 유저명/PW;
-- 테이블 생성에도 CREATE TABLE 권한 부여 필요
-- 유저 생성 전 로그인 생성 sa
CREATE LOGIN 로그인명 WITH PASSWORD='비밀번호';
DEFAULT_DATABASE=로그인 후 최초 접속할 데이터베이스명;
-- SQL Server엠서 유저는 DB마다 존재해 유저 생성 위해 생성하는 유저가 속할 DB로 이동
USE 데이터베이스명;
GO
CREATE USER 유저명 FOR LOGIN 로그인명 WITH DEFAULT_SCHEMA=dbo;
ROLE : 유저에게 알맞은 권한들을 한 번에 부여, 시스템 권한과 오브젝트 권한을 모두 부여 가능, 유저에게 직접 부여될 수도 있고 다른 ROLE에 포함되어 유저에게 부여될 수도 있다. 권한을 직접 부여하는 것보다 빠르고 안전하게 유저를 관리할 수 있다.
CONN ID/PW;
CREATE ROLE 롤이름;
GRANT 부여권한, ... TO 롤이름;
GRANT 롤이름 TO 유저명;
SQL Server에서는 ROLE을 자주 사용하지 않는 대신 서버 수준 역할(인스턴스 수준 요구) 및 데이터베이스 수준 역할을 이용해 로그인 및 사용자 권한을 제어한다.
다른 개발 언어들과 같이 절차 지향적인 프로그램이 가능하도록 절차형 SQL을 제공(오라클:PL/SQL, SQL Server:T-SQL)한다. SQL문의 연속적인 실행이나 조건에 따른 분기 처리를 이용해 특정 기능을 수행하는 저장 모듈을 생성 가능하다. Procedure, User Defined Function, Trigger 등이 있다.
DECLARE
선언부(변수, 상수)
BEGIN
실행부
EXCEPTION
예외 처리부
END
Stored Procedure 통해 기본적인 문법 정리
CREATE OR REPLACE PROCEDURE 프로시저명 (argument_1 mode data_type_1,...) IS AS ..
BEGIN ...
EXCEPTION ...
END /;
OR REPLACE 절은 같은 이름의 프로시저가 있을 경우, 기존의 프로시저를 무시하고 새로운 내용으로 덮어쓰겠다는 뜻
지정가능한 MODE 종류 : IN(운영체제 → 프로시저), OUT(프로시저 → 운영체제), INOUT(두 기능 동시에)
/
: DB에 프로시저를 컴파일하라는 명령어
@@
-전역변수(시스템 함수, SQL 서버 내장된 값), @
-지역변수(사용자가 자신의 연결 시간 동안만 사용)--
한 줄 주석, /* */
범위 주석DECLARE
선언부(변수, 상수)
BEGIN
실행부
EXCEPTION
예외 처리부
END
Stored Procedure 통해 기본적인 문법 정리
CREATE PROCEDURE 스키마명.프로시저명 @parameter_1 data_type_1 mode, ..
WITH AS ...
BEGIN ...
ERROR 처리 ...
END;
DROP PROCEDURE 스키마명.프로시저명;
프로시저의 변경이 필요한 경우 ALTER 구문을 사용해야한다.
지정가능한 MODE 종류
지정가능한 WITH 옵션