반응형

반응형

오름차순으로 정렬하기.

 

레코드를 지정한 컬럼의 값에 따라 순서대로 표시하려면 order by를 사용합니다.

레코드를 오름차순으로 표시하기는 작은 값에서 큰 값으로 정렬하는 것을 말합니다.

다음과 같이 오름차순 명령을 할 수 있습니다.

 

select 컬럼명 from 테이블명 order by 컬럼명 asc

 

asc를 안써도 디폴트 값은 오름 차순으로 정렬됩니다.

나이 순으로 오름차순 정렬해서 출력해 보겠습니다.

 

select * from table_01 order by age asc;

 

내림차순으로 정렬하기.

 

내림차순은 큰 값에서 작은 값으로 정렬하는 것을 말합니다.

내림차순은 desc를 사용하여 나타냅니다.

나이 순으로 내림차순으로 정렬해 보겠습니다.

 

select * from table_01 order by age desc;

 

표시할 레코드의 범위 지정하기.

 

레코드를 순서대로 표시할 때 표시할 레코드의 수를 지정할 때는 limit를 사용했는데요.

범위를 지정할 때는 offset를 사용하면 됩니다.

offset 뒤에 지정하는 숫자는 그 숫자만큼 이동한 이후부터 출력하라는 의미입니다.

 

select 컬럼명 from 테이블명 limit 표시할 레코드 수 offset 이동할 레코드 수

 

select * from table_01 order by age desc limit 5 offset 2;

 

반응형

'MySQL' 카테고리의 다른 글

MySQL 그룹화에 조건 설정하기.  (0) 2017.11.27
MySQL 그룹별로 표시하기.  (0) 2017.11.27
MySQL CASE WHEN 사용하기.  (0) 2017.11.26
MySQL 조건에 AND 와 OR 사용하기.  (0) 2017.11.24
MySQL select 조건 설정하기.  (0) 2017.11.22
Posted by 컴스터
,

MySQL CASE WHEN 사용하기.

MySQL 2017. 11. 26. 12:50
반응형

MySQL CASE WHEN 사용하기.

 

조건에 따라 값을 바꿔서 출력하는 case when 사용하기.

case

           when 조건1 then 표시할 값

           when 조건2 then 표시할 값

           when 조건3 then 표시할 값

           ….

else 모든 조건에 해당하지 않을 때 의 값

end

 

나이가 30미만이면 청년, 40미만 이면 장년, 60미만 이면 중년, 60이상이면 노년으로 표시해 보겠습니다.

select name, age,

case

         when age < 30 then ‘청년

         when age < 40 then ‘장년

         when age < 60 then ‘중년

         when age >= 60 then ‘노년

         else ‘없음

end

from table_01;

 

반응형
Posted by 컴스터
,
반응형

AND 사용하기.

And는 앞뒤 조건 둘다 동시에 만족하는 것을 나타냅니다.

나이가 30이상 45이하인 데이터를 검색할 때는 다음과 같이 하면 됩니다.

 

select * from table_01 where age >= 30 and age <= 45;

 

Number A1이고 age 48인 데이터를 검색해 보겠습니다.

 

select * from table_01 where number = ‘A1’ and age = 48;

 

OR 사용하기.

 

or은 앞 조건을 만족하거나 또는 뒤 조건을 만족하는 것을 나타 냅니다.

 

나이가 25이하이거나 50이상인 데이터를 검색해 보겠습니다.

 

select * from table_01 where age <= 25 or age >=50;

 

AND OR를 함께 사용하기.

And or 조건은 여러 번 중첩해서 사용할 수 있습니다.

number A3 이고 age 30이하이거나 46이상인 데이터를 검색해 보겠습니다.

 

select * from table_01 where number = ‘A3’ and (age <= 30 or age >= 46);

 

반응형
Posted by 컴스터
,
반응형

MySQL 레코드 수를 제한해서 표시하기.

표시할 레코드 수를 제한하려면 LIMIT를 사용합니다.

다음과 같이 명령어를 사용하면 됩니다.

 

select 컬럼명 from 테이블명 limit 표시할 레코드 수;

 

select * from table_01 limit 5;

 

MySQL where를 사용해서 데이터 추출하기.

where를 사용하면 조건을 설정해서 그 조건에 일치하는 레코드만 추출할 수 있습니다.

데이터를 얼마나 효율적으로 추출하느냐는 where를 얼마나 잘 사용하느냐에 달려 있습니다.

Where는 다음과 같이 사용합니다.

 

Select 컬럼명 from 테이블명 where 조건;

table_01에 나이가 40이상인 데이터를 추출해 보겠습니다.

select * from table_01 where age >= 40;

 

MySQL 조건에 사용하는 비교 연산자.

비교연산자

의미

=

같다

크다

>=

크거나 같다

작다

<=

작거나 같다

<> 

다르다

A in B

B 중에 A가 있다

A not in B

B 중에 A가 없다

A between B and C

B 부터 C 사이에 A가 있다

A not between B and C

B 부터 C 사이에 A가 없다

 

나이가 45이상 70이하인 데이터를 추출해 보겠습니다.

 

select * from table_01 where age between 45 and 70;

 

 

조건에 문자열 사용하기.

조건에 문자열를 사용할 때는 작은 따옴표를 문자열 앞뒤로 붙입니다.

 

number 컬럼의 A2과 일치하는 데이터를 추출해 보겠습니다.

 

select * from table_01 where number = ‘A2’;

 

LIKE : 퍼지 검색

데이터를 검색할 때 일부를 포함하는 데이터를 검색할 때 사용합니다.

Like를 사용하면 지정한 문자열을 포함하는 모든 데이터를 검색할 수 있습니다.

이때 와일드 카드를 사용하는데 와일드 카드문자에는 %(퍼센트) _(밑줄)있는데 %는 임의의 문자열를 나타내고 _는 임의의 한 문자를 나타냅니다.

 

와일드 카드

의미

%

임의의 문자열

_

임의의 한글자

 

이름에 김씨인 사람을 검색할 때는 다음과 같이 합니다.

 

select * from table_01 where name like ‘%’;

 

지정한 문자열을 포함하지 않는 데이터 추출하기.

 

특정 문자열을 포함하지 않는 데이터를 검색할때는 not like를 사용합니다.

이름에 김씨인 사람을 제외한 나머지를 검색할 때는 다음과 같이 합니다.

 

select * from table_01 where name not like ‘%’;

 

조건에 NULL 사용하기.

테이블에 초기값을 설정하지 않으면 값을 입력하지 않을 때는 null이 입력됩니다.

Table_01에 이름만 입력하고 다른 컬럼에는 입력하지 않으면 number, age 컬럼에는 null이 입력됩니다.

 

insert into table_01 (name) values (‘원빈’);

select * from table_01;

 

컬럼값이 null인 레코드를 검색할 때는 is null를 사용합니다.

 

select * from table_01 where age is null;

 

컬럼값이 null이 아닌 레코드를 검색할 때는 is not null를 사용합니다.

 

select * from table_01 where age is not null;

 

중복된 데이터를 제외하고 검색하기.

 

distinct 를 사용하면 중복된 데이터는 1번만 표시할 수 있습니다.

 

select number from table_01;

select distinct number from table_01;

 

 

 

반응형
Posted by 컴스터
,
반응형

MySQL 계산하거나 문자열을 결합해서 표시하기, MySQL 함수 사용하기

 

MySQL 컬럼 값을 계산해서 표시하기

컬럼이 a, b가 있다면 a, b끼리 사칙 연산을 해서 출력할 수 있습니다.

더하기 : select a + b from 테이블명;

빼기: select a – b from 테이블명;

곱하기: select a * b from 테이블명;

나누기: select a / b from 테이블명;

 

table_sales 테이블에 있는 sales 컬럼에 1000배로 하고 별명을 매출로 출력해 보겠습니다.

 

select sales * 1000 as 매출 from table_sales;

 

 

MySQL 함수사용하기.

 

평균 구하기.

avg( ) 는 평균을 구하는 함수 입니다.

table_sales sales 평균을 구해 보겠습니다.

 

select avg(sales) from table_sales;

 

합계 구하기.

sum( ) 은 합계를 구하는 함수 입니다.

table_sales sales 합계를 구해 보겠습니다.

 

select sum(sales) from table_sales;

 

데이터 개수 표시하기.

count() 함수는 데이터 개수를 계산하는 함수 입니다.

table_sales sales 개수를 구해 보겠습니다.

 

select count(sales) from table_sales;

 

각종 정보를 표시하는 함수.

원주율을 계산하는 함수 pi( );

 

select pi( );

 

MySQL 서버 버전 표시하기: version();

 

select version( );

 

MySQL 현재 사용중인 데이터베이스 표시하기: database( );

 

select database( );

 

MySQL 현재 사용자 표시하기: user( );

 

select user( );

 

 

MySQL 문자열 결합하기: concat( );

 

테이블 table_01 number + name + ‘을 결합해서 표시해 보겠습니다.

 

select concat(number, name, ‘’) from table_01;

 

MySQL 오른쪽 문자부터 추출하기 : right( );

 

select right(number, 1) from table_01;

 

MySQL 왼쪽 문자부터 추출하기: left( );

 

select left(name, 1) from table_01;

 

MySQL 위치 지정하여 추출하기: substring( );

 

name 컬럼 2번째 문자부터 2개의 문자만 표시하기.

 

select substring(name, 2, 2) from table_01;

 

MySQL 반복해서 표시하기: repeat( );

‘-‘ 문자를 Age 컬럼에 있는 숫자만큼 반복해서 표시합니다.

 

select repeat(‘-‘, age) from table_01;

 

MySQL 문자열을 거꾸로 표시하기: reverse( );

 

select reverse(name) from table_01;

 

MySQL 날짜와 시간을 표시하는 함수: now( );

 

now( ) 함수는 현재 날짜와 시간을 반환하는 함수입니다. 데이터를 처리한 날짜와 시간을 자동으로 입력하려면, 컬럼 이름 대신 now( ) 함수를 입력합니다.

오늘 날짜와 시간을 출력해 보겠습니다.

 

select now();

 

반응형
Posted by 컴스터
,
반응형

MySQL 컬럼 순서 바꿔 출력하기, 컬럼 별명 붙이기.

 

매출정보 테이블 table_sales 준비하기.

 

create table table_sales (number varchar(10), sales int, month int);

insert into table_sales (number, sales, month) values (‘A3’, 56, 10), (‘A4’, 300, 10), (‘A2’, 25, 10), (‘A4’, 100, 11), (‘A6’, 99, 10), (‘A5’, 44, 10), (‘A2’, 67, 11), (‘A3’, 94, 11), (‘A6’, 55, 11), (‘A5’, 21, 11);

select * from table_sales;

 

MySQL 컬럼 순서를 바꿔서 출력하기.

table_sales의 내용을 sales, number 순서로 표시해 보겠습니다.

 

select sales, number from table_sales;

 

컬럼 이름을 별명으로 바꾸기.

컬럼 이름에 numbersales만 표시하면, 어떤 데이터를 표시한 것인지 잘 모를 수 있습니다.

컬럼을 알기 쉽도록 별명을 붙일 수가 있습니다.

select 컬럼명 as 별명 from 테이블명;

 

컬럼 number에는 사원번호, sales 에는 매출이라는 별명을 붙여 보겠습니다.

 

select number as 사원번호, sales as 매출 from table_sales;

 

반응형
Posted by 컴스터
,
반응형

MySQL 콘솔창을 사용하지 않고 MySQL 조작하기.

 

Mysqladmin 명령을 사용해서 데이터베이스 생성하고 삭제하기.

MySQL 콘솔창을 사용하지 않고 명령 프롬프트나 터미널에서 직접 MySQL을 조작할 수 있습니다.

MySQL에는 mysqladmin명령을 실행하여 데이터 베이스를 생성할 수 있습니다.

MySQL 콘솔창에서 사용하는 명령이 아니므로 명령 프롬프트나 터미널에서 직접 입력합니다.

 

Mysqladmin –u 사용자명 -p비밀번호 create 데이터베이스명

 

사용자 이름과 비밀번호는 MySQL콘솔창을 실행할 때와 같은 것을 입력합니다. 다음은 명령 프롬프트에서 mysqladmin 명령을 사용해서 데이터베이스 test02를 생성하는 예입니다.

 

mysqladmin –u root –p12345 create test02

 

이제 데이터베이스 test02가 생성되었습니다.

다음은 mysqladmin 명령으로 데이터베이스 test02를 삭제하는 방법입니다. 이때는 확인 메시지가 표시됩니다.

 

Mysqladmin –u root –p12345 drop test02

 

MySQL 명령을 사용해서 질의 실행하기.

-e 옵션을 설정하고 그 뒤에 오는 명령을 쌍따옴표로 감쌉니다.

Mysql 데이터베이스명 –u  사용자명 -p비밀번호 –e “명령

 

다음은 mysql 명령을 사용해서 직접 SQL문을 실행하는 예입니다.

Mysql comster –u comster_user –p12345 –e “select * from table_01”

 

반응형
Posted by 컴스터
,
반응형

MySQL 테이블 삭제하기.

테이블 삭제하기 명령어는 drop 명령를 사용합니다.

Drop table 테이블명;

 

table_10를 삭제해 보겠습니다.

Show tables;

Drop table table_10;

Show tables;

 

 

 

 

MySQL 삭제하고자 하는 테이블이 있을 때 삭제하기.

삭제하고자 하는 테이블이 없는 상태에서 drop명령을 실행하면 오류가 표시되지만 if exists를 사용하면 오류를 피할 수 있습니다.

방금 삭제한 table_10를 또 삭제 해 보겠습니다.

Drop table if exists table_10;

 

 

 

데이터베이스 삭제하기.

데이터베이스를 삭제할 때에도 drop 명령을 사용합니다.

Drop database 데이터베이스명;

 

test02 데이터베이스를 삭제해 보겠습니다.

Show databases;

Drop database test02;

Show databases;

 

 

MySQL 모든 레코드 삭제하기.

테이블 자체를 삭제하지 않고 테이블에 저장된 레코드만 삭제하는 방법입니다.

다음은 모든 레코드 삭제하기 명령어 입니다.

Delete from 테이블명;

 

Table_09에 있는 모든 데이터를 삭제해 보겠습니다.

Select * from table_09;

Delete from table_09;

Select * from table_09;

 

Select 를 실행하면 Empty set이라고 표시되어 레코드가 모두 삭제된 것을 확인할 수 있습니다.

 

반응형
Posted by 컴스터
,
반응형

테이블의 컬럼 구조와 레코드 모두 복사하기.

우선 select한 결과에서 컬럼 구조와 레코드를 복사하고 나서 새로운 테이블을 생성하는 방법입니다. 데이터와 테이블을 간단하게 복사할 수 있는 편리한 방법입니다.

 

다음 명령어를 사용합니다.

Create table 새로운 테이블명 select * from 복사할 테이블명;

Select * from … 한 결과를 이용해서 create table을 하면 새로운 테이블에 데이터가 복사됩니다.

 

기존에 생성된 table_01과 같은 table_09 테이블을 생성해 보겠습니다.

Select * from table_01;

Create table table_09 select * from table_01;

Select * from table_09;

 

테이블의 컬럼 구조만 복사하기.

테이블의 컬럼 구조만 복사해서 새로운 테이블을 만드는 방법입니다. 이방법을 이용하면 데이터는 복사하지 않고, auto_incrementprimary key등의 컬럼 구조만 복사할 수 있습니다.

 

명령어는 다음과 같습니다.

Create table 새로운 테이블명 like 복사할 테이블명

 

방금 생성한 table_09의 구조만 복사해서 table_10을 만들어 보겠습니다.

Desc table_09;

Create table table_10 like table_09;

Desc table_10;

 

다른 테이블의 레코드 복사하기.

이미 만들어진 테이블에 다른 테이블의 레코드(데이터)만 복사하는 방법입니다.

 

명령어는 다음과 같습니다.

Insert into 테이블명 select * from 복사할 테이블명;

 

방금전에 테이블 구조만 복사해서 생성했던 table_10table_01의 데이터를 복사해 보겠습니다.

Select * from table_01;

Insert into table_10 select * from table_01;

Select * from table_10;

 

특정 컬럼을 선택해서 복사하기.

특정 컬럼의 데이터를 선택하여 복사할 수 있습니다. 예를 들어 table_10의 컬럼 nametable_01의 컬럼 number에 저장된 데이터를 삽입하는 예입니다.

Insert into table_10 (name) select number from table_01;

Select * from table_10;

Table_10의 컬럼 name에만 데이터가 입력되고 다른 컬럼에는 NULL이 입력됩니다.

 

 

반응형
Posted by 컴스터
,

MySQL 색인 설정하기.

MySQL 2017. 10. 18. 15:27
반응형

색인이란?

테이블에 있는 데이터를 검색할 때 데이터의 양이 많을수록 모든 레코드를 검색하는데 시간이 오래 걸립니다. 이럴 때 테이블의 색인을 만들면 편리합니다.

테이블에 설정하는 색인을 인덱스(index)라고도 합니다. 미리 테이블에 색인을 설정하고 검색할 때는 테이블이 아닌 색인을 이용합니다. 이렇게 하면 검색 시간을 단축할 수가 있습니다.

기본 키를 설정한 경우에는 색인이 자동으로 설정됩니다.

 

색인 설정하기.

색인은 다음과 같이 설정합니다.

create index 색인명 on 테이블명(컬럼명);

 

table_03 테이블 컬럼 number myIndex라는 이름의 색인을 설정해 보겠습니다.

create index myIndex on table_03(number);

 

색인 표시하기.

다음 명령을 실행하면 설정한 색인이 표시됩니다.

show index from 테이블명;

 

table_03에 설정한 색인을 표시해 보겠습니다.

show index from table_03;

 

 

보기가 불편합니다. 뒤에 옵션 \G(대문자G)를 입력합니다.

Show index from table_03 \G;

 

색인 삭제하기.

색은 삭제는 다음 명령을 사용합니다.

drop index 색인명 on 테이블명;

 

table_03 테이블의 색인 myIndex를 삭제해보겠습니다.

drop index myIndex on table_03;

Show index from table_03 \G;

 

반응형
Posted by 컴스터
,


반응형