나름대로 정리해서 보려고 올림. 개인적으로 정리한거라서 그렇게 자세하지 않고 어떻게 쓴다 이렇게만 정리해봄.
데이터 정의어(DDL) |
테이블의 구조를 정의함 |
CREATE, ALTER, DROP,TRUNCATE |
데이터 조작어(DML) |
데이터 조회/삽입/삭제/변경 |
SELECT, INSERT, UPDATE ,DELETE |
데이터 제어어(DCL) |
데이터베이스에 접근권한 |
GRANT, REVOKE |
트랜잭션 제어어(TCL) |
트랜잭션 제어명령어 |
COMMIT, ROLLBACK, SAVEPOINT |
대소문자 구분 안하고 문제에 써도 됨.
1. DDL 데이터정의어
DDL(Data Definition Language)
데이터를 생성, 수정, 삭제하는 등의 데이터의 전체의 골격을 결정하는 역할을 하는 언어이다.
create : 데이터베이스, 테이블등을 생성
alter : 테이블을 수정
drop : 데이터베이스, 테이블을 삭제
truncate : 테이블을 초기화
1) 테이블 생성 : CREATE
create table 테이블명(
id int not null auto_increment,
name varchar(10) not null,
primary key(id)
)
2) 테이블 삭제 : DROP
DROP table 테이블명;
DROP TABLE 테이블명 CASCADE;
참조되는 테이블에서 데이터를 삭제하거나 수정하면, 참조하는 테이블에서도 삭제와 수정이 같이 이루어진다.
DROP TABLE 테이블명 RESTRICT;
참조하는 테이블에 데이터가 남아 있으면, 참조되는 테이블의 데이터를 삭제하거나 수정할 수 없다.
3) 테이블 삭제 : TRUNCATE (데이터만!! 모두 삭제)
TRUNCATE table 테이블명
4) 테이블 수정 : ALTER
(1)컬럼추가
ALTER TABLE 테이블명 ADD(컬럼명 타입);
예) ALTER TABLE EMP ADD(EMAIL VARCHAR2(15));
(2) 컬럼변경
ALTER TABLE 테이블명 MODIFY(컬럼명 타입);
예) ALTER TABLE EMP MODIFY(EMAIL VARCHAR2(20));
(3)컬럼명 변경
ALTER TABLE 테이블명 RENAME COLUMN 컬럼명 TO 바꿀컬럼명;
예) ALTER TABLE EMP RENAME COLUMN EMAIL TO MAIL;
(4)컬럼삭제
ALTER TABLE 테이블명 DROP COLUMN 컬럼명;
예) ALTER TABLE EMP DROP COLUMN MAIL;
2. DML 데이터 조작어
DML(Data Manipulation Language)
데이터 조작어란? 정의된 데이터베이스에 입력된 레코드를 조회하거나 수정하거나 삭제하는 등의 역할을 하는 언어.
1) 데이터 삽입 : INSERT
insert into 테이블명 (이름, 팀명, 나이) values ('홍길동','개발팀', ‘30’);
2) 데이터 수정 : UPDATE
update 테이블명 set 컬럼명 = '변경내용'
컬럼명에 적은 컬럼은 다 변함
update 테이블명 set 컬럼명 = '변경내용' where 컬럼명 = '변경조건';
이렇게 where 붙여서 변경 시킬 컬럼을 정해준다.
3) 데이터 삭제 : DELETE
delete from 테이블명 : 모든 행 삭제 (delete는 * 가 없음!)
delete from 테이블명 where 이름 = '홍길동'; 이름이 홍길동인 행만 삭제
4) 데이터 조회 : SELECT문
select * from 테이블명: 모든 행 조회
select count(*) from 테이블명 : NULL을 포함한 모든 레코드 수 반환
select count(컬럼명) from 테이블명 : NULL을 제외한 모든 레코드 수 반환
MIN(컬럼명) 컬럼중 제일 작은 숫자
MAX(컬럼명) 컬럼중 제일 큰 숫자
AVG(컬럼명) 컬럼의 평균
distnct
select distinct 학과 from 학생
중복값제거 select에 씀
4)-1 where조건
where 에는 집계함수가 올수 없다. 만약에 sum(컬럼명) 이렇게 집계함수를 select문에 쓰는 문제가 나오면 where로 조건문을 쓰는게 아니라 having에 조건을 써야함!!!!
where 컬럼명 =’ㅇㅇ’ 이런식으로 씀.
1) Like
컬럼명 LIKE = ‘%’
ex) 이름 LIKE = ‘김%’
A가 포함 : like '%A%'
두번째가 A : like '_A';
이름 컬럼에서 김씨인 사람 찾아라 이렇게 문제가 나오면 이런식으로 써준다.
2) between
컬럼명 between A in B
A,B는 숫자 범위니깐..
ex)between 20 in 30
20이상 30이하
3) IN
컬럼명 IN (A,B,C…등)
괄호안에 숫자도 나올수도 글자가 나올수도있음
group by
직급별 월급 회사별 수익 학과별 평균성적 이런식으로 그룹짓는 문제가 나오면 group by 쓴다고 생각하면됨
select에서 보고 group by에 그룹지을 컬럼을 써주면됨
ex)group by 직급 group by 학과 이런식으로
5)order by
오름차순 내림차순하면 order by 써놓고 어떤기준으로 정렬할건지 보고 쓰면됨.
-오름차순정렬 : order by 기준컬럼 asc
-내림차순정렬 : order by 기준컬럼 desc
여러번쓸수있음
ex)a는 오름차순 a의값이같다면 b는 내림차순
order by a asc, b desc;
6)having
집계함수 조건일때
평균성적 90이상 성적 최대급여가 500이상인 부서 이런식으로 나올때
having avg(성적)>=90 이런식으로 적기.
3.DCL(Data Control Language)
데이터베이스에 접근하거나 객체에 권한을 주는등의 역할을 하는 언어
grant : 특정 데이터베이스 사용자에게 특정 작업에 대한 수행 권한을 부여
revoke : 특정 데이터베이스 사용자에게 특정 작업에 대한 수행 권한을 박탈, 회수
commit : 트랜잭션의 작업을 저장
rollback : 트랜잭션의 작업을 취소, 원래대로 복구
grant 권한 on 테이블 to 유저
권한에는 select, insert, delete, update등이 있다.
ex) 홍길동에게 학생테이블의 삭제 권한을 주겠다.
grant delete on 학생 to 홍길동
revoke 권한 on 테이블 from 유저
revoke는 권한을 빼앗아 오는 것임.
ex) 홍길동에게 학생테이블의 삭제 권한을 빼앗아 오겠다.
revoke delete on 학생 from 홍길동
파일 시스템 | 데이터베이스 모델링 | 관계형 데이터베이스 |
파일(File) | 엔터티(Entity) | 테이블(Table) |
레코드(Recode) | 튜플(Tuple) | 행(Row) ↓ |
키(Key) | 식별자(Identifier) | 기본키(Primary Key), Unique |
필드(Field) | 애트리뷰트(Attribute) | 컬럼(Column) 열 → |
관계형 데이터베이스 : 개체(Entity), 관계(Relationship)을 모두 릴레이션(Relation)이라는 표로 표현
- 튜플의 수 : 카디널리티(Cardinality) 또는 기수라고도 함 ↓
속성(Attribute) : DB를 구성하는 가장 작은 논리적 단위(필드), 개체의 특성
- 속성의 수 : 디그리(Degree) 또는 차수라고도 함 →
도메인(Domain) : 하나의 애트리뷰트가 취할 수 있는 모든 원자 값들의 집합
- 후보키(Candidate Key) : 릴레이션을 구성하는 속성들 중에서 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합, 유일성과 최소성을 만족해야 한다.모든 릴레이션에는 반드시 하나이상의 후보키가 존재함.
- 슈퍼키(Super Key) : 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키 유일성 O 최소성 X
- 기본키(Primary Key) : 후보키 중에서 선택한 주키(Main Key), null값을 가질 수 없다. 동일한 값을 중복 저장 할 수 없다.
- 대체키(Alternate Key) : 기본키를 제외한 나머지 후보키
- 외래키(Foreign Key) : 다른 릴레이션의 기본키를 참조하고 있는 속성 또는 속성들의 집합.
외래키로 지정되면 참조릴레이션의 기본키에 없는 값은 입력할수없음