ex10.SQL

바보·2023년 5월 23일

JSP

목록 보기
16/18

Select 복습

select * from person;
select name, birth from person;
select birth, name from person;

select * from person where name = '김진호';
select * from person where height >= 170 and birth < '00/01/01';

slelect * from person where name is null;

Like

문자열을 비교시 포함하는 부분을 찾는다
검색 : 모르는 것을, 생각나는 부분을 찾을 때 쓰는 방법임

1) 정확하게 일치하는 사람일 때
select * from person where name = '진';


2) 진으로 끝나는 from 테이블의 내용 찾기
select * from person where name like '%진';

3) 진으로 시작하는 from 테이블의 내용 찾기
select * from person where name like '진%';

4) 문자열의 어느 곳이든 '진' 글자가 들어간 곳을 찾기
select *from person where name like '%진%'; 

정렬

데이터를 순서있게 정리하는 방법
(데이터의 가독성을 확보하기 위해서 씀)

  • asc : 오름차순, 기본값
  • desc : 내림차순

※ 정렬알고리즘을 이용하여 처리하는 방법은
처음 배우면 어려웠지만...
SQL에서는 자동으로 처리해주기 때문에 속성/옵션만 알고있으면 된다

select * from person order by name;

오름 차순은 이름들 기준으로 ㄱ 부터 나온다
select * from person order by name asc;

내림 차순은 반대로 나온다
select * from person order by name desc;

+ 숫자/키순으로 정렬할 수 있다

select * from person order by height;
select * from person order by height desc; // 키 큰 순서

select * from person order by birth;
select * from person order by birth desc; // 나이 적은 순서

조건과 정렬을 같이 사용

1. 조건부 먼저 작성한다

select * from person where birth >= '00/01/01'
// 아직 정렬이 안되어 있음



2. 정렬을 시킨다

select * from person where birth >= '00/01/01' order buy heright desc;



3. 같이 작성하면 너무 길다
그래서 줄을 나눠서 작성을 해준다

select * from perosn
	where birth >= '00/01/01'
    order by birth;

세미콜론은 세미콜론 전 까지 읽어내기 때문에
order by birth; 만 실행해도 상관없고

select부터 드래그해서
전체를 선택한 후 실행해도 상관없다.

Insert

: 행 추가


  • 구문 1
    : insert into 테이블명 values(값1, 값2 ...);
    값을 넣는 순서는 꼭 지켜줘야한다
    자료의 타입과 형태를 고정시켜뒀기 때문에.

내가 작성한 테이블은 name, height, birth 순서이다

insert into person values('신수정', 172.3, '99/05/05');


commit;
rollback;

위의 person의 values는 등록되지 않았다

테이블의 행이 변하는 단위를
tranjection이라고 하고

이 트렌젝션(= tranjection)을
실제 DB에 반영하는 것을 commit이라고 한다

그리고 tranjection을
이전 commit까지 되돌리는 것을 rollback이라고 한다



  • 구문 2
    : insert into person(열1, 열2 ...) values(값1, 값2 ...);
insert into person(name) values('장동민');
insert into
	person(birth, height)
    values('04/11/08', 192.3);



※ 구문 1은 한번에 다 넣는거고
구문 2는 부분적으로 넣는 것


  • Quiz) 직접 데이터를 3개정도 더 추가해보기
insert into person values('최수종', 175.5, '77/01/02');

insert into
	person(name, birth)
    values('정해인', '91/06/07');
    
insert into
	person(birth, name)
    values('81/05/08', '강호동');
    
select * from person;
으로 확인

delete

: 행 삭제

  • 구문 : delete from 테이블명 where 조건식

※ 조건을 생략하면 모든 행이 제거 되므로 주의!

delete from person;

delete from person where name = '홍길동';
범위로 제거시,
먼저 select로 확인하는 습관을 가지자

select * from person where height >= 170;
delete from person where height >= 170;

rollback;
//delete 한 것을 되살리려고
//나온거라 봐도 무방하다함 ㄷㄷ

select * from person;

update

: 행 갱신

조건에 일치하는 행을 찾아서,
지정한 열의 데이터를 변경

  • 구문 : update 테이블명 set 열1=값1,열2=값2...where 조건식
update person
	set name='홍진호', birth='22/02/22'
    where name='홍길동';
// name이 홍길동인 것을 찾아서 홍진호로 바꿔라

select * from person;
// 업데이트도 트렌젝션이 적용됨
연습)
1. 박수진의 데이터를 찾아서 키와 생년월일을 변경
2. 이름이 null인 데이터를 찾아서 제거

1)update person
	set height = 157.9, birth = '89/09/05'
    where name = '박수진';
    
    
select * from person where name is null;
select * from person where height is null;
2)delete from person where name is null;

null=(equals)가 안되고
is null / is not null 이렇게 사용해야하므로
또, 다른 문장들도 이렇게 쓸 수 있음

문제 - table작성

1. 도서 정보를 저장할 Book 테이블을 생성한다
- 열 정보 : 제목(vc2>, 저자(vc2), 출판사(vc2), 출판일(date), 가격(price)

2.도서 테이블에 책을 추가 5개 정도

3. 2번에서 잘 못 작성된 데이터가 있다면 삭제 및 갱신


※ 테아블 잘 못 생성시 테이블 삭제 명령어
drop table book;

1)

2)

select * from book;

insert into book values('각각의 계절', '권여선', '문학동네', '23/05/07', 15000);
insert into book values('아버지의 해방일지', '정지아', '창비', '22/09/02', 15000);
insert into book values('눈부신 안부', '백수린', '문학동네', '23/05/24', 16000);
insert into book values('이끼숲', '천선란', '자이언트북스', '23/05/04', 15800);
insert into book values('없음의 대명사', '오은', '문학과지성사', '23/05/05', 12000);

commit;

3)

delete from book where publish_date < '23/01/01';

update book 
    set price = 14000
    where title = '눈부신 안부';


  • 후기

책정보를 알지..?!

profile
바보는 타이핑으로 공부하자

0개의 댓글