일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 자바
- 정보처리기사
- jsp
- w3school
- Oracle
- 네트워크관리사
- 참조타입
- 데이터베이스
- html
- 정처기필기
- Cisco
- VLAN
- javaee
- ciscopacket
- autoset
- php
- ospf
- 오라클
- cisco packet
- jsp연결
- 네트워크
- Java
- rinux
- 라우터
- 버추얼머신
- sql
- NCS
- 리눅스
- 이것이 자바다
- 원형그래프
- Today
- Total
기록해! 정리해!
2-3 본문
8) 문두어
insert into enrol(sno,cno,grade,midterm,final) --자바에서는 명령어로 final이 있기때문에 컬럼이름으로 사용할 수 없음
values('400','C123','A',90,90);
테이블의 이름 앞 글자를 따라 컬럼의 이름을 만들어줌
예) student - sno, sname ...
course - con, cname ...
9) join (테이블 두개 묶기)
[ANSI-SQL] --권장
select * from student join enrol
on student.sno=enrol.sno;
[T-SQL, PL-SQL]
select * from student, enrol
where student.sno=enrol.sno;
insert into student(sno,sname,year,dept)
values('600','영심이','2','산공');
--join을 하면 안나옴,양쪽 둘 다 있는 거만 출력하는 거임(예;우리학생이고 시험을 본 사람만 출력)
select * from student left join enrol
on student.sno=enrol.sno;
--600번 나옴 (학생이긴한데 시험은 안봄)
(1). 이너 조인: 왼쪽 오른쪽 둘 다 있는 값만 나옴
select * from student join enrol
on student.sno=enrol.sno;
-- 600 안나옴
(2). 아우터 조인: 기준을 잡아서 나타내는 것
select * from student left outer join enrol
on student.sno=enrol.sno
order by student.sno desc;
--(student가 기준이므로 600나옴)
select * from student right outer join enrol
on student.sno=enrol.sno
order by student.sno desc;
--(enrol이 기준, 600안나옴)
select * from student full outer join enrol
on student.sno=enrol.sno
order by student.sno asc;
--(양쪽 다 기준이 돼서 다 나옴, 600나옴)
10) 제약조건
1. 참조키 fk (foreign key)
: 참조하는 조건이 없으면 못씀
: 다른 테이블의 pk를 참조함
예) constraint enrol_sno_fk foreign key(sno) references student(sno)
2. 유니크제약조건
: 중복은 안되는데 null은 사용가능함
: null은 연산이 안되기 때문에 중복해도됨
3. not null 제약조건4. check 제약조건
-- 제약조건은 정확한 값을 받기 위해서 사용한다
UI, 데이터베이스, 서버 다 넣어야 함 (아무도 믿으면 안돼...!)
11) 별칭
select * from student s left join enrol e
on s.sno=e.sno;
--테이블의 명칭은 풀네임 옆에 쓰기
select s.sno,sname,grade from student s left join enrol e
on s.sno=e.sno;
-- s.sno 그니까 누구의 sno를 나타낼 것인가
select s.sno as "학 번",sname as "이름",grade from student s left join enrol e
on s.sno=e.sno;
-- s.sno의 별칭 "학 번" / 따옴표가 있어야 안에 공백을 사용할 수 있음
-- 컬럼의 명칭은 as ""
select * from student s, enrol e
where student.sno=enrol.sno;