일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 네트워크
- 정보처리기사
- cisco packet
- jsp
- 참조타입
- html
- 라우터
- 오라클
- php
- NCS
- Cisco
- 리눅스
- sql
- w3school
- ospf
- 이것이 자바다
- 네트워크관리사
- autoset
- VLAN
- javaee
- 원형그래프
- 정처기필기
- Oracle
- rinux
- ciscopacket
- 데이터베이스
- 버추얼머신
- Java
- 자바
- jsp연결
- Today
- Total
기록해! 정리해!
2-SQL 기본문법 정리 본문
05/17
1) 문자/숫자
'001' : 문자; 001 001 : 숫자; 1
2) 실수
sno number(3,1)
( 정수2자리, 소수 1자리 ) / 전체 길이는 3, 소수점 1개
3) update / 전산연산
update t0517 set age=age-2;
a = a+1 ; 오른쪽에서 왼쪽으로 넘김, 자기 자신 값에 1을 더하는 것
예) a = 5
a = a+1
즉, a는 6
S = S+a ; 누적
i = i+1 ; 1을 증가하는 식
예) age = age+1
4) or연산
where sname='효리' or sname='솔라'
where sno in ('B01','B03');
5) select
where sno='A01'or sno= 'A02'
where sno='A01'and sname
where sno like'A%';
6) 연산자
= 대입 / == 같다 이므로 원래는 ==써야함
이상 age>=
이하 age<=
초과 age>
미만 age<
오름차순 asc
내림차순 desc
아닌 age!= / age<>
(=은 무조건 연산자 맨 뒤에)
7) 제약조건 (=유효성검사 컨트롤)
: 정확한 값을 받기 위해서 사용한다
1. 기본키 pk (primary key)
- 중복불가
- null 사용불가
- 테이블에 하나만 존재할 수 있다
- 두개의 칼럼을 하나의 키로 만들 수 있다. 컬럼 두개를 합친 것에 부여할 수 있다
예) a 001 =a001
a 002 =a002
b 001 =b001
b 002 =b002
- 유니크 제약조건
예1)
create table student( --기본 컬럼을 다 적고 제약조건에 대한 키를 밑에 작성 (자동적으로 이름부여)
sno varchar2(3) ,
sname nvarchar2(10),
year varchar2(10),
dept nvarchar2(10) ,
primary key(sno));
예2)
create table student( --제약조건에 대해서 수동적으로 이름을 부여한 것
sno varchar2(3) ,
sname nvarchar2(10),
year varchar2(10),
dept nvarchar2(10) ,
constraint student_sno_pk primary key(sno,sname)); --2개의 컬럼에 1개의 pk
예3)
create table student(
sno varchar2(3) not null primary key , --컬럼 옆에 pk가 기본
sname nvarchar2(10),
year varchar2(10),
dept nvarchar2(10)
);
2. 참조키 fk (foreign key)
- 참조하는 다른 테이블의 pk를 참조한다
- 참조하는 다른 테이블(student(sno))에 없는 값은 추가할 수 없다
예) constraint enrol_sno_fk foreign key(sno) references student(sno)
3. 유니크제약조건
- 중복 불가
- null 사용가능 (null은 연산이 안되기 때문에 중복해도됨)
4. not null 제약조건
- 해당 컬럼에서 Null 값을 허용하지 않는다는 키, 공백문자열도 x
5. check 제약조건
- 정해진 조건만 사용. 특정 값이나 범위를 입력해 값이 맞는지 확인
6. default 제약조건
-- 제약조건은 정확한 값을 받기 위해서 사용한다
UI, 데이터베이스, 서버 다 넣어야 함 (아무도 믿으면 안돼...!)
8) 문두어
테이블의 이름 앞 글자를 따라 컬럼의 이름을 만들어줌
예) student - sno, sname ...
course - con, cname ...
9) join (테이블 두개 묶기)
select * from student join enrol
on student.sno=enrol.sno;
insert into student(sno,sname,year,dept)
values('600','영심이','2','산공');
--이렇게 행 삽입하고 join을 하면 이 레코드는 안나옴
enrol에 없기때문에 양쪽 둘 다 존재하는 데이터만 출력하는 거임
(예;우리학생이고 시험을 본 사람만 출력)
--> 나타내는 방법 : left 나 right 기준을 정해서 지정해줘야함
select * from student left join enrol
on student.sno=enrol.sno;
--600번 나옴 (학생이긴한데 시험은 안봄)
(1). 이너 조인: 왼쪽 오른쪽 둘 다 있는 값만 나옴
select * from student join enrol
on student.sno=enrol.sno
order by student.sno asc;
-- 600 안나옴 / 두 테이블의 공통적인 sno 값을 기준으로 테이블을 합친다
(2). 아우터 조인: 기준을 잡아서 나타내는 것
select * from student left outer join enrol
on student.sno=enrol.sno
order by student.sno desc;
--(student sno 기준으로 테이블을 합쳐서 600나옴)
select * from student right outer join enrol
on student.sno=enrol.sno
order by student.sno desc;
--(enrol sno 기준으로 테이블을 합쳐서 600안나옴)
select * from student full outer join enrol
on student.sno=enrol.sno
order by student.sno asc;
--(양쪽 다 기준이 돼서 다 나옴, 600나옴)
10) 별칭
별칭은 한 번 정하면 모두 별칭으로 사용해야 함
select * from student s left join enrol e
on s.sno=e.sno;
--테이블의 명칭은 풀네임 옆에 쓰기
select sno,sname,grade from student s left join enrol e
on s.sno=e.sno; --에러/ sno 중복
select s.sno,sname,grade from student s left join enrol e
on s.sno=e.sno;
-- 누구의 sno를 나타낼 것인가 (on 뒤에 오는 것)
select s.sno as "학 번",sname as "이름",grade from student s left join enrol e
on s.sno=e.sno;
-- s.sno의 별칭 "학 번" / 따옴표가 있어야 안에 공백을 사용할 수 있음
-- 컬럼의 명칭은 as ""