[MySQL] 문자열 합치기, 문자열 자르기, 문자열 바꾸기
2023. 6. 9. 20:29
프로그래밍/SQL
MySQL 문자열 합치기 - concat() concat(str1, str2, ...) 로 사용 -- 권정열(41) 로 조회 select concat(name, '(', age, ')') from member; MySQL 문자열 자르기 - substring() substring(str, pos, len) 로 사용. 여기서 len은 옵션으로 설정하지 않으면 끝까지 -- Java 출력 select substring('Javascript', 1, 4); -- Brand 출력 select substring('NoBrand', 3); MySQL 문자열 바꾸기 - replace() replace(str, from_str, to_str) -- 다음주는 쉬는날이 많기에, 다음주에 여행을 갈 계획이다. 출력 select..
[MySQL] 테이블의 행의 개수 가져오기
2023. 5. 12. 20:14
프로그래밍/SQL
row_number()로 테이블 행의 개수 가져오기 행의 개수를 함께 조회하고 싶다면 row_number()를 사용하면 됨 row_number() over(정렬기준) # 적용 예시 row_number() over(order by user_seq) 사용 예시 select row_number() over(order by user_id) as row , user_id , user_name from user; 결과 row user_id user_name 1 id1 권정렬 2 id2 차은우
[MySQL] ORDER BY 시 NULL 맨 뒤로 보내기
2023. 5. 11. 20:17
프로그래밍/SQL
ORDER BY 사용하여 정렬하기 기본적으로 MySQL에서 ORDER BY를 사용하게 되면 NULL이 앞으로 정렬됨 SELECT * FROM USER ORDER BY CREATED_DATE; NULL을 뒤로 보내고 정렬하기 IS NULL 을 ORDER BY 에 추가해주면 됨 SELECT * FROM USER ORDER BY CREATED_DATE IS NULL; ## 혹은 SELECT * FROM USER ORDER BY CREATED_DATE IS NULL ASC;
[MySQL Error] warning : Integer display width is deprecated and will be removed in a future release. 해결 방법
2023. 4. 21. 20:30
프로그래밍/SQL
warning : Integer display width is deprecated and will be removed in a future release. MySQL 테이블 생성 시 warning 뜸 원인 내용을 읽어보니 정수 타입 필드에 크기를 지정 발생한 warning임 MySQL 8.0.17 버전부터 도입된 변경 사항으로 추후 릴리스에서 정수 필드의 크기 지정하는 기능이 삭제될 예정이기에 경고 뜸 해결 방법 필드의 크기를 제거하면 해결 create table order ( order_seq int not null auto_increment, is_deleted int(1) default '0', primary key (order_seq) ); 아래와 같이 is_deleted int(1) -> is_..
[MySQL Error] GROUP BY 에러 해결 방법
2023. 4. 17. 21:40
프로그래밍/SQL
Expression of SELECT list is not in GROUP BY clause and contains nonaggregated column which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by 원인 GROUP BY 컬럼 사용 시 SELECT 가능한 컬럼은 GROUP BY에 나열된 컬럼과 집계 함수(SUM, COUNT 등)만 가능 그 외에 컬럼을 SELECT 한 경우 에러 발생 해결 방법 GROUP BY 에 모든 SELECT 컬럼 적어주기
[sql] drop, delete, truncate 차이
2023. 3. 27. 22:36
프로그래밍/SQL
drop, delete, truncate 데이터를 삭제하는 구문 DROP 테이블, 뷰, 인덱스 등과 같은 데이터베이스 객체를 삭제시 사용 DROP을 사용하면 해당 객체와 모든 데이터가 삭제됨 예시 DROP TABLE user; DELETE 테이블에서 데이터 행을 삭제시 사용 DELETE을 사용하면 테이블의 특정 행을 삭제하거나 조건에 맞는 모든 행을 삭제할 수 있음 해당 행들이 차지하던 데이터 공간은 해제되어 재사용 → DB 용량은 그대로이기에 디스크 공간의 낭비가 발생할 수 있음 예시 DELETE FROM user WHERE age = 30; TRUNCATE 테이블에서 모든 행 삭제시 사용 테이블 스키마는 그대로 유지되고 테이블 내의 모든 데이터가 삭제 테이블에서 모든 행을 삭제하고 해당 행들이 차지하..
[SQL] 트랜잭션 격리 수준(isolation level)
2022. 12. 30. 20:42
프로그래밍/SQL
트랜잭션 격리 수준 트랜잭션 격리 수준(Transaction Isolation Levels)은 고립도와 성능의 Trade-off 를 조절 트랜잭션 격리 수준이란 트랜잭션들끼리 얼마나 고립되어있는지 (잠금수준)를 나타내는 것으로 특정 트랜잭션이 다른 트랜잭션에 의해 변경된 데이터를 볼 수 있도록 허용할지 말지를 결정하는 것 임 READ UNCOMMITTED(트렌젝션 레벨 0) : 다른 트랜잭션에서 커밋되지 않은 내용도 참조할 수 있음 READ COMMITTED(트렌젝션 레벨 1) : 다른 트랜잭션에서 커밋되 내용만 참조할 수 있음 (ORACLE) REPETABLE READ(트렌젝션 레벨 2) : 트랜잭션에 진입하기 이전에 커밋된 내용만 참조할 수 있음 (MySQL) SERIALIZABLE(트렌젝션 레벨 3..
[SQL] 조회된 ROW가 없을 때, RETURN 하는 방법
2022. 12. 28. 20:44
프로그래밍/SQL
조회된 ROW가 없을 때, RETURN 하는 방법 일반적으로 조회 시 조건절에 부합하는 데이터 ROW가 없을 경우 조회되지 않음 그러나 JOIN 등 특수한 경우 조회되는 ROW가 없더라도 반환시켜야 하는 일이 생김 이러한 경우 간단하게 GROUP BY를 통하여 RETURN이 가능함 select u.user_id, o.order_number, uc.coupon_code from order o inner join user u on (o.user_id = u.user_id) inner join user_coupon uc on (u.user_id = uc.user_id) group by u.user_id;