일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 메이븐
- MVC
- @Controller
- Model2
- Join
- JSP
- 서브쿼리
- 뉴렉처
- @RestController
- SQL
- STS
- order by
- select
- AOP
- 프레임워크
- 인텔리제이
- toUpperCase
- Model1
- 인프런
- 세션
- 코테
- MVC2
- 서블릿
- 코딩테스트
- 스프링
- 프로그래머스
- 기술 대비
- 자바
- 김영한
- DDL
- Today
- Total
Heestory
0601 NewLecture) 6강~17강 본문
6강)
DDL : CREATE(정의) / ALTER(수정) / DROP(삭제)
DML : INSERT / SELECT / UPDATE / DELETE - CRUD
DCL : GRANT / REVOKE
#테이블 정의하기
CREATE TABLE NMEMBER(
ID VARCHAR2(50),
PWD VARCHAR2(50),
NAME VARCHAR2(50),
GENDER NCHAR(2), -- 남성, 여성(3Byte*2) UTF, NCHAR의 경우 2라고 해도 충분하다.
AGE NUMBER(3),
BIRTHDAY CHAR(10), -- 2000-01-02
PHONE CHAR(13), -- 010-1234-5678
REGDATE DATE
);
7~8강)오라클 데이터 형식
#1.문자열 형식
✔.CHAR : 고정 길이 데이터 형식
EX) CHAR(10)이면 데이터 크기를 2만 사용해도 무조건 10으로 인식 , 핸드폰 크기 처럼 일정한 것은 CHAR 이용
데이터의 길이가 일정하기 때문에 검색할 때는 유리
✔.VARCHAR2 : 가변길이 데이터 형식
-전 세계적인 언어가 들어갈 때 이용하는 형식
✔.NCHAR (National Char)
✔.NVARCHAR
#2.Charater 형식
ex.article에 많은 태그, 문자열을 쓸 때 사용
✔.LONG
✔.CLOB : 대용량 텍스트 데이터 타입(최대 4Gbyte) // LONG 보다 자주 쓰임
✔.NCLOB
#3.숫자 형식
✔.NUMBER(4) : 최대 4자로 이루어진 숫자
✔.NUMBER(6,2) :소수점 2자리를 포함하는 최대 6자리의 숫자(소수점 둘째 자리에서 반올림)
✔.NUMBER(6,-2) :소수점 -2자리에서 반올림하는 최대 6자리 숫자
✔.NUMBER : MAX 38자리까지
✔.NUMBER(*,5) = NUMBER(38,5) : 소수점 5자리를 포함하는 38자리 숫자
#.날짜 형식(Date 형식)
✔.DATE : 년월일 표현
✔.TIMESTAMP : 년월일시분초 표현
9강)테이블 수정하기(ALTER)
수정 요구 사항
- ID : VARCHAR2(50) → NVARCHAR2(50)
- AGE : 제거
- EMAIL : VARCHAR2(200) 추가
수정(MODIFY)
ALTER TABLE NMEMBER MODIFY ID NVARCHAR2(50);
DROP 후 CREATE : 데이터가 아예 없는 경우 가능
제거(DROP)
ALTER TABLE NMEMBER DROP COLUMN AGE;
추가(ADD)
ALTER TABLE NMEMBER ADD EMAIL VARCHAR2(200);
혹은 아래처럼 테이블 > 편집 > 변경할 수 있다.
10강 ) SQL 쿼리 연습의 테이블 준비하기
CREATE TABLE NOTICE
(
ID NUMBER,
TITLE NVARCHAR2(100),
WRITER_ID NVARCHAR2(50),
CONTENT CLOB,
REGDATE TIMESTAMP,
HIT NUMBER,
FILES NVARCHAR2(1000)
);
CREATE TABLE COMMENT
(
ID NUMBER,
CONTENT NVARCHAR2(2000),
REGDATE TIMESTAMP,
WRITER_ID NVARCHAR2(50),
NOTICE_ID NUMBER
);
##이때 ORA-00903: 테이블명이 부적합합니다
00903. 00000 - "invalid table name"
오류 발생
오라클 예약어로 사용했기 때문이다.
"COMMENT"로 변경해서 TABLE 생성하자.
CREATE TABLE ROLE
(
ID VARCHAR2(5),
DISCRIPTION NVARCHAR(500)
);
CREATE TABLE MEMBER_ROLE
(
MEMBER_ID NVARCHAR2(50),
ROLE_ID VARCHAR(50)
);
11강 ) DML - INSERT / SELECT
#1.INSERT
-모든 필드 값 입력하기
INSERT INTO NMEMBER VALUES('newlec' , '111', '홍길동' , '남성' ,'1995-02-29', '010-2356-8956', 'newlec@newlecture.com','0214-05-23');
-원하는 필드만, 원하는 순서대로 입력하기. 나머지는 NULL값
INSERT INTO NMEMBER(ID,PED) VALUES('newlec','122');
#2.SELECT
SELECT * FROM NMEMBER;
14강) 연산을 통한 데이터 조회(산술 연산자)
Q.공지사항의 조회수를 조회하시오. 단 기존 값에 1을 더해서 조회하세요.
SELECT HIT+1 FROM NOTICE; //칼럼명이 'HIT+1' 로 나옴
SELECT HIT+1 HIT FROM NOTICE; //칼럼명 HIT 로 나옴
Q2.모든 회원의 이름을 조회하시오.
단 이름은 ID를 붙여서 나타내시오 ex.홍길동(hong)
SELECT name || '(' || ID || ')' FROM NMEMBER;
-엄선된 칼럼에 별칭 사용하기
SELECT name || '(' || ID || ')' AS NAME FROM NMEMBER;
SELECT name || '(' || ID || ')' NAME FROM NMEMBER;
15강) 비교 연산자 :
.Q.게시글 중에서 작성자가 'newlect'인 게시글만 조회하시요.
SELECT * FROM NOTICE WHERE WRITER_ID="newlec;
Q2.게시글 중에서 조회수가 3이 넘는 글만 조회하세요.
SELECT * FROM NOTICE WHERE HIT >3;
Q3.게시글 중에서 내용을 입력하지 않는 게시글을 조회하시오.
SELECT * FROM NOTICE WHERE CONTENT='NULL';
혹은 SELECT * FROM NOTICE WHERE CONTENT ID NULL;
/NULL이 들어간 값을 검색함
17강 패턴 비교 연산자) LIKE, % ,_
Q.회원 중에서 '박'씨 성을 조회하시오.
SELECT * FROM NMEMBER WHERE NAME = '박%';
라면 박%인 문자열을 찾는다.
☞SELECT * FROM NMEMBER WHERE NAME LIKE '박%';
% : 한글자 이상을 의미
Q2.회원 중에서 '박'씨이고 이름이 외자인 회원을 조회하시오
SELECT * FROM NMEMBER WHERE NAME LIKE '박_';
_ : 한글자만 가능
만약 'J____'라면 JDBC처럼 J뒤 3글자 있는 문자열을 찾는다.
Q3.회원 중에서 '박'씨 성을 제외한 회원을 조회하시오.
SELECT * FROM NMEMBER WHERE NAME NOT LIKE '박%';
Q4.회원 중에서 이름에 '도'자가 들어간 회원을 조회하시오.
SELECT * FROM NMEMBER WHERE NAME LIKE '%도%';
('도'자가 앞뒤로)
'개발(~국비) > SQL' 카테고리의 다른 글
0602 NewLecture)제약 조건 (0) | 2022.06.02 |
---|---|
0602 NewLecture)INNER JOIN,OUTER JOIN,SELF JOIN,UNION(34~39강) (0) | 2022.06.02 |
0602 NewLecture) 29강~33강, 서브쿼리, 집계함수 (0) | 2022.06.02 |
0602 NewLecture) 20~28강 (0) | 2022.06.02 |
0602 NewLecture) 정규식 표현 (0) | 2022.06.02 |