본문 바로가기

MYSQL30

MYSQL - 테이블 생성 - Unique 유니크 만약 회원가입을 위한 데이터들을 입력했다고 하자 insert into user(email, password, nickname)values('abc@naver.com', '1234', '홍길동');  그런데 시간이 흘러 어떤 유저가 내가 이걸 가입을 했었는지기억을 못하고다시 했다고 해보자 닉네임과 비밀번호는 다르게 했다고 치고이메일을 중복으로 했다고 하자 insert into user(email, password, nickname)values('abc@naver.com', '4567', '길동이');  그랬을때 아무런 문제 없이 이게 등록이 되면문제가 있다 버그가 발생할 수도 있고취약점이 생길 수도 있고 아무튼 그렇다면 이런 일을 방지해야 한다  테이블 설정으로 들어가서UQ - Unique 버튼을 .. 2024. 5. 17.
MYSQL - 다중테이블 MYSQL - 이중테이블, foreign key, join( ) -left,right   이중 테이블은 알아봤다 그렇다면3개 이상의 테이블은 무엇이 다를까 예제는 이런 관계인데사실 이 경우에는 이중 테이블과 큰 차이는 없다다만 연결 되는 테이블이 1개보다 많다보니 좀 더 신경을 써야하는 정도 우선 시리즈 테이블과 리뷰어즈 테이블을 만든 뒤리뷰즈 테이블을 만드는데 역시시리즈 아이디와리뷰어즈 아이디의 UN을 체크 해준뒤에 foreign key 에서 각각 체크를 해주자  그리고 달라지는 점은 이런 화면은 어떻게 나와야 할까3가지를 모두 join 해야 한다 생각보다 간단하다select s.title, r.rating, concat( rs.first_name, ' ' , rs.last_name) as review.. 2024. 5. 16.
MYSQL - 이중테이블, foreign key, join( ) -left,right, cascade 이러한 데이터가 있을때  어떤 주문자가자신의 이메일을 수정했다고 한다면 수천 수만건이 쌓여있는 이메일의 정보를 전부 수정해야한다  그건 좀 문제가 있다 그래서   테이블을 두개를 만들어커스터머의 정보를 담은 테이블과주문정보를 담은 테이블을 만들어 주문정보가 들어올때커스터머의 정보를 가져올 수 있게 하자 우선 커스터머 테이블을 만들고  오더 테이블을 만드는 데 이 때  아래의 Foreign Key를 클릭하자보통의 테이블을 만들때에는 PK 프라이머리 키가 있어 중복값이 없었지만오더테이블에는 커스터머 테이블의 ID가 몇개씩 중복되게 된다그러므로 Foreign Key는쉽게 말해 두 테이블을 연결해주는 열쇠라고 할 수 있겠다  클릭해보면 설정할 수 있는게 보이는데이때 Name은 알아서 보기좋게 설정하고중요한건 레.. 2024. 5. 16.
MYSQL - createdAt now( ) 작성시간, updateAt on update now( )수정시간 이런 형식으로 테이블을 만들었을때 리뷰를 남긴다고 할때id는 자동으로 기록될것이고200자 내외로 리뷰내용을 남길수 있고리뷰를 남길때의 시간이 기록 될것이다 그렇다면 insert into comment(content, createdAt)values('좋아요', now() );이런 형식으로 적혀지겠는데늘 컬럼 이름과 now()를 적을 일 없이 디폴트 셋팅을 해두자  이렇게 작성하지 않으면 기본값에 null대신 now() 로 하고어플라이를 하면 current_timestamp로 바뀌었지만뜻은 같다라는것을 알고 있다그래서 이제아래와 같이 작성하게 되면insert into comment(content)values('진짜 맛있네요~' ); 알아서 입력시간이 저장이 되게 됐다 다음은 수정시간 insert into c.. 2024. 5. 16.
MYSQL - Date, Time, DateTime 이러한 데이터가 있다고 할때이 데이터는 DATETIME 형식으로 있다고 가정할 때 날짜만 알고 싶을때, 요일정보가 필요할 때, 요일을 숫자로 표현하고 싶을 때select name, day(birthdate)from people;select name, dayname(birthdate)from people;select name, dayofweek(birthdate)from people;각각 day()dayname()dayofweek()으로 알 수 있으며 데이오브위크의 경우 일요일부터 1로 표시  월만 알고 싶을때, 월을 숫자가 아니라 문자로 보고싶을때, 년도만 확인하고 싶을때select name, month(birthdate)from people;select name, monthname(birthdate)f.. 2024. 5. 16.
MYSQL - CASE문 작성법, if( ) 사용법 출판년도가 2000년 이상인 책들은 '최신책' 이라하고 그렇지 않은 책들은 '예전책'이라고 하여 type 컬럼을 만들자라는 지문이 있을때 이것을 case문을 모를때는select *, released_year as type from books where replace(type,'type >=2000' , '최신책') and replace(type,'type 2024. 5. 14.