34.데이터베이스(MySQL) 이론(https://opentutorials.org/course/1688/9386) 12.31
1.데이터베이스 이론1
*데이터베이스? 정보를 관리하는 전문 에플리케이션
-File: 가장 기본적, 원시적인 데이터 수단. 어디서든 쉽게 쓸 수 있음
-데이터베이스: (에플리케이션)- 파일을 사용하지 않고 database를 통해서 사용
데이터베이스의 장점은? 안전하다, 빠르다(index 사용), 프로그래밍적 제어 가능
-관계형 데이터베이스: 데이터베이스 종류 중 보편적인 db (MySQL, ORACLE, MS-SQL 등...) ps. MariaDB(최근 발전하는 db) *mariaDB는 알아둘 필요가 있겠다!
*Structured: 정돈된, 구조화된 상태
-표 == table (excel과 같은것)
-database와 excel이 다른점?
SQL: Structured Query Language - 컴퓨터에게 구조화된 정보를 질의하는 프로그래밍 언어!
2.데이터베이스 이론2
-MySQL client: 수업에서 사용하는 것은 MySQL monitor (기본 프로그램, 표준적인 client)
-이 monitor를 통해서 server가 어떻게 동작하는지 볼 것
*my_sql monitor 실행하는 방법
1) /opt/lam~/mysql/bin 폴더로 진입
$ cd /opt/lamp~/mysql/bin # lamp~는 tap을 눌러서 폴더를 지정해주면 된다.
2) 명령어 입력
$./mysql -hlocalhost -uroot -p
3) 패스워드 입력
-본인이 기존에 설정해 놓은 (까먹으면 안된다!) 패스워드를 입력한다. 표시가 되지 않아도 입력이 되고 있는 것이다.
-맞으면 welcome to the MySQL monitor. 라는 말들이 나온다.
*위의 명령어 설명($./mysql -hlocalhost -uroot -p)
-mysql #mysql monitor를 실행하겠다
-h: 이 뒤에 오는 것이 mysql의 주소이다 , localhost는 mysql 모니터가 설치된 자체를 가르키는 것, 곧 컴퓨터가 설치된 서버에 접속하겠다
-u: 뒤에 오는 것이 비밀번호 (root)
-p: 비밀번호를 입력 받아라라는 뜻이다. 이어서 -p** 이렇게 함께 입력해도 되지만 보안상의 문제가 있기 때문에 꼭 -p만 입력하고 추후에 비밀번호를 입력하는 것이 좋다.
3.데이터베이스 이론3 (**)
* 원래 대/소문자를 가리지 않지만 조금 더 문법을 명확히 하고 헷갈리지 않게 하기 위해
문법적인 것: 대문자/ 문법적인 내용이 아닌 것- 소문자 로 표시하였다.
*기본적으로 맨 뒤에 ; (semi colon)을 붙여야 확인이 된다. 그냥 enter를 누르면 줄만 넘어가고 그대로 기능한다.
mysql> SHOW DATABASES;
-현재 database들의 상태를 보여준다. 기존에 있는 information_schema, mysq, performance_schema, test는 건들지 말아야 한다.
mysql> CREATE DATABASE opentutorials CHARACTER SET utf8 COLLATE utf8_general_ci;
-opentutorials (이름은 자기 맘대로 설정해도 된다) 라는 새로운 database를 생성한다. 뒤의 내용은 한글 깨짐 방지를 위해 utf8로 설정해 놓은 것이다.
*본격적으로 db를 사용하기
-db 진입하기
mysql> USE opentutorials;
-opentutorials라는 db를 사용
-table을 만들기: table을 만드는 것은 마치 엑셀시트 하나를 만드는것과 같다고 보면 된다. MySQL monitor에서는 SQL 언어를 통해서 시트를 생성한다고 생각하면 된다.
---------------------------------------------------------
mysql> CREATE TABLE `topic`
-> `id` int(11) NOT NULL AUTO_INCREMENT,
-> `title` varchar(100) NOT NULL,
-> `description` text NOT NULL,
-> `author` varchar(30) NOT NULL,
-> `created` datetime NOT NULL,
-> PRIMARY KEY(id)
-> ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
---------------------------------------------------------
*아래는 각각의 코드 설명이다.
mysql> CREATE TABLE `topic`
-topic 이라는 이름 (아무 이름이나 가능하다)의 table을 생성한다.
-grave accent key(작은따옴표랑 헷갈리면 안된다. ~ (물결) 아래에 있는 ` 를 써줘야한다)를 활용하여 text가 문법이 아니라고 알려주는 것이다.
-; (semi-colon)을 뒤에 쓰지 않았기 때문에 엔터를 눌러도 계속 이어서 써진다.
-> `id` int(11) NOT NULL AUTO_INCREMENT,
-id값은 int 라고 명시해 놓고, not null이란 말은 값이 꼭 필요하다는 뜻이다.
-auto_increment는 뒤에 또 설명하겠지만, 자동으로 값을 순차적으로 준다는 뜻이다.
-AUTO_INCREMENT 가 입력됨: 행이 추가 될 때마다 값이 1씩 증가하는 속성
-수정/삭제할 행을 규정할 수 있는 가장 정확한 값은 id값
-> `title` varchar(100) NOT NULL,
-title이라는 값은 100글자 안의 정보다라는 것을 명시한다. 100자가 넘어가면 글자가 짤린다.
-> `description` text NOT NULL,
-description 값은 text, 즉 방대한 양의 정보를 담아도 된다는 것을 의미한다.
-> `author` varchar(30) NOT NULL,
-author 또한 30자 이내의 글자 정보다라는 것을 명시한 것이다.
-> `created` datetime NOT NULL,
-created는 datetime, 즉 시간-날짜 정보라는 것을 명시해주었다.
-> PRIMARY KEY(id)
-성능을 위해 사용하는 옵션...이라고 한다.
-> ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-semi-colon을 쓰면 확인이 된다.
이제 만들어진 table을 확인해 보겠다.
mysql> show tables:
-위에서 만들어진 table을 볼 수 있다.
-table과 엑셀의 시트는 거의 동일하다. 엑셀의 시트는 id 값에 1, 2, 3, 4와 같은 int 형식 외에 다른 형식 (four 과 같은 str)이 와도 상관 없다. 이는 나중에 데이터 분석에서 문제를 불러일으킬 수 있다. 반면 db의 table에는 꼭 지정된 값만 와야한다.
-이런 db의 미덕은 '엄격함'이다 (값을 제한해주는 등...)
*값을 입력하기: 행/열(칼럼) 추가: 만들어진 테이블에 정보를 입력시키는 명령어다.
mysql> INSERT INTO `topic`(title, description, author, created) VALUES('about javascript', 'JavaScript is great', 'egoing', '2015-4-10 12:20:05');
-id에는 값을 입력하지 않았다. 앞에 auto_increment를 적용시켰기 때문이다.
-value 뒤에 순서대로 값을 입력하면 내용이 추가된다.
-문자를 입력할 때는 따옴표 (단따움표), 컬럼이나 테이블 이름은 그레이브 엑센트(`)를 쓰는 것을 헷갈리지 말자
*데이터를 가져오는 명령 (*** 매우중요): 이제 써준 데이터를 쭉 가져와보았다.
mysql> SELECT * FROM topic;
-select: 가져온다, from 이후의 값에서... 이 사이의 *는 column 값을 넣는 것이다.
-즉 topic에서 * (전체) 를 가져온다는 명령어이다.
-* 대신 가져오고 싶은 것만 쓰면 그것만 가져온다
ex) mysql >SELECT title, author FROM topic; # title, autho만 가져오기
*데이터가 길어서 화면이 이상하게 나오는 것은 데이터가 이상한 것이 아니라 MySQL monitor에서 제대로 보이지 않는 것 뿐이다. 이럴 땐 정보가 많은(text 형식의) description 빼고만 하면 잘 나온다.
*기타 데이터를 select 하는 법
mysql> SELECT id, title, author, created FROM topic WHERE id=3;
- WHERE은 뒤에 나오는 값만 가져온다. 즉 id가 3인 값을 가져오는 것
mysql> SELECT id, title, author, created FROM topic ORDER BY id DESC;
-id 값을 descendent하게 정렬한다는 뜻, 즉 id 값을 내림차순으로 정렬한다는 것이다.
'etc > 생활코딩-웹프로그래밍' 카테고리의 다른 글
06 PHP 실습- php를 사용하여 html 문서의 정보 분리하기 (0) | 2016.12.31 |
---|---|
05 JavaScript 실습 (0) | 2016.12.31 |
04 UI와 API, 프로그래밍을 어떻게 접근할 것인가? (0) | 2016.12.31 |
03_2 javascript, php를 활용한 로그인 기능, 반복문, 배열, 함수 (0) | 2016.12.31 |
03_1JavaScript & PHP 기초- html에 js, php 삽입하기 (0) | 2016.12.31 |