목록MySQL (24)
개발학습일지
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bjl1Fq/btsHrZjSa1M/B8aEPXAKzwVHy1PGMb81M1/img.png)
Foreign Keys 지정해서 테이블끼리 연결하는 방법 FOREIGN KEYFOREIGN KEY 제약 조건을 설정한 필드는 외래 키라고 부르며, 한 테이블을 다른 테이블과 연결해 주는 역할을 한다.외래 키가 설정된 테이블에 레코드를 입력하면, 기준이 되는 테이블의 내용을 참조해서 레코드가 입력된다.즉, FOREIGN KEY 제약 조건은 하나의 테이블을 다른 테이블에 의존하게 만드는데 외래 키의 이 부분이 데이터의 정확성을 높여준다고 볼 수 있다.FOREIGN KEY 제약 조건을 설정할 때 참조되는 테이블의 필드는 반드시!! UNIQUE나 PRIMARY KEY 제약 조건이 설정되어 있어야 한다.참조. https://www.tcpschool.com/mysql/mysql_constraint_foreignKe..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/b92yGO/btsHqPhXtGK/mGWw53bmPvvqHKaTimm9A0/img.png)
MySQL 테이블 설정하기 createdAt : 처음 생성될 때 설정Datatype을 TIMESAMP로 지정하고 디폴트 값을 now()로 입력하면데이터를 저장할 때 해당 값을 입력하지 않아도 데이터를 입력한 시간으로 자동 저장된다. (테이블 Default 값을 now()로 입력하고 Apply 하면 CURRENT_TIMESTAMP로 자동 변환된다.) updateAt : 데이터가 수정될 때 설정Datatype을 TIMESAMP로 지정하고 디폴트값을 now() on update now()를 입력하면해당 컬럼에 데이터를 변경(수정)할 때 시간이 업데이트돼서 저장된다(테이블 Default 값을 now() on update now()로 입력하고 Apply하면 CURRENT_TIMESTAMP ON UPDATE CU..
날짜와 시간 처리하기 DB에서 년, 월, 일 다루기 _birthdate = DATE- day(), month(), year(), dayname(), dayofweek() -- 날짜만 가져올때select name, day( birthdate )from people;-- 월만 가져올때select name, month( birthdate )from people;-- 년도만 가져올때select name, year( birthdate )from people;-- 요일을 문자열로 가져올때select name, dayname( birthdate )from people;-- 요일을 숫자로 가져올때 _글로벌하게 사용하기 위해서 숫자로 사용한다.-- 각 국가의 언어로 클라이언트 개발자가 숫자에서 글로 바뀌게 만든다.se..
SQL 조건문 사용하기주의!!- 조건문을 통해 새로운 컬럼을 만들어 주는 것이기 때문에 select * , 콤마 필수로 신경 써줘야 한다!- 스키마 설정한 컬럼이 아니면 에러난다! 테이블에 원래 있던 컬럼만 사용이 가능하고, 가공된 컬럼은 사용 할 수 없다. case: case와 end는 한쌍이며 select 아래 위치, when - then은 항상 같이 사용 else는 모든 조건이 True가 아닌 경우 else의 결괏값을 반환한다. (else가 없으면 null 반환된다.): 컬럼값이 같은 and는 between a and b 로도 사용이 가능하다 _like 키워드 제외: 컬럼값이 같은 or는 in (특정값, 특정값,...)로도 사용이 가능하다 _like 키워드 제외-- 출판년도가 2000..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cF1Ibc/btsHp9VbxhL/kD0NkvIU2ZVLRofcrkxrY1/img.png)
SQL null인 데이터를 가져오기, 바꾸기 SQL null인 데이터를 가져오기- is null: null 인 데이터 가져올때 주의 할 점!-- 틀린 예)select *from bookswhere stock_quantity = null; 위에 처럼 틀린 코드를 적어도 오류가 나지 않는다. 이것이 바로 버그다! 그래서 , 신경써서 is null 을 써줘야한다.-- 올바른 예)select *from bookswhere stock_quantity is null; SQL null이 아닌 데이터 가져오기- not-- 재고가 null이 아닌 데이터를 가져오시오.select *from bookswhere stock_quantity is not null; SQL null인 데이터 바꾸기- ifnull(): N..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/5hSBC/btsHpKuB0Ow/RgKWwilOYkyNB9RMA9H9Kk/img.png)
SQL 데이터 그룹하여 데이터 사용하기 _group by group by: ~ 별로 묶어서 ... 하자: 데이터를 집계하는 키워드: 카테고리컬 데이터의 유형별로 개수를 알고 싶을 때 컬럼에 데이터를 그룹화시켜 사용한다. -- 각 작가의 full name 별로 (author_fnmae, author_lname)-- 해당 작가가 최조로 책을 발행한 년도는 몇년도 입니까?select author_fname, author_lname, min( released_year ) min_yearfrom booksgroup by author_fname, author_lnameorder by min_year; having: group by한 데이터에 조건처리를 하는 경우 사용한다 (= group by 한 결과에 조건을 붙..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/btD60M/btsHoqKxwIg/yzRK1gPFPCIhuOtqqXbOgK/img.png)
Sub Query 사용하기 Sub Query : 하나의 SQL문 안에 포함되어 있는 또 다른 SQL문 이다. (= 쿼리 내부에 포함되어 있는 select 문) ※ 서브쿼리는 메인쿼리의 컬럼을 사용 가능 / 메인쿼리는 서브쿼리의 컬럼 사용 불가능-- 페이지수가 가장 긴 책의 제목은?-- 잘못된 SQLselect title, max(pages)from books ;-- max값 구해서 sub query 하기select max(pages) from books;select *from bookswhere pages = (select max(pages) from books);