RENAME 테이블 명을 변경할 때 사용 -- rename table show tables; rename table test_table to test_table1; show tables; ALTER 열과 관련된 수정을 할 때 사용 열의 이름을 바꾸거나, 타입을 변경, 추가, 삭제 할 수 있다. -- column TYPE 변경 desc test_table3; alter table test_table3 modify data2 varchar(10000); desc test_table3; -- column 이름&속성 변경 **이름만 바꾸더라도 속성은 그대로 꼭 적어줘야 한다. desc test_table3; alter table test_table3 change data3 data30 float(100, 4);..

DB 트랜잭션 데이터 처리의 한 단위를 말한다. DB는 데이터를 저장, 수정, 삭제하는 작업을 바로 물리적인 하드디스크에 저장된 데이터에 적용하지 않는다. (메모리단에서 적용됨) 이는 개발자가 실수로 잘못된 명령문을 입력했을 때 다시 원래 상태로 되돌리기 위한 안전 장치이다. 개발자가 Commit을 하기 전까지 입력한 명령문은 메모리에서만 동작하다가 커밋이 발생하면 그때 하드디스크에 반영하게 된다. 데이터에 대한 작업을 하기 위해 입력하는 명령문들의 시작부터 커밋까지가 하나의 트랜잭션이다. 참고) MYSQL Workbench에서 COMMIT, ROLLBAKCK을 테스트하기 위해서 자동 커밋을 꺼준다. ROLLBACK 데이터의 저장, 삭제, 수정 등의 작업을 하고 난 후 원래의 상태로 되돌리는 작업이다. ..

INSERT 데이터를 로우 단위로 저장할 때 사용한다. insert into TABLE_NAME (col_name, ..) values (값, ..) insert into TABLE_NAME values (값, ..) -- col_name을 미 설정 시 빈 column에는 null값이 들어감. 컬럼에 저장될 값을 지정하지 않으면 null이 저장된다. INSERT 쿼리 예시 -- column명을 생략하여 넣는 경우 컬럼에 순서대로 들어감, 이때는 모든컬럼에 순서대로 값을 넣는 경우. insert into test_table values (1, 'first', 1.0); -- column명을 명시해서 넣는 경우 insert into test_table (data1, data2, data3) values (2..

DB 생성 & 한글 인코딩 설정 DB를 생성하고 한글값을 저장하기 위해서는 인코딩 값을 utf8로 설정해줘야 한다. -- db 생성 & 한글 설정 create database test_db character set = 'utf8' collate = utf8_general_ci; -- db 사용 use test_db; Table 생성 -- table 생성 create table 테이블명 ( 컬럼이름 자료형 제약조건, 컬럼이름 자료형 제약조건 ); -- 예시 create table test_table2( data1 int(10) primary key, data2 varchar(10) not null, data3 float(10, 2) ); 테이블 생성시 type에 올 수 있는 것들 모든 자료형을 확인하고 싶..

Set 두 select 문을 통해 얻어온 결과를 집합 연산을 통해 하나의 결과로 만드는 것을 set이라고 한다. 합집합, 교집합, 차집합 등 집합 연산을 알 수 있다. 집합 연산을 하기 위해서는 두개의 select문을 통해 가져오는 컬럼이 같아야 한다. 합집합 : UNION (중복없이), UNION ALL (중복 포함해서) 교집합 : JOIN을 통해서 만들어야 한다. 차집합 : 서브쿼리를 통해서 만들어야 한다. 예시 이력에 'Senior Staff' or 'Staff'가 있는 경우를 모두 가져온 경우 select * from titles where title in ('Senior Staff', 'Staff'); 10005번 사원의 경우 두가지 모두 갖고 있음을 알 수 있다. 이러한 중복이 있는 경우에서 ..
서브쿼리 쿼리문 내에 쿼리문이 있는 것을 서브 쿼리라고 한다. 조건문 등을 만들 때 값을 직접 지정하지 못하고 쿼리문을 통해 구해 와야할 경우 서브쿼리를 통해 값을 구해서 조건문을 완성할 수 있다. EX. 급여액의 평균이상의 사원을 가져온다고 하면 평균을 구해야 쿼리문을 짤수가 있다. 서버쿼리를 짤때 당황하지말고 일단 서브쿼리로 만들어야 할 부분, 즉 알 수 없는 조건값을 배제하고 먼저 일반 쿼리문을 짠다. 이 후 해당 조건값에 대한 부분을 가져오기 위한 쿼리문을 짜고 두 쿼리문을 합쳐서 하나로 만든다. 현재받는 급여의 평균보다 많이 받는 사원들의 사원번호, 급여액을 가져온다. -- 현재받는 급여의 평균보다 많이 받는 사원들의 사원번호, 급여액을 가져온다. select emp_no, salary from..
조인 세타조인 : 비교연산자를 가지는 조인 (=, !=, , =) 동등조인 : = 연산자를 사용하는 조인 자연조인 : 동등조인을 진행하는데 중복되는 모든 컬럼은 제거하여 보여준다. 외부조인 : 매칭되는 값이 없어도 NULL을 넣어서 반환한다. (왼쪽, 완전, 오른쪽 3가지 경우가 존재) 세미조인 : 자연조인을 진행한 결과에 대해서 한쪽 테이블만 반환한다. (EX. 주문내역이 있는 고객만 조회) 참고 where절에서 공통 속성에 대해 조건을 달아주지 않으면 다대다 조인이 된다. 즉 카티전 프로덕트가 되는것. 동등조건을 달아주어야 동등조인이 된다. 조인을 할 때는 테이블의 이름을 {,} 로 구분하여 작성하고, 가져올 컬럼명을 적어주면 원하는 데이터를 가져올 수 있다. EQUI JOIN _ 동등조인 동등조인 ..
Group by having Group by : select 쿼리에 대해서 특정 속성값을 기준으로 분류하여 가져올 수 있다. -- Group by -- 사원의 수를 성별로 구별해서 가져온다. select gender, count(*) from employees group by gender; -- 각 부서에 근무하고 있는 사원들의 수 select dept_no, count(*) from dept_emp where to_date = '9999-01-01' group by dept_no; -- 각 부서별 과거의 매니저의 수 select * from dept_manager; select dept_no, count(*) from dept_manager where to_date '9999-01-01' group b..
그룹함수 COUNT SUM AVG MAX MIN 쿼리문 -- 사원 중 남자의 수 select count(*) from employees where gender='M'; -- d005부서에 근무하고 있는 사원의 수 (to_date가 9999-01-01인 경우) select count(*) from dept_emp where to_date='9999-01-01'; -- 현재 받고있는 급여의 총합 select sum(salary) from salaries where to_date='9999-01-01'; -- 현재 받고있는 급여의 평균 select avg(salary) from salaries where to_date='9999-01-01'; -- 현재 받고있는 급여의 최대금액 select max(salary..

날짜/시간 함수 원하는 날짜를 가져오거나 형식대로 사용할 수 있다. 날짜 및 시간을 가져오는 함수 now() sysdate() current_timestamp() 날짜만 : curdate() 시간만 : curtime() 날짜 연산 함수 date_add("interval {수} {year, month, day, hour, minute, second}") date_sub(위와 동일) 쿼리문 -- 현재 날짜와 시간 select now(); select sysdate(); select current_timestamp(); -- 현재 날짜 select curdate(); select current_date(); -- 현재 시간 select curtime(); select current_time(); -- 날짜에서..

문자열 함수 문자열 함수를 사용하면 데이터를 가져올 때 문자열과 관련된 작업을 할 수 있다. 조작 관련 문자열 함수 CONCAT(문자열1, 문자열2, 문자열3 ...) : 문자열을 합친다. INSERT(문자열, 시작위치, 길이, 새로운_문자열) : 문자열의 시작위치부터 길이 만큼의 문자열을 제거하고, 해당 위치에 새로운 문자열을 삽입한다. REPLACE(기존_문자열, 바뀔_문자열, 바꿀_문자열) : 기존의 문자열에서 바뀔 문자열을 찾아 제거하고, 해당 위치에 바꿀 문자열을 삽입한다. INSTR(문자열1, 문자열2) : 문자열1에서 문자열2를 찾아 위치를 반환한다. 위치는 앞에서부터 시작하며, 못찾으면 0을 반환한다. 쿼리문 select concat('aa', 'bb', 'cc'); -- aabbcc se..

숫자함수 ABS(n) : 절대값 CEIL(n) : 소수점 이하 올림 FLOOR(n) : 소수점 이하 내림 ROUND(n) : 소수점 이하 반올림, ROUND(n, 자릿수) : 자릿수를 기준으로 반올림 TRUNCATE(n, 자릿수) : 자릿수를 기준으로 버림 POW(x, y) or POWER(x, y) : x^y, x의 y승 MOD(분자, 분모) : 분자를 분모로 나눈 나머지 GREATEST(n1, n2, n3, ...) : 주어진 수 중에서 가장 큰값을 반환 LEAST(n1, n2, n3, ...) : 주어진 수 중에서 가장 작은 값을 반환 숫자함수를 사용하면 숫자값이나 숫자 컬럼에 대해 필요한 작업을 할 수 있다. 쿼리문 -- 절대값 select abs(100), abs(-100); -- 100, 10..
- Total
- Today
- Yesterday