카테고리 없음

[내일배움캠프] 1월 10일 화요일 TIL 회고록

tft4rollz 2023. 1. 10. 21:25

CREATE 문

1) 테이블을 생성하는 문

2) 기본 문법

CREATE TABLE 테이블_이름 ( 열_ 이름 데이터_ 타입 )

예시

CREATE TABLE users (id int, name char(35), age int);

INSERT 문

1) 테이블에 데이터를 삽입하는 문

2) 기본 양식

INSERT INTO 테이블_이름 [(열1, 열2, 열3]) VALUES (값1, 값2,값3)

3) 사용법 

3-1 ) 열을 생략하여 값 넣기

INSERT INTO users VALUES (6,'철수',5);

3-2 ) 열을 생략하지 않고 값 넣기

INSERT INTO users (id,name,age) VALUES (7,'원장선생님',40);

3-3) 열을 생략하지 않고 id 값을 제외하고 값 넣기

INSERT INTO users (name,age) VALUES ('채성아선생님',40);

실행하면 id값이 NULL 값으로 들어가있다.

추가로 열을 명시하면 순서가 바뀌어도 정상적으로 값이 넣어진다.

INSERT INTO users (age,id,name) VALUES (40,9,'짱구아빠');


AUTO_INCREMENT 

1) 자동으로 증가하는 값

2) 반드시 Primary Key 로 지정해야 한다.

3) 예시

 

3-1) 테이블 생성

CREATE TABLE users ( id int AUTO_INCREMENT PRIMARY KEY, name char(35), age int);

3-2) 생성한 테이블에 값 넣기

id값에 null을 적고 값을 넣으면 자동으로 숫자를 지정해준다.

INSERT INTO users (id,name,age) VALUES (null,'짱구',5);


INSERT INTO ~ SELECT 문

1) 다른 테이블의 데이터를 한번에 입력한다.

2) SELECT 문의 열 개수는 INSERT 할 테이블의 열 개수가 같아야 한다.

 

3-1 ) 데이터베이스 가져오기

다른 테이블을 만들기 위해 https://dev.mysql.com/doc/world-setup/en/world-setup-installation.html 이 사이트에서 world.sql 스크립트 파일을 다운받아 MySQLWorkbench에 해당 데이터베이스를 불러왔다.

 

이 코드로 world 테이블 안에 city 컬럼의 정보를 볼 수 있다.

desc world.city

3-2 ) 테이블 만들기

만든 데이터베이스를 사용해서 테이블을 만들었다.

주의할 점은 데이터 타입을 지정할때 위에 사진에 있는 Type을 맞춰서 지정해야한다.

city_name은 위에 name으로 저장되니 ?? char(35), population 은 위에 Population으로 저장되니 int로 만든다.

CREATE TABLE my_city (city_name char(35), population int);

3-3 ) world.city 에서 name, Population을 my_city에 추가하기 (INSERT INTO ~ SELECT 문 사용)

되게 직관적이라 이해하기 편하다.

INSERT INTO my_city SELECT name, population FROM world_city


UPDATE 

1) 기존에 있던 값을 수정합니다.

2) 예시

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

3) 위에서 만든 my_city에 city_name에 들어있는 'SEOUL'을 '서울'로 바꿔보기

UPDATE my_city
SET city_name = '서울'
WHERE city_name = 'SEOUL';


데이터 삭제 (DELETE , TRUNCATE, DROP)

 

1) DELETE 

1. 테이블의 행 데이터를 지운다.

예시)

DELETE FROM 테이블_이름 WHERE 조건;

예시2) my_city 에서 'NEW'로 시작하는 도시 지우기

DELETE FROM my_city WHERE city_name LIKE 'NEW%';

해당 코드를 이용해 찾아봤는데 조회가 되지 않았다. 잘 지워진 듯 하다.

SELECT city_name FROM my_city WHERE city_name LIKE 'NEW%';

 

2) TRUNCATE

1. DELETE 문과 비슷하나 WHERE 문을 사용할 수 없다. 따라서 모든 행을 삭제한다.

2. DELETE 문보다 속도가 빠르다

 

예시)

TRUNCATE TABLE 테이블 이름;

 

3) DROP

1. 테이블 자체를 삭제한다. 속도가 매우 빠르다 (DELETE < TRUNCATE < DROP 순으로 빠르다.)

 

예시)

DROP TABLE 테이블_이름;

프로그래머스 SQL 

 

문제 : 3월에 태어난 여성 회원 목록 출력하기

문제 설명 : 

풀이 : 먼저 출력되는 값이 MEMBER_ID , MEMBER_NAME, GENDER, DATE_OF_BIRTH 이 출력되고,

받아오는 건 MEMBER_PROFILE에서 받아온다. 

SELECT MEMBER_ID, MEMBER_NAME, GENDER,DATE_OF_BIRTH
FROM MEMBER_PROFILE

조건문을 작성 할 WHERE 문에는 성별이 여자인 회원만 받아와야 하니 GENDER = 'W' 를 적어준다.

생년월일에서 3월인 사람들만 출력되어야 하니 LIKE 문을 사용하여 3월인 사람만 출력되게 적어준다. ( '%03%')

그리고 회원 ID를 기준으로 오름차순으로 정렬되어야 하니 ORDER BY 문을 사용하여 오름차순으로 정렬되게 만들어준다.

WHERE GENDER ='W' AND  DATE_OF_BIRTH LIKE '%03%'
ORDER BY MEMBER_ID ASC;

이러고 실행했는데 실패가 나왔다. 출력된 것을 보니 전화번호가 NULL 값인 사람도 들어가 있었다. 문제에는 NULL값은 출력 X 였다.

NULL 값을 출력 대상에서 제외시키는 것은 강의에서 배우지 못했기에 구글링을 했다.

http://triki.net/prgm/250 해당 블로그를 참조했다.

필드 값이 NULL이 아닌 데이터만 조회하면 되므로 IS NOT NULL 을 사용하면 된다.

출력 되어야 하는 값에는 전화번호가 담긴 TLNO은 출력이 안되야 하므로 SELECT 에는 적지 않고 WHERE 문에 적어줬다.

WHERE GENDER ='W' AND  DATE_OF_BIRTH LIKE '%03%' AND TLNO IS NOT NULL

여기까지 한 후 실행했는데 이번에는 또 전화번호가 문제였다..

출력 된 생년월일은 1992-03-16:00:00:00  이런식으로 출력되었고 출력 되어야 할 생년월일은 1992-03-16 이렇게 나와야했다.

이거도 강의에선 배우지 못해 구글링을 하였다.

https://wakestand.tistory.com/555 해당 블로그를 참고했다.

 

SELECT DATE_FORMAT(NOW(), '%Y%m%d'); 을 이용하면 된다고 적혀있어서

SELECT에 적어둔 DATE_OF_BIRTH 대신 SELECT DATE_FORMAT(DATE_OF_BIRTH , '%Y%m%d') 을 적었다.

SELECT MEMBER_ID, MEMBER_NAME, GENDER, DATE_FORMAT(DATE_OF_BIRTH,'%Y-%m-%d')

 

전체 코드

-- 코드를 입력하세요
SELECT MEMBER_ID, MEMBER_NAME, GENDER, DATE_FORMAT(DATE_OF_BIRTH,'%Y-%m-%d')
FROM MEMBER_PROFILE 
WHERE GENDER ='W' AND  DATE_OF_BIRTH LIKE '%03%' AND TLNO IS NOT NULL 
ORDER BY MEMBER_ID ASC;

실행 결과

내일은 강의를 듣고 프로그래머스 문제를 계속 풀어봐야겠다.