1. SQL 구조
2. DDL
2-1) DDL(Data Definition Language, 데이터 정의어)
SCHEMA, DOMAIN, TABLE, VIEW, INDEX를 정의하거나 변경, 또는 삭제할 때 사용하는 언어
데이터베이스를 정의하는 언어이며, 데이터리를 생성, 수정, 삭제하는 등의
데이터 전체의 골격을 결정하는 역할
2-2) Create Table(테이블 생성)
--문법
CREATE TABLE 테이블명(
컬럼명 타입(크기) NOT NULL, --널값이 들어갈 수 없음
컬럼명 타입 NULL DEFAULT(값), --초기값 지정
CONSTRAIN PK이름 PRIMARY KEY(컬럼명) --PK설정
)
--예제
CREATE TABLE MY_TABLE(
NO_EMP NVARCHAR(10)NOT NULL, -- NULL 값이 들어갈 수 없음
NM_KOR NVARCHAR(40)NOT NULL, -- NULL 값이 들어갈 수 없음
AGE INT NULL DEFAULT (0), --디폴트 = 0
TODAY DATETIME DEFAULT(GETDATE()), --디폴트 현재일자
CONSTRAINT PK_MY_TABLE PRIMARY KEY(NO_EMP)--PK : NO_EMP)
2-3) ALTER TABLE(테이블 변경)
2-3)-1. 테이블 구조 확인
2-3)-2. 테이블 컬럼 추가
AALTER TABLE 테이블명 ADD 컬럼명 컬럼 속성
ALTER TABLE MY_TABLE ADD NM_ENG NVARCHAR NOT NULL
2-3)-3. 테이블 컬럼 속성 변경
ALTER TABLE 테이블명 ALTER 컬럼명 컬럼 속성
ALTER TABLE MY_TABLE ALTER COLUMN NM_ENG INT
2-3)-4. 테이블 컬럼 삭제
ALTER TABLE 테이블명 DROP COLUMN 칼럼명
ALTER TABLE MY_TABLE DROP COLUMN NM_ENG
3. DML(Data Manipulation Language, 데이터 조작어)
3-1) Select(검색)
--My_Table로부터 모든 칼럼 조회
SELECT * FROM My_Table
--My_Table의 No_EMP, Nm_Kor, Age 칼럼 조회
SELECT No_EMP, Nm_Kor, Age FROM My_Table
3-1)-1. Where(조건문)
--이름이 홍길동인 사람 검색
SELECT * FROM My_Table WHERE Nm_Kor = '홍길동'
--나이가 25살인 사원의 한국이름과 나이 조회
SELECT Nm_Kor, Age FROM My_Table WHERE Age = 25
--나이가 25살이 아닌 사원조회
SELECT * FROM My_Table WHERE Age <> 25
--사원 번호가 '0315'이고 나이가 25살보다 작거나 이름이 '홍길동'인 사원 조회
SELECT * FROM My_Table WHERE No_EMP = '0315'
AND (Age < 25 OR Nm_Kor = '홍길동')
--사원번호가 '0315'이거나 나이가 25살 이상이면서 이름이 '홍길동'인 사원조회
SELECT * FROM My_Table WHERE No_EMP = '0315'
OR (Age >= 25 AND Nm_Kor = '홍길동')
3-1)-2. Like(~로 시작, 포함, 끝나는 단어)
--'김'으로 시작하는 사원조회
SELECT * FROM My_Table WHERE Nm_Kor LIKE '김%'
--'김'이 들어가는 사원조회
SELECT * FROM My_Table WHERE Nm_Kor LIKE '%김%'
--'김'으로 끝나는 사원의 사원번호 조회
SELECT No_EMP FROM My_Table WHERE Nm_Kor LIKE '%김'
3-1)-3. In(~이고)
--나이가 20살, 24살, 26살인 사원조회
SELECT * FROM My_Table WHERE Age IN(20, 24, 26)
--사원번호가 '0000', '0004', '0008'이고 나이가 20살, 24살, 28살인 사원조회
SELECT * FROM My_Table Where No_Emp IN ('0000', '0004', '0008')
AND Age IN(20, 24, 28)
3-1)-4. BetWeen(~부터 ~까지)
--나이가 20살-25살까지의 사원조회
SELECT * FROM My_Table WHERE Age BETWEEN 20 AND 25
--나이가 사원번호가 '0000'-'0010'까지이거나 나이가 30-40살인 사원의 이름조회
SELECT Age FROM My_Table WHERE No_EMP BETWEEN ('0000' AND '0010')
OR (Age BETWEEN 30 AND 40)
3-2) Insert 문법
--INSERT INTO 테이블명(칼럼1,칼럼2,칼럼3,....) values(데이터1,데이터2,데이터3,......)
INSERT INTO My_Table(no_emp,nm_kor,age) values('dz000','홍길동',20)
3-2)-1. 다른 테이블의 데이터를 Insert 하는 방법
--일부 칼럼만 복사
INSERT INTO 복사 될 테이블명(칼럼1, 칼럼2, 칼럼3, ...)
SELECT 칼럼1, 칼럼2, 칼럼3, ... FROM 복사할 테이블 명
--전체 복사
INSERT INTO 복사될 테이블 명
SELECT * FROM 복사할 테이블 명
3-2)-2. 예제
--일부 칼럼만 복사
INSERT INTO MyTable_01(NO_EMP, NM_KOR, AGE)
SELECT NO_EMP, NM_KOR, AGE FROM MyTable
--전체 복사
INSERT INTO MyTable_01
SELECT * FROM MyTable
3-3) Update 문과 트랜잭션
트랜잭션
BEGIN TRAN --트랜잭션 시작
ROLLBACK TRAN --트랜잭션 이전상태로 ROLL BACK
COMMIT TRAN --트랜잭션 완료
Update문
UPDATE 테이블명 SET 칼럼명 = '내용'
UPDATE 테이블명 SET 칼럼명 = '내용' WHERE 조건문
트랜잭션+ Update
UPDATE 테이블명 SET 칼럼명 = '내용' --칼럼의 존재확인
BEGIN TRAN --트랜잭션 시작
UPDATE 테이블명 SET Update할 칼럼 = '바꿀문구' WHERE 칼럼명 = '기존문구'
SELECT * FROM 테이블명 WHERE 칼럼명 = '바뀐문구'
ROLLBACK TRAN --트랜잭션 이전상태로 ROLL BACK(Update 취소)
COMMIT TRAN --트랜잭션 완료(Update 적용)
3-3)-1. 예제-1
3-3)-2. 예제-2
3-3)-3. 예제-3
3-3)-4. 예제-4
3-3)-5. 예제-5
3-4) DELETE Query
3-5) ALIAS(별칭, AS)
4. DCL(Data Control Language, 데이터 제시어)
5. Tranaction
6. TCL(Transaction Control Language, Transaction 제어 언어