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이 설치 된 후 터미널에서 실행을 하게 되면 다음과 같은 창이 나오는데 그러면 로그인이 성공 한겁니다.
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");
다음시간에 계속…
This post is licensed under CC BY 4.0 by the author.