mysql (14) 썸네일형 리스트형 [Ubuntu_Server_16.04] 웹서버 구축(apache2, php7.0, mysql) sudo apt-get update sudo apt-get install apache2 ifconfig 를 쳐서 ip를 알아낸 후 인터넷 창에 적어서 아파치 페이지가 나오는지 확인한다 sudo apt-get install mysql-serversudo apt-get install mysql-client sudo apt-get install php7.0 libapache2-mod-php7.0 php-mcrypt php-mysql php-mbstring php7.0-mbstring php-gettext sudo vim /etc/apache2/mods-enabled/dir.conf키보드 i 눌러 수정index.php를 가장 앞으로 오게 한다. //기본 페이지를 index.php로 설정하는 것, 테스트 용ESC.. [mySQL] 보안(암호, 계정, 권한, 역할) 암호 설정 ROOT 사용자 SET PASSWORD FOR 'root'@'localhost' = PASSWORD ('0000qwerty');// root : 루트 사용자// localhost : 소프트웨어 실행위치 계정생성 CREATE USER jsmIDENTIFIED BY '000asd';// 새로운 계정과 비밀번호 생성 권한부여 GRANT SELECT ON my_tableTO jsm;// jsm계정에 my_table 테이블의 SELECT 권한 부여 GRANT INSERT ON my_tableTO jsm, jsm2; GRANT INSERT, DELETE ON my_tableTO jsmWITH GRANT OPTION;// INSERT,DELETE의 권한을 부여 할 수 있는 권한을 부여.. GRANT SEL.. [mySQL] 트랜잭션(START TRANSACTION) 트랜잭션 도구START TRANSACTION;// COMMIT, ROLLBACK이 나올 때까지 실행되는 모든 SQL 추적COMMIT;// 모든 코드를 실행(문제가 없을 경우에)ROLLBACK;// START TRANSACTION 실행 전 상태로 되돌림(문제 생기면) ex)START TRANSACTION; //트랜잭션 시작SELECT * FROM my_table; //초기상태 보여줌DELETE FROM my_table WHERE gender = 'M'; //데이터의 수정SELECT * FROM my_table; //수정 후의 상태 보여줌ROLLBACK; //트랜잭션이 선언되기 전 상태로 되돌아감SELECT * FROM my_table; //수정 전의 초기 상태를 보여줌START TRANSACTION; //.. [mySQL] 제약조건(CHECK) 제약조건NOT NULLPRIMARY KEYFOREIGN KEYUNIQUECHECK CREATE TABLE my_table(id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,name VARCHAR(50),gender VARCHAR(1) CHECK ( gender IN ('M', 'F')));// M과 N 이외의 다른 입력이 들어가면 에러 발생. ALTER TABLE my_tableADD CONSTRAINT CHECK ( gender IN ('M', 'F') );// 기존 테이블에 제약조건 생성... 근데 안됨.. 왜 그럴까? [mySQL] 조인(JOIN)과 유니온(UNION) SELECT A.name, B.toy FROM my_table ALEFT OUTER JOIN toys BON A.id = B.id;// 왼쪽 외부 조인// 왼쪽 테이블의 모든 행을 가지고 오른쪽 테이블 행과 비교// 조건에 맞는 값이 오른쪽에 없으면 NULL값이 셀에 출력된다. SELECT A.name, B.toyFROM my_table ARIGHT OUTER JOIN toys BON A.id = B.id;// 오른쪽 외부 조인 SELECT A.name name, B.name bossFROM clown_info1 AINNER JOIN clown_info2 BON A.boss_id = B.id;// 두 테이블의 데이터는 완벽히 같다, 즉 동일한 테이블 -> 셀프 조인// 아래와 같다 SELECT A.nam.. [mySQL] 외부 쿼리와 내부 쿼리의 결합 쿼리 안에 쿼리를 넣어서 사용함으로서 타이핑이 줄어든다. SELECT B.first_name, B.last_name, A.dayFROM my_table AS ANATURAL JOIN sub_table AS BWHERE A.day IN ('MON', 'TUE' , 'WEDN', 'SUN'); SELECT day FROM my_dayGROUP BY dayORDER BY day; 위의 두 문장을 하나로 합칠 수 있다. SELECT B.first_name, B.last_name, A.dayFROM my_table AS ANATURAL JOIN sub_table AS BWHERE A.day IN ( SELECT day FROM my_day );// 빨간글씨를 감싸는 문장은 외부 쿼리라 하고 빨간 글씨는 내부 쿼리.. [mySQL] 조인 (JOIN) INNER JOIN 1) 동등 조인SELECT 출력할 열들FROM 주 테이블 INNER JOIN 합성할 테이블ON 비교 연산 ; SELECT A.count_id, A.first_name, B.genderFROM my_table AINNER JOIN sub_table BON A.count_id = B.count_id; 2) 비동등 조인SELECT A.count_id, A.first_name, B.genderFROM my_table AINNER JOIN sub_table BON A.count_id B.count_idORDER BY A.count_id; // 해당하지 않는 모든 값을 출력 3) NATURAL JOIN (자연조인)SELECT A.count_id, A.first_name, B.genderFROM .. [mySQL] 정규화와 AS 제1정규화같은 데이터가 여러 열에 반복되지 않게 하는 방법. 1) 첫 번째 방법CREATE TABLE toy( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, //기본키 생성 color VARCHAR(20) //색 데이터 열);INSERT INTO toy (color) // 정보를 담는다 SELECT color FROM my_table // 다른 테이블의 색 정보를 가져온다 GROUP BY color // 같은 데이터는 그룹화 ORDER BY color; // 정렬 2) 두 번째 방법CREATE TABLE toy AS SELECT color FROM my_table // 다른 테이블의 색 정보를 가져온다 GROUP BY color // 같은 데이터는 그룹화 ORDER BY .. 이전 1 2 다음