-
[혼자 공부하는 SQL] 3장. SQL 기분 문법DB 2024. 4. 4. 01:33728x90
DROP DATABASE IF EXISTS market_db; -- 만약 market_db가 존재하면 우선 삭제한다. CREATE DATABASE market_db;
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) );
AUTO_INCREMENT : 자동으로 숫자 입력, 순번이 자동으로 증가
IN()
조건식에서 여러 문자 중 하나에 포함되는 지 비교
SELECT mem_name, addr FROM member WHERE addr IN('경기', '전남');
LIKE
문자열의 일부 글자 검색
SELECT * FROM member WHERE mem_name LIKE '우%' -- 앞 글자가 '우'이고 그 뒤는 무엇이든 허용
SELECT * FROM member WHERE mem_name LIKE '__핑크' -- 앞 2글자는 상관없고 뒤는 '핑크'인 데이터
서브 쿼리
SELECT 안에 SELECT가 들어간 쿼리
이름이 ‘에이핑크’인 회원의 평균 키보다 큰 회원을 검색
SELECT height FORM member WHERE mem_name = '에이핑크'; -- 결과 : 164 SELECT mem_name, height FROM member WHERE height > 164;
서브 쿼리 사용
SELECT mem_name, height FROM member WHERE height > (SELECT height FROM member WHERE mem_name = '에이핑크');
ORDER BY
ASC(Ascending) : 기본값, 오름차순
DESC(Descending) : 내림차순
L
IMIT
-- LIMIT 시작, 개수 LIMIT 3 -- =LIMIT 0, 3
DISTINCT
중복된 결과 제거
중복된 데이터를 1개만 남김
열 이름 앞에 사용
SELECT DISTINCT addr FROM member;
GROUP BY
지정한 열의 데이터들을 같은 데이터끼리는 묶어서 결과 추출(그룹으로 묶어주는 역할)
주로 집계함수(SUM, AVG, MIN, MAX, COUNT, COUNT(DISTINCT))와 같이 사용
조건식은 HAVING 사용
SELECT mem_id, amout FROM buy ORDER BY mem_id;
데이터 변경
INSERT
INSERT INTO 테이블 (열1, 열2) VALUES (값1, 값2) -- 열은 생략 가능, 단, 값들의 순서와 개수는 테이블의 열 순서 및 개수와 동일해야함
AUTO_INCREMENT
열을 정의할 때 1부터 증가하는 값 입력해줌. 지정된 열은 꼭 PRIMARY KEY로 지정해야 함.
ALTER TABLE hongong2 AUTO_INCREMENT=100; -- 입력되는 값을 100부터 시작되도록 변경 -- ALTER TABLE : 테이블 변경
CREATE TABLE hongong3 { toy_id, INT AUTO_INCREMENT PRIMARY KEY, toy_name CHAR(4), age INT); ALTER TABLE hongong3 AUTO_INCREMENT=1000; -- 시작값 1000으로 지정 SET @@auto_increment_increment=3; -- 증가값 3으로 지정
INSERT INTO ~ SELECT
많은 양의 데이터를 한 번에 삽입
INSERT INTO 테이블이름 (열1, 열2) SELECT 문;
-- world.city 테이블의 내용을 city_popul 테이블에 입력 INSERT INTO city_popul SELECT Name, Population FROM world.city;
UPDATE
-- city_poul 테이블의 'Seoul'을 '서울'로 변경 UPDATE city_poul SET city_name='서울' WHERE city_name='Seoul';
WHERE 절은 생략이 가능하나, 생략하면 모든 행의 값이 변경되므로 주의
DELETE
행 데이터 삭제
DELETE FROM 테이블이름 WHERE 조건;
-- 'New'로 시작하는 도시 삭제 DELETE FROM city_popul WHERE city_name LIKE 'New%';
대용량 테이블 삭제
DELETE FROM big_table1; -- 삭제가 오래 걸림 DROP TABLE big_table2; -- 테이블 자체 삭제, 속도 빠름 TRUNCATE TABLE big_table3; -- DELETE와 동일(빈 테이블 남김), 속도 빠름, WHERE문을 사용할 수 없어서 조건없이 전체 행을 삭제할 때 사용
⇒ 대용량 테이블의 전체 내용을 삭제할 때 테이블 자체가 필요 없을 경우에는 DROP으로 삭제, 테이블 구조를 남겨놓고 싶다면 TRUNCATE로 삭제
728x90'DB' 카테고리의 다른 글
[혼자 공부하는 SQL] 5장. 테이블과 뷰 (0) 2024.04.27 [혼자 공부하는 SQL] 4장. SQL 고급 문법 (0) 2024.04.17 [혼자 공부하는 SQL] 2장. 실전용 SQL 미리 맛보기 (0) 2024.04.04 [혼자 공부하는 SQL] 1장. 데이터베이스와 SQL (0) 2024.04.04 MongoDB와 샤딩 (0) 2024.03.06