본문 바로가기
  • think normal
새로워지기/서른의 생활코딩

삼팔광땡 MYSQL 입문기 01 - DESC 명령, <> 연산자, LIMIT(rownum), OFFSET, CURRENT_TIMESTAMP, current_date

by 청춘만화 2019. 2. 9.

삼팔광땡~ MYSQL 입문기 


자, 이제 첫 걸음이다.  칼을 뽑았으니 이제 무를 뽑으러 가자!


0. 이런 실수? 할 수 있다.
 

비전공자 또는 낙엽줄로 개발 공부하면서 섭섭하게 느끼는 점이 하나 있다면 너무 당연?한 것은 알려주지 않는다는 것이다. 매번 포스팅을 작성하기 앞서 그런 내용들을 기억나는 데로 적어두려한다. 

1) sql 의 명령문 마지막엔   '  ;  '  를 꼭 기입한 후 엔터 키를 눌러야한다.


1. DESC 

앞서 말하자면 DESC는 SQL 명령이 아니다

 desc sample21; 


결과 화면에 표현되는 테이블에는 field, type, null, key, default,extra 여섯 칼럼으로 구성되어있다 

자세한  내용은 책을 참고하시면 될 것 같다 


2. <> 연산자 

일반적으로 특정 테이블의 모든 내용을 검색하는 경우 

= 검색(select ) 모든것() 시작되는곳은(from ) 테이블이름(sample21 

= 여기서 테이블 이름은 변경되는 정보이다.

 select * from sample21; 



no 열의 값이 2가 아닌 행만 추출 

 select * from sample21 where no <> 2; 




3. 정렬 후 리스트 출력 수 제한하기  

정렬 후 리스트 수를 제한하는 명령은 LIMIT, TOP, ROWNUM 등이 있지만 각 명령어는 모든 환경에서 적용되는 것은 아니다.

LIMIT는 MySQL에서 사용가능하고 TOP은 SQL Server에서 ROWNUM+WHERE은 oracle에서 사용할 수 있다.

1) 이번 블로그는 MySQL 환경에서 하고 있으니 LIMIT 를 실습해보겠습니다.

 select * from sample33 limit 3;  


α ) 참고로 LIMIT 하기 전에 sample33 테이블의 리스트는 몇 개였을까요? 

2번 예제를 참고해서 실행해보면 아래와 같습니다. 전체 7 줄이었군요~

2) 리스트 수를 제한하는 방법은 알겠다. 그런데 만약 리스트의 순서를 오름차순(1,2,3,4 또는 가,나,다..)이 아닌 내림차순(9,7,6 또는 하,타,파..) 으로 하려면? 어떻게해야하는지 실습해보자 .

 select * from sample33 order by no desc limit 3;  


3) 참고로 오라클에서는 rownum 명령과 >,<,=,<= 와 같은 연사자를 함께  사용합니다.

 select * from sample33 where rownum<= 3;  



4. LIMIT + OFFSET on MySQL

자, 바로 위에 있는 3-3) 리스트 정렬 순서를 조정하는 실습을 해보았는데요, 이번엔! 원하는 구간을 설정 해볼까요? 바로, offset 이라는 옵션을 통해 설정이 가능합니다. 참고(TMI 주의)로 '오프-셋'은 동일 오브젝트 안에서 오브젝트 처음부터 주어진 요소나 지점까지의 변위차를 나타내는 정수형이라는 뜻입니다. 


1) 앞서 실습했던   select * from sample33 limit 3   명령은 사실, 아래와 같은 명령어였답니다.

 select * from sample33 limit 3 offset 0;  


2) 자, 이제 아래와 같이 변형해서 실습해보면 offset  이라는 옵션은 (본인은 포함하지 않는, 또는 본인 '+1 ') 시작하는 위치라는 것을 알 수 있습니다. 

 select * from sample33 limit 3 offset 3;  




5. 
CURRENT_TIMESTAMP 시스템의 날짜 확인하기 

이번엔 리스트에서 벗어나 새로운? 실습을 해볼까요? ;> 날짜를 다루는 sql 쿼리를 실습해보아요.

1) 그럼 먼저 오늘 날짜 정보를 불러와 볼까요?

current_timestamp : 시스템(내 컴퓨터) 상의 오늘 날짜 

 select current_timestamp;  

α ) 참고로 current_timestamp 함수는 표준 SQL 함수입니다. 당일 날짜정보를 특정하기 때문에서 인지? (1)인수를 지정할 필요가 없고 (2)oracle과 같은 전통적인 데이터베이스와 달리 from 구를 생략할 수 있습니다. 


* current_date : 시스템(내 컴퓨터) 상의 오늘 날짜 

 select current_date; 

α ) 참고로 CURRENT_TIME   CURRENT_TIME()   CURTIME()의 별칭입니다. 또한 함수가 문자열이나 숫자로 사용되었는지 문맥에 따라서 'YYYY-MM-DD'이나 YYYYMMDD 형식으로 현재 날짜를 반환한다.

관련 결과 ->


α ) 참고로 date 대신 time을 넣으면 시간 정보를 알 수 있습니다. 결과는 생략합니다 ;>


2) 이제 날짜를 더해봅시다. 아래 결과를 보면 아시겠지만 이번엔 두가지 방식을 실행해보았습니다. 실습 결과 interval 이라는 옵션은 넣어도 되고 안 넣어도 같은 결과를 도출하네요. 

 select current_date + 1 day; 


검색해보니까, MySQL 날짜와 시간 함수에 대한 더욱 구체적인 예제와 정보는 나쥬니랩? 에서 확인해볼 수 있었습니다. 참고하실 분은 링크타고 고~ 고~ 해보셔도 좋을 것 같습니다. 그럼, 첫 실습은 여기서 끄읏~ ;D 



댓글