혼공S 3주차

임채영·2022년 7월 24일
0

혼공S

목록 보기
3/6
post-thumbnail

강의 내용

테이블에 값 넣기
INSERT INTO 테이블명 VALUES (값1, 값2, 값3);
: 순서대로 넣을 때
INSERT INTO 테이블명(열1, 열명2) VALUES (값_1, 값_2);
: 다 넣지 않을 때
INSERT INTO 테이블명(열
명2, 열명3, 열명1) VALUES (값_2, 값_3, 값_1);
: 순서대로 넣지 않을 때

AUTO_INCREMENT PRIMARY KEY : 데이터 종류를 정할 때 아이디를 자동으로 생성
ex)toy_id INT AUTO_INCREMENT PRIMARY KEY
아이디를 직접 넣지 않고 NULL이라고 쓰기

SELECT LAST_INSERT_ID(); : 지금까지 몇개의 아이디가 입력되었는지 출력
ALTER TABLE 테이블명 AUTO_INCREMENT=100; : 다음 아이디는 100번부터
SET @@auto_increment_increment=3; : 3개씩 건너뜀

UPDATE문

UPDATE 테이블명
SET 열1=값1, 열2=값2---
WHERE 조건;

:update실행 시 오류가 날 때 : Edit -> Preference -> SQL Editor -> 쭉 내려서 Other에 Safe Updates 끄기!
다 한 후 꼭 닫았다 다시 열기

ex)
UPDATE city_popul
SET city_name = '서울'
WHERE city_name = 'Seoul';
city_popul 테이블에 city_name을 Seoul에서 서울로 변경
WHERE이 없다면 모든 데이터가 서울로 변경.

DELETE문

DELETE FROM 테이블명 WHERE 조건;

MYSQL의 데이터 형식

정수형 : TINYINT, SMALLINT, INT, BIGINT
예약어 UNSIGNED를 통해 데이터를 0부터 시작하게 옮겨 효율적으로 사용 가능

문자형 : CHAR, VARCHAR
CHAR : 속도가 좀 더 빠름 - 글자의 크기가 고정적일 때
VARCHAR : 데이터 방을 사용한만큼만 잡음 - 가변적
번호일 땐 char로 잡기 int로 잡으면 앞에 0이 사라짐, 정수로할 땐 더하기/빼기 의 연산이나 크다/작다의 의미가 없다면 문자형으로

LONGTEXT : 긴 글자
LONGBLOB : 긴 파일

실수형 : FLOAT(소수점 7자리까지), DOUBLE(소수점 15자리까지)

날짜형 : DATE, TIME, DATETIME
날짜 : YYYY-MM-DD
시간 : HH:MM:SS

변수 사용

SET @변수 이름 = 변수의 값; -> 선언, 값 대입
SELECT @변수이름; -> 변수의 값 출력
닫았다 끌 때 저장되지 않음

SET @count = 3;
SELECT mem_name, height FROM member ORDER BY height LIMIT @count; -> 에러

SET @count = 3;
PREPARE mySQL FROM 'SELECT mem_name, height FROM member ORDER BY height LIMIT ?';
EXECUTE mySQL USING @count;

mySQL을 준비만 해놓고 ?에 count의 값을 넣어 변수를 LIMIT로 사용 가능

명시적 형변환
CAST(값 AS 데이터형식 [(길이)])
CONVERT(값, 데이터형식 [(길이)])
->길이는 작성하지 않아도 된다.

SELECT '100'+'200'; = 300 -> 자동으로 숫자로 바꿔서 계산
SELECT CONCAT('100'+'200'); = 100200
SELECT CONCAT(100+'200'); = 100200 -> 정수를 문자처리

JOIN

내부조인
기본키, 외래키 : 일대다 관계
SELECT <열 목록>
FROM < 첫 번째 테이블>
INNER JOIN <두 번째 테이블>
ON <조인될 조건>
[WHERE 검색 조건]

ON buy.mem_id = member.mem_id : 두 mem_id는 같은 것을 연결
SELECT mem_id, --- 를 할 경우 buy테이블과 member중 어디를 출력해야하는지 모르기 때문에 buy.mem_id로 작성 또는 별명 사용

외부 조인

내부조인과 달리 한쪽에만 데이터가 있어도 결과가 나온다.

외부 조인의 형식

SELECT < 목록>
FROM< 번째 테이블(LEFT 테이블)>
	<LEFT|RIGHT|FULL>OUTER JOIN < 번째 테이블(RIGHT 테이블)>
   	ON<조인될 조건>
[WHERE 검색 조건];

외부조인 손코딩!🤚

SELECT M.mem_id, M.mem_name, B.prod_name, M.addr
	FROM member M
    	LEFT OUTER JOIN buy B
        ON M.mem_id = B.mem_id
    ORDER BY M.mem_id;

▪ LEFT OUTER JOIN을 LEFT JOIN으로 쓸 수 있다.
▪ RIGHT OUTER JOIN으로 쓰려면 buy B 와 member M 의 위치를 바꿔주면 된다!

FULL OUTER JOIN - 왼쪽 외부 조인과 오른쪽 외부 조인이 합쳐진 것이다. 둘 중 한 쪽에만 들어있어도 내용을 출력한다. 자주 사용되지는 않는다!

기타 조인

내부 조인이나 외부 조인처럼 자주 사용되지는 않지만 가끔 유용하게 사용되는 조인으로 상호 조인과 자체 조인도 있다.
상호 조인 - 한쪽 테이블의 모든 행과 다른 쪽 테이블의 모든 행을 조인시킨다. 따라서 상호 조인 결과의 전체 행 개수는 두 테이블 각 행의 개수를 곱한 개수와 같다.

CROSS 조인 : 한 개와 모든 열을 대입
랜덤으로 조인하기 때문에 내용의 의미는 없지만 대용량 테스트 데이터를 생성할 때 사용한다.

상호 조인 : 테이블 안에서 조인
별칭을 줘서 테이블이 2개인 것처럼 사용

3주차 기본미션👾

p. 195 - 확인문제 4번 풀고 인증샷
4. 다음 SQL은 회원으로 가입만 하고, 한 번도 구매한 적이 없는 회원의 목록입니다. 빈 칸에 들어갈 가장 적합한 것을 고르세요.

SELECT DISTINCT M.mem_id, B.prod_name, M.mem_name, M.addr
	FROM member M
    	LEFT OUTER JOIN buy b
    	ON M.mem_id = B.mem_id
    -----------------------
  	ORDER BY M.mem_id;

① JOIN B.prod_name IS NULL
② LIMIT B.prod_name IS NULL
③ HAVING B.prod_name IS NULL
④ WHERE B.prod_name IS NULL

3주차 선택미션🙈

p. 183 - [좀 더 알아보기] 손코딩 실행하고 결과화면 인증샷

0개의 댓글