반응형

프로그래밍/오라클 SQL과 PLSQL 10

오라클 insert문의 values 인자 오류

챗GPT 한테 테이블의 구조와 들어갈 값들을 말해주고 sql 구문을 뱉게 했다. 그런데 create 는 잘 됐는데 insert 에서 오류가 났다. INSERT INTO sqldemp (empno, ename, edate, enum) VALUES (1, '홍길동', '2012-01-01', NULL), (2, '강감찬', '2012-01-01', '001'), (3, '이순신', '2013-01-01', '001'), (4, '이민정', '2013-01-01', '001'), (5, '이병헌', '2013-01-01', NULL), (6, '안성기', '2014-01-01', '005'), (7, '이수근', '2014-01-01', '005'), (8, '김병만', '2014-01-01', '005');..

교재 84, 85페이지 REPLACE 퀴즈 1 ~ 4번

--문제1 SELECT ENAME, REPLACE(ENAME, SUBSTR(ENAME, 2, 2), '--') "REPLACE" FROM EMP WHERE DEPTNO = 20; --문제2 SELECT NAME, JUMIN, REPLACE(JUMIN, SUBSTR(JUMIN, 7, 13), '-/-/-/-') "REPLACE" FROM STUDENT WHERE DEPTNO1 = 101; --문제3 SELECT NAME, TEL, REPLACE(TEL, SUBSTR(TEL, INSTR(TEL, ')') + 1, 3), '***') "REPLACE" FROM STUDENT WHERE DEPTNO1 = 102; --문제4 SELECT NAME, TEL, REPLACE(TEL, SUBSTR(TEL, INSTR(..

SQL에서 숫자 상수가 문자열로 취급되는 경우

문제를 풀다가 의문점이 발생했다. select name, jumin, decode(substr(jumin,7, 1), 1, 'MAN', 2, 'WOMAN') "Gender" from student where deptno1 = 101; 이 문제에서 decode 조건문에서는 1과 2를 따옴표로 감싸지 않아도 동작했다. select name, tel, decode(substr(TEL, 1, instr(tel, ')')-1), '02', 'SEOUL', '031', 'GYEONGGI', '051', 'BUSAN', '052', 'ULSAN', '055', 'GYEONGNAM') loc from student where deptno1 = 101; 하지만 위 코드에서는 지역번호 02, 031, 051 등을 따옴표로..

[오라클 SQL과 PL/SQL] decode 퀴즈 1, 2, case문 퀴즈

120 ~ 123p 내용 1. decode 퀴즈 1번 select name, jumin, decode(substr(jumin,7, 1), 1, 'MAN', 2, 'WOMAN') "Gender" from student where deptno1 = 101; 2. decode 퀴즈 2번 select name, tel, decode(substr(TEL, 1, instr(tel, ')')-1), '02', 'SEOUL', '031', 'GYEONGGI', '051', 'BUSAN', '052', 'ULSAN', '055', 'GYEONGNAM') loc from student where deptno1 = 101; 3. case문 퀴즈 select empno, ename, sal, case WHEN sal betw..

[오라클 SQL과 PLSQL] 79p SUBSTR/INSTR 퀴즈

select initcap(name) name, tel tel, substr(tel, 1, instr(tel, ')') -1) "AREA CODE" from student where deptno1 = 201; 풀이과정 1. name 열에 첫글자가 대문자니까 initcap() 함수를 이용해 name을 출력. 2. tel 은 따로 손댈 거 없으니 그대로 출력 3. 지역번호는 전화번호의 ')' 이전까지의 문자를 추출해야함. 문자열에서 지정한 시작 위치부터 n글자를 추출 가능한 substr() 함수를 이용해야함. 4. substr() 로 추출한 문자열은 tel. 시작 위치는 첫번째 문자부터 ')' 이전이니까 1. ')' 이전의 위치를 알아내려면 특정 글자의 위치를 알아내는 instr 함수가 필요함. ')'를 찾..

dual 테이블이란?

Oracle 데이터베이스에서 dual 테이블은 DUMMY 열(column)을 가진 테이블입니다. 이 테이블은 실제 데이터를 저장하지 않으며, 시스템 카탈로그 테이블(system catalog table) 중 하나입니다. dual 테이블은 존재하는 것이지만, 개발자나 DBA가 직접 생성, 수정, 삭제할 수 없습니다. dual 테이블은 일반적으로 다음과 같은 용도로 사용됩니다. 1. SELECT 문에서 리터럴 값을 검색하기 위해 사용합니다. SELECT 'Hello, World!' FROM DUAL; 2. 현재 날짜와 시간을 가져오기 위해 사용합니다. SELECT SYSDATE FROM DUAL; 3. 함수의 결과를 검증하기 위해 사용합니다. SELECT UPPER('hello') FROM DUAL; dua..

select 명령에서 컬럼 별칭 사용하여 출력하기

컬럼을 출력할 때 컬럼의 원래 이름 대신 별명을 사용할 수 있다. 아래 코드와 그림을 보자. select profno "Prof 'NO'", name AS "Prof's NAME", pay Prof_Pay from professor; 위의 코드에서 설정한대로 컬럼의 이름 대신 별명이 출력됐다. 이 기능을 컬럼 별칭(Column Alias)이라고 부른다. 이 기능을 쓰는 방법은 두가지다. 1. 컬럼 이름 뒤에 공백을 주고 별명을 쓰기. profno "Prof 'NO'" 2. 컬럼 이름 뒤에 AS 라는 키워드를 사용한 후 별명을 쓰기. name AS "Prof's NAME" 기능상 차이는 없이 똑같이 출력되므로 편한 방법을 쓰면 된다. 또한 별명을 만들 때 대소문자를 구분하고 싶다면 반드시 큰따옴표( "" ..

select 명령의 표현식 사용법

표현식은 컬럼 이름 이외에 출력하기를 원하는 내용을 의미하며 select 구문 뒤에 작은따옴표( ' ' )로 묶어서 사용하면 된다 select dname , ', it''s deptno : ', deptno "DNAME AND DEPTNO" from dept; 위 코드는 [ , it''s deptno : ] 를 작은따옴표로 묶었다. 이 부분을 '표현식'이라고도 하고 '리터럴(literal) 상수(문자)' 라고 부르기도 하는데 보통 리터럴이라고 많이 부른다. 위의 코드에서는 it다음에 작은따옴표를 두개 썼는데 리터럴로 작은따옴표를 출력하기 위해서는 작은따옴표를 하나 더 붙여야한다. 위의 코드의 결과를 보자 컬럼의 내용을 보면 정상적으로 , it's deptno : 가 출력됐다. 컬럼 이름 부분의 따옴표 두..

오라클 SQL과 PL/SQL 1장 연습문제 풀이

연습문제 1 정답: select name || ' ''s ID : ' || id || ', ' || 'WEIGHT is ' || weight AS "ID AND WEIGHT" from student; 연습문제 2 정답: select ename || '(' || job || ')' || ', ' || ename || '''' || job || '''' AS "NAME AND JOB" from emp; 따옴표 출력할 때 '''' 으로 4번 연속 출력해야 함. https://gent.tistory.com/523 [Oracle] 문자열에 따옴표를 포함하는 2가지 방법 오라클에서 문자열 문자열을 나타낼 때 작은따옴표(홑 따옴표, 싱글 쿼터)를 사용하기 때문에 문자열 내부에 작은따옴표를 넣기 위해서는 추가적인 작업..

반응형