별칭은 단순히 컬럼명의 변경뿐만 아니라 쿼리를 통하여 연산을 처리할 때의 결과값에도 많이 사용합니다. 결과값은 별도의 컬럼명이 없기 때문입니다.

실습을 위해서 예제 테이블과 기초 데이터를 준비합니다.

| 예제 쿼리 |

// 테이블 생성
CREATE TABLE `products` (
  `Id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `price` int(11) DEFAULT NULL,
  `vat` int(11) DEFAULT NULL,
  `stock` int(11) DEFAULT NULL,
  PRIMARY KEY (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

// 기초데이터
INSERT INTO `products` VALUES (1,'S-827',20000,2000,5),(2,'S-532D',36000,3600,7);

16.2.1 연산 명칭

정수형 타입의 컬럼 데이터는 +, -, /, * 등의 사칙연산을 할 수 있습니다. 또한 함수를 실 행할 때도 출력 필드의 명칭을 정할 수 있습니다.

| 콘솔 실습 화면 |

mysql> select * from products;
+----+--------+-------+------+-------+
| Id | name   | price | vat  | stock |
+----+--------+-------+------+-------+
|  1 | S-827  | 20000 | 2000 |     5 |
|  2 | S-532D | 36000 | 3600 |     7 |
+----+--------+-------+------+-------+
2 rows in set (0.00 sec)

제품 목록 테이블에는 단가와 부가세 가격만 있습니다. 합계에 대한 컬럼 항목은 없습니다. 가격과 부가세 컬럼을 기준으로 합계를 출력해 봅니다.

| 예제 쿼리 |

select price+vat as total from products; 

| 콘솔 실습 화면 |

mysql> select price+vat as total from products;
+-------+
| total |
+-------+
| 22000 |
| 39600 |
+-------+
2 rows in set (0.00 sec)

2개의 값이 합산된 결과가 출력됩니다. 또한 출력된 값의 컬럼 명칭으로 total로 설정했습 니다. total 컬럼 명칭은 기존 테이블에서 없는 컬럼입니다. 연산의 의해서 새롭게 별칭으 로 만들어진 임시 컬럼 이름입니다.

AS 별칭 키워드를 이용하여 새로운 가상의 컬럼명을 하나 더 만들어 출력합니다.

16.2.2 PHP 실습

PHP 코드를 통하여 별칭 실습해 봅니다.

예제 파일 | alias-02.php

<?php
 
	include "dbinfo.php";
	include "mysql.class.php";
 
	// ++ Mysqli DB 연결.
	$db = new JinyMysql();
 
	$tbname = "products";

	// 컬럼 지정조회 
	echo "===== 컬럼조회 =====<br>";
	if($rowss = $db->select($tbname,"price+vat as total")){
		echo "tables fields = ". count($rowss) . "<br>";
 
		for($i=0;$i<count($rowss);$i++){
			echo $i."=";            
			print_r($rowss[$i]);
			echo "<br>";
		}
	}
 
?>

화면 출력

mysql connected!
===== 컬럼조회 =====
쿼리성공] SELECT price+vat as total FROM products;
tables fields = 2
0=stdClass Object ( [total] => 22000 )
1=stdClass Object ( [total] => 39600 ) 

16.2.3 함수 명칭

사칙연산 이외에도 SQL의 내장 함수를 사용할 때도 별칭은 매우 유용합니다. 내장 함수 를 사용할 때 출력 명칭은 불분명합니다. 함수를 사용하게 되면 컬럼명이 함수명으로 출 력됩니다.

함수를 사용할 때도 AS 별칭을 사용하면 새로운 출력 명칭을 선언할 수 있습니다.

| 예제 쿼리 |

select avg(price) as avg from products; 

위의 쿼리는 제품 테이블에서 가격 컬럼의 평균을 출력하는 예제입니다.

| 콘솔 실습 화면 |

mysql> select avg(price) as avg from products;
+------------+
| avg        |
+------------+
| 28000.0000 |
+------------+
1 row in set (0.00 sec)

별칭으로 선언한 이름으로 결과를 출력합니다. 만일 함수에 별칭을 설정하지 않고 함수만 실행했을 경우에는 함수명으로 출력됩니다.

| 콘솔 실습 화면 |

mysql> select avg(price) from products;
+------------+
| avg(price) |
+------------+
| 28000.0000 |
+------------+
1 row in set (0.00 sec)

16.2.4 PHP 실습

PHP 코드를 통하여 별칭 실습해 봅니다.

| 예제 쿼리 |

SELECT CONCAT(FirstName,'_ ',LastName) AS username FROM members; 

위의 예제는 성과 이름 필드를 합쳐서 username 별칭으로 선언합니다. AS 별칭을 사용 하여 새로운 컬럼을 추가할 수 있습니다.

예제 파일 | alias-03.php

<?php
 
	include "dbinfo.php";
	include "mysql.class.php";
 
	// ++ Mysqli DB 연결.
	$db = new JinyMysql();
 
	$tbname = "members";

	// 컬럼 지정조회 
	echo "===== 컬럼조회 =====<br>";
	if($rowss = $db->select($tbname,"CONCAT(FirstName,'_ ',LastName) AS username")){
		echo "tables fields = ". count($rowss) . "<br>";
 
		for($i=0;$i<count($rowss);$i++){
			echo $i."=";            
 			print_r($rowss[$i]);
			echo "<br>";
		}
	}
 
?>

화면 출력

mysql connected!
===== 컬럼조회 =====
쿼리성공] SELECT CONCAT(FirstName,'_ ',LastName) AS username FROM members;
tables fields = 6
0=stdClass Object ( [username] => lee_ hojin )
1=stdClass Object ( [username] => hojin_ lee )
2=stdClass Object ( [username] => kim_ james )
3=stdClass Object ( [username] => jiny_ 1234 )
4=stdClass Object ( [username] => jiny_ 1234 )
5=stdClass Object ( [username] => jiny_ 123400 )