목록SQL(ORACLE) (18)
studyplan
order_detail 은 주문 내역이 들어있는 테이블이다 메뉴가 하나라도 들어가야 하기때문에 주문 번호 하나당 여러가지 메뉴 ,가격, 할인율이 다같이 들어간다 근데 내가 구하고싶은건 한 주문에 할인율 을 구하고싶어서 저렇게 했더니 할인율이 메뉴당 하나씩 붙어있기 때문에 할인율 1개만 구히고싶으면 중복을 제거해줘야 한다 ! 이럴때 쓰는것이 distinct ! 이렇게 하면 중복 제거가 된다
currval , nextval 0 1 currval , nextval 1 2 nextval 을 호출하면 currval 의 번호가 1 이 오른다 ! sequence 를 호출하는 순간 currval , nextval 이 호출이 되고 tbl_board.nextval 을 치는순간 currval 1이되고 , nextval 는 2 가된다 // 미리 대기하는것!
이 테스트를 돌리고있었는데 값이 들어가기 전 ! 이런 오류가 떴다 . .... 한번에 성공하는 법이 없네 ;; sql 문제이다 일단 데이터베이스 컬림은 이렇게 생겼고 sql 은 이렇게 짯다 .. 깜빡 할게 따로있지 .. 여러개 컬럼중에 .. 이렇게 2개만 넣어줄 경우 .. 무조건 2개를 어떤 칼럼에 들어간다고 명시 해줘야 된다 아니다 .. 이렇게 명시해줘야 된다 .. 삽입 후 잘 들어와있는걸 볼수 있다
1. admin 계정에 들어간다 2. admin 계정에서 create user 아이디 ,IDENTIFIED BY 비밀번호 // 생성하는 문구 GRANT DBA ,CONNECT, RESOURCE TO 아이디 ; // 권한주기 ! 초록색 + 버튼을 누르고 들어가면 검은 색 칸을 채우고 테스트를 눌러서 상태가 성공이 나오면 저장을 하면된다 그러면 이렇게 추가된것을 볼수있다
TEMP1 에 갯수를 추가해봤다 그리고 CASE WHEN THEN 을 쓰려고 한다 그룹은 BNO로 묶었다 SELECT BNO ,SUM(CASE WHEN BNO LIKE '1' THEN 7 ELSE 0 END) "BNO가 1일때" ,SUM(CASE WHEN BNO LIKE '2' THEN 7 ELSE 0 END) "BNO가 2일때" ,SUM(CASE WHEN BNO LIKE '3' THEN 7 ELSE 0 END) "BNO가 3일때" ,SUM(CASE WHEN BNO LIKE '4' THEN 7 ELSE 0 END) "BNO가 4일때" ,SUM(CASE WHEN BNO LIKE 'NULL' THEN 7 ELSE 0 END) "BNO가 NULL일때" ,COUNT(*) "BNO COUNT" from temp1..
내가 만든 예시 템플릿 여러가지를 담아보았다 BNO를 그룹으로 묶을것이다 SELECT BNO -- 번호별 ,COUNT(BNO) ,SUM(BNO) ,AVG(BNO) ,MAX(BNO) ,MIN(BNO) from temp1 GROUP BY BNO ; 참고로 여기 나오는 함수는 NULL 값을 빼고 계산한다 HAVING 이건 그룹으로 묶은 애들에게 적용하는 제한같은거다 그래서 BNO 값이 1보다 큰 애들만 추출하게 작성 해보았다 SELECT BNO ,COUNT(BNO) ,SUM(BNO) ,AVG(BNO) ,MAX(BNO) ,MIN(BNO) from temp1 GROUP BY BNO HAVING BNO >1 ; 위에 2줄이 사라진걸 볼수있다
내가 임의로 만든 함수이다 NVL1 사용하기위해 이렇게 검색해봤을때 SELECT BNO, TITLE , NVL(BNO,'0') AS SS from temp1 ; NVL2 사용하기위해 이렇게 검색해봤을때 SELECT BNO , TITLE , NVL2(BNO, 'IS NOT NULL', 'NULL') AS SHOWNULL from temp1 ; 이로써 알수있는것 -- # 널 관련 함수 -- NVL(expr1, expr2) -- expr1: Null을 가질 수 있는 값이나 표현식 -- expr2: expr1이 Null일 경우 대체할 값 -- NVL2(expr1, expr2, expr3) -- expr1의 값이 Null이 아니면 expr2를 반환, Null이면 expr3를 반환
SELECT SYSDATE, TO_CHAR(SYSDATE, 'MM - DD') AS "월 - 일", TO_CHAR(SYSDATE, 'YYYY/MM/DD') AS "연/월/일", TO_CHAR(SYSDATE, 'YYYY"년" MM"월" DD"일"') AS "날짜 - 한글포함",-- TO_CHAR를 쓸때 한글을 쓰고싶으면 한글에 "" 쌍따옴표를 붙여야 한다 TO_CHAR(SYSDATE + (1/24) * 6, 'YY/MM/DD HH24:MI:SS') AS "날짜와 시간", TO_CHAR(SYSDATE + (1/24) * 6, 'YY/MM/DD AM HH12:MI:SS') AS "날짜와 시간2" ,TO_CHAR(SYSDATE - (1/24) * 6, 'YY/MM/DD AM HH12:MI:SS') AS "날짜와..