DDL
전체 테이블 조회
SELECT * FROM ALL_TABLES; (관리자일 경우)
SELECT * FROM USER_TABLES; (관리자 아닐 경우)
SELECT * FROM TAB; (관리자 아닐 경우)
* 의 뜻은 "전체" 라는 뜻으로 보면 된다 !
테이블 생성 (자바의 클래스 역할)
CREATE TABLE 테이블명
칼럼 생성 (자바의 멤버변수 역할)
CREATE TABLE STUDENT(
NUM INT PRIMARY KEY,
NAME VARCHAR(20) NOT NULL,
AGE INT NOT NULL,
SCORE INT DEFAULT 0,
PHONE VARCHAR(20) NOT NULL UNIQUE
);
INT
ㅡ> SQL에서 정수 데이터 형식
VARCHAR(20)
ㅡ> SQL에서 문자열 데이터 형식이며
( ) 안에 정수값만큼의 byte값을 넣을 수 있음
영문자 기준으로 1개당 1byte 이다
PRIMARY KEY
ㅡ> 데이터베이스 테이블의 설계 (데이터베이스)를 고유하게 식별하는 키
모든 테이블에는 PK가 있어야하며 이론상 오직 하나의 PK만 존재할 수 있습니다
NOT NULL
ㅡ> 해당 칼럼은 데이터값을 무조건 넣어야 한다!
DEFAULT 0
ㅡ> 칼럼에 값을 넣지 않는다면 0을 대입하겠다는 뜻
UNIQUE
ㅡ> 중복값 불가능
테이블 삭제
DROP TABLE 테이블명
DML
INSERT INTO (생성)
기존의 테이블에 데이터를 집어 넣는다
INSERT INTO STUDENT(NUM,NAME,AGE,SCORE,PHONE) VALUES(1,'아무무',20,80,'010-1234-1234');
INSERT INTO STUDENT(NUM,NAME,AGE,PHONE) VALUES(2,'아리',20,'010-1234-1235');
INSERT INTO STUDENT VALUES(3,'오리아나',22,45,'010-6611-1234');
NUM PAIMARY KEY
꼭 적어주어야하고 PK 역할을 함
NAME NOT NULL
값을 꼭 넣어 주어야 함
AGE NOT NULL
값을 꼭 넣어 주어야 함
SCORE DEFAUL 0
값을 입력하지 않는다면 0으로 대입
PHONE NOT NULL UNIQUE
값을 꼭 넣어 주어야하고, 중복되선 안됨
VALUES
모든 칼럼을 자동으로 쓰겠다
모든 칼럼에 값을 넣겠다로 생각하면 되겠다
PK값 자동으로 ++ 해주는 로직만들기
INSERT INTO STUDENT VALUES((SELECT MAX(NUM)+1 FROM STUDENT),'모르가나',22,0,'010-1233-1231');
INSERT INTO STUDENT VALUES((SELECT NVL(MAX(NUM),0)+1 FROM STUDENT),'모르가나',22,0,'010-1233-1231');
INSERT INTO STUDENT VALUES((SELECT NVL(MAX(NUM),0)+1 FROM STUDENT),'티모',24,95,'010-1234-1331');
SELECT MAX (column_name) FROM TABLE_NAME
FROM 테이블에 선택된 칼럼의 가장 큰 값을 가져옵니다
SELECT MAX ( NUM ) +1 FROM STUDENT
STUDENT의 칼럼 (NUM) 의 가장 큰값을 가져온뒤 +1 하겠습니다
ㅡ> PK (NUM) 를 차례로 +1씩 증가하는 역할
NVL( A , B )
A의 값이 NULL 이라면 B값으로 취급해 주세요
SELECT NVL( MAX(NUM) , 0 ) +1 FROM STUDENT
칼럼에 저장되있는 값이 없다면 +1 씩 증가하는 메소드에 오류가 있기에
NULL 이라면 0으로 대입하게 하여 1 부터 시작할 수 있도록 만듬
SELECT (출력)
SELECT NUM,NAME FROM STUDENT;
-- 특정 칼럼을 출력
SELECT NUM,NAME,AGE,SCORE,PHONE FROM STUDENT;
-- 모든 칼럼을 출력
SELECT * FROM STUDENT;
-- 모든 칼럼을 출력 => 위와 같은뜻
조건절 WHERE
SELECT * FROM STUDENT WHERE NUM>=3;
-- NUM이 3보다 큰것만 출력
SELECT NAME FROM STUDENT WHERE NAME = '아리';
-- NAME이 '아리'만 출력
칼럼명 AS 바꿀이름
SELECT NUM AS 이름 ,NAME,SCORE*100 AS GRADE FROM STUDENT;
SELECT NUM,NAME AS "이 름",SCORE*100 AS "grade" FROM STUDENT;
AS 에서는 " " 를 이용하면 띄어쓰기와 소문자를 이용할 수 있다
SELECT * FROM [테이블명] ORDER BY [칼럼] (정렬)
SELECT * FROM STUDENT ORDER BY NUM DESC;
-- 칼럼명 DESC(내림차순)
SELECT * FROM STUDENT ORDER BY NUM ASC;
-- 칼럼명 ASC(올림차순)
연결 연산자 || (값 옆에 출력됨)
SELECT NAME,SCORE ||'점' AS 성적 FROM STUDENT;
|| 를 이용해 SCORE 값 옆에 '점' 이 출력됨
|| 를 이용하면 칼럼명이 이상하게 출력되므로
AS를 이용해서 정리해주도록 하자
DISTINCT 칼럼명
SELECT DISTINCT AGE FROM STUDENT;
-- SELECT DISTINCT 칼럼명 / 해당 칼럼만 보여줘
WHERE [칼럼명] LIKE
검색에 많이 활용됨
SELECT NAME FROM STUDENT WHERE NAME LIKE '아%';
-- 앞글자가 "아" 인 이름출력
SELECT NAME FROM STUDENT WHERE NAME LIKE '%아%';
-- "아"를 가진 이름 출력
SELECT NAME FROM STUDENT WHERE NAME LIKE '%나';
-- 마지막글자가 "나" 인 이름 출력
문자열관련 관련 함수들
UPPER & LOWER
INSERT INTO STUDENT VALUES(6,'apPLE',5,12,'010-1234-1100');
-- apPLE 생성
SELECT * FROM STUDENT WHERE UPPER(NAME) = 'APPLE';
-- 모두 UPPER 대문자로 바꿔서
-- = APPLE 인것만 출력
apPLE 이 대문자로 바뀌면
= APPLE 로 찾을 수 있기때문에 출력이 된다
SELECT UPPER(NAME) FROM STUDENT;
-- 대문자로 STUDENT 모두 출력
SELECT LOWER(NAME) FROM STUDENT;
-- 소문자로 STUDENT 모두 출력
NAME 을 LOWER로 표현하면서 점수, 폰번호를 추가적으로 출력하고싶다면
뒤에 , SCORE, PHONE 을 적어주면된다!
하나이상 적혀있다면 *을 사용할 수 없는거 같다
IF문을 SQL로 구현
SELECT NAME,CASE WHEN SCORE >= 80 THEN 'A'
WHEN SCORE >=50 THEN 'B
ELSE 'C'
END AS 학점 FROM STUDENT;
CASE WHEN 조건1 해당시 THEN 출력1
WHEN 조건2 해당시 THEN 출력2
ELSE 출력3
END FROM 테이블명
다중행 함수
그룹함수, 통계함수, 집계함수 라고도 불리며
여러개의 값을 처리하여 하나의 값을 반환합니다
** null 값은 통계에서 제외합니다
COUNT ( )
SELECT COUNT(*) FROM STUDENT;
COUNT ( 칼럼명 )
해당 칼럼의 갯수를 숫자로 출력해준다** NULL 값은 포함하지 않는다
COUNT ( * ) = COUNT ( 1 )전체 행의 갯수를 숫자로 출력해준다** NULL 값을 포함한다
** 댓글수, 등록한 상품수 등등으로 이용할 수 있을것 같다
UPDATE ( 갱신 )
UPDATE STUDENT SET AGE=520 WHERE NAME='아리';
-- UPDATE 테이블명 SET 컬럼명=값,컬럼명=값,... WHERE 컬럼명 = 타겟컬럼값;
DELETE (삭제)
DELETE FROM STUDENT WHERE NUM=6;
-- DELETE FROM 테이블명 WHERE 타겟칼럼
'오라클(Oracle)' 카테고리의 다른 글
(6) 자바에서 SQL을 이용해 CRUD 표현하기 (0) | 2022.07.04 |
---|---|
(5) 오라클과 자바를 연동하는 법 (0) | 2022.07.04 |
(4) SQL 기초 (조인 JOIN) (0) | 2022.07.04 |
(3) SQL기초 (페이징처리) (0) | 2022.07.04 |
(2) SQL기초 (HAVING, GROUP BY 절) (0) | 2022.07.04 |