우선 만들어진 db데이터를 가져올 것이다.
db 샘플 데이터는https://www.mysqltutorial.org/getting-started-with-mysql/mysql-sample-database/ 여기서 가져오면 된다.
다운받은 샘플db가 있는 폴더에서 cmd를 입력해
cmd창으로 들어가 mysql -u root -p를 클릭해 접속해준다.
그리고 shopdb를 만들어 받아온 샘플 데이터베이스를 source 코드를 이용해 가져온다.
이어서 다른 db도 가져올것이다. 이 db는 db명이 이미 선언되어 있어서 다른 방식으로 가져올 것이다.
이 파일에서 마우스 오른쪽을 눌러 메모장으로 연결해준 뒤 ctrl+a로 전체 선택을 해 복사하여
workbench로 붙여넣기 해주면 된다.
붙여넣기는 새로운 sql창을 열어 붙여 넣기 해주면 된다.
열었으면 번개모양 버튼을 눌러 저장시켜 준다.
그리고 refresh 하면 나타날 것이다.
새로운 sql파일을 열어서 sql문을 적용해 볼 것이다.
적용은 ctrl+enter 누르면 표가 뜬다.
먼저 select문이다.
14열을 as '연락처' 없이 했을 경우 이렇게 나온다.
그러므로 as '연락처'를 해주면
이렇게 별칭이 생기게 된다.
다음은 select where절이다. where은 조건절로 비교연산자를 쓸 때 사용할 수 있다.
● = : 동등 비교 연산자
● >=, <= : 대소 비교 연산자
select * from usertbl where name='김경호'; 하면 이름이 김경호은 사람의 값이 나온다.
select * from usertbl where userid='LSG'; 하면 userid가 LSG인 값이 나온다.
select * from usertbl where birthyear >= 1970; 하면 birthyear가 1970년도 보다 큰 값들이 나온다.
● and 연산자 : [참 and 참] 을 만족하는 경우
● or 연산자 : [참 or 참], [거짓 or 참], [참 or 거짓] 을 만족하는 경우
● between and
select * from usertbl where birthyear >= 1970 and height >= 180; 을 하면 birthyear가 1970보다 크면서(and) height가 180보다 큰 값을 가져오게 된다.
즉, 둘 다 참인 값들을 가져오는 것이다.
select * from usertbl where birthyear >= 1970 or height >= 180; 하면 birthyear가 1970보다 크거나(or) height가 180보다 큰 값들을 가져오게 한다.
즉, 둘 중 하나만 참이어도 값을 가져오게 된다.
select * from usertbl where height between 170 and 180; 하면 height가 170과 180의 사이에 있는 값들이 나오게 된다.
다음은 포함 문자열이다.
● in : 완성된 문자열
● like : 미완성된 문자열을 필터링
● % : 길이 제한 없는 모든 문자
● _ : 개수만큼의 길이제한 있는 모든 문자
select * from usertbl where addr in ('서울', '경남'); 하면 addr이 서울이거나 경남인 값들이 나오게 된다.
select * from usertbl where name like '김%'; 하면 name의 첫 글자가 '김'이고 뒤에는 몇개의 글자가 들어와도 상관없고 없어도 출력된다.
select * from usertbl where name like '%수'; 이렇게 맨 앞에 '%'가 있다면 앞에 글자가 얼마나 있든없든 맨 뒤가 '수'이기만 하면 해당 값들이 출력되는 것을 볼 수 있다.
select * from usertbl where name like '김__'; 이렇게 하면 맨앞은 '김'이 나와야하고 뒤에 붙은 언더바(_)의 갯수만큼의 글자만 출력되게 된다. 현재는 언더바가 두번 붙어있으므로 3글자이면서 맨 앞글자가 '김'인 값들이 출력되게 된다.
<연습문제>
1. select * from buytbl where amount>=5;
2. select userid, prodname from buytbl where price>=50 and price<=500;
(= select userid, prodname from buytbl where price between 50 and 500;)
3. select * from buytbl where amount>=10 or price>=100;
4. select * from buytbl where userid like 'K%';
5. select * from buytbl where groupname='서적' or groupname='전자';
(= select * from buytbl where groupname in ('서적', '전자');)
6. select * from buytbl where prodname='책' or userid like '%W';
7. select * from buytbl where groupname != '';
(= select * from buytbl where groupname != 'null'; )
select * from buytbl where groupname <> '';
(= select * from buytbl where groupname <> 'null'; )
● !=, <> : ~가 아닌 값을 출력하기 위해 사용
다음은 select 조건절 - 서브쿼리 이다.
select column명 from 테이블명 where column명 조건 (select column명 from 테이블명 where 조건); 을 하면 된다.
select * from usertbl where height > (select height from usertbl where name='김경호'); 하면 김경호보다 키가 큰 값들을 출력 할 수 있다.
다음은 all과 any 의 사용이다.
조건이 여러가지라 무엇을 어떤 조건들을 선택할지 모르기 때문에 all과 any를 사용하여 조건을 정해주는 역할을 한다.
● all : 모든 조건을 만족 (and와 비슷)
● any : 어느 조건이든 하나 이상 만족 (or와 비슷)
우선 select height from usertbl where addr in ('경남'); 하면 이 두 값이 출력된다.
여기서 all을 쓰게 된다면 height의 기준이 170이 되고 any를 쓴다면 height의 기준이 173이된다.
select * from usertbl where height > all(select height from usertbl where addr in ('경남')); 하면 addr이 '경남'인 값의 height보다 큰 height들이 나오게 된다. 즉 기준이 height= 173 이된다.
select * from usertbl where height > any(select height from usertbl where addr in ('경남')); 하면 위와 똑같이 addr이 '경남'인 값의 height보다 큰 height들이 나오지만 기준은 height=170이므로 위에서 나오지 않은 height=172의 값이 하나 더 생기게 된다.
<연습문제>
1. select * from buytbl where price > (select price from buytbl where amount = 10);
2. select * from buytbl where amount > any(select amount from buytbl where userID like 'K%');
3. select * from buytbl where price > all(select price from buytbl where amount=5);
'IT수업 > 데이터베이스' 카테고리의 다른 글
it 수업 6주차 (12) Group By 절 (1) | 2024.01.30 |
---|---|
it 수업 6주차 (11) SQL문 2 (ORDER BY, DISTINCT, 복사) (1) | 2024.01.30 |
it 수업 6주차 (9) ER다이어그램으로 리버싱하기 (0) | 2024.01.29 |
it 수업 5주차 (8) ER다이어그램 (1) | 2024.01.25 |
it 수업 5주차 (7) 유스케이스, ERD (0) | 2024.01.24 |