이하 구디아카데미 김지훈 강사님의 수업자료와 강의 내용 정리, 실습한 내용을 정리함
벌써 목요일이라니 시간 참 빠르다(⊙o⊙)(⊙ˍ⊙)(⊙o⊙)(⊙o⊙)
SELECT [컬럼] FROM [테이블 이름] GROUP BY[그루핑할 컬럼]
select depart_no,sum(salary)as 합계 from employees group by depart_no;
select depart_no,sum(salary)as 합계, avg(commission)as 인센평균 from employees group by depart_no;
select depart_no,sum(salary)as 합계 from employees group by depart_no having sum(salary)>=100000000 order by 합계 desc;
ATTER TABLE [테이블명] ADD CONSTRAINT [제약조건종류] (적용 필드);
insert into employees (emp_no, first_name, family_name, email, mobile, salary) values (112, '태근', '김', 'email@naver.con', '0101241234',5000000) on duplicate key update first_name='태곤', family_name='박', salary=500000;
ALTER TABLE [테이블명] MODIFY [컬럼명 데이터타입(사이즈) NOT NULL]
ALTER TABLE [테이블명] DROP[ [제약조건종류];
RDBMS 의 R 은 Relation 의 약자이다.
그래서 테이블 간에 부모 자식 관계 설정을 할 수 있다.
0 : 0개
| : 1개
ㅌ: 1 개 이상
이때 연결되는 선은 실선과 점선에 따라 의미가 달라진다.
실선 : 부모의 primary key 를 자식이 primary key 로 사용 ( O ) 식별 관계
점선 : 부모의 primary key 를 자식이 primary key 로 사용 ( X ) 비 식별 관계
아래 내용에서 학생 테이블은 과목과 동아리 테이블의 부모 테이블이 된다.
foreign key(컬럼 이름) references [참조해올 테이블 명](컬럼 이름)
ALTER TABLE [테이블 이름] ADD CONSTRAINT [제약조건 타입](적용컬럼) REFERENCES [테이블명(가져올컬럼)]
참조되는 테이블은 논리적으로 오류가 있으면 안 됨
그래서 부모 테이블의 내용이 삭제될 경우 참조하는 자식 테이블의 데이터를 지움
ON DELETE CASCADE
supplier 라는 테이블 생성
supplier_id 라는 int 컬럼이 있고 PK 임
supplier_name 라는 문자 컬럼이 있음 not null 제약이 있음
phone 이라는 문자 컬럼이 있음
products 라는 테이블 생성
product_id int 컬럼이 있고 PK 임
procuct_price 라는 int 컬럼이 있음
supplier_id 라는 int 컬럼이 있음
supplier_id는 외래키임 / supplier 의 supplier_id 컬럼에서 가져옴
얘는 종속 삭제됨(supplier에 있는 애가 삭제되면 같이 삭제됨)
delete from supplier where supplier_id = '1';
지워라/ supplier 테이블의 / supplier_id 라는 행의 첫 번째 행에서
이 경우 자식 테이블의 supplier_id 1번도 지워진다.
없는 부모의 아이디를 이용해서 넣을 경우
insert into products (product_id,supplier_id,procuct_price)
values(1115,4,7000);
UNIQUE : 중복을 허용하지 않는 제약조건
UNIQUE + NOT NULL = PRIMARY KEY
UNIQUE 는 NULL 을 허용한다.
UNIQUE 는 여러 개 사용 가능하다.
ALTER TABLE [테이블 이름] ADD CONSTRAINT [제약조건 종류](적용 컬럼)
동일한 supplier_name 을 넣으려고 할 시 오류 발생 Duplicate entry '박영수' for key 'supplier_name'
alter table products add constraint check(procuct_price between 5000 and 10000);
CONSTRAINT
CONSTRAINT_1failed for
gdj70.
products`` 와 같이 constraint 오류 발생select * from information_schema.TABLE_CONSTRAINTS where table_name='products';
DB 정의와 기능에 대해 설명하시오.
데이터를 영구적으로 저장할 수 있는 저장소로, 서로 다른 시스템 간에 데이터를 공유할 수 있다.
user에 권한부여 시 ALL PRIVILEGES, GRANT OPTION 의미는?
모든 권한 부여, 권한 부여 제외
DDL/DCL/DML 을 간략하게 설명하시오.
ALTER 와 UPDATE 의 차이점은?
ALTER 는 데이터 구조를 수정하는 것이고 UPDATE 는 데이터 자체를 수정하는 것
TABLE 에서 컬럼이란 무엇인가?
관계형 데이터베이스 테이블에서 특정한 단순 자료형의 일련의 데이터값과 테이블에서의 각 열을 말한다. 컬럼은 열이 어떻게 구성되어야 할지에 대한 구조를 제공한다.(각각의 열에 위치한 정보)
order by 에서 오름차순과 내림차순의 특징을 설명하시오.
오름차순은 아래로 내려갈수록 값이 커지도록 정렬, 내림차순은 내려갈수록 값이 커지도록 정렬한다.
autocommit이란 무엇인가?
자동 커밋. 커밋이란 실행쿼리를 확정 짓는 명령어인데, 이것을 자동으로 수행하게 함.
식별/비식별관계를 설명하시오
식별 관계는 부모의 primary key 를 자식이 primary key 로 사용하는 것이고
비식별 관계는 부모의 primary key 를 자식이 primary key 로 사용하지 않는다.(그냥 가져다 쓰기만 함)
기본키와 외래키에 대해 설명하시오
기본키 : primary key 로, 고유한 값을 가져야 하고 null을 허용하지 않음
외래키 : 다른 데이터테이블의 primary key 를 참조해서 가져온 키
이미 만들어진 테이블에 기본키를 추가하기 전 반드시 확인해야하는 부분은?
해당 테이블의 기본키를 설정하고자 하는 컬럼에 중복 값이 있는지 확인
외래키를 복합키로 사용하는 것을 권장하지 않는 이유는?
insert 나 update 에 제한을 주기 때문
transaction 속성 4가지는 무엇이며 그중 원자성의 특징을 설명해 보자
부모 데이터를 지우면 자식 데이터도 함께 지워지는 제약 조건은?
on delete cascade
UNIQUE 제약 조건을 설명하시오.
중복을 허용하지 않는 제약 조건. null 은 허용하며 여러 개 사용 가능하다.
NOT NULL 제약 조건 설명해보자.
null 을 허용하지 않는다.
CHECK 제약 조건을 설명 해보자.
체크(조건)에 해당되지 않는 것은 데이터에 반영하지 않는다.