본문 바로가기

SQL7

SQL_ DECODE, COALESCE, NULLIF, NVL, NVL2 DECODE(oracle) ex)SELECT DECODE(COL, CMP1, VAL1, CMP2, VAL2, VAL3 ) FROM TABLE; - if-else구조 - COL이 CMP1이면, VAL1, CMP2이면 VAL2, 그것도 아니라면, VAL3 리턴 COALESCE(postgreSQL, oracle) ex) SELECT COALESCE(COL, VAL1, VAL2) FROM TABLE; - COL이 null이면 VAL1, VAL1도 null이라면 VAL2 리턴 NULLIF(postgreSQL, oracle) ex) SELECT NULLIF(EXPR1, EXPR2) FROM TABLE; - EXPR1과 EXPR2이 같으면 NULL, 같지 않으면 EXPR1 리턴 NVL(oracle) ex) SELEC.. 2023. 10. 13.
ORACLE_여러 행을 한 행으로 조회하기 1. WM_CONCAT * 중복제거 가능(DISTINCT 사용) , 10~11g SELECT WM_CONCAT(DISTINCT 컬럼명) FROM 테이블명 ; 2. LISTAGG * 4000byte 초과시 에러, 11g SELECT LISTAGG('컬럼명', ',') WITHIN GROUP (ORDER BY '정렬할 컬럼') FROM '테이블명' ; * LISTAGG는 DISTINCT 사용이 불가능하기 때문에 정규식을 사용해서 중복을 제거 SELECT REGEXP_REPLACE( LISTAGG('컬럼명', ',') WITHIN GROUP(ORDER BY '정렬할 컬럼').EXTRACT('//text()').'([^,]+)(,\1)*(,|$)', '\1\3') FROM '테이블명' ; 3. XMLAGG * .. 2022. 8. 5.
ORACLE_LOCK 개체 확인 및 KILL(해제) 데이터 무결성을 위해 LOCK과 TRANSCATION을 사용 (사용자간의 식별번호가 충돌하는 것을 예방) LOCK이 걸리면 오류가 걸려 프로그램이 작동하지 않으므로, LOCK이 걸린 개체를 확인하는 쿼리, KILL(해제)하는 쿼리를 기록하고자 한다. (*관리자 계정에서만 작업가능) 1. LOCK 테이블 확인 SELECT * FROM V$LOCKED_OBJECT WHERE ORACLE_USERNAME = '사용자명' ; 2. LOCK 테이블 SID, SESSION 조회 *sid = session_id / serial# = serial_no SELECT VS.SID ,VS.SERIAL# FROM V$SESSION VS ,V$LOCK VL ,DBA_OBJECTS DO WHERE VS.SID = VL.SID A.. 2022. 8. 5.
SQL_ CASE(조건) 와 NULL(변경) case문 : 다중조건 사용 - 단순 값 변경할 때 case 컬럼이름 WHEN 값 THEN 값 WHEN 값 THEN 값 WHEN 값 THEN 값 ELSE 값 END - 조건 걸어 값 변경할 때 CASE WHEN 조건1 THEN 값 WHEN 조건2 THEN 값 WHEN 조건3 THEN 값 ELSE 값 END * 예제 SELECT product_name, price, CASE WHEN price >70000 THEN '세일 10%' WHEN price > 50000 THEN '세일 5%' ELSE '세일없음' END AS '세일%' FROM shopping_mall.product; - NULL 값을 변경 방법1. case 문 활용 SELECT CASE WHEN 컬럼명 is not null THEN 컬럼값(그.. 2021. 8. 22.
SQL_데이터타입 / DATE 1. Numeric types(숫자형 타입) : 숫자를 나타내기 위해서 사용되는 데이터 타입 1) 정수형 타입 정수값을 저장하는 타입 ① TINYINT : 작은 범위의 정수들을 저장할 때 쓰는 데이터 타입 TINYINT SIGNED : -128 ~ 127 TINYINT UNSIGNED : 0 ~ 255 ② SMALLINT : TINYINT 보다 좀더 큰 범위의 정수 SMALLINT SIGNED : -32768 ~ 32767 ③ MEDIUMINT : 더 넓은 범위를 나타내는 데이터 타입 MEDIUMINT SIGNED : -8388608 ~ 8388607 MEDIUMINT UNSIGNED : 0 ~ 16777215 ④ INT : 더 넓은 범위를 나타내는 데이터 타입 INT SIGNED : -214748364.. 2021. 8. 21.
SQL_기초2 - 원하는 데이터 출력방법 SELECT * FROM 테이블명 WHERE 칼럼명='원하는 값'; SELECT * FROM product WHERE id=2; - 테이블 컬럼 추가 ALTER TABLE 테이블명 ADD 추가컬럼명 데이터타입 NULL: ALTER TABLE user ADD email TEXT; - 테이블 컬럼 이름 변경 ALTER TABLE 테이블명 RENAME COLUMN 기존컬럼명 TO 새컬럼명; ALTER TABLE product RENAME COLUMN `name` TO product_name; - 컬럼 삭제 ALTER TABLE 테이블명 DROP COLUMN 삭제할컬럼명; - 컬럼의 데이터 타입 변경 ALTER TABLE 테이블명 MODIFY 컬럼명 새데이터타입; ALTER TABLE.. 2021. 8. 20.