DB 텍스트
패턴 연산자
LIKE % _
회원중 박씨 성을 조회
select * from member where name = '박%' 하면 진짜 이름이 박%를 찾게 된다
그러니까 내가원하는 패턴으로 만들려면
select * from member where name LIKE '박%'; 로 해야 된다.
%는 1글자 이상을 의미.
자리수를 한정한 패턴을 원하면?
_ 는 한자리를 의미 즉 LIKE ' 박_'; 하면 두자가 됨
---------------------------------------------------------
정규식을 이용한 패턴 연산
[] : 한 문자를 대변
[0-9] : 0부터 9까지 하나
{}는 반복횟수
{3,4} 3번 혹은 4번 반복
\d 는 [0-9] 와 같다. 즉, decimal digit을 나타냄
오라클에서 regexp 쓰려면
regexp_like 를 써야한다.
(컬럼, regexp) 사용
^ $는 처음과 끝을 의미
즉 표현식만! 있어야된다는걸의미
어떤곳에 포함된 정규표현식을 위해서는
^ $ 를 없애야한다.
\w 의 경우 [0-9a-zA-Z]를 의미
\D 의 경우 non[0-9]이다
DDL create alter drop
DML insert select delete update
DCL grant revoke
예약어,컬럼명은 소대문자 안가림
하지만 값은 가림, 즉 select로 불러올때 소대문자를 봐야한다는 소리
select id as(생략가능) user_id
select id "user id" 빈공백은 이렇게 해야된다. 대신 저렇게 넣으면 소문자로 들어감,
오라클 서버는 사용자의 접속정보를 따로 관리, 접속정보가 다르면 세션이 다르다.
세션마다 데이터 처리가 다르다.
트랜잭션이란? 업무의 실행단위/ 논리적 명령단위
COMMIT ROLLBACK
오라클의 더미 테이블 DUAL;
문자열 더하는 연산자는 || 이다.
오라클은 ' ' 로 문자열 한다.
varchar2 각 데이터의 길이만큼의 구분자가 생겨서 구분자로 구분, 가변길이는 varchar2
nchar national char 임, 기본 utf8, 한번에 많은 걸 표현하기때문에 ,
char(3) 은 3byte를 의미,3개의 글자가 아님
영문자는 한글자가 1byte
그러나 한글의 경우는? 한글자가 3byte임
CHAR (3 CHAR) 의경우 BYTE가 아니라 3개의 문자 즉 한글도 3개의 문자가 가능. 그렇지만 이건 바람직 하지 않음
왜? NCHAR(3) 이 적절 하나 표현할때 2BYTE면 됨
즉 영어 숫자가 아니고 한국어 혹은 각국의 언어를 쓰기 위해서 NCHAR를 쓰느게 바람직 () 수는 한글개수
CLOB (CHARACTER LARGE OBJECT)
NCLOB (NATAINOAL) 유니코드로
Number로 정수 실수 다 가능 (오라클의 경우)
ALTER의 경우 데이터 형 , 길이를 확인해야겠지? 안그러면 오류가 뜰꺼니까
예약어를 테이블명이나 컬럼명으로 쓰고 싶으면 "" 안에 넣으면 된다
DISTINCT의 경우 한 컬럼만 SELECT 할 경우 사용가능
SELECT DISTICT AGE FROM MEMBER; 처럼
sql : 질의어
DBMS: 데이터베이스를 관리 시스템
동시성, 보안문제 를 위해 DBMS를 쓴다
SELECT LENGTH('HELLO') FROM DUAL
-----------------------------------------------------------
.오라클 내장 함수
문자열 함수
숫자 함수
날짜함수
변환함수
NULL관련함수
집계함수
오라클 영어는 1BYTE 한글은 3BYTE (유니코드)
SELECT NAME, SUBSTR(컬럼,시작인덱스,몇개까지) FROM 테이블;
SELECT * FROM 테이블 WHERE PHONE LIKE '^011-%-%$' 해도되고,사진찍은 SUBSTR로 해도되고
SELECT * FROM 테이블 WHERE PHONE IS NULL AND SUBSTR(BIRTH,,) IN('07','08','09');
CONCAT(),보다는||더빠르다네.연산이라.함수가아니라서
REPLACE는 통쨰로
TRANSLATE는 한개씩 한개씩