테이블에 데이터 추가하기

insert into 테이블명 values(값1,값2,...)

insert into 테이블명 (열1,열2,...) values(값1,값2,...)

널 허용이거나 default가 설정됐다면 NULL이나 DEFAULT로 값을 지정할 수 있다


데이터 삭제하기

delete from 테이블명 where 조건식


데이터 갱신하기

update 테이블명 set 열1=값1,열2=값2,... where 조건식

update sample41 set no = no+1 모든 행의 no에 1 더함

update sample41 set no = no+1, a = no; 

mysql(no에 1+되고 a=현재 no)과 oracle 결과(no에 1+되고 a= 직전no)가 다르다


물리삭제와 논리삭제

물리삭제 : delete를 이용해 실제 삭제

논리삭제 : 삭제 플래그를 수정해 검색되지 않도록 구현

'개발정보 > DB' 카테고리의 다른 글

SQL 첫걸음 6장 생성과 삭제  (0) 2019.01.28
SQL 첫걸음 5장 집계와 서브쿼리  (0) 2019.01.28
SQL 첫걸음 3장 정렬과 연산  (0) 2019.01.27
SQL 첫걸음 2장 데이터 검색  (0) 2019.01.27
SQL 첫걸음 1장 DB와 SQL  (0) 2019.01.27
블로그 이미지

dev김

안드로이드 개발자로 만 4년이 좀 안되게 근무했었고 그 이상의 공백을 가지고 있다. 다시 현업에 복귀하기 위한 노력의 흔적을 담으려고 한다.

,

select 열명 from 테이블명 where 조건식 order by 열명;

조건식에 해당하는 행들의 열을 열명으로 정렬한다

desc 내림차순(큰 값에서 내려간다) asc 오름차순(작은 값에서 올라간다) 기본asc


select 열명 from 테이블명 where 조건식 order by 열명1 [정렬], 열명2 [정렬] ...

select * from sample32 order by a,b; a 우선 정렬 그 뒤에 b 정렬

select * from sample32 order by a asc, b desc; 

널 값의 정렬순서는 DB마다 다르다 mysql에선 가장 작은값


limit mysql비표준sql

select 열명 from 테이블명 limit 행수 [offset 시작행] offset은 0부터 시작(page*size)

select * from sample33 order by no desc limit 3; 내림차순 후 상위 3건만

limit 사용불가 db에서

sql server : select top 3 * from sample33;

oracle : select * from sample33 where rownum <= 3;


산술연산

*/% 우선순위 1

+- 우선순위 2


select *,price * quantity as amount from sample34;

ascii 문자 이외에 지정시에 더블쿼트 "금액"


select *,price * quantity as amount from sample34 where price * quantity >=2000;


where->select 순서로 처리되어 select의 별명을 where에서 쓸수 없다

NULL값의 연산은 NULL이다


select *,price * quantity as amount from sample34 order by price * quantity desc;

select *,price * quantity as amount from sample34 order by amount desc;


10%3 MOD(10,3) MOD(나머지연산 mysql,oracle)

ROUND(amount) 소수점 이하 반올림 amount는 DECIMAL 타입

ROUND(amount,1) 소수점 둘째 자리 반올림 ROUND(amount,-2) 10단위를 반올림

TRUNCATE 버림 함수 SIN,COS,SQRT,LOG 등의 함수 존재


문자열 연산

'ABC' || '1234' -> 'ABC1234 oracle,db2,postgresql 

a+b sql server / CONCAT(quantity,unit) mysql

SUBSTRING('20140125001',1,4) -> '2014'

SUBSTRING('20140125001',5,2) -> '01'

TRIM('ABC     ') -> 'ABC' 앞 뒤 공백문자 제거

CHARACTER_LENGTH CHAR_LENGTH

OCTET_LENGTH는 문자를 바이트 단위로 계산 주의 필요(EUC-KR 한글2/UTF-8 한글3)


날짜연산

CURRENT_TIMESTAMP CURRENT_DATE INTERVAL

select current_timestamp;

oracle to_date('2014/01/25','YYYY/MM/DD') to_char


CASE gender

    WHEN 1 THEN 'male'

    WHEN 2 THEN 'female'

END


select a, case when a IS NULL then 0 else a end "a(null=0)" from sample37;

a가 널일 때 값을 0으로


널값 반환일 경우 COALESCE 사용

select a, COALESCE(a,0) from sample37;


검색 케이스

select a as "코드"

case 

    when a=1 then 'male'

    when a=2 then 'female'

    else 'unknown'

end as "gender" from sample37;


단순 케이스

select a as "코드"

case a

    when 1 then 'male'

    when 2 then 'female'

    else 'unknown'

end as "gender" from sample37;


else가 없으면 else null 이 되므로 지정하는게 좋다

널값체크는 검색케이스를 사용

'개발정보 > DB' 카테고리의 다른 글

SQL 첫걸음 6장 생성과 삭제  (0) 2019.01.28
SQL 첫걸음 5장 집계와 서브쿼리  (0) 2019.01.28
SQL 첫걸음 4장 추가,삭제,갱신  (0) 2019.01.27
SQL 첫걸음 2장 데이터 검색  (0) 2019.01.27
SQL 첫걸음 1장 DB와 SQL  (0) 2019.01.27
블로그 이미지

dev김

안드로이드 개발자로 만 4년이 좀 안되게 근무했었고 그 이상의 공백을 가지고 있다. 다시 현업에 복귀하기 위한 노력의 흔적을 담으려고 한다.

,

select * from 테이블명; 테이블의 모든 데이터 검색 (*:애스터리스크는 모든 열)

desc 테이블명 테이블의 열 정의 확인


자료형

INTEGER 수치형 (최대길이)

CHAR 고정 길이 문자열(최대길이) 길이가 최대길이보다 짧으면 공백문자로 채움

VARCHAR 가변 길이 문자열(최대길이)

DATE 날짜값 연월일

TIME 시간 시분초


select 열1,열2 from 테이블명 where 조건식 조건식을 만족하는 행에서 열1과 열2

select from where의 순서로 하지 않으면 에러 


문자열 리터럴은 싱글쿼트('')로 둘러싸 표기


비교연산자(연산자는 뛰어쓰면 안된다)

a = b 같다 / a <> b 다르다 / a > b a가 크다 / a >= b a가 크거나 같다 / 

a < b b가 크다 / a <= b b가 크거나 같다

NULL 은 IS NULL로 확인


select * from sample21 where birthday IS NULL; 

sample21테이블에서 birthday 열이 NULL인 행들의 모든 열


조건 조합

조건식1 AND 조건식2 둘 다 만족

select * from sample24 where a <> 0 and b <> 0

sample24테이블에서 a열과 b열이 0이 아닌 행들의 모든 열


조건식1 OR 조건식2 둘 중에 하나 만족

select * from sample24 where a <> 0 or b<>0;

sample24테이블에서 a열이 0이 아니거나 b열이 0이 아닌 행들의 모든 열


AND OR중 AND 우선순위가 높다 같이 사용한다면 괄호를 사용할 것

select * from sample24 where (a=1 or a=2) and (b=1 or b=2);


NOT 조건식 조건식의 부정을 만족

select * from sample24 where not(a<>0 or b<>0) 

a 열이 0이 아니거나 b열이 0이 아닌 행을 제외한 나머지 행들의 모든 열


열 LIKE '패턴' 매칭 부분검색 SQL% 전방일치 %SQL 후방일치 %SQL% 중간일치

select * from sample25 where text like '%SQL%' 

sample25테이블의 text열에 SQL이 포함된 행의 모든 열

%임의의 문자 / _임의의 문자 하나


%, _ 검색시에는 이스케이프 문자를 붙여 사용 '\%' '\_'

'개발정보 > DB' 카테고리의 다른 글

SQL 첫걸음 6장 생성과 삭제  (0) 2019.01.28
SQL 첫걸음 5장 집계와 서브쿼리  (0) 2019.01.28
SQL 첫걸음 4장 추가,삭제,갱신  (0) 2019.01.27
SQL 첫걸음 3장 정렬과 연산  (0) 2019.01.27
SQL 첫걸음 1장 DB와 SQL  (0) 2019.01.27
블로그 이미지

dev김

안드로이드 개발자로 만 4년이 좀 안되게 근무했었고 그 이상의 공백을 가지고 있다. 다시 현업에 복귀하기 위한 노력의 흔적을 담으려고 한다.

,