예를들어 num이라는 컬럼의 합을 계산하여 출력하고싶다면,


select sum(num) from test;


이런식으로 간단하게 test테이블에 num을 합쳐서 결과를 출력할 수 있다.




근데, 출력하면 컬럼명이 sum(num)으로 되서 나온다 크게 상관없지만,


select sum(num) as num from test; 


이런식으로하면 컬럼명이 num으로 나온다. as없이도 가능하긴하다.



as는 


 1. C#의 as와 비슷한 개념이다. (캐스팅과 유사)
 2. 별명(alias)을 선언할때도 사용된다.


블로그 이미지

왕왕왕왕

,
논리 관련 함수, 집계함수
--논리 관련 함수
 IF(논리식,참일 때 값,거짓일 때 값)
   논리식이 참이면 참일 때 값을 출력하고 논리식이 거짓이면 거짓일 때 출력한다.
 IFNULL(값1,값2)
값1이 NULL 이면 값2로 대치하고 그렇지 않으면 값1을 출력

--집계 함수
 COUNT(필드명)
   NULL 값이 아닌 레코드 수를 구한다.
 SUM(필드명)
   필드명의 합계를 구한다.
 AVG(필드명)
   각각의 그룹 안에서 필드명의 평균값을 구한다.
 MAX(필드명)
   최대값을 구한다.
 MIN(필드명)
   최소값을 구한다.

http://egloos.zum.com/piccom/v/2866254

'데이터베이스 > Mysql' 카테고리의 다른 글

mysql table에 table 데이터옮기기  (0) 2016.07.15
Mysql AS연산자  (0) 2015.07.04
Mysql 함수 - 문자관련함수  (0) 2015.07.04
Mysq 함수 - 숫자관련함수  (0) 2015.07.04
Mysql order by를 이용한 정렬하기  (0) 2015.07.04
블로그 이미지

왕왕왕왕

,

문자 관련 함수

 ASCII(문자) : 문자의 아스키 코드값 리턴.
   SELECT ASCII('문자');
   select ascii('A');
 CONCAT('문자열1','문자열2','문자열3'...) : 문자열들을 이어준다.
   select concat('ASP,','PHP,','SQL',' WEB STUDY');
 INSERT('문자열','시작위치','길이','새로운문자열') : 문자열의 시작위치부터 길이만큼 새로운 문자열로 대치
   '시작위치' 와 '길이'는 문자열이 아니므로 작은따옴표로 굳이 묶어주지 않아도 된다.
   select insert('MySql web study','7','3','offline');
   select insert('MySql web study',7,3,'offline');
 REPLACE('문자열','기존문자열','바뀔문자열') : 문자열 중 기존문자열을 바뀔 문자열로 바꾼다.
   select replace('MySql web study','web','offline');
 INSTR('문자열','찾는문자열') : 문자열 중 찾는 문자열의 위치값을 출력
   --값이 존재하지 않으면 0값 리턴
   select instr('MySql web study','s');
   select instr('MySql web study','S');
 LEFT('문자열',개수) : 문자열 중 왼쪽에서 개수만큼을 추출.
   select left('MySql web study',5);
   select left('MySql web study','5');
 RIGHT('문자열',개수) : 문자열 중 오른쪽에서 개수만큼을 추출.
   select right('MySql web study',5);
   select right('MySql web study','5');
 MID('문자열',시작위치,개수) : 문자열 중 시작위치부터 개수만큼 출력
   select mid('MySql web study',7,3);
   select mid('MySql web study','7','3');
 SUBSTRING('문자열',시작위치,개수) : 문자열 중 시작위치부터 개수만큼 출력
   select substring('Mysql web study',11,5);
   select substring('Mysql web study','11','5');
 LTRIM('문자열') : 문자열 중 왼쪽의 공백을 없앤다.
   select ltrim('          web study');
 RTRIM('문자열') : 문자열 중 오른쪽의 공백을 없앤다.
   select rtrim('web study          ');
 TRIM('문자열') : 양쪽 모두의 공백을 없앤다.
   select trim('     web study      ');
 LCASE('문자열') 또는 LOWER('문자열') : 소문자로 바꾼다.
   select lcase('MYSQL');
   select lower('MySQL');
 UCASE('문자열') 또는 UPPER('문자열') : 대문자로 바꾼다.
   select ucase('mySql');
   select upper('mysql');
 REVERSE('문자열') : 문자열을 반대로 나열한다.
   예) REVERSE('abcde') ==> edcba
   select reverse('lqSyM');

http://egloos.zum.com/piccom/v/2866254

블로그 이미지

왕왕왕왕

,

숫자 관련 함수


 ABS(숫자) : 절대값 출력.
    select abs(123);
 CEILING(숫자) : 값보다 큰 정수 중 가장 작은 수.
   --양수일 경우는 소숫점 자리에서 무조건 반올림(4.0과 같은 소숫점 자리 0 값은 제외)
   --음수일 경우는 소숫점 자리를 무조건 버림
    select ceiling(4.0);
    select ceiling(4.1);
    select ceiling(4.9);
 FLOOR(숫자) : 값보다 작은 정수 중 가장 큰 수[실수를 무조건 버림(음수일 경우는 제외)].
   --음수일 경우는 [.0/.00/.000/...] 을 제외하고 무조건 소숫점을 버리고 반내림(?)
    select floor(4.0);
    select floor(4.1);
    select floor(4.9);
    select floor(-4.6789);
 ROUND(숫자,자릿수) : 숫자를 소수점 이하 자릿수에서 반올림.(자릿수는 양수,0,음수를 갖을 수 있다.)
    --자릿수를 생략하면 소숫점이 5 이상일 때 반올림/자릿수를 지정하면 지정한 자리수에서 반올림
    select round(4.5);
    select round(4.55);
    select round(-4.5);
    select round(4.556);
    select round(4.556,0);
    select round(4.556,1);
    select round(4.556,2);
    select round(45.556,-1);
    select round(455.556,-2);
 TRUNCATE(숫자,자릿수) : 숫자를 소수점 이하 자릿수에서 버림.
   ==>만일 자릿수를 소숫점 이전으로 정하면 소숫점이하는 버리고 나머지 값은 0 값으로 처리
      / 예) truncate(9999,-3) --> 9000
   ==>또는 자릿수를 소숫점이하로 정하며, 해당숫자가 자릿수보다 소숫점이 모자랄경우 0 값으로 대치
      / 예) truncate(999,3) --> 999.000
   --반드시 자릿수를 명시해주어야 한다
   --음수일 경우는 해당자릿수에서 소숫점을 버리면서 무조건 반올림
   ==>(자릿수 숫자에서 이후 숫자가 0 일 경우는 제외 / 예)-4.0,0/-400,-2/-4.1230,4)
   ==>음수 역시 자릿수를 소숫점이하로 정하며, 해당숫자가 자릿수보다 소숫점이 모자랄경우 0 값으로 대치
   ==>또한 자릿수를 소숫점 이전으로 정하면 소숫점이하는 버리고 나머지 값은 역시 0 값으로 처리
 POW(X,Y) 또는 POWER(X,Y) : X Y
   --소숫점이 있는 경우도 실행, 단 음수는 양수로 승처리
   select pow(-2.5,2);
   select pow(1.5,2);
 MOD (분자, 분모) : 분자를 분모로 나눈 나머지를 구한다.(연산자 %와 같음)
   select mod(12,5);    ==> 2
   select 12%5;           ==> 2
 GREATEST(숫자1,숫자2,숫자3...) : 주어진 수 중 제일 큰 수 리턴.
   select greatest(100,101,90);
 LEAST(숫자1,숫자2,숫자3...) : 주어진 수 중 제일 작은 수 리턴.
   select least(100,101,90);
 INTERVAL(a,b,c,d.....) : a(숫자)의 위치 반환
   --두 번째 이후는 오름차순 정렬이 되어야 함
   예) INTERVAL(5,2,4,6,8) ==> 2
        5는 4와 6사이에 존재, 4~6사이의 위치가 앞에서 2번째
   select interval(4,1,2,3,5,6);


http://egloos.zum.com/piccom/v/2866254 출처

블로그 이미지

왕왕왕왕

,


Order By 


테이블의 내용을 모두 출력한다고 가정한다.(쿼리문작성할때 대소문자는 아직까지 상관없었다.)


SELECT name,num FROM test ORDER BY name ASC, num DESC;


test 테이블에 name과 num 컬럼을 모두 출력한다. 출력할때 name은 오름차순 num은 내림차순으로 정렬하여 출력한다.






'데이터베이스 > Mysql' 카테고리의 다른 글

Mysql 함수 - 문자관련함수  (0) 2015.07.04
Mysq 함수 - 숫자관련함수  (0) 2015.07.04
Mysql group by 중복된 컬럼명들 합치기  (0) 2015.07.04
Mysql 주석처리  (0) 2015.07.04
Mysql 데이터값 자동증가  (0) 2015.07.03
블로그 이미지

왕왕왕왕

,

test 테이블이다.


num,name,age,sex,count 라는 컬럼이 있다


num int형

나머지 varchar형






같은 NAME이 가지고 있는 COUNT 값 합쳐서 출력


SELECT name,sum(count) AS count FROM pos.test GROUP BY name ;


동일한 이름을 가진 name들을 그룹화하여, name과 count를 출력한다.

이때 count는 sum()이라는 함수를 이용해 count값을 모두더해서 as count 즉, count라는 이름으로 출력한다.


여기서 as count의 이름을 as result 이런식으로 자기 맘에 변경도 가능하다.


또, SELECT name,sum(count) AS count,age FROM pos.test GROUP BY name ;

age를 추가하면 age가 나온다. 근데 12만나옴 나머지 11,10은 안나온다






group by를 하지않고 출력하면 제일 위에있는 a를 1개 출력하고 count는 모든값을 더해 6이나오게된다.


결과는 위와 같이 나온다.

'데이터베이스 > Mysql' 카테고리의 다른 글

Mysq 함수 - 숫자관련함수  (0) 2015.07.04
Mysql order by를 이용한 정렬하기  (0) 2015.07.04
Mysql 주석처리  (0) 2015.07.04
Mysql 데이터값 자동증가  (0) 2015.07.03
Mysql 테이블 컬럼 수정 - ALTER TABLE 편  (0) 2015.07.02
블로그 이미지

왕왕왕왕

,

여러줄 주석처리

/*


이안에 있으면 모두 주석


*/



한줄 주석처리


# 주석주석주석주석처리

블로그 이미지

왕왕왕왕

,

버전올라가기전

create table 테이블명 (num int(11) not nulll default '0' auto_increment);

- default '0'  기본값 0부터시작하게 함

- auto_increment 기본값부터 1씩 레코드 입력될 때 마다 증가시킴


!! mysql 버전올라가면서 default값 넣는게 사라짐


버전올라간 후

create table 테이블명 (num int(11) not nulll auto_increment);

- auto_increment 디폴트값없이 자동증가만 넣어주면됨


블로그 이미지

왕왕왕왕

,