laravel 로 배우는 서버사이드 #4

42
Laravel 로 배우는 서버사이드 #4 Database ABCD, SNOWKIWI / 한성일

Upload: -

Post on 07-Jan-2017

970 views

Category:

Software


9 download

TRANSCRIPT

Laravel�로�배우는�서버사이드�#4Database

ABCD,�SNOWKIWI�/�한성일

1. 데이터베이스 (Database)

데이터베이스 (Database)

인터넷사용자 서버

데이터베이스

처리된 HTML

보고 싶다.

데이터

여기

1

2

3

데이터베이스 (Database)

DBMS (Database Management System) 자료(DATA)를 저장하고 관리

데이터베이스 (Database)

웹서버에�전달�정보를�조회,�저장,�갱신,�삭제�웹서버�자체에�저장된�정보는�없음

엑셀처럼�데이터를�차곡차곡�저장�우리가�엑셀(DB)의폼을�만들어�주어야�함

데이터 베이스웹(애플리케이션) 서버

엑셀과의 비교Database

Table

Column

Data

데이터베이스의 종류

다양한 데이터 베이스 서버들이 존재 우리가 사용할 데이터 베이스

2. 설정

포트변경

1

2포트를 3306으로 수정 후 서버 재시작

mysql config 수정

my.cnf 파일 생성

[mysqld]�character-set-server�=�utf8

C:\MAMP\conf\mysql\my.ini

[mysqld]�character-set-server�=�utf8

/Applications/MAMP/conf

기본 문자셋을 utf8로 변경

MySQL 설정 확인

$ mysql -P 3306 -u root -proot

데이터베이스 생성 & 사용자 생성

mysql>�SHOW�DATABASES;�생성된�데이터베이스를�확인�

mysql>�CREATE�DATABASE�abcd_db�abcd_db�데이터베이스를�생성�

mysql>�CREATE�USER�'abcd'@'localhost'�IDENTIFIED�BY�‘1234';�abcd@localhost�계정�생성�비밀번호는�1234��

mysql>�GRANT�ALL�PRIVILEGES�ON�abcd_db.*�TO�‘abcd'@'localhost';�

abcd�계정에�abcd_db�사용권한을�지정�

mysql>�FLUSH�PRIVILEGES;�권한�적용

3. MySQL Workbench

워크벤치 다운로드

https://drive.google.com/folderview?id=0B_dqOWjvHbO9dDRDQktwSnNqWnc&usp=sharing

http://www.mysql.com/products/workbench/

원래는 여기

우리는 여기에서

워크벤치 설정1

2

34

abcd_db

1

5

6

워크벤치 설정2

워크벤치 설정3

1

2

쿼리 실행

4. SQL (Structured Query Language)

SQL (Structured Query Language)

데이터베이스에 명령하기위해 정해진 구조적 언어

DML(Data Manipulation Language) DDL(Data Definition Language) DCL(Data Control Language)

SHOW, USE

SHOW�DATABASES;�

USE�abcd_db;

데이터베이스 목록 출력

데이터베이스를 사용

데이터베이스를 선택하고 사용한다.

CREATE

CREATE TABLE abcd_user ( id int, name VARCHAR(50), title VARCHAR(50), gender VARCHAR(10) );

숫자형 id 컬럼 50자가 들어갈 수 있는 문자형 name 컬럼 50자가 들어갈 수 있는 문자형 title 컬럼 10자가 들어갈 수 있는 gender 컬럼

테이블을 생성

다음같은 테이블이 생성된다.

CREATE 1

SHOW TABLES;

테이블 리스트를 조회

더많은 데이터형

http://fendee.egloos.com/3961946

DROP

CREATE�TABLE�test_table�(�

����id�INT,�

����name�VARCHAR(50)�

);�

SHOW�TABLES;�

DROP�TABLE�test_table;�SHOW�TABLES;

test_table 을 삭제한다.

데이터베이스, 테이블.. 삭제

SHOW�DATABASES;�

CREATE�DATABASE�test_database;�

SHOW�DATABASES;�

DROP�DATABASE�test_database;�

SHOW�DATABASES;test_database 를 삭제한다.

INSERT

INSERT���INTO�abcd_user�(id,�name,�title,�gender)��VALUES�(1,�'jamie',�'사장',�‘남자');�

INSERT���INTO�abcd_user�(id,�name,�title,�gender)��VALUES�(2,�'jerry',�'쥐',�‘남자');�

INSERT���INTO�abcd_user�(id,�name,�title,�gender)��VALUES�(3,�'tom',�'고양이',�‘여자');�

SELECT�*�FROM�abcd_user;

테이블에 데이터 입력INSERT���INTO�테이블명�(컬럼명)��VALUES�(저장데이터);

SELECT

SELECT�*�FROM�abcd_user;�SELECT�name,�title�FROM�abcd_user;�

SELECT�*�FROM�abcd_user��WHERE�name�=�‘tom’;�

SELECT�*�FROM�abcd_user��WHERE�id�=�‘1’;�

SELECT�*�FROM�abcd_user��WHERE�id�=�‘1’�AND�name�=�‘tom’;�

SELECT�*�FROM�abcd_user��WHERE�id�=�‘1’�OR�name�=�‘tom’;

SELECT�컬럼명�FROM�테이블명��WHERE�조건명�=�조건;

데이터를 조회

* 은 전체 컬럼

UPDATE

UPDATE�abcd_user��SET�name='john'��WHERE�id�=�1;�

UPDATE�abcd_user��SET�name=‘anna’,�title=‘인턴’�WHERE�id�=�1;�

UPDATE�abcd_user��SET�title=‘부장’�WHERE�name=‘anna’;�

UPDATE�abcd_user��SET�title=‘낙하산’;

UPDATE�테이블명��SET�컬럼명=변경값��WHERE�조건;

데이터를 변경

DELETE

DELETE��FROM�abcd_user��WHERE�id�=�2;�

DELETE��FROM�abcd_user��WHERE�name�=�'john';

DELETE��FROM�테이블명��WHERE�조건;

데이터 삭제

5. 라라벨 데이터베이스

데이터베이스 설정 1.env

DB_HOST=localhost�DB_DATABASE=abcd_db�DB_USERNAME=abcd�DB_PASSWORD=1234�DB_PORT=3306

DB_PORT 라인은 추가 해준다.!!

데이터베이스 설정 2config/database.php

��������'mysql'�=>�[�������������'driver'����=>�'mysql',�������������'host'������=>�env('DB_HOST',�'localhost'),�������������'database'��=>�env('DB_DATABASE',�'abcd_db'),�������������'username'��=>�env('DB_USERNAME',�'abcd'),�������������'password'��=>�env('DB_PASSWORD',�'1234'),�������������'charset'���=>�'utf8',�������������'collation'�=>�'utf8_unicode_ci',�������������'prefix'����=>�'',�������������'strict'����=>�false,�������������'port'������=>�3306,���������],

PORT 라인은 추가 해준다.!!

DB 실습용 Controller 생성

콘솔 홈 디렉토리로 이동1

cd�~/Documents/laravel-space/abcd

cd�C:\laravel-space\abcd

php artisan make:controller DBController2

기본 1

app/Http/routes.php

Route::get('/db/basic',�'DBController@basicQuery');

1

기본 2

public�function�basicQuery()�{�����$users�=�DB::select('select�*�from�abcd_user�where�id�=�?',�[1]);�����echo�$users[0]->name;�

����$users�=�DB::select('select�*�from�abcd_user�where�id�=�:id',�['id'�=>�1]);�����echo�$users[0]->name;�

����DB::insert('insert�into�abcd_user�(id,�name,�title,�gender)�����������������values�(?,�?,�?,�?)',�[4,�'둘리',�'주인공',�'남']);�

����DB::update('update�abcd_user�set�gender�=�\'여자\'�where�id�=�?',�['4']);�}

use�Illuminate\Support\Facades\DB;�상단에 입력

DBController 사이에 다음 함수를 입력한다.

2

3

app/Http/Controllers/DBController.php

기본 3

http://localhost/db/basic4

6. 쿼리빌더

쿼리빌더 1

app/Http/routes.php1

Route::get('/db/query',�'DBController@queryBulider');

쿼리빌더 2

public�function�queryBulider()�{���������$users�=�DB::table('abcd_user')->get();���������echo�$users[0]->name;���������echo�'<br/>';�

��������//�하나의�컬럼만�가져오기���������$name�=�DB::table('abcd_user')->where('name',�'둘리')->pluck('name');���������echo�$name;���������echo�'<br/>';�

��������//�하나의�컬럼의�데이터���������$roles�=�DB::table('abcd_user')->lists('title');���������foreach�($roles�as�$role)�{�������������echo�$role;�������������echo�'<br/>';���������}�

��������//�중복제거���������$users�=�DB::table('abcd_user')->distinct()->get();���������echo�count($users);���������echo�'<br/>';�

��������//�별명���������$users�=�DB::table('abcd_user')->select('name�as�user_name')->get();���������echo�count($users[0]->user_name);���������echo�'<br/>';

2 app/Http/Controllers/DBController.php

쿼리빌더 3

��������//�조건���������$users�=�DB::table('abcd_user')->where('id',�'<',�2)->get();���������foreach�($users�as�$user)�{�������������echo�$user->name;�������������echo�'<br/>';���������}�

��������//�or���������$users�=�DB::table('abcd_user')�������������->where('id',�'<',�2)�������������->orWhere('name',�'둘')�������������->get();���������foreach�($users�as�$user)�{�������������echo�$user->name;�������������echo�'<br/>';���������}���������echo�'<br/>';���������//�1에서�5만큼�더�가져온다���������$users�=�DB::table('abcd_user')->skip(1)->take(5)->get();���������foreach�($users�as�$user)�{�������������echo�$user->name;�������������echo�'<br/>';���������}�����}

테스트

http://localhost/db/query

수고하셨습니다. :)