정의 : SQL은 관계 데이터베이스를 위한 표준 질의어로 많이 사용되는 언어
CREATE TABLE 테이블_이름 (
속성_이름 데이터_타입 [NOT NULL] [DEFAULT 기본_값]
[PRIMARY KEY (속성_리스트)] // 기본키는 NOT NULL 표기해주는 것이 좋다
[UNIQUE (속성_리스트)]
[FOREIGN KEY (속성_리스트) REFERENCES 테이블_이름(속성_리스트)] [ON DELETE 옵션] [ON UPDATE 옵션]
[CONSTRAINT 이름] [CHECK(조건)]
);
// 예시
CREATE TABLE 주문 (
주문번호 CHAR(3) NOT NULL,
주문고객 VARCHAR(20),
주문제품 CHAR(3),
수량 INT,
배송지 VARCHAR(30),
주문일자 DATE,
PRIMARY KEY(주문번호),
FOREIGN KEY(주문고객) REFERENCES 고객(고객아이디),
FOREIGN KEY(주문제품) REFERENCES 제품(제품번호)
);
ON DELETE
옵션ON DELETE NO ACTION
: 튜플을 삭제하지 못하게 한다ON DELETE CASCASE
: 관련 튜플을 함께 삭제한다ON DELETE SET NULL
: 관련 튜플의 외래키 값을 NULL로 변경한다ON DELETE SET DEFAULT
: 관련 튜플의 외래키 값을 미리 지정한 기본 값으로 변경한다ON UPDATE NO ACTION
: 튜플을 변경하지 못하게 한다ON UPDATE CASCADE
: 관련 튜플에서 외래키 값을 함께 변경한다ON UPDATE SET NULL
: 관련 튜플의 외래키 값을 NULL로 변경한다ON UPDATE SET DEFAULT
: 관련 튜플의 외래키 값을 미리 지정한 기본 값으로 변경한다CHECK
키워드로 제약조건 지정CONSTRAINT
키워드로 제약 조건에 이름 부여// 새로운 속성 추가
ALTER TABLE 테이블_이름 ADD 속성_이름 데이터_타입 [NOT NULL] [DEFAULT 기본_값];
// 기존 속성 삭제
ALTER TABLE 테이블_이름 DROP COLUMN 속성_이름;
// 새로운 제약조건 추가
ALTER TABLE 테이블_이름 ADD CONSTRAINT 제약조건_이름 제약조건_내용;
// 기존 제약 조건 삭제
ALTER TABLE 테이블_이름 DROP CONSTRAINT 제약조건_이름;
DROP TABLE 테이블_이름;
SELECT [ ALL | DISTINCT ] 속성_리스트
FROM 테이블_리스트
[ WHERE 조건 ]
[ GROUP BY 속성_리스트 [ HAVING 조건 ] ]
[ ORDER BY 속성_리스트 [ ASC | DESC ] ];
👻 LIKE를 이용한 검색
%
: 0개 이상의 문자 (문자의 내용과 개수는 상관 없음)_
: 1개의 문자 (문자의 내용은 상관 없음)👻 NULL을 이용한 검색 : = <> 사용하면 안된다
IS NULL
;IS NOT NULL
;👻 집계 함수를 이용한 검색
COUNT
MAX
MIN
SUM
: 숫자 데이터만 가능AVG
: 숫자 데이터만 가능집계 함수 이용시 주의사항
집계 함수는 널인 속성 값은 제외하고 계산한다
집계 함수는 WHERE 절에서는 사용할 수 없고 SELECT 절이나 HAVING 절에서만 사용할 수 있다
다중 행 부속 질의문에 사용 가능한 연산자
IN
NOT IN
EXISTS
NOT EXISTS
ALL
ANY
또는 SOME
// 조인 질의를 이용한 SELECT 문
SELECT 제품.제품명, 제품.제조업체
FROM 제품, 주문
WHERE 제품.제품번호 = 주문.주문제품 AND 주문.주문고객 = 'BANANA';
// EXISTS 연산자를 이용한 SELECT 문
SELECT 제품명, 제조업체
FROM 제품
WHERE EXISTS (SELECT *
FROM 주문
WHERE 제품.제품번호 = 주문.주문제품 AND 주문.주문고객 = 'BANANA');
// IN 연산자를 이용한 SELECT 문
SELECT 제품명, 제조업체
FROM 제품
WHERE 제품번호 IN (SELECT 주문제품
FROM 주문
WHERE 주문고객 = 'BANANA');
// 데이터 직접 삽입
INSERT INTO 테이블_이름[(속성_리스트)]
VALUES (속성값_리스트);
// 부속 질의문을 이용한 삽입
INSERT INTO 테이블_이름[(속성_리스트)]
SELECT 문;
UPDATE 테이블_이름
SET 속성_이름1 = 값1, 속성_이름2 = 값2, ...
[WHERE 조건];
DELETE
FROM 테이블_이름
[WHERE 조건];
정의
: 다른 테이블을 기반으로 만들어진 가상 테이블일반 테이블과 달리 데이터를 실제로 저장하고 있지 않는다.
뷰에 대한 삽입, 수정, 삭제 연산으로 인해 기본 테이블의 값이 변한다.
🎈 변경 불가능한 뷰의 중요한 특징
DROP VIEW 뷰_이름;