본문 바로가기

프로그래밍/mySQL

(14)
[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] 뷰(VIEW) 뷰(VIEW)란 가상의 테이블이다. - 실제 테이블 처럼 동작함. - UPDATE, DELETE, INSERT 동작이 유효하다 - 업데이트가 가능하다 - NOT NULL 인 열들만 업데이트 가능 - SUM, COUNT, AVG, BETWEEN, HAVING, IN, NOT IN 의 연산자가 포함되면 업데이트 불가 CREATE VIEW my_viewAS SELECT last_name, first_name, genderFROM my_table;// VIEW의 생성 SELECT * FROM my_view;// VIEW 출력// 아래 코드와 같은 역할 SELECT * FROM ( SELECT last_name, first_name, gender FROM my_table ) AS my_view;// AS로 별명을..
[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 ..