[참고교재]
학습모듈 - SQL활용
컴원미디어 -CHAP4 데이터타입과 데이터 무결성
CHAP5 테이블 설계
SQL문
- Stored Query Language
- 어떻게 작업을 수행할 지가 아니라 무엇을 해야할 지에 관해 정의하는 결과중심적 언어. 절차적은 아님.
cf)자바는 절차적언어
- SQL 명령어는 대소문자를 구분하지 않는다
- 주석 --
1. DCL명령어 Data Control Language 제어어
- 사용자가 별로 쓸일 없음. 호스팅업체가 주로 사용
- grant 사용자 접근 권한부여
- revoke 사용자 접근 권한 취소
- deny 특정사용자만 접근차단
2. DDL명령어 Data Definition Language 정의어
- DB및 TABLE에 대한 정의
- Create 생성
- Drop 삭제
- Alter 수정
3. DML명령어 Data Manipulation Language 조작어
- 레코드작업
- Select 조회 및 검색
- insert 삽입
- update 수정
- delete 삭제
Oracle SQL Developer 툴 설치
1. 다운로드 - Windows 64-bit with JDK 8 included
https://www.oracle.com/technetwork/developer-tools/sql-developer/downloads/index.html
2. 압축풀고 database 폴더 만들어주기

3. sql developer 설치하기
- 파일 .exe 설치 후, oracle접속
- name : myOracle11g
사용자이름 : java0514
비밀번호 : 1234 ->비밀번호 저장 체크
호스트이름 : localhost
포트 : 1521
SID : xe
- 테스트 후, 접속하기
SQL DCL 제어어
- grant, revoke, deny
SQL DDL 정의어
- create, drop, alter
SQL DML 조작어
- select, insert, update, delete
1. 테이블 생성
--테이블 생성
create table t_emp(
id number(5) not null --사번
,name varchar2(25) --이름
,salary number(7,2) --급여 (,2) 소숫점 두자리
,phone varchar2(15) --전화번호
,dept_name varchar2(25) --부서명
);
2. 테이블명 변경
--테이블명 변경
rename t_emp to s_emp;
select * from tab;
3. 행 추가
--행추가
insert into s_emp values(100,'손흥민',2000,'010-222-2222','개발부');
insert into s_emp values(101,'김연아',3000,'010-333-3333','총무부');
insert into s_emp values(102,'이승우',4000,'010-444-4444','영업부');
4. 테이블에 칼럼추가
- 양식 : alter table 변경할 테이블 add(필드명 자료형);
alter table s_emp add(hire_date date);
5. 행 추가
insert into s_emp
values(103,'무궁화',5000,'010-555-5555','영업부','2019-07-18');
SQL문의 제약조건
해당칼럼에 쓰레기값이 들어오는 것을 방지하기위해 강제로 주는 조건
primary key - 본인 notnull 절대허용안함(주민번호 )
foreign key - 부모자식관계
unique - notnull 한번만 허용(핸드폰, 이메일주소 등)
1) 정의
-> 테이블의 해당 칼럼에 원치않는 데이터가 입력/ 변결/ 삭제되는 것을 방지하기 위해 테이블 생성 또는 변경시 설정하는 조건
2) 종류
primary key |
기본키, 유일성. null값을 인정하지 않음 -> 테이블당 1개만 가능 |
foreign key |
외래키, 자식테이블이 부모테이블 칼럼을 참조 -> references 부모테이블(칼럼명) |
unique | 중복을 허용하지 않음. null값을 1번만 허용 |
check | 특정 데이터만 입력가능 |
not null | 빈값을 허용하지 않음 |
예) 주민번호 -> pk
이메일, 핸드폰번호 -> unique
3) 제약조건을 반영한 테이블 생성하기
부서테이블 생성
drop table dept;
create table dept(
dept number(7) primary key
,dname varchar(20)
,loc varchar(10)
);
insert into dept values(10,'경리팀','부산');
insert into dept values(20,'연구팀','대전');
insert into dept values(30,'총무팀','대구');
insert into dept values(40,'전산팀','인천');
제약조건을 반영한 테이블 생성하기
create table c_emp(
id number(5) constraint c_emp_id_pk primary key
,name varchar2(25) constraint c_emp_name_nn not null
,salary number(7,2) default 0
,phone varchar(15) constraint c_emp_phone check(phone like '1234-%')
,dept_id number(7) constraint c_emp_dept_id_fk
);
4) 제약조건 이름 검색하기
- 제약조건 목록 확인(데이터사전)
select * from user_constraints;
select * from user_constraints where table_name='DEPT;
select * from user_constraints where table_name='C_EMP';
5) 제약조건은 수정할 수 없고 삭제만 가능함
alter table c_emp drop constraint c_emp_name_nn;
6) 제약조건 추가하기
alter table c_emp add constraint c_emp_name_un unique(name);
--not null 제약조건은 add로 할 수 없고 modify로 가능
alter table c_emp modify(name varchar2(25) constraint c_emp_name_nn not null);
---------------------------------------------------------------------------------
# 제약조건이 설정되지 않은 경우 #
---------------------------------------------------------------------------------
1) 제약조건이 설정되지 않은 테이블 생성하기
drop table c_emp;
create table c_emp(
id number(5)
,name varchar2(25)
,salary number(7,2)
,phone varchar2(15)
,dept_id number(7)
);
insert into c_emp(id,name) values(1,'코코넛');
insert into c_emp(id,name) values(1,'바나나');
insert into c_emp(id,name) values(1,'복숭아');
delete from c_emp;
---------------------------------------------------------------------------------
# 제약조건이 설정 된 경우 #
---------------------------------------------------------------------------------
1)id칼럼에 pk제약조건 추가
--alter table 테이블이름 add constraint 제약조건이름 제약조건종류(필드명)
alter table c_emp add constraint c_emp_id_pk primary key(id);

pk제약조건으로 insert해줄경우 하나만 입력가능하므로 , 오류발생한다.
'공부 > SQL 활용' 카테고리의 다른 글
7월25일 - SQL 활용 5 : JOIN (0) | 2019.07.25 |
---|---|
7월24일 - SQL활용 4 : View & Index (0) | 2019.07.24 |
7월22일 - SQL활용 3 : 함수 (0) | 2019.07.22 |
7월22일 - SQL 활용연습문제 (0) | 2019.07.22 |
7월19일 - SQL 활용 2 (0) | 2019.07.19 |