DataBase/MySql 6

[MySql] TINYINT

효율적으로 데이터 형식을 결정하기 위해 TINYINT를 쓸 수 있다. 만약, 키에 대한 컬럼의 형식을 정할 때 SMALLINT로 지정할 수 있지만, SMALLINT는 -32768 ~ 32767 까지의 정수를 담을 수 있는데, 이때 키는 그 정도까지의 숫자가 필요하지 않기 때문에 TINYINT를 쓸 수 있다는 것이다. 하지만 TINYINT는 -128 ~ 127 의 숫자를 담을 수 있는데 127 이상인 키를 가진 사람들을 어떻게 담을지 걱정일 수 있다. 이때 TINYINT UNSIGNED로 쓴다면 0 ~ 255로 변환하여 쓸 수 있게 된다. 다른 정수형도 마찬가지로 UNSIGNED를 붙이면 0부터 범위가 지정된다.

DataBase/MySql 2023.02.27

[MySql] HAVING절

HAVING 예를 들어서, 출력 된 결과 중에서 총 구매액이 1000이상인 회원에게만 어떤 조건을 주려한다면 아마 WHERE 절에 조건을 줘야하나 싶을거다. SELECT mem_id, SUM(price*amount) "총 구매금액" FROM buy WHERE SUM(price*amount) > 1000; GROUP BY mem_id; 그 생각대로 이렇게 하면 아마 바로 오류가 날 것이다. 이럴때 WHERE 대신 사용하는 것이 HAVING절이다. HAVING은 WHERE과 비슷한 개념으로 조건을 제한하는 것이지만, 집계함수에 대해서 조건을 제한하는 것이라고 생각하면 된다. 그리고 HAVING은 GROUP BY절 다음에 나와야 한다. SELECT mem_id, SUM(price*amount) "총 구매금액"..

DataBase/MySql 2023.02.24

[MySql] IN()

얼렁뚱땅뚱땅 개발하다보니 기초적으로 놓친것이 너무나 많다. IN() 만약 경기/전남/경남 중 한 곳에 사는 회원을 검색하려면 일일이 OR로 써줘야한다. SELECT mem_name, addr FROM member WHERE addr = '경기' OR addr = '전남' OR addr = '경남'; 이렇게말이다. 하지만 IN()을 사용하면 코드를 훨씬 간결하게 작성할 수 있다. SELECT mem_name, addr FROM member WHERE addr IN('경기', '전남', '경남'); 이렇게 말이다. 조건식에서 여러 문자 중 하나에 포함이 되는지 비교할 때는 IN()이 간결하다는 것을 알 수 있다.

DataBase/MySql 2023.02.24

[Mysql] DB기준 date로 insert하기

insert 또는 select를 할 때 시간이나 날짜를 불러오는 경우가 있는데, 나는 원래 자바스크립트나 자바에서 calander를 쓰거나 new date()를 이용해서 가공해서 넣거나 가지고 왔었는데!!! 팀장님께서 그렇게 하면 본인 컴퓨터의 시간이 들어가지 db안의 시간이 들어가지 않는다고 말씀해주셨다!! 그렇게 db의 date를 가지고 오는 법! SELECT date_format(now(), '%Y-%m-%d') as date; 이런 식으로 date를 꺼낼 수 있다!!! insert로 db시간을 넣는 법은! INSERT INTO aton_company_site (regDate) VALUES date_format(now(), '%Y%m%d%H%i%s')); 이렇게 value값에 now()로 넣어주면 ..

DataBase/MySql 2022.04.29

[MySQL] 중복값 쿼리

과제 수행중에 제휴사를 등록할 때 중복값이 있으면 못들어가게 하라는 팀장님의 지시로 어떻게 하나 고민하다가 동기의 도움으로 해결했다! resultType을 int로 해서 companynm(중복값을 검증할 컬럼)값이 있다면 1로 반환을 해주고, 없으면 0을 반환해준다. 이걸 가공해서 뿌리면 됨~! **id랑 resultType을 잘 확인해야합니다~! * 가공과정은 따로 올리겠슴다!

DataBase/MySql 2022.04.29