본문 바로가기
Oracle SQL

SQL 기본

by Nowkeeh Ahc

SQL에는 테이블 생성, 변경, 제거와 같이 데이터를 정의하는 DDL (Data Definition Language), 테이블에 데이터를 입력/조회/수정/삭제와 같은 데이터 조작 기능을 수행하는 DML (Data Manipulation Language), 그리고 사용자들의 권한을 관리하는 DCL (Data Control Language)로 구분할 수 있다.

명령어 분류 명령어 설명
 
DDL (Data Definition Language)
데이터 정의어
CREATE 테이블을 생성한다.
ALTER 테이블을 변경한다.
DROP 테이블을 제거한다.
TRUNCATE 테이블 안의 모든 데이터를 삭제한다.
 
DML (Data Manipulation Language)
데이터 조작어
INSERT 데이터를 입력한다.
UPDATE 데이터를 수정한다.
DELETE 데이터를 삭제한다.
SELECT 데이터를 조회한다.
DCL (Data Control Language)
데이터 제어어
GRANT 사용자에게 권한을 부여한다.
REVOKE 사용자에게 주었던 권한을 취소한다.

 

 

실습

 

테이블 생성

CREATE TABLE 테이블명
(
속성1 데이터타입 제약조건, 
속성2 데이터타입 제약조건, 
…
제약조건 지정
);

 

ex. 고객ID, 고객명, 성별, 생년월일, 고객전화번호, 고객주소를 속성으로 갖는 고객정보 테이블을 생성하라. , 고객ID는 기본 키로 널값을 허용하지 않게 지정. (생년월일 속성은 DATE로 지정하고, 나머지 속성은 VARCHAR2(60) 데이터 타입으로 지정.)

CREATE TABLE 고객정보
(
고객ID 		VARCHAR2(60) NOT NULL,
고객명 		VARCHAR2(60),
성별		VARCHAR2(60),
생년월일 	DATE,
고객전화번호    VARCHAR2(60),
고객주소   	VARCHAR2(60),
CONSTRAINT 고객_PK PRIMARY KEY (고객ID)
);

 

 

테이블 컬럼 추가

ALTER TABLE 테이블명
ADD(추가하려는 컬럼 이름 데이터 타입 널 여부);

 

ex. 고객정보 테이블에 멤버십등급컬럼을 추가하라. (데이터 타입은 VARCHAR2(60)로 지정하라.)

ALTER TABLE 고객정보
ADD(멤버십등급 VARCHAR2(60));

 

 

데이터 타입 수정

ALTER TABLE 테이블명
MODIFY(변경하고자 하는 컬럼명 또는 데이터 타입);

 

ex. 고객정보 테이블에 성별컬럼의 데이터 타입을 CHAR(3)으로 바꾸어라.

ALTER TABLE 고객정보
MODIFY(성별 CHAR(3));

 

 

테이블 컬럼 삭제

ALTER TABLE 테이블명
DROP(컬럼명);

 

ex. 고객정보 테이블에서 멤버십 등급 컬럼을 삭제하라.

ALTER TABLE 고객정보
DROP(멤버십등급);

 

 

테이블 컬럼 이름 변경

ALTER TABLE 테이블명
RENAME COLUMN 기존 컬럼명 TO 변경 컬럼명;

 

ex. 고객정보 테이블의 고객ID’ 컬럼을 고객코드로 컬럼 이름을 변경하라.

ALTER TABLE 고객정보
RENAME COLUMN 고객ID TO 고객코드;

 

 

데이터 입력

INSERT INTO 테이블명(컬럼1, 컬럼2, 컬럼3 …)
VALUES(‘컬럼1 데이터’, ‘컬럼2 데이터’, ‘컬럼3 데이터’ …);

 

ex. 고객정보, 상품정보, 구매정보, 구매상품구성정보 테이블에 대해 각각 데이터를 입력하라. 입력 데이터는 아래 SQL 문의 내용을 참조하라.

[고객정보]
INSERT INTO 고객정보(고객ID, 고객명, 성별, 생년월일, 고객전화번호, 고객주소) VALUES('C0001', '최정민', '0', '1994-05-25', '010-3893-9294', '서울시 강동구 명일동');
INSERT INTO 고객정보(고객ID, 고객명, 성별, 생년월일, 고객전화번호, 고객주소) VALUES('C0002', '김수미', '1', '1964-09-15', '010-5039-3042', '서울시 강남구 역삼동');
INSERT INTO 고객정보(고객ID, 고객명, 성별, 생년월일, 고객전화번호, 고객주소) VALUES('C0003', '박성철', '0', '1984-11-30', '010-0921-4212', '서울시 은평구 불광동');

[상품정보]
INSERT INTO 상품정보(상품코드, 상품명, 상품카테고리, 상품정가) VALUES('1_T', '티셔츠', '의류', 36000);
INSERT INTO 상품정보(상품코드, 상품명, 상품카테고리, 상품정가) VALUES('2_J', '장갑', '잡화', 145000);
INSERT INTO 상품정보(상품코드, 상품명, 상품카테고리, 상품정가) VALUES('3_D', '선크림', '화장품', 25000);
INSERT INTO 상품정보(상품코드, 상품명, 상품카테고리, 상품정가) VALUES('4_D', 'TV', '가전제품', 3140000);
INSERT INTO 상품정보(상품코드, 상품명, 상품카테고리, 상품정가) VALUES('5_C', '휴지', '생활용품', 9800);

[구매정보]
INSERT INTO 구매정보(구매코드, 고객ID, 지점코드, 구매일, 총구매가격)
VALUES('P0001', 'C0001', 'B08','2016-05-08', 59800);
INSERT INTO 구매정보(구매코드, 고객ID, 지점코드, 구매일, 총구매가격)
VALUES('P0002', 'C0002', 'B01','2016-12-21', 181000);
INSERT INTO 구매정보(구매코드, 고객ID, 지점코드, 구매일, 총구매가격)
VALUES('P0003', 'C0003', 'B03','2016-07-11', 3140000);

[구매상품구성정보]
INSERT INTO 구매상품구성정보(구매상품구성코드, 구매코드, 상품코드, 수량, 소계금액)
VALUES('PL001', 'P0001', '3_D', 2, 50000);
INSERT INTO 구매상품구성정보(구매상품구성코드, 구매코드, 상품코드, 수량, 소계금액)
VALUES('PL002', 'P0001', '5_C', 1, 9800);
INSERT INTO 구매상품구성정보(구매상품구성코드, 구매코드, 상품코드, 수량, 소계금액)
VALUES('PL003', 'P0002', '2_J', 1, 145000);
INSERT INTO 구매상품구성정보(구매상품구성코드, 구매코드, 상품코드, 수량, 소계금액)
VALUES('PL004', 'P0002', '1_T', 1, 36000);
INSERT INTO 구매상품구성정보(구매상품구성코드, 구매코드, 상품코드, 수량, 소계금액)
VALUES('PL005', 'P0003', '4_D', 1, 3140000);

 

 

데이터 조회

SELECT 컬럼명
FROM 테이블명
WHERE 조건

 

ex. 고객정보 테이블에서 고객ID, 성별, 생년월일을 추출하라.

SELECT 고객ID, 성별, 생년월일
FROM 고객정보;

 

 

데이터 수정

UPDATE 테이블명
SET 컬럼 = ‘수정 값’
WHERE 조건;

 

ex.고객정보 테이블에서 최정민고객의 전화번호를 ‘010-2013-4327’로 수정하라.

UPDATE 고객정보
SET 고객전화번호 = '010-2013-4327'
WHERE 고객명 = '최정민';

 

 

데이터 삭제

ALTER TABLE 테이블명 DROP CONSTRAINT {기본 키 이름/외부 키 이름};

 

ex. 기본 키 및 외부 키의 조건을 제거해라

[외부 키 삭제]
ALTER TABLE 구매정보 DROP CONSTRAINT 구매_고객_FK;
ALTER TABLE 구매상품구성정보 DROP CONSTRAINT 구매상품_구매_FK;
ALTER TABLE 구매상품구성정보 DROP CONSTRAINT 구매상품_상품_FK;
[기본 키 삭제]
ALTER TABLE 고객정보 DROP CONSTRAINT 고객_PK;
ALTER TABLE 상품정보 DROP CONSTRAINT 상품_PK;
ALTER TABLE 구매정보 DROP CONSTRAINT 구매_PK;
ALTER TABLE 구매상품구성정보 DROP CONSTRAINT 구매상품구성_PK;

 

조건에 맞는 데이터 삭제

DELETE FROM 테이블명
WHERE 조건;

테이블의 모든 데이터 삭제

TRUNCATE TABLE 테이블명;

테이블 제거

DROP TABLE 테이블명;

 


This post was written based on what I read and studied the book below.

http://www.yes24.com/Product/Goods/99002458

댓글