03. SQL 기초(DCL, DDL, DML)
○ SQL문
- Stored Query Language
- 어떻게 작업을 수행할지가 아니라 무엇을 해야할지에 관해 정의하는 결과중심적 언어
- 절차적은 아님 ( cf. 자바는 절차적언어)
- SQL 명령어는 대소문자를 구분하지 않는다
- 주석 --
- ANSI SQL문 : 표준SQL문, DBMS의 종류에 제약을 받지 않음
○ SQL문의 종류
- DCL, DDL, DML
① DCL (Data Control Language, 제어어)
- 사용자가 별로 쓸일 없음. 호스팅업체가 주로 사용
- grant 사용자 접근 권한부여
- revoke 사용자 접근 권한 취소
- deny 특정사용자만 접근차단
② DDL (Data Definition Language, 정의어)
- DB및 TABLE에 대한 정의
- Create 생성
- Drop 삭제
- Alter 수정
③ DML (Data Manipulation Language, 조작어)
- 레코드작업
- insert 삽입
- update 수정
- delete 삭제
- select 조회 및 검색
○ 스키마 Schema
- 데이터베이스의 구조와 제약조건에 관한 전반적인 명세를 기술한 것
- 관계형 데이터베이스의 저장 기본 단위
- 테이블
○ DDL
① 테이블 생성
- 형식)
create table 테이블명( 테이블명은 식별자(한글X 공백X)
칼럼명1 자료형 제약조건
,칼럼명2 자료형 제약조건
,칼럼명3 자료형 제약조건
,~~~
);
- 데이터베이스에서 칼럼의 순서는 의미가 없다
- sungjuk 테이블 생성
create table sungjuk(
uname varchar(20) -- 영문자10글자 이내까지 입력가능 (varchar 문자열 나타냄)
,kor int -- 정수형
,eng int
,mat int
,aver int
,addr varchar(20)
,wdate date
);
② 테이블 삭제
- 형식) drop table 테이블명;
- sungjuk 테이블 삭제
drop table sungjuk;
③ 테이블 수정
- alter : 테이블의 구조 수정 및 변경
① 칼럼 추가
형식) alter table 테이블명 add(칼럼명 데이터타입);
② 칼럼명 수정
형식) alter table 테이블명 rename column 원래칼럼명 to 바꿀칼럼명;
③ 칼럼 데이터타입 수정
형식) alter table 테이블명 modify(칼럼명 데이터타입);
④ 칼럼 삭제
형식) alter table 테이블명 drop(칼럼명);
--music칼럼 추가
alter table sungjuk add(music int null);
-- 국어칼럼 kor을 korea칼럼명으로 수정하시오
alter table sungjuk rename column kor to korea;
-- music칼럼의 데이터타입을 varchar로 수정하시오
alter table sungjuk modify(music varchar(5));
-- music칼럼을 삭제하시오
alter table sungjuk drop(music);
○ DML : CRUD 작업
- 관계형DB에서 테이블의 핵심기능(CRUD)
- C Create 생성 → insert문 (테이블이 있다는 전제하에)
- R Read 조회 → select문
- U Update 수정 → update문
- D Delete 삭제 → delete문
① 행추가
- 형식)
insert into 테이블명(칼럼명1, 칼럼명2, 칼럼명3, ...)
values (값1, 값2, 값3, ...);
insert into sungjuk(uname, kor, eng, mat, addr, wdate)
values('황대헌', 100, 100, 100, 'Jeju', sysdate); --데이터베이스에서 문자열 데이터는 '(작은 따옴표)로 감싼다
insert into sungjuk(uname, kor, eng, mat, addr, wdate)
values('이준서', 50, 55, 60, 'Busan', sysdate);
insert into sungjuk(uname, kor, eng, mat, addr, wdate)
values('김동욱', 95, 95, 35, 'Jeju', sysdate);
insert into sungjuk(uname, kor, eng, mat, addr, wdate)
values('곽윤기', 80, 85, 90, 'Suwon', sysdate);
insert into sungjuk(uname, kor, eng, mat, addr, wdate)
values('박장혁', 60, 40, 30, 'Seoul', sysdate);
② 조회 및 검색
- 형식)
select 칼럼명1, 칼럼명2, 칼럼명3, ...
from 테이블명;
select uname, kor, eng, mat from sungjuk;
③ 행수정
- 형식) update 테이블명 set 칼럼명1=값1, 칼럼명2=값2, 칼럼명2=값2...
update sungjuk set aver=(kor+eng+mat)/3;
④ 행삭제
- 형식) delete from 테이블명;
delete from sungjuk;