IT수업/데이터베이스

it 수업 6주차 (11) SQL문 2 (ORDER BY, DISTINCT, 복사)

워제하 2024. 1. 30. 13:01

 

※ 조회

● Select Order By

 

order by는 값을 정렬시키는 명령문이다. 기본은 오름차순이다,

asc : 오름차순

desc : 내림차순

 

 

select * from usertbl order by mDate asc; 는 mDate를 기준으로 오름차순이다.

 

select * from usertbl order by mDate desc; 은 mDate를 기준으로 내림차순하는 것이다.

 

order by하면 같은 값에 한해 내림차순이되는데 뒤에 ', name'이 붙으면 같은 값을 오름차순으로 변경해준다.

 

 

 

distinct : 단일 열 값을 기준으로 중복값 없애기(단, 같은 열에 같은 값이 들어있어도 다른 열에 다른 값이 들어있으면 안 사라짐)

 

select distinct addr, name from usertbl; 하면 이런 표가 나온다. 'distinct addr'을 쓰더라도 name에 다른 값들이 들어가 있으므로 중복 addr들이 없어지지 않는 것이다.

 

그래서 select distinct addr from usertbl; 이렇게 단일 값으로만 중복값을 없앨 수 있다.

 

 

 

limit : 제한해서 조회하기

 

기본 select * from usertbl하면 이런 표들이 나온다.

 

여기서 limit 3을 쓰면 위에서 3번째 행까지 조회할 수 있다.

select * from usertbl limit 3;

 

select * from usertbl limit 2,3; 는 2번째 행부터 3개의 행을 조회할 수 있다.

 

 

 

※ 복사

 

 

● 구조와 값 복사(단. 개인키와 외래키는 복사되지 않음)

새로운 테이블을 만들어주는 명령어 안에 괄호를 사용해 복사 할 테이블을 넣어준다.

create table 테이블명 ( select  복사할 열  from 복사 할 테이블명);

 

desc 테이블명 으로 구조를 조회해보면 관계형에 대한 속성값들은 들어가지 않는다.(ex 기본키, 외래키)

 

create table tbl_buy_copy2(select userid, prodname, amount from buytbl);
select * from tbl_buy_copy2; 

 

 

 

● 구조만 복사 (값, 외래키는 복사 x / 기본키와 index는 복사 o)

 

like 뒤에 복사할 테이블을 적으면 된다.

 

create table tbl_buy_copy3 like buytbl;

 

- 구조만 복사

 

- desc해서 구조 확인

 

- 인덱스 확인

 

- foreign key는 없는 걸 볼 수 있다.

 

 

 

● 복사된 구조물에 값 삽입 (데이터만 복사)

 

위에 만든 테이블에 값을 삽입해볼 것이다.

insert into tbl_buy_copy3 select * from buytbl where amount >= 3; amount 값이 3이상인 값들만 삽입

 

 

 

※ 연습 문제

 

 

1. select * from buytbl order by userid asc;

 

2. select * from buytbl order by price desc;

 

3. select * from buytbl order by amount asc, prodname desc;

 

4. select distinct prodname from buytbl order by prodname asc;

 

5. select distinct userid from buytbl;

 

6. select * from buytbl where amount >= 3 order by prodname desc;

 

7. create table cusertbl (select * from usertbl where addr in('서울', '경기'));
    select * from cusertbl;