2024/09 61

DBeaver) table 대신 view 쓰는 이유

간혹 create table 말고 create view 하는 경우가 있습니다. 테이블이랑 똑같은 view 라는 친구가 있는데 뭔지 알아봅시다. 짧아서 글만 읽고 지나갑시다.    view가 뭐냐면  SELECT 로 찾은 행들이 너무나 마음에 들어서테이블로 두고두고 저장해서 쓰고 싶습니까? 그럼 실제 테이블로 저장해도 되겠지만 더 간단하게 view로 만들어둘 수도 있습니다. view는 가상의 테이블입니다. 테이블처럼 사용할 수 있습니다.     CREATE VIEW 뷰이름 ASSELECT 컬럼1, 컬럼2, ...FROM 테이블명 view 만드는 문법은 이렇습니다. SELECT로 찾은 행들을 view로 만들어달라는 코드입니다.     그럼 시간드릴테니 전에 사용하던 테이블들 아무거나 JOIN해서 view로 ..

Mysql&DBeaver 2024.09.08

DBeaver)SELECT 결과들을 합치려면 UNION

오늘은 UNION 문법을 매우 짧고 쉽게 알아봅시다. 코드 열심히 짜다보면 SELECT 여러개를 사용해야하는 경우가 있습니다. SELECT문을 여러개 쓰면 결과를 각각 다른 탭에 보여줄텐데 이게 싫으면 하나의 결과로 합쳐놓을 수 있습니다.UNION 문법 쓰면 됩니다.     UNION 사용법   ▲ 저번시간의 insert_test 데이터베이스에 비슷한 테이블 2개를 만들어놨습니다. 이 2개의 테이블을 전부 출력하고 싶으면 어떻게 코드짭니까 SELECT * FROM insert_test.stock;SELECT * FROM insert_test.stock2;각각 출력해보면 되지 않겠습니까 근데 이러면 결과를 다른 탭으로 출력해줍니다.   이게 싫고 결과를 하나로 합치고 싶으면 UNION 문법을 씁시다.   ..

Mysql&DBeaver 2024.09.08

DBeaver)수정 삭제는 UPDATE / DELETE (WHERE 안쓰면 퇴사각)

오늘은 수정, 삭제문법 빠르게 배우고 집에 가도록 합시다.   UPDATE / SET 특정 행의 데이터를 수정하고 싶으면 UPDATE 문법을 씁시다.  UPDATE 테이블명 SET 컬럼1 = 값, 컬럼2 = 값WHERE 조건식  SET 뒤엔 컬럼마다 어떤 값으로 수정할 것인지 선택하면 됩니다. WHERE 뒤엔 어떤 행을 업데이트할 것인지 조건식을 넣어줍니다.물론 믿을 수 없으니 테스트해봐야합니다.      ▲ 저번 시간에 썼던 product 테이블을 가져와서id가 1인 데이터의 가격을 5000, 상품명을 단무지로 수정해봅시다.   UPDATE productSET 가격 = 5000, 상품명 = '단무지'WHERE id = 1 이러면 수정되는군요.  문자자료는 언제나 따옴표 칩시다.       UPDATE ..

Mysql&DBeaver 2024.09.07

DBeaver)데이터 넣거나 복사하려면 INSERT / 권한주기

테이블에 데이터 넣고 싶으면 DBMS 프로그램에서 직접 클릭과 타이핑으로 넣을 수 있는데대량 or 자동으로 넣고 싶으면 당연히 SQL 짜서 넣습니다. 새로 테이블 아무데나 만들고 시작해봅시다.     연습용 테이블 만들기 아무 데이터베이스에 테이블하나 만들어보십시오.id, 상품명, 가격 이렇게 3개의 컬럼을 만들어주면 됩니다. id는 Auto increment, Primary key 제약도 넣어주십쇼 물론 배운사람처럼 SQL 써서 만들어보십시오.   CREATE TABLE product ( id INT AUTO_INCREMENT PRIMARY KEY, 상품명 varchar(100), 가격 INT) ▲ 전 테이블 만들 땐 이런거 써봤음       데이터 집어넣고 싶으면 INSERT 주구장창 SELEC..

Mysql&DBeaver 2024.09.07

DBeaver)저번시간 숙제와 LEFT, RIGHT JOIN

테이블 여러개 출력할 때 INNER JOIN 쓰면 된다고 했습니다.그리고 공통점이 있는 행만 필터링하고 싶으면 ON 조건문도 붙이면 된다고 했습니다.근데 공통점이 없는 행도 함께 출력해보고 싶으면 LEFT JOIN, RIGHT JOIN, OUTER JOIN 쓰면 됩니다.    ▲ 일단 저번 시간에 썼던 program, teacher 테이블에 id가 이상한 행 1개 씩 추가하고 시작해봅시다.       왼쪽 테이블 전체 + 공통된 행 출력하고 싶으면 LEFT JOIN 그러니까 전에 했던 INNER JOIN 결과 + 왼쪽 테이블 모든 행을 출력하고 싶으면LEFT JOIN 문법 쓰면 됩니다.  SELECT * FROM program LEFT JOIN teacher ON program.강사id = te..

Mysql&DBeaver 2024.09.07

DBeaver)테이블 2개 합쳐서 출력은 INNER JOIN

제X 정규형 테이블 만드는 것 까지는 좋은데그거한다고 테이블을 다 쪼개놓으면 나중에 출력은 어떻게 할 것입니까.실은 SELECT와 JOIN문법 잘 쓰면 해결되기 때문에 별로 걱정은 안해도 됩니다. JOIN 쉽게 이해하려면 테이블 합치는 방법부터 알아야하는데 그것부터 알아봅시다.       다른 테이블에 있는 컬럼도 같이 출력하고 싶습니다   저번 시간에 만들어놨던 이런 테이블이 있다고 합시다.   ▲ 위 사진처럼 프로그램, 가격, 강사, 출신대학까지 이렇게 4개의 컬럼을 한 번에 출력하고 싶으면SELECT 문법을 어떻게 써야할까요? 실은 고민할게 없는 게 SELECT의 비밀 기능이 하나가 있는데SELECT FROM 문법쓸 때 2개 이상의 테이블을 적을 수 있습니다. 그럼 하나의 테이블로 합쳐서 출력해줍니..

Mysql&DBeaver 2024.09.06

DBeaver)제3정규형 (3NF) & Foreign Key

제1, 제2에 이어서 제3정규형도 있는데 만드는 법을 알아봅시다.      제3정규형 (3rd normal form) 제2정규형을 만족하는 테이블에서 primary key 또는 composite primary key 컬럼에 종속된게 아닌하찮은 잔챙이 컬럼에 종속된 컬럼을 다른 테이블로 빼면그게 제3정규형 테이블입니다.    [체육센터 프로그램 table]프로그램가격강사출신대학스쿼시5000김을용서울대헬스6000박덕팔연세대골프8000이상구고려대골프 중급9000이상구고려대개인피티6000박덕팔연세대 ▲ 대충 제2정규화해놓은 테이블을 가져왔습니다. 제2정규형을 만족하기 때문에 partial dependency는 없어보이는군요. 하지만 '출신대학'이라는 컬럼에 주목해봅시다. '프로그램'이라는 primary key와..

Mysql&DBeaver 2024.09.06

DBeaver)정규형 알면 DB 설계 가능 (1NF, 2NF)

사람들이 SQL 배울 때 JOIN 문법을 매우 어려워합니다. 그거 배우다보면 의문도 많이 생기고 왜 테이블을 애초에 여러개로 나눠놓는지 이해도 안가고 약간 반발심이 생길텐데 오늘 설명할 정규화/정규형이라는걸 배우게 되면 매우 쉬워집니다. 배워두면 나중에 DB 설계도 도움없이 알아서 잘할 수 있음      제1정규형 (1st normal form) 여러분은 지금부터 구민 체육센터 전산시스템 만드는 개발자입니다. 일단 체육센터에 수강 등록한 사람들을 테이블로 정리하고 싶은겁니다.  [수강등록현황 table]회원번호회원이름프로그램101강호동스쿼시초급102손흥민헬스103김민수헬스 그래서 테이블 하나 만들어서 이쁘게 잘 저장을 해놨습니다. 근데 '김민수' 라는 사람이 다음 날 '골프초급'을 또 수강신청한겁니다.그..

Mysql&DBeaver 2024.09.06

DBeaver)컬럼에 안전하게 제약 (Constraints) 주기

컬럼에 Constraints (제약조건) 주기 컬럼만들 때 제약조건을 걸어둘 수 있습니다. - 이 컬럼은 NOT NULL 해야한다 (텅빈 데이터 집어넣지 말아라)- 이 컬럼에 있는 데이터들은 항상 UNIQUE 해야한다 - 여기에 음수말고 양수만 들어오는지 CHECK 하라- 이 컬럼을 PRIMARY KEY로 설정하라등 여러가지 설정이 가능합니다.    1. NOT NULL 제약조건 CREATE TABLE new_table ( id INT NOT NULL, 이름 VARCHAR(100) NOT NULL, 나이 INT) 컬럼 만들 때 우측에 NOT NULL을 체크해주면 NULL 금지라는 제약을 걸 수 있습니다.원래 데이터넣을 때 까먹고 안넣으면 자동으로 NULL이 됩니다. 텅비어있다는 뜻임 그래..

Mysql&DBeaver 2024.09.06