본문으로 바로가기

Node.js(MySQL) - Chapter 04. Select From

category Front-End/- Node.js 2019. 10. 8. 15:55

1. Selecting From a Table

MySQL 에서 테이블로부터 데이터를 선택하기 위해서, "SELECT" 구문을 사용한다.

var mysql = require('mysql');

var con = mysql.createConnection({
	host : "localhost",
	user : "yourname",
	password : "yourpassword",
	database : "mydb"
});

con.connect(function(err) {
	if(err) throw err;
	con.query("SELECT * FROM customers", function(err, result, fields) {
		if(err) throw err;
		console.log(result);
	});
});

저장하고, 실행하면 결과는 다음과 같다.

[
  { id: 1, name: 'John', address: 'Highway 71'},
  { id: 2, name: 'Peter', address: 'Lowstreet 4'},
  { id: 3, name: 'Amy', address: 'Apple st 652'},
  { id: 4, name: 'Hannah', address: 'Mountain 21'},
  { id: 5, name: 'Michael', address: 'Valley 345'},
  { id: 6, name: 'Sandy', address: 'Ocean blvd 2'},
  { id: 7, name: 'Betty', address: 'Green Grass 1'},
  { id: 8, name: 'Richard', address: 'Sky st 331'},
  { id: 9, name: 'Susan', address: 'One way 98'},
  { id: 10, name: 'Vicky', address: 'Yellow Garden 2'},
  { id: 11, name: 'Ben', address: 'Park Lane 38'},
  { id: 12, name: 'William', address: 'Central st 954'},
  { id: 13, name: 'Chuck', address: 'Main Road 989'},
  { id: 14, name: 'Viola', address: 'Sideway 1633'}
]

원하는 컬럼만 선택하여 출력할 수도 있다.

2. The Result Object

결과 객체는 각각의 row 들에 대한 배열을 가지고 있다.

예를 들어, 객체의 3번째 배열의 address 속성에 대한 값을 확인하고 싶을 때는 다음과 같다.

console.log(result[2].address);

 

3. The Fields Object

콜백 펑션의 3번째 파라미터인 fields는 결과의 각각의 필드에 대한 정보를 포함하고 있는 배열이다.

예를 들어 name과 address에 대한 정보 출력의 경우, 결과는 다음과 같다.

[
  {
    catalog: 'def',
    db: 'mydb',
    table: 'customers',
    orgTable: 'customers',
    name: 'name',
    orgName: 'name',
    charsetNr: 33,
    length: 765,
    type: 253,
    flags: 0,
    decimals: 0,
    default: undefined,
    zeroFill: false,
    protocol41: true
  },
  {
    catalog: 'def',
    db: 'mydb',
    table: 'customers',
    orgTable: 'customers',
    name: 'address',
    orgName: 'address',
    charsetNr: 33,
    length: 765,
    type: 253,
    flags: 0,
    decimals: 0,
    default: undefined,
    zeroFill: false,
    protocol41: true
  {
]

두번째 필드의 이름에 대한 정보를 확인하기 위해서는 다음과 같다.

console.log(fields[1].name);

결과는 "address" 만을 출력한다.