Post

mysql 알아보기

Mysql이란??

MySQL은 관계형 데이터베이스 관리 시스템(RDBMS) 중 하나로, 데이터를 관리하고 조직적으로 사용할 수 있도록 도와주는 소프트웨어입니다. MySQL은 SQL(Structured Query Language)을 사용하여 데이터베이스와 상호 작용합니다. SQL은 데이터를 저장, 검색, 수정, 삭제 등을 할 수 있게 해주는 표준 프로그래밍 언어입니다.

MySql 설치

MAMP란 웹사이트를 개발할 떄 쓰이는 기술인 macOS, Apache, MySQL, PHP의 약어이자 솔루션 스택입니다.

https://www.mamp.info/namo/en/#download

MySql 실행하기

터미널을 실행하고 다음고 같이 작성 해줍니다.

맥 : cd/Applications/MAMP/Library/bin

로그인 : ./mysql -uroot -proot

mysql이 설치 된 후 터미널에서 실행을 하게 되면 다음과 같은 창이 나오는데 그러면 로그인이 성공 한겁니다.

image

SQL 개념

SQL은 데이터베이스를 조작하기 위한 언어로, 구조화된 질의 언어입니다.

  • 관계형 데이터베이스(Relational Database)를 조작하는 프로그래밍 언어
  • 관계 대수나 관계 해석을 기초로 하는 고급 데이터 베이스 언어
  • ANSI와 ISO에서 관계형 데이터베이스 표준 언어로 체택함
  • 프로그램에 처리 방법을 기술하지 않아도 되는 비절차적 언어

SQL 명령어 종류

  • 데이터 정의 언어(DDL: Defnition Language)
  • 데이터 조작 언어(DML: Manipulation Language)
  • 데이터 제어 언어(DCL: Contorl Language)
  • 프로그램에 처리 방법을 기술하지 않아도 되는 비절차적 언어

데이터 정의 언어 (DDL)

  • CREATE : 데이터베이스, 테이블, 뷰 등을 작성
  • ALTER : 데이터베이스, 테이블의 구조를 변경
  • DROP : 데이터베이스, 테이블, 뷰 등을 삭제

데이터 정의 언어 (DML)

  • SELECT : 테이블에서 데이터를 검색
  • INSERT : 테이블에서 새로운 데이터를 추가
  • UPDATE : 테이블에서 저장된 데이터를 갱신
  • DELETE : 테이블에서 저장되어 있는 행을 삭제

데이터 정의 언어 (DCL)

  • COMMIT : 데이터의 변경을 확정
  • GRANT : 데이터를 조작하는 권한을 사용자에게 부여
  • REVOKE : 데이터를 조작하는 권한 해제
  • ROLLBACK : 데이터의 변경을 취소

데이터 베이스 보기

show databases;

확인하게 되면 해당 터미널에서 아래와 같이 나오는것이 확인 됩니다.

mysql> show databases;
 +--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

데이터 베이스 만들기

create databases 이름;

mysql> create database test;
 +--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test               |
+--------------------+
5 rows in set (0.00 sec)

이렇게 하면 database에 test가 만들어진게 확인이 됩니다.

데이터 베이스 삭제

drop datadases 이름;

mysql> drop datadase test;
Query OK, 1 rows affected (0.02 sec)

mysql> show databases;
 +--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

데이터 베이스를 삭제할때는 delete가아닌 drop으로 삭제합니다.

데이터 베이스 사용하기

use 이름;

mysql> use test;
Database changed

데이터 베이스를 사용하고 싶을땐 use를 사용하면 됩니다.

테이블 만들기

create table 이름;

create table members(
    memberID int(10) unsigned auto_increment,
    youName varchar(10) NOT NULL,       
    youPass varchar(10) NOT NULL,
    youAge int(5) NOT NULL,
    youBirth int(5) NOT NULL,
    regTime int(30) NOT NULL,
    PRIMARY KEY(memberID)
)charset=utf8;

사용할 데이터 베이스를 선택 후 테이블을 만들면 됩니다.

테이블 구조보기

desc 이름;

 mysql> desc members;                      
+----------+------------------+------+-----+---------+----------------+
| Field    | Type             | Null | Key | Default | Extra          |
+----------+------------------+------+-----+---------+----------------+
| memberID | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| youName  | varchar(10)      | NO   |     | NULL    |                |
| youPass  | varchar(10)      | NO   |     | NULL    |                |
| youAge   | int(5)           | NO   |     | NULL    |                |
| youBirth | int(5)           | NO   |     | NULL    |                |
| regTime  | int(30)          | NO   |     | NULL    |                |
+----------+------------------+------+-----+---------+----------------+
6 rows in set (0.01 sec)

테이블 구조를 보고 싶을 경우 desc 명령어를 사용하여 테이블 구조를 봅니다.

테이블 데이터 입력

INSERT INTO 테이블 이름 (필드명) VALUES(값);

INSERT INTO members(youName, youPass, youAge, youBirth, regTime) VALUES("이름", "번호", "나이", "생일", "1023958375");
INSERT INTO members(youName, youPass, youAge, youBirth, regTime) VALUES("이름", "번호", "나이", "생일", "1023958375");
INSERT INTO members(youName, youPass, youAge, youBirth, regTime) VALUES("이름", "번호", "나이", "생일", "1231231233");
INSERT INTO members(youName, youPass, youAge, youBirth, regTime) VALUES("이름", "번호", "나이", "생일", "1104781152");
INSERT INTO members(youName, youPass, youAge, youBirth, regTime) VALUES("이름", "번호", "나이", "생일", "1111100000");
INSERT INTO members(youName, youPass, youAge, youBirth, regTime) VALUES("이름", "번호", "나이", "생일", "1023958375");
INSERT INTO members(youName, youPass, youAge, youBirth, regTime) VALUES("이름", "번호", "나이", "생일", "1474187756");
INSERT INTO members(youName, youPass, youAge, youBirth, regTime) VALUES("이름", "번호", "나이", "생일", "1023958375");
INSERT INTO members(youName, youPass, youAge, youBirth, regTime) VALUES("이름", "번호", "나이", "생일", "0123456744");
INSERT INTO members(youName, youPass, youAge, youBirth, regTime) VALUES("이름", "번호", "나이", "생일", "1023958375");
INSERT INTO members(youName, youPass, youAge, youBirth, regTime) VALUES("이름", "번호", "나이", "생일", "1231223123");
INSERT INTO members(youName, youPass, youAge, youBirth, regTime) VALUES("이름", "번호", "나이", "생일", "0123456789");
INSERT INTO members(youName, youPass, youAge, youBirth, regTime) VALUES("이름", "번호", "나이", "생일", "1023952467");
INSERT INTO members(youName, youPass, youAge, youBirth, regTime) VALUES("이름", "번호", "나이", "생일", "1023958375");
INSERT INTO members(youName, youPass, youAge, youBirth, regTime) VALUES("이름", "번호", "나이", "생일", "1023958375");

테이블 삭제

drop table 이름;

mysql> drop table members;
Query OK, 0 rows affected (0.01 sec)

테이블 삭제도 똑같이 drop을 사용하면 됩니다.

테이블 초기화

truncate table 이름;

mysql> truncate table members;
Query OK, 0 rows affected (0.01 sec)

테이블을 초기화 하기위해 truncate를 사용하여 초기화를 진행할 수 있습니다.

테이블 합치기 (JOIN)

SELECT [필드명] FROM [A테이블.앨리어스] JOIN [B테이블.앨리어스] ON [기준이 되는 조건문]
mysql> SELECT m.youName, m.youAge, r.youText, r.regTime FROM members m JOIN reviews r ON (m.memberID = r.memberID);
+-----------+--------+----------------------------------+------------+
| youName   | youAge | youText                          | regTime    |
+-----------+--------+----------------------------------+------------+
| 김진우      |     21 | 정말 감사합니다.                     | 1023958375 |
| 황상연      |     33 | 훌륭합니다.                         | 1023958375 |
| 최선화      |     26 | 감사합니다.                         | 1023958375 |
| 김현민      |     32 | 정말 놀랍네요.                       | 1023958375 |
| 박정민      |     29 | 정말 멋져요.                        | 1023958375 |
| 박소현      |     29 | 좋아용.                            | 1023958375 |
| 이재혁      |     24 | 구독과 알람설정.                     | 1023958375 | 
| 황인지      |     20 | 피그+마그마=피그마                    | 1023958375 |
| 남윤서      |     19 | 용이넘어지면?띠용                     | 1023958375 |
| 박진아      |     33 | 용이올라가면?올라가용.                 | 1023958375 |
| 안지은      |     33 | 용용용                             | 1023958375 |
+-----------+--------+----------------------------------+------------+
11 rows in set (0.02 sec)
create table members(
    memberID int(10) unsigned auto_increment,
    youName varchar(10) NOT NULL,       
    youPass varchar(10) NOT NULL,
    youAge int(5) NOT NULL,
    youBirth int(5) NOT NULL,
    regTime int(30) NOT NULL,
    PRIMARY KEY(memberID)
)charset=utf8;

create table reviews(
    reviewID int(10) unsigned auto_increment,
    memberID int(10) unsigned,
    youText tinytext NOT NULL,
    regTime int(30) NOT NULL,
    PRIMARY KEY(reviewID)
)charset=utf8;

INSERT INTO members(youName, youPass, youAge, youBirth, regTime) VALUES("황상연", "1234", "33", "990304", "1023958375");
INSERT INTO members(youName, youPass, youAge, youBirth, regTime) VALUES("남윤서", "1234", "19", "060121", "1023958375");
INSERT INTO members(youName, youPass, youAge, youBirth, regTime) VALUES("김진우", "1234", "21", "040416", "1231231233");
INSERT INTO members(youName, youPass, youAge, youBirth, regTime) VALUES("최선화", "1234", "26", "990123", "1104781152");
INSERT INTO members(youName, youPass, youAge, youBirth, regTime) VALUES("서대원", "1234", "26", "011019", "1111100000");
INSERT INTO members(youName, youPass, youAge, youBirth, regTime) VALUES("김현민", "1234", "32", "930604", "1023958375");
INSERT INTO members(youName, youPass, youAge, youBirth, regTime) VALUES("황인지", "1234", "20", "990315", "1474187756");
INSERT INTO members(youName, youPass, youAge, youBirth, regTime) VALUES("박정민", "1234", "29", "961017", "1023958375");
INSERT INTO members(youName, youPass, youAge, youBirth, regTime) VALUES("강서연", "1234", "27", "980420", "0123456744");
INSERT INTO members(youName, youPass, youAge, youBirth, regTime) VALUES("이재혁", "1215", "24", "010712", "1023958375");
INSERT INTO members(youName, youPass, youAge, youBirth, regTime) VALUES("박소현", "1234", "29", "960917", "1231223123");
INSERT INTO members(youName, youPass, youAge, youBirth, regTime) VALUES("김혜지", "1234", "28", "951002", "0123456789");
INSERT INTO members(youName, youPass, youAge, youBirth, regTime) VALUES("강경민", "1234", "28", "970611", "1023952467");
INSERT INTO members(youName, youPass, youAge, youBirth, regTime) VALUES("안지은", "1234", "33", "840816", "1023958375");
INSERT INTO members(youName, youPass, youAge, youBirth, regTime) VALUES("박진아", "1232", "33", "990304", "1023958375");

INSERT INTO reviews(memberID, youText, regTime) VALUES("3", "정말 감사합니다.", "1023958375");
INSERT INTO reviews(memberID, youText, regTime) VALUES("1", "훌륭합니다.", "1023958375");
INSERT INTO reviews(memberID, youText, regTime) VALUES("4", "감사합니다.", "1023958375");
INSERT INTO reviews(memberID, youText, regTime) VALUES("6", "정말 놀랍네요.", "1023958375");
INSERT INTO reviews(memberID, youText, regTime) VALUES("8", "정말 멋져요.", "1023958375");
INSERT INTO reviews(memberID, youText, regTime) VALUES("11", "좋아용.", "1023958375");
INSERT INTO reviews(memberID, youText, regTime) VALUES("10", "구독과 알람설정.", "1023958375");
INSERT INTO reviews(memberID, youText, regTime) VALUES("7", "피그+마그마=피그마", "1023958375");
INSERT INTO reviews(memberID, youText, regTime) VALUES("2", "용이넘어지면?띠용", "1023958375");
INSERT INTO reviews(memberID, youText, regTime) VALUES("15", "용이올라가면?올라가용.", "1023958375");
INSERT INTO reviews(memberID, youText, regTime) VALUES("14", "용용용", "1023958375");

다음시간에 계속…

image

This post is licensed under CC BY 4.0 by the author.