DML(select, insert, update, delete), join

oyeon·2021년 1월 2일
0
post-custom-banner
  • desc 명령어로 테이블 구조를 확인하는 습관을 갖자.

select

desc department;		// department 테이블의 구조 정보 출력 (describe 명령어)
select * from department;	// department 테이블 전체 출력
select deptno, name from department;			 // deptno, name 컬럼 출력
select deptno 부서번호, name 부서명 from department; 	 // alias를 공백으로 생략 가능
select deptno as 부서번호, name as 부서명 from department; // 위와 동일
select concat(empno, '-', deptno) as '사번-부서번호' from employee;  // concat 명령어
select concat(empno, '-', deptno) '사번-부서번호' from employee;     // 위와 동일
select deptno from employee; 		// 중복 값 모두 출력
select distinct deptno from employee;   // 중복 값 제거되어 출력
select empno, name from employee order by name; // name 컬럼 기준 정렬(default - ASC)
select empno, name from employee order by name desc; // 내림차순 정렬
select empno, name from employee order by 1;	     // 1번 컬럼 기준 오름차순 정렬
select empno, name from employee order by 2 desc;    // 2번 컬럼 기준 내림차순 정렬
select * from employee where empno = 7934;
select * from employee where job = 'MANAGER';
select * from employee where deptno in (10, 30);
select * from employee where deptno = 10 or deptno = 30; // 위와 동일
select * from employee where deptno = 30 and salary < 1500;
select * from employee where name like 'A%';	// 첫 문자 A
select * from employee where name like '%A';	// 끝 문자 A
select * from employee where name like '%A%';	// A 1개 이상
select * from employee where name like '_A%';	// 2번째 문자 A
select * from employee where name like '__A%';	// 3번째 문자 A
select lower(name) from employee;
select substring('Happy Day', 3, 2);	    // pp
select LPAD(name, 10, '+') from employee;   // 10개 문자, 빈 곳은 왼쪽부터 + 채우기
select RPAD(name, 10, '+') from employee;   // 10개 문자, 빈 곳은 오른쪽부터 + 채우기
select LTRIM(' hello '), RTRIM(' hello ');
select TRIM( 'hi '), TRIM(BOTH 'x' FROM 'xxxhixxx');
select abs(-2);	// 2
select mod(234, 10), 253 % 7;
select cast(now() as date);	// 2021-01-02
select cast(1-0 as unsigned);	// 18446744073709551615
// 그룹함수
select count(*) from employee;	// row의 숫자 반환
select avg(salary) from employee;	// salary의 평균
select count(boss) from employee;	// boss 컬럼에서 null 값을 제외하고 count
// deptno 별로 avg, sum을 구하여 나타냄
select deptno, avg(salary), sum(salary) from employee group by deptno;

insert

desc role;		// role_id가 pk인 것을 확인
select * from role;
insert into ROLE values(200, 'CEO');	// OK
insert into ROLE(role_id, description) values(300, 'MANAGER'); // OK
insert into ROLE(role_id) values(301);		 // OK. description에는 NULL 값 들어감
insert into ROLE(description) values('MANAGER'); // ERROR!! pk에는 NULL 불가능

update

// ※ where절 사용하지 않으면 전체 컬럼이 변경되므로 주의
update role set description = 'CTO' where role_id = 200;

delete

// ※ where절 사용하지 않으면 전체 컬럼이 삭제되므로 주의
delete from role where role_id = 200;

join

select Orders.OrderID, Customer.CustomerName, Orders.OrderDate
from Orders
inner join customers on Orders.CustomerID=Customers.CustomerID;

reference

profile
Enjoy to study
post-custom-banner

0개의 댓글