Skip to main content

MYSQL v1.0 </doc>

FITA LUX

MySQL은 오픈 소스 관계형 데이터베이스 관리 시스템(RDBMS)입니다.

MySQL은 다중 사용자, 다중 스레드 RDBMS로서, 데이터의 안정성과 보안성을 제공합니다. MySQL은 대부분의 운영 체제에서 작동하며, 웹 애플리케이션 개발, 데이터 분석, 빅 데이터, 클라우드 기반 애플리케이션 등에 많이 사용됩니다.

MySQL은 SQL(Structured Query Language)을 사용하여 데이터를 관리합니다. SQL은 데이터베이스에 저장된 데이터를 조작하기 위한 표준적인 언어로서, 데이터를 검색, 삽입, 업데이트, 삭제하는데 사용됩니다. MySQL은 이러한 SQL 문을 이용하여 데이터를 쿼리하고, 데이터의 무결성을 유지하며, 데이터베이스를 관리합니다.

MySQL은 사용이 간편하며, 대용량 데이터베이스를 처리할 수 있는 고성능 기능을 제공합니다. 또한, 오픈 소스로서, 다양한 개발자들이 지속적으로 개발 및 유지보수하고 있어, 사용자들이 다양한 문제들을 해결할 수 있는 방법을 제공합니다.

MySQL은 PHP 스크립트 언어와 상호 연동이 잘 되면서 오픈소스로 개발된 무료 프로그램입니다. 그래서 홈페이지나 쇼핑몰(워드프레스, Cafe24, 그누보드, 제로보드) 등 가장 일반적으로 사용하고 있습니다.

MAMP란 웹사이트를 개발할 때 쓰이는 기술 스택인 mac05, Apache, MySQL, PHP의 약어이자 솔루션 스택이다. https://www.mamp.info/en/downloads/

php 정보 확인

phpinfo()
정보 파일 수정 위치: Loaded Configuration File C:\MAMP\conf\php8.0.1\php.ini
에러 표시 : display_errors = on
캐시 설정 : opcache.enable = 0
php 관리자 페이지 : http://localhost/phpMyAdmin/

MYSQL 실행

윈도우 : cd /MAMP/bin/mysql/bin
로그인 : mysql -uroot(아이디) -proot(비밀번호)
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.7.24 MySQL Community Server (GPL)

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
맥 : cd /Applications/MAMP/Library/bin
로그인 : ./mysql -uroot(아이디) -proot(비밀번호)
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.7.24 MySQL Community Server (GPL)

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
show databases;
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)
create database 데이터베이스 이름;
mysql> create database sample01;
Query OK, 1 row affected (0.00 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sample01           |
| sys                |
+--------------------+
5 rows in set (0.00 sec)
use 데이터베이스 이름;
mysql> use sample01;
Database changed
drop database 데이터베이스 이름;
mysql> drop database sample01;
Query OK, 0 rows affected (0.00 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)
create table 테이블 이름;
 create table members(
    memberID int(10) unsigned auto_increment,
    youEmail varchar(40) NOT NULL,
    youName varchar(10) NOT NULL,
    youPass varchar(20) NOT NULL,
    youBirth int(10) NOT NULL,
    youAge int(5) NOT NULL,
    regTime int(30) NOT NULL,
    PRIMARY KEY(memberID)
    ) charset=utf8;
create table 테이블 이름;
 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;
show tables;
mysql> show tables;
+--------------------+
| Tables_in_sample01 |
+--------------------+
| member             |
+--------------------+
1 row in set (0.00 sec)
desc 테이블 이름;
mysql> desc member;
+------------+------------------+------+-----+---------+----------------+
| Field      | Type             | Null | Key | Default | Extra          |
+------------+------------------+------+-----+---------+----------------+
| myMemberID | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| youEmail   | varchar(40)      | NO   |     | NULL    |                |
| youName    | varchar(20)      | NO   |     | NULL    |                |
| youPass    | varchar(20)      | NO   |     | NULL    |                |
| youBirth   | int(20)          | NO   |     | NULL    |                |
| youAge     | int(5)           | NO   |     | NULL    |                |
| regTime    | int(20)          | NO   |     | NULL    |                |
+------------+------------------+------+-----+---------+----------------+
7 rows in set (0.01 sec)
drop table 테이블 이름;
mysql> drop table member;
Query OK, 0 rows affected (0.07 sec)

mysql> show tables;
Empty set (0.00 sec)
truncate table 테이블 이름; (틀은 두고 내용만 삭제)
mysql> truncate table member;
Query OK, 0 rows affected (0.07 sec)

mysql> show tables;
Empty set (0.00 sec)
INSERT INTO 테이블명(필드명) VALUES

    INSERT INTO members(youEmail, youName, youPass, youBirth, youAge, regTime) VALUES("aimee00418@gmail.com","권현정","1234","19830211","39","03140316");
    INSERT INTO members(youEmail, youName, youPass, youBirth, youAge, regTime) VALUES("webstoryboy@naver.com","황상연","1234","19990304","26","03140316");
    INSERT INTO members(youEmail, youName, youPass, youBirth, youAge, regTime) VALUES("gp2617@naver.com","천설희","1234","19950313","29","03140316");
    INSERT INTO members(youEmail, youName, youPass, youBirth, youAge, regTime) VALUES("dsy1943@naver.com","여다슬","1943","20011227","23","03140316");
    INSERT INTO members(youEmail, youName, youPass, youBirth, youAge, regTime) VALUES("1346zany@gmail.com","이승연","1234","19991216","25","03140316");
    INSERT INTO members(youEmail, youName, youPass, youBirth, youAge, regTime) VALUES("ebmdols@naver.com","장진용","1234","19940401","26","03140316");
    INSERT INTO members(youEmail, youName, youpass, youBirth, youAge, regTime) VALUES("jo0132@naver.com","노지영","1234","19950323","29","03140316");
    INSERT INTO members(youEmail, youName, youPass, youBirth, youAge, regTime) VALUES("skadldldl123@gmail.com","안교남","1234","19920923","32","03140316");
    INSERT INTO members(youEmail, youName, youPass, youBirth, youAge, regTime) VALUES("ehcjswo1@gmail.com","김도현","123","19951003","29","03140316");
    INSERT INTO members(youEmail, youName, youPass, youBirth, youAge, regTime) VALUES("goed0522@gmail.com","변우현","1234","20000629","24","03141516");
    INSERT INTO members(youEmail, youName, youPass, youBirth, youAge, regTime) VALUES("yuna243441@naver.com","이유나","1234","20020508","22","03140316");
    INSERT INTO members(youEmail, youName, youPass, youBirth, youAge, regTime) VALUES("im.kebab00@gmail.com","이요셉","1234","19990315","26","03140316");
    INSERT INTO members(youEmail, youName, youpass, youBirth, youAge, regTime) VALUES("ture403@gmail.com","전윤기","1234","19920210","32","03140316");
    INSERT INTO members(youEmail, youName, youPass, youBirth, youAge, regTime) VALUES("dongjin6539@naver.com","신동진","1234","19960709","28","03140316");
    INSERT INTO members(youEmail, youName, youPass, youBirth, youAge, regTime-) VALUES("gnsrbdi@naver.com","이훈규","1234","19950227","29","03140316");
    INSERT INTO members(youEmail, youName, youPass, youBirth, youAge, regTime) VALUES("hunmi961119@gmail.com","진현미","1234","19961119","28","03140316");
    INSERT INTO members(youEmail, youName, youPass, youBirth, youAge, regTime) VALUES("getgrovy@gmail.com","정희석","1234","19990101","26","03140316");
    INSERT INTO members(youEmail, youName, youPass, youBirth, youAge, regTime) VALUES("kshkmn0929@naver.com","김도현","0929","20020929","22","03140316");
    INSERT INTO members(youEmail, youName, youPass, youBirth, youAge, regTime) VALUES("didrn94553@gmail.com","이양구","1234","19941212","30","03140316");
    INSERT INTO members(youEmail, youName, youPass, youBirth, youAge, regTime) VALUES("ghkddn132@naver.com","정황우","1234","19970130","25","03140316");
    INSERT INTO members(youEmail, youName, youPass, youBirth, youAge, regTime) VALUES("esansi@naver.com","김현빈","1234","19970524","27","03140316");
    INSERT INTO members(youEmail, youName, youPass, youBirth, youAge, regTime) VALUES("lee3ll@naver.com","이은지","1234","19930311","31","03140316");
    INSERT INTO members(youEmail, youName, youPass, youBirth, youAge, regTime) VALUES("dlscks0930@naver.com","황인찬","1234","19980930","26","03140316");
    INSERT INTO members(youEmail, youName, youPass, youBirth, youAge, regTime) VALUES("hyejeong3283@gmail.com","이혜정","1234","19940622","30","03140316");
    INSERT INTO members(youEmail, youName, youPass, youBirth, youAge, regTime) VALUES("jeongyouna_@naver.com","정유나","1234","19950606","29","03140316");
    INSERT INTO members(youEmail, youName, youPass, youBirth, youAge, regTime) VALUES("dripidea77@gmail.com","김시연","1234","19930313","31","03140316");
    INSERT INTO members(youEmail, youName, youPass, youBirth, youAge, regTime) VALUES("daanbi1345@gmail.com","조은경","1234","19930205","31","03140316");
    INSERT INTO members(youEmail, youName, youPass, youBirth, youAge, regTime) VALUES("itshena01@gmail.com","조한미","1234","19930211","31","03140316");




    INSERT INTO reviews(memberID, youText, regTime) VALUES("4", "정말 감사합니다. 잘 보고 갑니다.", "1234567");
    INSERT INTO reviews(memberID, youText, regTime) VALUES("1", "하나쯤 있으면 도움이 될 것 같아요.", "1234567");
    INSERT INTO reviews(memberID, youText, regTime) VALUES("5", "광고만큼 효과가 좋지는 않네요.", "1234567");
    INSERT INTO reviews(memberID, youText, regTime) VALUES("8", "적은 돈은 아닌데 생각보다 금방 망가지네요.", "1234567");
    INSERT INTO reviews(memberID, youText, regTime) VALUES("9", "많이 파세요.", "1234567");
    INSERT INTO reviews(memberID, youText, regTime) VALUES("10", "쓸만해요", "1234567");
    INSERT INTO reviews(memberID, youText, regTime) VALUES("3", "가격도 괜찮고 품질도 괜찮아요.", "1234567");
    INSERT INTO reviews(memberID, youText, regTime) VALUES("6", "정말 감사합니다. 잘 보고 갑니다.", "1234567");
    INSERT INTO reviews(memberID, youText, regTime) VALUES("2", "번창하세요.", "1234567");
    INSERT INTO reviews(memberID, youText, regTime) VALUES("7", "잘 구매했습니다.", "1234567");
SELECT 필드명FROM 테이블명 WHERE 조건
전체 데이터 불러오기
 SELECT * FROM member

memberID가 1번인 경우만 불러오기

 SELECT * FROM member WHERE memberID = 1;

memberID가 1번이 아닌 경우만 경우만 불러오기

 
    SELECT * FROM member WHERE memberID <> 1;

memberID가 5번~10번인 경우만 불러오기

 
    SELECT * FROM member WHERE memberID >= 5 AND memberID <=10;

youAge가 30 이상 40 이하인 경우만 불러오기

 
    SELECT * FROM member WHERE youAge >= 30 AND youAge <=40;

youAge가 30 이상 40 이하인 경우만 불러오기

 
  1.  SELECT * FROM member WHERE youAge >= 30 AND youAge <=40;
  2.  SELECT *FROM member WHERE youAge BETWEEN 30 AND 40

youAge가 30 이상 40 이하가 아닌 경우만 불러오기

 
    SELECT *FROM member WHERE youAge NOT BETWEEN 30 AND 40;

memberID가 1, 5, 10, 15번만 불러오기

 
    SELECT * FROM member WHERE memberID IN (1,5,10,15);

youName 중에 "연" text가 포함된 이름 불러오기

 
    SELECT * FROM member WHERE youName LIKE '%연%';

youName 중에 "김"으로 시작하는 이름 불러오기


    SELECT * FROM member WHERE youName LIKE '김%';

youName 중에 "현"으로 끝나는 이름 불러오기

 
    SELECT * FROM member WHERE youName LIKE '%현';

youName 중에 "상"이 들어가는 이름 불러오기

 
    SELECT * FROM member WHERE youName LIKE '_상_';

youName 중에 "김" 또는 "이"가 들어가는 이름 불러오기

 
    SELECT * FROM member WHERE youName LIKE '김%' OR youName LIKE '이%';

youName(이름)만 불러오기

 
    SELECT youName FROM member;

youName(이름)만 불러오기 (내림차순)

 
    SELECT youName FROM member ORDER BY youName DESC;

youName(이름)만 불러오기 (오름차순)

 
    SELECT youName FROM member ORDER BY youName ASC;

youName(이름), youAge(나이) 불러오기

 
    SELECT youName, youAge FROM member;

youName(이름), youAge(나이) 불러오는데 30살 이상만

 
    SELECT youName, youAge FROM member WHERE youAge >=30;

youName(이름), youAge(나이) 불러오는데 성이 김이고, 25살 이상인 사람만 불러오기

 
    SELECT youName FROM member WHERE youName LIKE '김%' AND youAge >=25;

생일이 3월 생인 사람만 불러오기

 
    SELECT youName FROM member WHERE youBirth LIKE '____03__';

나이가 25세 이상이고 회원 아이디가 2 또는 9인 회원 불러오기

 
    1. SELECT * FROM member WHERE (memberID=2 OR memberID=9) AND youAge >= 25;
    2. SELECT * FROM member WHERE youAge >=25 AND memberID IN(2,9);

회원 데이터를 5개만 불러오기

 
    SELECT * FROM member LIMIT 5;

회원 데이터를 5 이후부터 5개만 불러오기

 
    SELECT * FROM membe LIMIT 5, 5;

회원 이메일만 10 이후로 10개만 불러오기

 
    SELECT youEmail FROM member LIMIT 10, 10;

나이 중에 중복되는 값을 빼고 불러오기

 
    SELECT DISTINCT youAge FROM member;

이름의 갯수 불러오기

 
    1. SELECT count(youName) FROM member;
    2. SELECT count(*) FROM member;

비밀번호가 1234인 회원 중 나이가 30세 이상인 회원의 이름만 불러오기

 
    SELECT youName FROM member WHERE youPass=1234 AND youAge >=30;

회원 중 gmail을 사용하는 사용자만 불러오기

 
    SELECT * FROM member WHERE youEmail LIKE '%gmail.com%';

회원 email 기준으로 10명 불러오기

 
    SELECT * FROM member WHERE youEmail LIKE '%gmail.com%';

youEmail 중에 데이터가 없는 멤버 데이터 불러오기

 
    SELECT * FROM members WHERE youPhone IS NULL;

youEmail 중에 데이터가 있는 멤버 데이터 불러오기

 
    SELECT * FROM members WHERE youPhone IS NOT NULL;
UPDATE 테이블명 SET 컬럼명 조건
 UPDATE member SET 컬럼명 WHERE 조건

모든 회원의 비밀번호를 1234로 수정하기


    UPDATE member SET youPass = "1234";

memberID가 3번인 회원만 비밀번호를 9999로 수정하기


    UPDATE member SET youPass = "9999" WHERE memberID=3;

memberID가 5번에서 10번인 회원만 비밀번호를 7777로 수정하기


    UPDATE member SET youPass="7777" WHERE memberID BETWEEN 5 AND 10;

memberID가 5번에서 10번인 회원만 비밀번호를 7777로 수정하기


    UPDATE member SET youPass="7777" WHERE memberID BETWEEN 5 AND 10;

비밀번호를 "1234567"로 패스워드를 내림차순으로 10개만 변경


    UPDATE member SET youPass="1234567" WHERE ORDER BY youPass DESC LIMIT 10;

내림차순으로 정렬한 이름을 기준으로 위에서부터 10명의 비밀번호를 "9999"로 변경


    SELECT * FROM member ORDER BY youName DESC;
DELETE FROM 테이블명 WHEHE 조건
 DELETR FROM member WHERE 조건 

멤버 ID가 5번인 사람만 삭제


    DELETE FROM member WHERE memberID = 5;

비밀번호가 1234인 회원들만 삭제


    DELETE FROM member WHERE youPass="1234";

멤버ID를 기준으로 5번째 멤버까지 삭제


    DELETE FROM member ORDER BY memberID LIMIT 5;

멤버ID를 기준으로 2번, 3번, 6번 삭제


    DELETE FROM member WHERE memberID IN(2, 3, 6);

members 테이블에서 Email 중 naver.com이 들어간 멤버를 삭제


    DELETE FROM members WHERE youEmail LIKE '%@naver.com';
ALTER TABLE [테이블 명] ADD [추가할 필드 명] AFTER [필드 위치]

멤버 테이블에 핸드폰 번호 필드를 추가

ALTER TABLE members ADD youPhone varchar(20) NOT NULL;

멤버 테이블에 핸드폰 번호 필드를 youAge 뒤에 추가

ALTER TABLE members ADD youPhone varchar(20) NOT NULL AFTER youAge;
ALTER TABLE [테이블 명] MODIFY [수정할 필드 명]
 ALTER TABLE members MODIFY youPhone int(20) NOT NULL;       //(varchar -> int로 수정)
ALTER TABLE [테이블 명] DROP [삭제할 필드 명]
ALTER TABLE members DROP youPhone;
SELECT [필드명] FROM [테이블명 엘리어스] JOIN [테이블명 엘리어스] ON [기준이 되는 조건문]

두 개의 테이블(members, review) 병합

SELECT m.youEmail, m.youName, r.youText, r.regTime FROM members m JOIN reviews r ON (m.memberID = r.memberID);

두 개의 테이블(members, review) 병합하면서 필드명 변경 (AS)

 SELECT m.youEmail, m.youName, r.youText, r.regTime AS reviewRegTime FROM members m JOIN reviews r ON (m.memberID = r.memberID);

두 개의 테이블(members, review) 병합 - LEFT (왼쪽 테이블 기준)

SELECT m.youEmail, m.youName, r.youText, r.regTime FROM members m LEFT JOIN reviews r ON (m.memberID = r.memberID);
ALTER TABLE [테이블 명] MODIFY [수정할 필드 명]
 ALTER TABLE members MODIFY youPhone int(20) NOT NULL;       //(varchar -> int로 수정)
ALTER TABLE [테이블 명] DROP [삭제할 필드 명]
ALTER TABLE members DROP youPhone;

    create table schoolRecode (
        studentID int(10) unsigned NOT NULL auto_increment comment '출석번호',
        class tinytext comment "소속클래스(학급반)",
        english tinytext comment "영어점수",
        math tinytext comment "수학점수",
        science tinytext comment "과학점수",
        coding tinytext comment "프로그래밍점수",
        PRIMARY KEY(studentID)
    ) charset=utf8;

    INSERT INTO schoolRecode(english, math, science, coding) VALUES(50, 10, 20, 100);
    INSERT INTO schoolRecode(class, english, math, science, coding) VALUES(1, 50, 10, 20, 100);
    INSERT INTO schoolRecode(class, english, math, science, coding) VALUES(2, 50, 40, 30, 80);
    INSERT INTO schoolRecode(class, english, math, science, coding) VALUES(3, 60, 35, 55, 95);
    INSERT INTO schoolRecode(class, english, math, science, coding) VALUES(4, 75, 80, 65, 55);
    INSERT INTO schoolRecode(class, english, math, science, coding) VALUES(5, 65, 25, 35, 90);
    INSERT INTO schoolRecode(class, english, math, science, coding) VALUES(2, 50, 88, 70, 100);
    INSERT INTO schoolRecode(class, english, math, science, coding) VALUES(4, 35, 70, 60, 80);
    INSERT INTO schoolRecode(class, english, math, science, coding) VALUES(5, 15, 10, 50, 90);
    INSERT INTO schoolRecode(class, english, math, science, coding) VALUES(1, 35, 45, 65, 75);
SELECT count(필드명 or *) FROM [테이블 명]

레코드의 갯수 구하기 (NULL값 비포함)

SELECT count(class) FROM schoolRecode;

레코드의 합계 구하기 (포함)

SELECT count(*) FROM schoolRecode;

레코드의 합계 구하기

SELECT sum(필드명) FROM [테이블 명]

coding 필드의 합계 구하기

SELECT sum(coding) FROM schoolRecode;

coding 필드에서 출석번호가 1~4번인 사람 까지만의 합계를 구하기

SELECT sum(coding) FROM schoolRecode WHERE studentID >=1 AND studentID <=4;

conding 필드에서 가장 높은 점수 구하기

SELECT max(coding) FROM schoolRecode;

conding 필드에서 가장 낮은 점수 구하기

SELECT min(coding) FROM schoolRecode;

conding 필드의 평균 구하기

SELECT avg(coding) FROM schoolRecode;
SELECT [필드명] FROM [테이블 명] GROUP BY [필드명]

class 별로 english 필드 평균값 구하기

SELECT class, avg(english) FROM schoolRecode WHERE class IN(1,2,3,4,5) GROUP BY class;

class 별로 math 필드 합계 구하기

SELECT class, sum(math) FROM schoolRecode WHERE class IN(1,2,3,4,5) GROUP BY class;

class 별로 math 필드 합계 점수가 70 이상을 구하기

SELECT class, sum(math) FROM schoolRecode WHERE class IN(1,2,3,4,5) GROUP BY class HAVING sum(math) >= 70;
SELECT [필드명] FROM [테이블명] ORDER BY [필드명] DESC(내림차순) or ASC(오름차순)

studentID를 출력하면서 english 필드를 내림차순(최고점->최하점)으로 정렬

SELECT studentID, english FROM schoolRecode ORDER BY english DESC;

studentID를 출력하면서 english 필드를 오름차순(최하점->최고점)으로 정렬

SELECT studentID, english FROM schoolRecode ORDER BY english ASC;

class 별 math 필드의 총합을 내림차순(최고점->최하점)으로 정렬

SELECT class, sum(math) FROM schoolRecode WHERE class IN(1,2,3,4,5) GROUP BY class ORDER BY sum(math) DESC;