[DDL] - 개별적인 정보들을 저장한 DB
CREATE(생성), DROP(삭제) , ALTER(구조변경)
유의사항 : 같은 이름을 가진 테이블은 생성할 수 없다.
테이블 생성과 삭제
-- 주석은 //가 아닌 --로 사용한다.
SELECT * FROM USER_TABEL; -- 지금까지 만든 테이블을 출력
CREATE TABLE STUDENT( -- STUDENT라는 테이블을 생성할 때 필요한 멤버변수 설정
--멤버변수이름(속성/칼럼) 자료형 제약조건
NUM INT PRIMARY KEY, -- PK
NAME VARCHAR(20) NOT NULL, -- String 대신에 VARCHAR(길이)
AGE INT NOT NULL,
SCORE INT DEFAULT 0,
PHONE VARCHAR(20) NOT NULL, UNIQUE -- 제약조건 2개
);
DROP TABLE STUDENT; -- STUDENT TABLE 삭제
★[DML]★
INSERT, SELECT, UPDATE, DELETE
[ INSERT ]
[INSERT]
INSERT INTO 테이블명 (칼럼명,칼럼명,....) VALUES(값,값...)
INSERT INTO STUDENT (NUM,NAME,AGE,SCORE,PHONE) VALUES(1,'아무무',20,80,'010-1234-1234')
INSERT INTO STUDENT (NUM,NAME,AGE,SCORE,PHONE) VALUES(2,'아리',20,'010-1234-1234') -- SCORE만 NOT NULL이 안붙어서 안써도 됨
INSERT INTO STUDENT VALUES(3,'오리아나',22,45,'010-16677-8899')
INSERT INTO STUDENT VALUES ((SELECT NVL(MAX(NUM),0)+1 FROM STUDENT) , '모르가나' , 22 , 0, '010-9876-5432'; -- PK값 자동증가
INSERT INTO STUDENT VALUES ((SELECT NVL(MAX(NUM),0)+1 FROM STUDENT) , '티모',24,95,'010-1111-111';
-- 쿼리문 안에 쿼리가 들어가서 서브쿼리
-- 초기 샘플 데이터가 없는 경우 새로 생성하게 되면 MAXNUM이 할당되어있지 않기 때문에, NVL을 사용해야함
NVL(A,B) -- 이건 단순 함수
: A 값이 NULL이면 B값으로 취급하세요.
-- > NVL(MAX(NUM),0)
-- > MAX(NUM)값이 NULL이면 0으로 취급해줘
[SELECT]
[SELECT]
SELECT 칼럼명 FROM 테이블명
SELECT NUM,NAME,AGE,SCORE,PHONE FROM STUDENT;
SELECT NUM, NAME FROM STUDENT; -- 넘버랑 네임만 보여줘 ( 특정 칼럼만 선택해서 볼 수 있음)
SELECT * FROM STUDENT; -- 다 보여줘!!
[조건절 WHERE]
AS 별칭 기억하기~!
[WHERE]
SELECT * FROM STUDENT WHERE NUM>=3;
-- 출력되는 결과 칼럼에게 별칭AS "등 급" -- 띄어쓰기를 쓸거면 " " 로 묶으면 된다.
SELECT * NUM,NAME,SCORE*100 AS GRADE FROM STUDENT;
SELECT * NUM,NAME,SCORE*100 AS 등급 FROM STUDENT;
SELECT * NUM,NAME,SCORE*100 AS "grade" FROM STUDENT; -- 소문자를 쓰고 싶으면 " " 사용
[정렬 ORDER BY]
SELECT * FROM STUDENT ORDER BY NUM DESC; -- 내림차순 정렬
SELECT * FROM STUDENT ORDER BY AGE DESC,NUM ASC; -- 나이는 내림차순 그중에서 넘버는 오름차순으로
[연결 연산자 || ]
=> 실행 화면에 SCORE 대신 성적으로 나오고, 뒤에 +점이 붙어서 나온다.
SELECT NAME,SCORE||'점' AS 성적 FROM STUDENT;
[중복 데이터 제거 DISTINCT]
SELECT DISTINCT AGE FROM STUDENT;
[검색에 많이 활용되는 LIKE]
SELECT NAME FROM STUDENT WHERE NAME LIKE '아%'; -- '아'로 시작하는 이름
SELECT NAME FROM STUDENT WHERE NAME LIKE '%아%'; -- '아'가 들어가는 이름
SELECT NAME FROM STUDENT WHERE NAME LIKE '%나'; -- '나'로 끝나는 이름
[문자열 관련 함수들]
INSERT INTO STUDENT VALUES (6,'apPLE',5,12,'010-5050-9898')
SELECT * FROM STUDENT WHERE UPPER(NAME)='APPLE'; -- 일시적으로 UPPER(NAME)로 NAME에 있는 값을 대문자로 바꿔줌
[IF문을 SQL로 구현 / WHEN , THEN, END]
SELECT NAME, CASE WHEN SCORE>=80 THEN 'A' WHEN SCORDE>=50 THEN 'B' ELSE 'C' END AS 학점 FROM STUDENT;
[COUNT( )]
-- ★다중행 함수★ = 지금처럼 6개를 카운팅을 해서 결과를 한줄로 출력해버리는 함수
SELECT COUNT(*) FROM STUDENT;
[UPDATE]
UPDATE 테이블명 SET 컬럼명=값, 컬럼명=값,... WHERE 컬럼명=타겟컬럼값;
UPDATE STUDENT SET SCORE=60 WHERE NAME='아리';
DELETE FROM STUDENT WHERE NUM=6;
[DCL]
== 컨트롤 랭귀지 => 자바에선 많이 사용 x
-- 계정 생성,삭제
-- 권한에 관련된 명령
+추가로 알고 있으면 좋은 것들
[SUBSTR, LENGTH, INSTR, REPLACE(중요. 이름을 김*곤 이런식으로),...]
은 나중에 추가로 다뤄보겠다.
'개발자노트 > DBMS' 카테고리의 다른 글
[SQL] [오라클] 문법 - GROUP BY / HAVING (0) | 2022.07.04 |
---|---|
[SQL][오라클] DO IT ! 오라클로 배우는 데이터베이스 입문 2장-2 (0) | 2022.07.03 |
[SQL][오라클] DO IT ! 오라클로 배우는 데이터베이스 입문 2장 (0) | 2022.07.03 |
[SQL][오라클] DO IT ! 오라클로 배우는 데이터베이스 입문 1장 (0) | 2022.07.03 |
저장용] 오라클 설치 cmd 명령어 (0) | 2022.07.01 |