기본 미션
🐯 Chapter 03 p.138 - 확인문제 2번 풀고 인증샷.
확인문제는 총 6문항이 있고 2번 외의 것들도 함께 풀어보겠습니다.
1. 다음 SELECT 문에서 사용되는 절을 차례대로 나열하세요.
[ ORDER BY, WHERE, LIMIT, SELECT, FROM]
SELECT, FROM, WHERE ORDER BY, LIMIT 순서로 사용된다.
💡 2. 다음 보기중에서 각 문항의 빈칸에 들어갈 것을 고르세요.
[ LIKE, DESC, ORDER BY, DISTINCT, ASC, AND, OR, >=, LIMIT ]
① SELECT * FROM member __________ height;
② SELECT * FROM member __________ 5,2;
③ SELECT __________ phone1 FROM member;
① ORDER BY
② LIMIT
③ DISTINCT
3. 다음 빈칸에 들어갈 예약어를 채우세요.
[ ORDER BY 절에서 오름차순을 위하 예약어는 ____①_____ 이고,
내림차순을 위한 예약어는 ____②____ 다.
① ASC
② DESC
4. 다음 LIMIT에 대한 문법이 틀린 것을 하나 고르세요.
① LIMIT 5 ② LIMIT 3,5 ③ LIMIT 0,3,5 ④ LIMIT 5 OFFSET 3
LIMIT의 활용
출력의 개수를 제한하는 문법으로 형식은 LIMIT 시작, 개수 이며 이는 곧 LIMIT 개수 OFFSET 시작 과 동일한 문법이다.
또한 시작 데이터는 0이 default값이다.
주로 ORDER BY와 함께 쓰이는 일이 많다.
5. 다음은 어떤 예약어에 대한 설명인지 쓰세요.
[ 조회된 결과에서 중복된 것은 한개만 남기며, SELECT문의 열 이름 앞에 붙여준다]
DISTINCT
6.다음은 GROUP BY에서 사용되는 집계함수입니다 거리가 먼것을 하나 고르세요.
① SUM( ) ② AVG( ) ③HAVING( ) ④ COUNT( )
HAVING 절
HAVING 은 집계함수가 아닌, GROUP BY 뒤에 따라오는 조건절로 WHERE와 비슷하 개념. 다시 말하면 HAVING 은 집계함수에 대해서 조건을 제한 하는 것
집계 함수 aggregate function
① SUM( ) : 합계 구하기
② AVG( ) : 평균값 구하기
③ MIN( ) : 최소값 구하기
④ MAX( ) : 최대값 구하기
⑤ COUNT( ) : 행의 개수를 세는것
⑥ COUNT(DISTINCT) : 행의 개수를 세지만 중복 결과의 하나만 센다.
* chapter3 의 개념은 지난 포스트로 대신합니다
https://kimmaadata.tistory.com/108?category=1048649
추가 미션
🐱 데이터 입력, 삭제하는 기본 형식 작성하기
기본 형식
데이터 입력: INSERT
INSERT INTO tablename[(col1, col2, ...)] VALUES (val1, val2, .)
- 테이블 이름을 생략할 경우 VALUES 의 값들의 순서 및 개수는 테이블을 정의할 때의 열 순서 및 개수와 동일해야 한다.
# 예시
-- 테이블 생성
CREATE TABLE hongong1 (toy_id INT, toy_name CHAR(4), age INT);
-- 테이블 수정
INSERT INTO hongong1 VALUES(1, '우디', 25);
- 테이블이 가지고 있는 열중 입력하고 싶지 않을때는 입력할 열의 이름을 써주어야 한다. 이경우 생략한 열에는 아무것도 없다는 의미의 NULL값이 들어간다
# 예시
INSERT INTO hongog1 (toy_id, toy_name) VALUES (2, '버즈')
-- age 열에는 자동으로 NULL값이 배정됨
- 열의 이름을 함께 명시할때는 열의 기본 순서는 상관없지만 VALUES의 값은 INTO다음 입력한 열의 순서에 맞추어 입력 해야한다.
다른 테이블의 데이터를 한번에 입력하기 : INSERT INTO ~SELECT
- INSERT 할 테이블의 열 개수와 SELECT문의 열 개수는 같아야 한다.
INSERT INTO tablename_copy(col1, col3, ...)
SELECT col1, col3, ... FROM tablename_original
데이터 삭제: DELETE
DELETE FROM tablename WHERE condition;
- DELETE는 UPDATE와 거의 비슷하게 사용 할 수 있다.
- 행단위로 삭제한다.
- DELETE절을 조건절인 WEHERE절 없이 사용하면 모든 행 데이터가 삭제된다
- 여러 조건을 넣어서 지정된 행만 지울 수 있다
# 예시
-- city_popul테이블의 city_name열에서 New로 시작하는 데이터 상위 5개만 지우기
DELETE FROM city_popul
WHERE city_name LIKE 'New%'
LIMIT 5;
심화 형식
데이터 입력 자동 증가 값 : AUTO_INCREMENT
- 열을 정의할때 1부터 증가하는 값을 입력한다.
- AUTO_INCREMENT로 지정하는 열은 무조건 PRIMARY KEY로 지정
- INSERT절을 사용하여 수정할때 AUTO_INCREMENT가 지정된 열은 NULL을 넣어 처리 하면 됨.
# AUTO_INCREMENT 예시
-- 테이블 생성
CREATE TABLE hongong2 (
toy_id INT AUTO_INCREMENT PRIMARY KET,
toy_name CHAR(4),
age INT);
-- AUTO_INCREMENT지정 이후 INSERT를 사용할때
INSERT INTO hongong2 VALUES (NULL, '보핍', 25);
INSERT INTO hongong2 VALUES (NULL, '슬링키', 22);
INSERT INTO hongong2 VALUES (NULL, '렉스', 21);
- 계속 입력하다가 마지막 자동 증가 번호를 확인 하기 위한 쿼리문
SELECT LAST_INSERT_ID();
- 자동증가 번호를 바꾸고 싶을때 사용 하는 쿼리문 ALTER TABLE (테이블의 구조를 변형하는 SQL)
-- 자동 증가 번호 바꾸는 ALTER
ALTER TABLE hongong2 AUTO_INCREMENT=100;
-- 바로 이어서 INSERT구문을 사용하면 100부터 시작하는 ID번호를 부여한다
- 자동 증가되는 수를 바꾸고 싶을때 사용하는 시스템 변수 @@시스템변수
-- 테이블 생성
CREATE TABLE hongong2 (
toy_id INT AUTO_INCREMENT PRIMARY KET,
toy_name CHAR(4),
age INT);
-- 시작 번호를 1000으로 지정
ALTER TABLE hongong2 AUTO_INCREMENT=1000;
-- 1000 부터 3씩 증가
SET @@auto_increment-increment=3;
💡 시스템 변수란 MySql에서 자체적으로 가지고 있는 설정값이 저장된 변수.
👉 시스템 변수 값을 확인하려면 SELECT @@시스템변수
👉전체 시스템 변수의 종류를 알고 싶으면 SHOW GLOBAL VARIABLES
데이터 수정 : UPDATE
- 기존에 입력되어있는 값을 수정하는 문법
UPDATE tablename
SET col1 = val1, col2=val2, ....
WHERE conditions
- 한번에 여러조건의 여러열을 변경 할 수 있다
# 예시
-- city_popul 테이블의 city_name 이 New York인 열의 이름 변경 및 같은 행의 다른 열도 동시에 수정
UPDATE city_popul
SET city_name = '뉴욕', population = 0
WHERE city_name = 'New York'
- 연산 함수 사용도 가능하다
- WHERE절이 없어도 되는데, 대신 모든 행이 변경된다
# 예시
-- WHERE 절이 없는 경우 모든 행에 적용 된다, 함수를 사용하여 전체 값을 수정
UPDATE city_popul
SET population = population / 10000;
대용량 테이블의 삭제 : DROP, TRUNCATE
- 대용량의 테이블이 여러건 있을때 사용하는 방식
- DROP : 테이블 자체를 삭제, 따라서 처리 시간이 매우 빠름 = 테이블 자체가 필요없을때 사용
DROP TABLE tablename1;
- TRUNCATE : DELETE와 동일한 효과를 내지만 속도가 무척 빠름 = 테이블의 구조가 필요하고 내용이 필요없을때 사용
TRUNCATE TABLE tablename2;
- DROP은 테이블을 삭제 하지만, DELETE와 TRUNCATE는 테이블을 남겨놓는다.
💡 DELETE를 사용할 경우 빅데이터의 경우 많은 정보를 삭제하기에는 위의 두가지 형식보다 처리속도가 느리다.
'SQL > 혼공학습단 8기 - SQL' 카테고리의 다른 글
week5 - 인덱스의 개념과 종류 및 작동 원리와 구조를 이해 (0) | 2022.08.14 |
---|---|
week4 - 테이블 만들기 CREATE, DROP, 가상의 테이블 view (0) | 2022.08.02 |
week3 - 테이블을 연결하는 JOIN 의 종류 와 예제 (0) | 2022.07.22 |
week1 - 테이블 생성 및 기본 추출 쿼리문 작성, 데이터베이스 개체 설명 (0) | 2022.07.10 |
[혼공단8기] 혼공SQL로 시작하기 (0) | 2022.06.30 |