12장. SELECT 명령문: ORDER BY절 단일 열 정렬 순서번호로 정렬 오름차순과 내림차순 정렬 하나 이상의 행 정렬

Slides:



Advertisements
Similar presentations
전라남도보건환경연구원 폐기물분석과 하 훈, 강 광 성 전남지역 골프장의 친환경적 생태조사.
Advertisements

Prosumer Marketing Related to WEB 2.0 Prosumer Kim DuK SU Jung Gil Su Seo Jun Ho Lee Min JU No su yung.
처음에 우리는….
강사: 이종인 다우 교육원 전임강사 / 온디멘드 수석 컨설턴트 / FMG 수석 컨설턴트
Sound on 경호의 선물.
SQL 언어 SQL.
안녕하십니까! 아파하는 이웃을 위한 치료제, 약 사 팀의 발표를 시작하겠습니다..
고전에서 미래를 읽다(5) 영양괘각(羚羊掛角) 영양이 훌쩍 뛰어 나뭇가지에 뿔을 걸다
19.(코드+년도+월)별,(코드)별,전체총액을 한번에
SQL 0613.
12 프로젝트 실습.
제로보드 소개 제로보드 설치하기 제로보드 관리하기
실전 데이터모델링 & 데이터베이스 설계와 구축
질의어와 SQL 기본 SQL 고급 SQL 데이타의 수정 데이타 정의 언어 내장 SQL
관계 대수와 SQL.
성경퀴즈 대회 출애굽기.
Database & Internet Computing Laboratory 한 양 대 학 교
SELECT 문 사원 테이블의 모든 정보를 출력하는 예제 1. 비교 연산자 SELECT 문의 형태
4장. 관계 대수와 SQL SQL 관계 데이터 모델에서 지원되는 두 가지 정형적인 언어
SQL-99: 스키마 정의, 기본제약조건, 질의어 충북대학교 구조시스템공학과 시스템공학연구실
제 09 장 데이터베이스와 MySQL 학기 인터넷비즈니스과 강 환수 교수.
7장 조인.
다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL
3장. MySQL 5.x 설치와 정보 MySQL의 특징 MySQL 설치 MySQL의 데이터베이스 관리 툴
SQL 개요 SQL 개요 - SQL은 현재 DBMS 시장에서 관계 DBMS가 압도적인 우위를 차지하는 데 중요한 요인의 하나
10장. 데이터베이스 보안과 권한 관리 데이터베이스 보안과 권한 관리
MySQL performance Xhark 김재홍.
18장. 뷰(View) 뷰의 생성 뷰의 열 이름 뷰의 변경 : WITH CHECK OPTION 뷰 테이블의 정보와 네비게이터
11장. 데이터베이스 서버 구축과 운영.
요약 정보 만들기.
14장 뷰.
9. 데이터베이스 9.5 SQL을 사용하는 프로그램 9.6 데이터폼 작성기를 사용하는 프로그램
4.2 SQL 개요 SQL 개요 SQL은 IBM 연구소에서 1974년에 System R이라는 관계 DBMS 시제품을 연구할 때 관계 대수와 관계 해석을 기반으로, 집단 함수, 그룹화, 갱신 연산 등을 추가하여 개발된 언어 1986년에 ANSI(미국 표준 기구)에서 SQL.
단일 테이블 조회를 위한 SELECT 문을 이해한다. 열 제약조건과 행 제약조건을 이해한다. 결과 집합 변경 방법을 이해한다.
14 뷰(View) 뷰의 개념 뷰 관리.
뷰와 저장 프로시저 뷰의 개념을 이해한다. 뷰의 정의와 관리 방법을 이해한다. 뷰를 사용함으로써 생기는 장점을 알아본다.
16장. 테이블의 변경 새로운 행 삽입 테이블에서 테이블로 행을 복사 행 값의 변경 테이블에서 행 삭제
19장. 트랜잭션과 락(LOCK) 트랜잭션이란? MySQL의 트랜잭션 락(LOCK) 쉽게 배우는 MySQL 5.x
21장. 데이터베이스 설계지침 테이블과 열에 대한 지침 중복 데이터의 포함 열에 대한 자료형의 선택
DP-ORA 쿼리 최적화 가이드 쿼리 최적화 방법 2014년 7월.
SQL.
2장. 학사관리 예제 DATABASE 학사 데이터베이스의 해설 테이블의 내용 무결성 규칙 쉽게 배우는 MySQL 5.x
4장. 데이터베이스와 테이블 MySQL 데이터베이스 테이블의 생성 테이블 데이터 처리(삽입, 변경, 삭제) 작업
다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL
다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL
고급 T-SQL.
목 차 들어가기 ………… 2 작동원리 ………… 4 구문설명 ………… 6 FUNCTIONS …………11 예제 ………… 2
CHAPTER 06. 데이터베이스 자료의 조직적 집합체_데이터베이스 시스템의 이해
에이핑크의 사진, 데뷔일, 데뷔곡, 멤버를 알아봅시다.
정보처리기사 8조 신원철 양진원 유민호 이기목 김다연 윤현경 임수빈 조현진.
1장. SELECT 문장을 이용하여 원하는 데이터 가져오기
JSP 게시판 구현.
JIUMZEON 4 THE FORTH EXHIBITION JIUM FRI THU
Database 중고차 매매 DB 비즈니스IT 윤동섭.
9장. SELECT명령문 : WHERE 절 개요, 2. 관계연산자를 사용하는 조건
11장. GROUP BY와 HAVING 열의 그룹화 2개 이상의 열에 대한 그룹화
10장. SELECT명령문 : 통계함수 모든 열 선택(*) 2. SELECT 절의 수식
14장. 부속 질의어 부속 질의어 규칙 열의 범위 상호 관련부속 질의어 복합키의 사용 쉽게 배우는 MySQL 5.x
컬럼 대칭키 암호화 작업(SQL 2008) ① 마스터 키 생성 ② 인증서 생성 초기 한번만 실행 ③ 대칭키 생성
06. SQL 명지대학교 ICT 융합대학 김정호.
과제 #5 MySQL 연동 php문서에서 SQL문의 삽입, 삭제, 수정, 검색을 수행한다. 주어진 form을 최대한 활용한다.
20장. SQL명령문의 최적화 1. OR연산자의 사용을 피하라. 2. 불필요한 UNION연산자의 사용을 피하라.
How I Approach Tuning a SQL Statement
테이블 관리 테이블 생성,수정,삭제 데이터 입력 수정, 삭제 2010학년도 2학기.
1장. 서 론 데이터베이스의 개요 모델의 종류 관계형 모델과 객체 지향형 데이터베이스 SQL이란 무엇인가?
2009년 면정보고 초동면.
Data Base Mysql.
8장. SELECT명령문 : FROM 절 FROM 절에서 테이블 명세 열 명세 다중 테이블 명세 가명 FROM절의 다양한 예제
The Lord wat-ches o - ver you
GB ridge 웹 모바일및 빅데이터 응용과정 3주차: 데이터베이스 프로그래밍 [경기도형 대학생 취업브리지 사업]
Presentation transcript:

12장. SELECT 명령문: ORDER BY절 단일 열 정렬 순서번호로 정렬 오름차순과 내림차순 정렬 하나 이상의 행 정렬 수식과 함수의 정렬 NULL 값의 정렬 2019-02-28 쉽게 배우는 MySQL 5.x

12.1 단일 열 정렬 -SELECT 명령문이 ORDER BY 절을 사용하지 않는다면 순서는 예측할 수 없다. [예제12-1] 등록한 학생에 대하여 학번과 등록일자를 출력하라. 이때 정렬순서는 학번으로 한다. mysql> select stu_no, fee_year, fee_term, fee_date     -> from fee     -> where year(fee_date) = 2006     -> order by stu_no; +----------+----------+----------+------------+ | stu_no   | fee_year | fee_term | fee_date   | | 20001015 | 2006     |        1 | 2006-02-14 | | 20001015 | 2006     |        2 | 2006-08-18 | | 20061011 | 2006     |        1 | 2006-02-18 | | 20061011 | 2006     |        2 | 2006-08-20 | 4 rows in set (0.05 sec) “ORDER BY STU_NO” 명령문은 STU_NO 다음에 정렬시키는 순서를 생략 기본 값으로 SQL은 오름차순(Ascending)으로 정렬 2019-02-28 쉽게 배우는 MySQL 5.x

12.2 순서번호로 정렬 ORDER BY 절에서 순서 번호로 열 명세를 대치할 수 있다. 12.2 순서번호로 정렬 ORDER BY 절에서 순서 번호로 열 명세를 대치할 수 있다. [예제12-1]을 순서번호를 사용하면 명령문은 다음과 같다. mysql> select stu_no, fee_year, fee_term, fee_date      -> from fee      -> where year(fee_date) = 2006      -> order by 1; +----------+----------+----------+------------+ | stu_no   | fee_year | fee_term | fee_date   | | 20001015 | 2006     |        1 | 2006-02-14 | | 20001015 | 2006     |        2 | 2006-08-18 | | 20061011 | 2006     |        1 | 2006-02-18 | | 20061011 | 2006     |        2 | 2006-08-20 | 4 rows in set (0.05 sec) 순서 번호는 SELECT 절에 있는 열 명세의 위치에 따른 순서로서, 이는 수식이 함수, 리터럴, 수치 수식으로 구성되었을 때 순서 번호이다. 2019-02-28 쉽게 배우는 MySQL 5.x

[예제12-2] 등록한 학생에 대하여 학번과 전체 등록금의 총액을 출력하라. 이때 출력순서는 등록금총액이다. mysql> select stu_no, sum(fee_total)         mysql> select stu_no, sum(fee_total)     -> from fee                                  -> from fee     -> group by stu_no                           -> group by stu_no     -> order by 2;                               -> order by sum(fee_total); +----------+----------------+ | stu_no   | sum(fee_total) | | 20071001 |        6500000 | | 20071010 |        6500000 | | 20071022 |        6500000 | | 20071300 |        6500000 | | 20071307 |        6500000 | | 20071405 |        6500000 | | 20061011 |       12500000 | | 20001015 |       23100000 | 8 rows in set (0.01 sec) -MySQL에서는 ORDER BY절에 “SUM(FEE_TOTAL)”를 우측과 같이 사용 가능 -SQL제품에 따라 “SUM(FEE_TOTAL)”을 사용할 수 없는 제품이 있다. -통계함수를 사용할 수 없는 경우 순서번호를 좌측과 같이 사용 2019-02-28 쉽게 배우는 MySQL 5.x

12.3 오름차순과 내림차순 정렬 -열 명세나 순서 번호 다음에 아무 것도 지정하지 않는다면 오름차순으로 정렬 12.3 오름차순과 내림차순 정렬 -열 명세나 순서 번호 다음에 아무 것도 지정하지 않는다면 오름차순으로 정렬 -수치 값에 대한 오름차순 정렬은 작은 값이 먼저 나타나고 큰 값이 나중에 -영수치 값에 대한 오름차순 정렬은 영문자 ASCII코드 값의 크기순서와 동일 [예제12-3]학적테이블의 영문이름의 첫 번째 문자가 ‘J'보다 큰 ASCII코드로 시작하는 학생의 학번과 이름, 영문이름을 출력(영문이름 내림차순으로 정렬)하라 mysql> select stu_no, stu_name, stu_ename     -> from student     -> where substring(stu_ename,1,1) > 'J'     -> order by stu_ename desc; +----------+----------+------------------+ | stu_no   | stu_name | stu_ename        | | 20071300 | 유하나   | Yoo Ha-Na        | | 20041033 | 연개소문 | Yean Gae-So-Moon | | 20061011 | 박정인   | Park Jung-In     | | 20001015 | 박도준   | Park Do-Jun      | | 20071022 | 이순신   | Lee Sun-Shin     | | 20001021 | 이상길   | Lee Sang-Gil     | | 20061014 | 고혜진   | Ko Hea-Jin       | | 20061048 | 김영호   | Kim Young-Ho     | | 20001001 | 김유신   | Kim Yoo-Shin     | | 20041002 | 김유미   | Kim Yoo-Mi       | | 20071307 | 김문영   | Kim Moon-Young   | 11 rows in set (0.08 sec) 2019-02-28 쉽게 배우는 MySQL 5.x

12.4 하나 이상의 행 정렬 ORDER BY 절에 여러 개의 열을 지정할 수 있다. 12.4 하나 이상의 행 정렬 ORDER BY 절에 여러 개의 열을 지정할 수 있다. [예제12-4] 2006년에 등록한 학생에 대하여 학번과 납입한 등록금총액을 출력하라. 이때 출력순서는 학번은 오름차순, 등록금총액은 내림차순이다. mysql> select stu_no, fee_year, fee_term, fee_pay     -> from fee     -> where fee_year = 2006     -> order by stu_no asc, fee_pay desc; +----------+----------+----------+---------+ | stu_no   | fee_year | fee_term | fee_pay | | 20001015 | 2006     |        1 |  500000 | | 20001015 | 2006     |        2 |  500000 | | 20061011 | 2006     |        1 | 3000000 | | 20061011 | 2006     |        2 |  500000 | 4 rows in set (0.00 sec) ORDER BY 절은 출력 순서를 학번은 오름차순으로 정렬하고, 납부 총액은 내림차순으로 정렬한다. 이 때 오름차순을 나타내는 “ASC"는 생략이 가능 2019-02-28 쉽게 배우는 MySQL 5.x

[예제 12-5] 교과목 테이블에서 생성년도가 2003년~2005년 사이 값으로 과목코드, 과목명, 생성년도를 출력하라 [예제 12-5] 교과목 테이블에서 생성년도가 2003년~2005년 사이 값으로 과목코드, 과목명, 생성년도를 출력하라.(단, 출력순서는 생성년도 내림차순으로 정렬한 뒤 같은 생성년도인 경우는 과목코드순으로 정렬) mysql> select sub_code, sub_name, create_year       -> from subject     -> where create_year between 2003 and 2005     -> order by create_year desc, sub_code; +----------+---------------------+-------------+ | sub_code | sub_name            | create_year | | 4007     | UML                 | 2005        | | 4012     | 네트워크 프로그래밍 | 2005        | | 4013     | 컴포넌트 프로그래밍 | 2004        | | 4002     | 웹사이트 구축       | 2003        | | 4003     | 소프트웨어공학      | 2003        | | 4009     | 전자상거래 실무     | 2003        | 6 rows in set (0.05 sec) 2019-02-28 쉽게 배우는 MySQL 5.x

[예제 12-6] 성적 테이블에서 2007년도 1학기 석차순 명부를 학번, 연도, 학기, 평점평균, 총점을 출력하라 [예제 12-6] 성적 테이블에서 2007년도 1학기 석차순 명부를 학번, 연도, 학기, 평점평균, 총점을 출력하라.(단, 출력순서는 평점평균 내림차순, 총점 내림차순, 동점인 경우에는 학번순서로 정렬한다) mysql> select stu_no, sco_year, sco_term, exam_avg, exam_total     -> from score     -> where sco_year = '2007' and sco_term = 1     -> order by exam_avg desc, exam_total desc, stu_no; +----------+----------+----------+----------+------------+ | stu_no   | sco_year | sco_term | exam_avg | exam_total | | 20071300 | 2007     |        1 |      4.4 |        577 | | 20071307 | 2007     |        1 |      4.4 |        575 | | 20071405 | 2007     |        1 |      4.2 |        572 | 3 rows in set (0.00 sec) 위의 예제에서는 20071300 학생과 20071307 학생의 평점평균이 4.4로 동일하기 때문에 백분율 총점이 높은 20071300번이 먼저 출력되고 20071307이 출력되고 다음으로 20071405번이 출력되었다. 2019-02-28 쉽게 배우는 MySQL 5.x

12.5 수식과 함수의 정렬 [예제 12-7] 교수 테이블에서 임용일자가 1997년 이전인 교수코드와, 교수이름, 임용일자를 교수임용일자 순으로 정렬하라.(DATE_FORMAT( ) 함수를 이용하라) mysql> select prof_code, prof_name, create_date "임용일자"     -> from professor     -> where date_format(create_date, '%Y') < 1997     -> order by date_format(create_date, '%Y'); +-----------+-----------+------------+ | prof_code | prof_name | 임용일자   | | 4007      | 김영식    | 1986-03-01 | | 4006      | 고진광    | 1988-03-01 | | 5011      | 최종주    | 1992-03-05 | | 4001      | 정진용    | 1995-09-01 | | 4009      | 문창수    | 1995-03-01 | 5 rows in set (0.02 sec) DATE_FORMAT 함수에서 임용일자 중 년도만을 오름차순 정렬하였기 때문에 정진용 교수와 문창수 교수의 임용일자와 상관없이 같은 년도이기 때문에 바뀌어 출력되었다. 2019-02-28 쉽게 배우는 MySQL 5.x

[예제12-7]을 임용일자 순으로 출력하기를 원한다면 ORDER BY 절을 “order by create_date”로 변경해 주면 된다. mysql> select prof_code, prof_name, create_date "임용일자"     -> from professor     -> where date_format(create_date, '%Y') < 1997     -> order by create_date; +-----------+-----------+------------+ | prof_code | prof_name | 임용일자   | | 4007      | 김영식    | 1986-03-01 | | 4006      | 고진광    | 1988-03-01 | | 5011      | 최종주    | 1992-03-05 | | 4009      | 문창수    | 1995-03-01 | | 4001      | 정진용    | 1995-09-01 | 5 rows in set (0.02 sec) 2019-02-28 쉽게 배우는 MySQL 5.x

12.6 NULL 값의 정렬 다양한 SQL 제품에서 NULL 값의 순서화는 그 방법에 있어서 차이가 있다. MySQL에서는 NULL 값을 열에서 가장 작은 값으로 취급한다. -오름차순으로 정렬한다면 결과에서 가장 먼저 출력 -내림차순으로 정렬한다면 결과에서 가장 나중에 출력 2019-02-28 쉽게 배우는 MySQL 5.x

Mysql에서 오름차순은 NULL값을 가장 작은 값으로 취급하여 가장 먼저 출력 [예제 12-8] 등록테이블에서 2007년에 등록한 학생의 학번과 장학금 총액을 출력하라. 단, 순서는 장학금 총액 오름차순이다. mysql> select stu_no, jang_total         -> from fee     -> where year(fee_date) = 2007     -> order by jang_total; +----------+------------+ | stu_no   | jang_total | | 20071001 |       NULL | | 20071022 |       NULL | | 20071307 |       NULL | | 20071010 |       NULL | | 20071307 |     500000 | | 20071010 |     500000 | | 20071022 |     500000 | | 20071001 |     500000 | | 20071405 |     500000 | | 20071300 |     500000 | | 20061011 |     800000 | | 20071300 |    2000000 | | 20001015 |    2000000 | | 20061011 |    2000000 | | 20001015 |    2500000 | | 20071405 |    2500000 | 16 rows in set (0.00 sec) Mysql에서 오름차순은 NULL값을 가장 작은 값으로 취급하여 가장 먼저 출력 2019-02-28 쉽게 배우는 MySQL 5.x

내림차순에서는 NULL값이 가장 작은 값이므로 가장 나중에 출력 [예제 12-8]예제를 내림차순으로 정렬하여라. mysql> select stu_no, jang_total         -> from fee     -> where year(fee_date) = 2007     -> order by jang_total desc; +----------+------------+ | stu_no   | jang_total | | 20071405 |    2500000 | | 20001015 |    2500000 | | 20071300 |    2000000 | | 20001015 |    2000000 | | 20061011 |    2000000 | | 20061011 |     800000 | | 20071001 |     500000 | | 20071405 |     500000 | | 20071307 |     500000 | | 20071300 |     500000 | | 20071010 |     500000 | | 20071022 |     500000 | | 20071022 |       NULL | | 20071010 |       NULL | | 20071307 |       NULL | | 20071001 |       NULL | 16 rows in set (0.00 sec) 내림차순에서는 NULL값이 가장 작은 값이므로 가장 나중에 출력 2019-02-28 쉽게 배우는 MySQL 5.x