laravel 로 배우는 서버사이드 #4
TRANSCRIPT
데이터베이스 (Database)
웹서버에�전달�정보를�조회,�저장,�갱신,�삭제�웹서버�자체에�저장된�정보는�없음
엑셀처럼�데이터를�차곡차곡�저장�우리가�엑셀(DB)의폼을�만들어�주어야�함
데이터 베이스웹(애플리케이션) 서버
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>�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;�권한�적용
워크벤치 다운로드
https://drive.google.com/folderview?id=0B_dqOWjvHbO9dDRDQktwSnNqWnc&usp=sharing
http://www.mysql.com/products/workbench/
원래는 여기
우리는 여기에서
SQL (Structured Query Language)
데이터베이스에 명령하기위해 정해진 구조적 언어
DML(Data Manipulation Language) DDL(Data Definition Language) DCL(Data Control Language)
CREATE
CREATE TABLE abcd_user ( id int, name VARCHAR(50), title VARCHAR(50), gender VARCHAR(10) );
숫자형 id 컬럼 50자가 들어갈 수 있는 문자형 name 컬럼 50자가 들어갈 수 있는 문자형 title 컬럼 10자가 들어갈 수 있는 gender 컬럼
테이블을 생성
다음같은 테이블이 생성된다.
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�조건;
데이터 삭제
데이터베이스 설정 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
기본 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
쿼리빌더 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/>';���������}�����}