MySQL 06. MySQL - Table (조회3 정렬 order by)

|

생활코딩 - MySQL

정렬 (order by)

  • 지정된 칼럼을 기준으로 행을 정렬

문법

  • DESC (descending order) : 내림차순
  • ASC (ascending order) : 오름차순
SELECT * FROM 테이블명 ORDER BY 정렬의 기준으로 사용할 열 [DESC | ASC]

예제

대상 테이블

DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
  `id` tinyint(4) NOT NULL,
  `name` char(4) NOT NULL,
  `sex` enum('남자','여자') NOT NULL,
  `address` varchar(50) NOT NULL,
  `distance` INT NOT NULL,
  `birthday` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `student` VALUES (2, '박재숙', '남자', '서울',  10, '1985-10-26 00:00:00');
INSERT INTO `student` VALUES (1, '이숙경', '여자', '청주', 200, '1982-11-16 00:00:00');
INSERT INTO `student` VALUES (3, '백태호', '남자', '경주', 350, '1989-2-10 00:00:00');
INSERT INTO `student` VALUES (4, '김경훈', '남자', '제천', 190, '1979-11-4 00:00:00');
INSERT INTO `student` VALUES (8, '김정인', '남자', '대전', 200, '1990-10-1 00:00:00');
INSERT INTO `student` VALUES (6, '김경진', '여자', '제주', 400, '1985-1-1 00:00:00');
INSERT INTO `student` VALUES (7, '박경호', '남자', '영동', 310, '1981-2-3 00:00:00');

정렬 order by 예시

# distance 내림차순으로 테이블 정렬
select * from student order by distance desc;

# distance 내림차순, address 오름차순으로 테이블 정렬
select * from student order by distance desc, address asc;

MySQL 06. MySQL - Table (조회2 그룹핑 group by)

|

생활코딩 - MySQL

그룹핑 (group by)

  • 특정 칼럼을 기준으로 데이터를 그룹핑한다.
  • 그룹이라고 하는 것은 여러개의 데이터가 어떻게 구성되어 있는지 원자화 시키는 것이다.
  • 각각의 그룹핑된 컬럼을 기준으로 특정한 다른 컬럼의 합계, 평균 등의 작업도 가능하다.

문법

SELECT * FROM 테이블명 GROUP BY 그룹핑 할 기준 칼럼명

예제

대상 테이블

DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
  `id` tinyint(4) NOT NULL,
  `name` char(4) NOT NULL,
  `sex` enum('남자','여자') NOT NULL,
  `address` varchar(50) NOT NULL,
  `distance` INT NOT NULL,
  `birthday` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


INSERT INTO `student` VALUES (2, '박재숙', '남자', '서울',  10, '1985-10-26 00:00:00');
INSERT INTO `student` VALUES (1, '이숙경', '여자', '청주', 200, '1982-11-16 00:00:00');
INSERT INTO `student` VALUES (3, '백태호', '남자', '경주', 350, '1989-2-10 00:00:00');
INSERT INTO `student` VALUES (4, '김경훈', '남자', '제천', 190, '1979-11-4 00:00:00');
INSERT INTO `student` VALUES (8, '김정인', '남자', '대전', 200, '1990-10-1 00:00:00');
INSERT INTO `student` VALUES (6, '김경진', '여자', '제주', 400, '1985-1-1 00:00:00');
INSERT INTO `student` VALUES (7, '박경호', '남자', '영동', 310, '1981-2-3 00:00:00');

그룹핑 group by 예시

select sex from student group by sex;
# 결과값
+--------+
| sex    |
+--------+
| 남자    |
| 여자    |
+--------+

select sex,sum(distance), avg(distance) from student group by sex;
# 결과값
+--------+---------------+---------------+
| sex    | sum(distance) | avg(distance) |
+--------+---------------+---------------+
| 남자    |          1060 |      212.0000 |
| 여자    |           600 |      300.0000 |
+--------+---------------+---------------+

Django 기본 06 - shell, Jupyter Notebook, ipython

|

AskDjango 수업을 듣고 중요한 내용을 정리하였습니다.

Django Shell

  • 장고 프로젝트 설정이 로딩된 파이썬 쉘
  • 일반 파이썬 쉘을 통해서는 장고 프로젝트 환경에 접근 불가
  • 프로젝트 내의 각종 모듈 패키지를 활용하기 위해서는 장고 shell를 통해서 접근해야한다.
  • 장고 쉘 실행방법
    $ python3 manage.py shell
    

Jupyter Notebook

  • django-extensions 설치
    $ pip install django-extensions
    
  • settings.py 내 INSTALLED_APPS에 django_extensions 추가 (장고 익스텐션은 장고 app 구조로 되어있어서 현재 프로젝트 내에서 해당 앱을 활성화시켜야 한다)
    INSTALLED_APPS = [
    'django_extensions',
    ]
    
  • ipython, jupyter notebook 설치
    $ pip3 install "ipython[notebook]"
    

shell_plus

$ python3 manage.py shell_plus
  • 익스텐션 앱을 설치하면 shell_plus 사용가능, 필요한 모델을 자동 import 해줘서 편리함
views
shell_plus 실행시 필요한 모델은 자동 import한다.

jupyter notebook

$ python manage.py shell_plus --notebook
  • jupyter notebook을 통해서 djnago shell을 사용하면 좀더 친숙한 UI로 볼 수 있고, 이미지 결과를 확인 할 수 있다. 입력 이력을 로그로 남길 수 있다.
  • 초반에는 jupyter notebook 을 사용하는 것을 추천한다.
views

170320_TIL

|

오늘 한 일

  • 그림으로 배우는 HTTP & Network Basic 에서 HTTP, HTTPS 부분을 읽었다. 보안을 위해서 HTTP와 TCP 사이에 SSL를 적용한 HTTPS를 사용해야한다는 내용이었었다. 개발을 하려면 보안쪽 공부도 필요하겠다는 생각이 들었다.

  • 생활코딩 MySQL 수업을 들었다. 테이블 데이터 추가, 수정, 삭제에 대해서 배웠다. 특히 조회에 관련한 기능이 많은데 잘 배워서 활용해야겠다.

  • AskDjango 강의에서 model, model fields, migration에 대해서 배웠다. 그동안 궁금했던 필드옵션을 활용한 모델 커스터마이징에 대해서 조금은 알 수 있었다. 그리고 migration이 왜 필요한지, migrate 수행 전에 주의해야 하는 점은 무엇인지에 대해서 배웠다. 강의에서 들은 것 처럼 migrate 전에는 migration 폴더 내의 파일 내용을 확인하는 습관을 들여야겠다. DB를 다룰 때는 항상 조심하자!

  • Swift3 & iOS10 수업을 통해서 첫번째 어플리케이션을 만들어보았다. UIkit을 사용해서 화면의 구성요소와 이벤트, 변수를 드래그엔드롭으로 연결하는 부분은 Javascript, DOM과 비슷하다는 인상을 받았다. Interface Builder, Connections Inspector 등 아직 xcode 툴 자체도 익숙하지 않지만 앞으로 예제 앱을 계속 만들면서 더 재미를 느낄 수 있었으면 좋겠다.

내일 할 일

MySQL 06. MySQL - Table (조회1 select, limit, where)

|

생활코딩 - MySQL

mysql monitor

  • CLI 환경인 mysql monitor에서 테이블 데이터를 조회 하는 방법을 살펴본다.
  • GUI 환경인 phpMyAdmin에서 쉽게 동일한 작업이 가능하다.

조회

  • 테이블에서 데이터를 조회
# 문법
# 중복 사용시 순서가 중요하다.
SELECT 칼럼명1, 칼럼명2
      [FROM 테이블명 ] # 생략가능
      [GROUP BY 칼럼명] # 생략가능
      [ORDER BY 칼럼명 [ASC | DESC]] # 생략가능
      [LIMIT offset, 조회 할 행의 수] # 생략가능
# 예시
SELECT * FROM student;
SELECT name, birthday FROM student;
SELECT * FROM student WHERE id=3;
SELECT * FROM student WHERE sex='남자' AND address='서울';
SELECT * FROM student WHERE sex='여자' OR address='서울';
SELECT * FROM student LIMIT 1; # 1개만
SELECT * FROM student LIMIT 1,1; # index 1번부터 1개만
SELECT * FROM student WHERE sex='남자' LIMIT 2; # 남자 중에 2개만