Skip to main content

Class v1.0 </doc>

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

MySQL은 데이터를 구조화하고 저장하기 위한 강력한 도구를 제공합니다.
그리고 데이터를 쉽게 추가, 수정, 삭제하고 검색할 수 있습니다.

MySQL은 다양한 운영 체제에서 실행될 수 있으며, 다양한 프로그래밍 언어와 함께 사용할 수 있습니다.

MySQL을 사용하면 대규모 데이터베이스를 효율적으로 관리할 수 있으며, 빠른 처리와 안정성을 제공할 수 있습니다.

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

MySQL설치

MAMP란 웹사이트를 개발할 때 쓰이는 기술 스택인 macOS, 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 4
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
show databases;

 mysql> show databases;
 +--------------------+
 | Database           |
 +--------------------+
 | information_schema |
 | mysql              |
 | performance_schema |
 | sys                |
 +--------------------+
 4 rows in set (0.01 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.02 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)    
create table 테이블이름;

create table member (
    memberID int(10)  auto_increment,
    youEmail varchar(40) NOT NULL,
    youName varchar(20) NOT NULL,
    youPass varchar(20) NOT NULL,
    youBirth int(20) NOT NULL,
    youAge int(5) NOT NULL,
    regTime int(20) NOT NULL,
    PRIMARY KEY (memberID)
) charset=utf8;

    create table reviews(
        reviewsID int(10)  auto_increment,
        memberID int(10) ,
        youEmail varchar(40) NOT NULL,
        youText tinytext NOT NULL,
        regTime int(30) NOT NULL,
        PRIMARY KEY(reviewsID)
    ) 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          |
+------------+------------------+------+-----+---------+----------------+
| memberID   | int(10)  | 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.00 sec)
drop table 테이블이름;

mysql> drop table member;
Query OK, 0 rows affected (0.01 sec)
mysql> show tables;
Empty set (0.00 sec)
 


INSERT INTO 테이블명(필드명) VALUE

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("dlscks0930@naver.com","황인찬","1234","19980930","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("jeongyouna_@naver.com","정유나","1234","19950606","29","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("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("hyejeong3283@gmail.com","이혜정","1234","19940622","30","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("dripidea77@gmail.com","김시연","1234","19930313","31","03140316");
INSERT INTO members(youEmail, youName, youPass, youBirth, youAge, regTime) VALUES("itshena01@gmail.com","조한미","1234","19930211","31","03140316");
INSERT INTO members(youEmail, youName, youPass, youBirth, youAge, regTime) VALUES("aimee00418@gmail.com","권현정","1234","19830211","39","03140316");
INSERT INTO 테이블명(필드명) VALUE

    INSERT INTO reviews(memberID, youText, regTime) VALUES("4","정말감사합니다","1234567")
    INSERT INTO reviews(memberID, youText, regTime) VALUES("14","별로네요, 잘 봤어요","4544567")
    INSERT INTO reviews(memberID, youText, regTime) VALUES("2","이건 정말 사야합니다","456456")
    INSERT INTO reviews(memberID, youText, regTime) VALUES("5","이거 사기에 가까워요","1234567")
    INSERT INTO reviews(memberID, youText, regTime) VALUES("7", "내용이 좋네요","1234567")
    INSERT INTO reviews(memberID, youText, regTime) VALUES("1","멋진 내용입니다","1234567")
    INSERT INTO reviews(memberID, youText, regTime) VALUES("9","이건 별루","123467")
    INSERT INTO reviews(memberID, youText, regTime) VALUES("4","절대사지마세요","567567")
    INSERT INTO reviews(memberID, youText, regTime) VALUES("2","정말감사합니다","1234567")
    INSERT INTO reviews(memberID, youText, regTime) VALUES("7","사기꾼","1234567")
INSERT INTO reviews(memberID, youText, regTime) VALUES("4","정말 감사합니다. 잘 봤어요","1234567"); INSERT INTO reviews(memberID, youText, regTime) VALUES("14","잘 봤어요","1234567"); INSERT INTO reviews(memberID, youText, regTime) VALUES("2","좋은 정보감사합니다","1234567"); INSERT INTO reviews(memberID, youText, regTime) VALUES("5","정말 감사합니다. 잘 봤어요","1234567"); INSERT INTO reviews(memberID, youText, regTime) VALUES("6","이건 사야합니다.","1234567"); INSERT INTO reviews(memberID, youText, regTime) VALUES("7","정말 감사합니다. 너무좋아요","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("4","정말 별로네요. 다시는 안살듯?","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;

memberID가 30번부터 40번 경우만 불러오기

select * from member WHERE memberID BETWEEN 30 AND 40

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

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

youName 중에 "연"텍스트가 포함된 이름만 불러오기

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

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

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

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

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

이름만 불러오기

SELECT youName FROM member;

이름과 나이(30살 이상) 불러오기

SELECT youName, youAge FROM member >= 30

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

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

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

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

나이가 25세 이상 이면서 김씨성을 가진 사람 이름 불러오기

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

나이가 25세 이상 이면서 id가 2 또는 9인 멤버 불러오기

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

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

SELECT * FROM member LIMIT 5;

회원 데이터를 다섯번째 부터 다섯개만 불러오기

SELECT * FROM member LIMIT 5, 5;

회원 이메일을 기준으로 10개만 불러오기 (11-20)

SELECT youEmail FROM member LIMIT 10, 10;

중복된 나이를 제외하고 불러오기

SELECT DISTINCT youAge FROM member

메일 쓰는 사람 갯수 불러오기

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

모든 사람의 비밀번호를 1234로 수정하기

UPDATE member SET youPass = "1234"

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

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

ID가 5번부터 10번 회원 비밀번호를 7777로 수정하기

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

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

SELECT youName FROM member ORDER BY youName DESC;

이름만 불러오기 (ASC: 올림차순)

SELECT youName FROM member ORDER BY youName ASC;

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

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

5번인 회원을 삭제하기

DELETE FROM member WHERE memberID = '5';

11,13,15번인 회원을 삭제하기

DELETE FROM member WHERE memberID IN(11, 13, 15);
UPDATE 테이블명 SET 컬럼명 조건


DELETE FROM 테이블명 WHERE 조건


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) DEFAULT "000-0000-0000"
ALTER TABLE members MODIFY youPhone int(20);
ALTER TABLE [테이블명] DROP [삭제할 필드명]
 ALTER TABLE members DROP youPhone;

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

SELECT [필드명] FROM [테이블명 앨리어스] JOIN [테이블명 앨리어스] ON [기준이 되는 조건문]
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) 합치기 : 왼쪽 테이블 기준

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

                        CREATE TABLE schoolRecode (
                            studentID int(10) unsigned NOT NULL AUTO_INCREMENT comment "학생번호",
                            class tinytext comment "소속클래스(반)",
                            english tinytext NOT NULL comment "영어점수",
                            math tinytext NOT NULL comment "수학점수",
                            science tinytext NOT NULL comment "과학점수",
                            coding tinytext NOT NULL 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, 40, 30, 22, 90);
                        INSERT INTO schoolRecode(class, english, math, science, coding) VALUES(2, 50, 40, 23, 80);
                        INSERT INTO schoolRecode(class, english, math, science, coding) VALUES(3, 60, 50, 24, 70);
                        INSERT INTO schoolRecode(class, english, math, science, coding) VALUES(4, 70, 60, 25, 60);
                        INSERT INTO schoolRecode(class, english, math, science, coding) VALUES(5, 80, 70, 26, 50);
                    
SELECT [필드명] FROM [테이블명 앨리어스] JOIN [테이블명 앨리어스] ON [기준이 되는 조건문]

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

레코드 갯수 구하기

SELECT count(class) FROM schoolRecode
SELECT count(*) FROM schoolRecode

레코드 합계 구하기

SELECT sum(cording) FROM schoolRecode

레코드 합계 구하기 (학생 아이디가 1~4)

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

가장 높은 코딩 점수 구하기

SELECT max(cording) FROM schoolRecode 

가장 낮은 코딩 점수 구하기

SELECT min(cording) FROM schoolRecode 

가장 높은 코딩 점수 구하기

SELECT avg(cording) FROM schoolRecode 

그룹별 집계

SELECT [필드명] FROM [필드명]GROUP BY [필드명]

반별로 학생들의 영어 점수 평균값 구하기

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

반별로 학생들의 수학 점수 합계 구하기

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

반별로 학생들의 수학 점수 합계 점수가 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 또는 ASC

영어점수를 낮은 순에서 높은 순으로 표시

SELECT studentID, english FROM schoolRecode ORDER BY english DESC

수학점수를 높은 순에서 낮은 순으로 표시

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