어제 협동조합에 대해 알려주는 줌 미팅을 들어서 다음날 업로드 하는 중
어제 무슨 일이 있었는지 기억이...
select구문을 마무리 하고 insert구문 시작했다! 이제 남은건 update랑 delete 남았네.
저번 시간에 선생님이 너무 빨리 수업해서 따라가기 힘들어서 나름 긴장해따...
이번 달 말에 시험을 치는데 달력 보시더니 "더 빨리 해야겠는데..."이러셔서 무서웠다.
떨면서 sql 수업 시작
문자열 결합
문자열 결합은 sql server랑 오라클과 mysql이 서로 다르다.
+ | SQL server |
|| | Oracle, DB2 |
concat | My SQL |
+(더하기) 로는 문자열을 결할 할 수 없다.
MySQL에서 문자열 결합으로 concat을 쓴다.
substring 함수
substring('str', 시작 위치, 문자 갯수)
시작 위치에서 지정한 문자 갯수을 반환한다.
*시작 위치에 음수로 지정하면 끝자리에서 시작된다.
날짜 연산
current_timestamp 는 시간 출력
current_date 는 년 · 월 · 일 출력
current_date 에 1을 빼면 오늘 날자에서 하루가 빠진다.
current_timestamp는 now()와 똑같이 나온다. 그럼 짧은거 써야지
datediff() 날짜 사이에 차이가 얼마인지 알 수 있다.
case when 조건식 then 식1 else 식2 end
조건식을 만족하면(참이면) then 식을 반환한다.
자바에서 쓰는 if else와 같은 의미다.
~ then 식1 다음에 또 when 조건식 thent 식이 더 올 수 있다. 이럴 때는 when 조건식을 차례로 처리하다가 조건을 만족하는 when 조건식에 있는 then 식의 처리 결과를 반환한다.
else는 생략할 수 있는데 그럼 else null이 된다.
* sql : java, case : if , when : if else, else : else
*case문은 where구문, order by구문에도 쓸 수 있다.
null값 연산 결과는 null이 나오기 때문에 원하는 결과값을 얻을 수 없다.
이 때 조건문으로 null값을 0으로 변환할 수 있다. 그러니까 생략하지 말라는 거잖아
그런데 null값을 변환하는 더 간단한 방법이 두 가지 있다.
select ifnull(열, 0) from 테이블 이름;
select coalesce(열, 0) from 테이블 이름;
null이면 0을 출력하고 아니면 원래 값을 그대로 출력한다.
*coalesce함수는 표준 sql이다.
case문은 단순 case문과 검색 case문으로나눌 수 있다.
단순 case문에는 조건문에 들어갈 열을 when구문 앞에 한번에 써주고 단순 비교값만 넣으면 된다.
검색 case문은 기본 case문의 형식으로 when 구문에 조건문을 넣으면 된다.
단순 case문은 비교연산자(=)로 조건식을 처리하는데 그렇기 때문에 null값을 처리할 수 없다.
그래서 null값이 조건을 만족한다 해도 결과값이 나오지 않고 eles의 결과값이 나온다.
null값을 처리하려면 검색 case를 써야 한다.
ex) ~when a is null then '데이터 없음' ~
insert
insert into 테이블이름 (열, 열, 열 · · · ) values (값, 값, 값 · · ·)
기본형 데이터를 추가할 수 있다.
만약 전체 열에 각각 값을 준다거나 열의 자료형을 모두 안다면 열이 담긴 괄호는 생략하고 values의 값을 열에 맞게 써주면 된다.
위 코드가 생략하지 않은 코드이고 아래가 생략한 코드다.
desc로 자료형과 열에 대해 파악했기 때문에 생략할 수 있다.
자료형에 맞지 않게 value값을 넣으면 당연히 오류가 난다.
not null 제약
no열에는 null값이 들어갈 수 없는데 insert into로 a열과 b열에만 데이터를 추가해서 오류가 났다.
defalut
명시적으로 지정하지 않으면 null값이 들어간다.
defalut를 0으로 지정해 두면 값이 없을 때 defalut값이 0으로 들어간다.
Oracle에서는 from을 생략할 수 없다.
'학원 수업' 카테고리의 다른 글
13일차 - java '메서드' (0) | 2021.10.15 |
---|---|
12일차 - java 'break;' (0) | 2021.10.14 |
11일차 - html 'select', 'input' (0) | 2021.10.13 |
10일차 - java ' 제어문 for(반복문)' (0) | 2021.10.12 |
9일차 - JAVA '제어문 if(조건문)' (0) | 2021.10.11 |