USE SELECT~FROM~WHERE 관계연산자 논리 연산자 LIKE
ORDER BY LIMIT DISTINCT GROUP BY HAVING
INSERT AUTO_INCREMENT INSER INTO~SELECT UPDATE DELETE
MySQL(표준SQL) 은 많은 회사에서 다루고 있기 때문에 알고있으면 많은 도움이 됩니다.
SELECT 완료된 테이블에서 테이터를 추출하는 기능
- 기본 형식 : SELECT ~ FROM ~ WHERE (SELECT 다음은 열이름, FROM 다음에는 테이블 이름이 온다. WHERE 다음에는 조건식이온다. )
-- 회원 아이디 (주석으로 -- 이후 한칸을 띄우고 설명을 작성해야됨)
위의 예제는 아래 처럼 구분 됩니다.
회원 테이블 만들기
USE market_db; -- 사용할 데이터베이스 지정 market_db를 사용
CREATE TABLE member -- 회원 테이블
( mem_id CHAR(8) NOT NULL PRIMARY KEY, -- 사용자 아이디(PK)
mem_name VARCHAR(10) NOT NULL, -- 이름
mem_number INT NOT NULL, -- 인원수
addr CHAR(2) NOT NULL, -- 지역(경기,서울,경남 식으로 2글자만입력)
phone1 CHAR(3), -- 연락처의 국번(02, 031, 055 등)
phone2 CHAR(8), -- 연락처의 나머지 전화번호(하이픈제외)
height SMALLINT, -- 평균 키
debut_date DATE -- 데뷔 일자
);
구매 테이블 만들기
CREATE TABLE buy -- 구매 테이블
( num INT AUTO_INCREMENT NOT NULL PRIMARY KEY, -- 순번(PK)
mem_id CHAR(8) NOT NULL, -- 아이디(FK)
prod_name CHAR(6) NOT NULL, -- 제품이름
group_name CHAR(4) , -- 분류
price INT NOT NULL, -- 가격
amount SMALLINT NOT NULL, -- 수량
FOREIGN KEY (mem_id) REFERENCES member(mem_id)
);
데이터 입력하기
INSERT INTO member VALUES('TWC', '트와이스', 9, '서울', '02', '11111111', 167, '2015.10.19');
INSERT INTO member VALUES('BLK', '블랙핑크', 4, '경남', '055', '22222222', 163, '2016.08.08');
INSERT INTO member VALUES('WMN', '여자친구', 6, '경기', '031', '33333333', 166, '2015.01.15');
INSERT INTO member VALUES('OMY', '오마이걸', 7, '서울', NULL, NULL, 160, '2015.04.21');
INSERT INTO member VALUES('GRL', '소녀시대', 8, '서울', '02', '44444444', 168, '2007.08.02');
INSERT INTO member VALUES('ITZ', '잇지', 5, '경남', NULL, NULL, 167, '2019.02.12');
INSERT INTO member VALUES('RED', '레드벨벳', 4, '경북', '054', '55555555', 161, '2014.08.01');
INSERT INTO member VALUES('APN', '에이핑크', 6, '경기', '031', '77777777', 164, '2011.02.10');
INSERT INTO member VALUES('SPC', '우주소녀', 13, '서울', '02', '88888888', 162, '2016.02.25');
INSERT INTO member VALUES('MMU', '마마무', 4, '전남', '061', '99999999', 165, '2014.06.19');
INSERT INTO buy VALUES(NULL, 'BLK', '지갑', NULL, 30, 2);
INSERT INTO buy VALUES(NULL, 'BLK', '맥북프로', '디지털', 1000, 1);
INSERT INTO buy VALUES(NULL, 'APN', '아이폰', '디지털', 200, 1);
INSERT INTO buy VALUES(NULL, 'MMU', '아이폰', '디지털', 200, 5);
INSERT INTO buy VALUES(NULL, 'BLK', '청바지', '패션', 50, 3);
INSERT INTO buy VALUES(NULL, 'MMU', '에어팟', '디지털', 80, 10);
INSERT INTO buy VALUES(NULL, 'GRL', '혼공SQL', '서적', 15, 5);
INSERT INTO buy VALUES(NULL, 'APN', '혼공SQL', '서적', 15, 2);
INSERT INTO buy VALUES(NULL, 'APN', '청바지', '패션', 50, 1);
INSERT INTO buy VALUES(NULL, 'MMU', '지갑', NULL, 30, 1);
INSERT INTO buy VALUES(NULL, 'APN', '혼공SQL', '서적', 15, 1);
INSERT INTO buy VALUES(NULL, 'MMU', '지갑', NULL, 30, 4);
데이터 조회하기
SELECT * FROM member;
SELECT * FROM buy;
※ 지금까지 구성은 테이블 만들기 - 데이터 입력하기 - 데이터 조회하기 입니다.
기본 조회하기 : SELECT ~ FROM
use market_db;
select * from market_db.member ; -- *(모든것) 여기서는 member 테이블의 8개 열 모두 FROM 다음에 테이블 이름
-- (USE문에 지정해 놓은 market_db 데이터베이스_이름이 있으므로, 테이블 이름만 사용해도 된다.)
SELECT ~ FROM ~ WHERE (WHERE는 필요한 것들만 골라서 결과를 보는 효과로 WHERE없이 조회하면 테이블의 모든행이 출력되므로 주의하고 실무에서는 SELECT문은 WHERE문과 같이 사용된다.)
SELECT *
from member
where mem_name = '블랙핑크'; -- ; 전까지는 한줄에 안써도 상관없다
select * from member where mem_number = 4; -- mem_number처럼 숫자형 열을 조회할 때는 작은따움표가 필요없다.
select mem_id, mem_name from member where height <= 162; -- 평균키가 162이하인 회원
select mem_id, mem_name from member where height >= 165 and mem_number >6; -- 평균키가 165이상이며 인원도 6명 초과인 회원
select mem_id, mem_name, height from member where height >= 165 or mem_number >6; -- 평균키가 165이상이거나 인원이 6명 초과인 회원 전부
select height, mem_name from member where height >= 163 and height <=165; -- 평균키가 163이상이며 165이하인 회원
select height, mem_name from member where height between 163 and 165; -- between 문으로 동일한 내용 평균키가 163이상이며 165이하인 회원
select mem_name, addr from member where addr = '경기' or addr = '전남' or addr = '경남'; -- 주소 문자는 경기/전남/경남 중 한곳에 사는 회원을 검색하려면 or로 일일이 써줘야함.
select mem_name, addr from member where addr IN('경기', '전남', '경남'); -- 위에 or 문과 동일한 내용
select * from member where mem_name like '우%'; -- mem_name 중 젤 앞 글자가 '우'이고 뒤에는 무엇이든지 허용
select * from member where mem_name like '__핑크'; -- 언더바 2개로 뒤에 '핑크'글자 포함을 출력
select height from member where mem_name = '에이핑크';
select mem_name, height from member where height > 164;
select mem_name, height from member
where height > (select height from member where mem_name = '에이핑크'); -- 에이핑크의 키를 출력해서 그키보다 큰 키를 출력을 에이핑크 키 보다 큰 키를 출력으로 Select두개 사용
ORDER BY 절 : 결과가 출력되는 순서를 조절
집계함수
SUM() 합계를 구함
AVG() 평균을 구함
MIN() 최소값을 구함
MAX() 최대값을 구함
COUNT() 행의 개수를 구함
COUNT(DISTINCT) 행의 개수를 셉니다(중복은 1개만 인정)
select * from city_popul where city_name like 'new%';
delete from city_popul where city_name like 'new%' limit 5; -- new로시작하는 도시중 상위5건만 삭제
delete from big_table1; -- 테이블구조를 남기지만 속도가 느림.
drop table big_table2; -- 속도는 빠르지만 테이블 자체를 삭제함.
truncate table big_table3; -- 테이블 구조를 남기고 빠르게 삭제. (테이블구조를 남겨야한다면 추천)
'데이터 분석가:Applied Data Analytics > SQL' 카테고리의 다른 글
SQL 심화학습 (1) | 2025.01.10 |
---|---|
혼자 공부하는 SQL-4장-SQL고급 문법 (0) | 2025.01.08 |
혼자 공부하는 SQL-2장-3 데이터베이스 개체 (0) | 2025.01.05 |
혼자 공부하는 SQL-2장-2 데이터베이스 (2) | 2025.01.05 |
혼자 공부하는 SQL-MySQL설치 (2) | 2025.01.05 |