기록해! 정리해!

2-SQL 기본문법 정리 본문

Oracle

2-SQL 기본문법 정리

zsuling 2022. 5. 18. 00:30

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 ""

 

'Oracle' 카테고리의 다른 글

3-2  (0) 2022.05.18
3-1  (0) 2022.05.18
2-3  (0) 2022.05.17
2- 예제1  (0) 2022.05.17
2-2  (0) 2022.05.17
Comments