일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 스프링시큐리티 로그아웃
- spring 게시판 삭제
- 객체
- 반복문
- StringBuffer
- 객체지향
- 연산자
- SpringSecurity 로그인
- SQL
- 예약어
- 오버로딩
- 친절한 SQL 튜닝
- 식별자
- java
- 논리 연산자
- 이클립스 설치
- 친절한 SQL
- join
- 인텔리제이 Web 애플리케이션
- 배열
- SpringSecurity 로그아웃
- 오버라이딩
- @PreAuthorize("isAuthenticated()")
- 산술 연산자
- 비교 연산자
- 자바의정석
- SQL튜닝
- 함수
- 상속
- SQL 튜닝
Archives
- Today
- Total
gi_dor
정리 _ 테이블 생성 , 조작 , group by , JOIN 본문
데이터 타입 설명
VARCHAR(size) | 최대 길이가 size인 가변길이 '문자값' 최소1 ~ 최대 2000 |
CHAR(size) | 길이가 size인 고정길이 '문자값' 기본길이1 , 최대 255 Ex ) CHAR(5) 'Y' ▶ 'Y ' 공백으로 채움 |
NUMBER | 38자리까지 유효한 숫자 |
NUMBER(p,s) | 38자리 범위중 p자리수 까지 유효한 값으로 전체 자리수 p, 소수점 자리수 s Ex ) number(7,4) => 123.4567 |
DATE | 날짜와 시간 |
LONG | 2GB 까지의 가변 길이 문자값 테이블당 한개의 LONG 열 허용 |
RAW , LONGRAW | VARCHAR2 , LONG 과 같지만 이진 데이터를 저장 Binary |
SQL 명령어 기본
◾ 데이터 검색 , 조회
select
◾ 데이터 조작어 - DML
insert , update , delete
◾ 데이터 정의어 - DDL
create , alter , truncate , drop , rename , comment
◾ Transaction
commit , roll back , save poin
◾ 데이터 제어어 - DCL
grant , revoke
RETRIEVE (QUERY) | SELECT | 원하는 데이터를 검색하기 위한 명령어 |
DML | INSERT UPDATE DELETE |
새로운 행을 입력 , 행을 수정 데이터 삭제 등 데이터를 조작에 관함 |
DDL | CREATE , ALTER DROP , RENAME TRUNCATE , COMMENT |
구조를 만들거나 , 구조변경 , 삭제등 데이터 구조에 관함 |
Transaction | COMMIT , ROLL BACK SAVE POINT |
논리적인 작업의 단위로 DML에 의해 조작된 결과를 다룸 |
DCL | GRANT , REVOKE | 데이터베이스에 접근하고 객체들을 사용하도록 권한을 주고받음 |
-- 데이터 입력
insert into 테이블이름 (컬럼1, 컬럼2, 컬럼3)
values(값1 , 값2 , 값3);
-- 데이터 수정
update 테이블이름
set 컬럼1 = 값1
where 조건식
;
-- 데이터 삭제
delete from 테이블이름
where 조건식
;
-- 데이터 전체검색
select * from 테이블 이름 ;
-- 특정 칼럼의 검색
select 컬럼1 , 컬럼2 , 컬럼3
from 해당 테이블 이름
;
-- 산술식을 이용한 검색
select name , salary , salary * 10 , salary / 5
from 테이블
;
-- ALIAS 부여 (별명)
select name as 이름 , salary 연봉 , salary*10 "연봉 10배"
from 테이블
;
-- 컬럼의 합성
-- 합성연산자 || 사용
select name || ' ' || title
from s_emp
;
-- 중복 행 제거
select distinct name
from s_emp
;
-- 정렬순서
select name , title
from s_emp
order by name -- ㄱ ~ ㅎ 오름차순
;
select name , title
from s_emp
order by name desc -- 내림차순
;
SUBGROUP 데이터분류
GROUP BY : 전체 데이터를 소그룹으로 나눌 컬럼을 명시
HAVING : GROUP에 대한 조건을 기술함
group by 예시
select dept_id , avg(salary)
from s_Emp
where title = '사원'
group by dept_id
;
having 예시
select title , avg(salary), count(*)
from s_emp
group by title
having count(*) > 2
;
select
from
where
group
having
order 구조
JOIN
하나 이상의 테이블로부터 연관된 데이터 검색하기
일반 적으로는 PK와 FK 값의 연관으로 JOIN성립 , 떄떄로 PK,FK 관계없어도 논리적인 값들의 연관으로도 JOIN
JOIN 방법
- EQUI JOIN : 컬럼 간의 값들이 서로 정확히 일치하는경우에 사용
- NON EQUI JOIN : 한 컬럼의 값이 다른 컬럼의 값과 정확히 일치하지 않는 경우
- OUTER JOIN : JOIN 조건을 만족하지 않는경우 에도 모든 행들을 다 보려고
- SELF JOIN : 같은 테이블에 있는 행들을 JOIN
✔ JOIN시 where 필수
EQUI JOIN
- = 연산자 사용
- OUTER JOIN에서 IN 이나 OR 사용 할수 없음
- PK, FK 관계로 JOIN 하는게 일반적임
select s_emp.name , s_emp.dept_id , s_dept.name
from s_Emp , s_dept
where s_emp.dept_id = s_dept.id
;
테이블의 ALIAS 사용
select e.name 사원이름 , e.dept_id , d.name 부서이름
from s_Emp e , s_dept d
where s_emp.dept_id = s_dept.id
;
NON -EQUI JOIN
- 한컬럼의 값이 다른 컬럼의 값과 정확히 일치하지 않는경우
- = 연산자 외에 다른 연산자를 사용해서 JOIN
- between A and B
select e.name 이름 , e.salary 연봉 , g.grade 등급
from s_emp e , salgrade g
where e.salary between g.losal and g.hisal
;
OUTER JOIN
- (+) 연산자를 사용, 위치는 JOIN할 데이터가 부족한 쪽에 위치함
- where 절에서 비교연산자 기준으로 좌측 , 우측 어느 한쪽에 쓰임
- OUTER JOIN에서 IN 이나 OR 사용 할수 없음
--사원의 이름 , 사번 , 사원의 담당고객을 나타내시오
--고객을 담당한 사원이 없더라고 모든 고객의 이름을 나타내고
--사번순으로 오름차순으로 정렬
select * from s_emp;
select * from s_customer;
select e.name 사원 , e.id 사번 , c.name 고객이름
from s_emp e , s_customer c
where e.id (+)= c.sales_rep_id
order by 2
;
SELF JOIN
- 하나의 테이블을 마치 여러개의 테이블인거마냥 사용함
- 테이블에 대한 alias 로 각기 다르게 지정해줘야함
- 컬럼의 이름앞에 반들시 alias 붙임
- SELF JOIN 횟수는 제한되어 있지 않음
728x90
'First > SQL' 카테고리의 다른 글
SQL 손코딩 TEST (0) | 2023.04.18 |
---|---|
SET 연산자 (0) | 2023.04.18 |
정리_관계형 데이터 베이스 RDB (0) | 2023.04.17 |
주말) SQL 예제 복습 (0) | 2023.04.16 |
정리_SQL 기초문법 (0) | 2023.04.15 |