반응형 SQL186 MySQL Count(1) Count(*) Count(컬럼) 차이 정리 MySQL에서 Count(1) Count(*) 은 다르다고 하는데 실제 사용해보면 아무 차이가 없고 퍼포먼스에서도 역시 아무 차이가 없다 심지어 Count(1) 혹은 Count(*) 대신 Count(-2041)을 써도 결과는 똑같다 뭘 써도 상관없지만 대부분은 COUNT(*) 를 사용하는 만큼 가독성을 위해 1보다는 *를 사용할 것을 권장한다 다음으로 COUNT(컬럼명)으로 사용 시 해당 컬럼에서 NULL이 아닌 값의 갯수만 가져오는데 COUNT 안에 컬럼이 들어가는 경우에는 NULL이 아닌 값만 계산한다는 것을 활용해 CASE WHEN이나 IF를 사용해 조건에 맞는 값의 갯수만 가져올 수도 있다 2021. 5. 11. MySQL JSON 조회 및 데이터 꺼내오는 방법 MySQL에서 위와 같이 컬럼에 JSON 형식으로 데이터가 들어있을 경우에는 JSON_EXTRACT(컬럼명, '$[배열번호].Key명') 을 통해 값을 뽑아올 수 있는데 예제에서는 JSON 배열 첫 번째에 name은 chulsu age는 30이 들어있는 것이 보이는데 JSON_EXTRACT(컬럼명, '$[0].name') 을 해주면 JSON 배열 첫 번째에서 name 값인 chulsu를 가져오게 된다 이후 JSON_UNQUOTE(값); 을 사용해 ""를 뺀 값을 가져와주면 된다 마지막으로 예제에 사용한 쿼리는 아래와 같다 SELECT JSON -- [{"name": "chulsu", "age": "30"}, {"name": "younghee", "age": "20"}] , JSON_EXTRACT(JSON.. 2021. 4. 29. MySQL SELECT UPDATE 동시에 하는 방법 정리 MySQL에서 SELECT UPDATE 동시에 하는 방법은 UPDATE 시 SET에 서브쿼리를 사용해주면 되는데 위 예제를 보면 AGE = 부분에서 서브쿼리를 사용해서 값을 끌어온 것이 보이는데 서브쿼리를 굳이 두번이나 사용한 이유는 오라클은 서브쿼리 한번만 사용해도 SELECT UPDATE 동시에 사용이 가능하지만 MySQL에서는 에러가 나기 때문에 위와 같은 방법을 사용해줘야 한다 다음은 SELECT UPDATE 여러개를 변경하는 예제인데 MySQL은 오라클처럼 여러 컬럼을 묶어놓은 뒤 서브쿼리로 여러 컬럼을 조회해서 넣어줄 수 없기 때문에 위와 같이 컬럼 하나마다 서브쿼리를 작성해서 변경해줘야 한다 마지막으로 예제에 사용한 쿼리는 다음과 같다 -- SELECT UPDATE (컬럼 하나 변경 시) U.. 2021. 4. 15. 오라클 인덱스 타는지 확인방법 오라클에서 특정 쿼리 수행 시 인덱스(INDEX)를 타는지 확인하려면 쿼리문 위에 EXPLAIN PLAN FOR를 작성한 후 쿼리를 돌려주면 되는데 돌려주면 아무것도 뜨는 것이 없지만 SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY) 이 쿼리를 수행해주면 아까 EXPLAIN PLAN FOR를 사용했던 쿼리를 가지고 수행했을 경우 어떻게 수행할지 보여주는데 여기서 Operation / Name 부분을 보면 TABLE ACCESS FULL / TEST2 가 보이는데 Operation 부분이 FULL 이거나 Name에 인덱스 명이 들어오지 않으면 인덱스를 타지 않는 상태고 위와 같이 Operation 부분에 INDEX가 들어있거나 Name에 인덱스 명이 들어오면 인덱스를 타는 상태가 되겠.. 2021. 4. 14. MySQL 모든 테이블 이름 검색방법 MySQL에서는 INFORMATION_SCHEMA.TABLES 안에 모든 테이블에 대한 정보가 담겨있는데 SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '스키마명' 을 사용해주면 스키마별로 모든 테이블의 이름을 검색할 수 있다 WHERE 부분은 생략해도 되지만 조건에 스키마명을 넣어주지 않으면 너무 많은 테이블이 조회되기 때문에 스키마명을 조건으로 넣어서 사용하는 것이 좋다 2021. 4. 12. 오라클 모든 테이블 이름 검색방법 오라클의 DBA_TABLES 테이블 안에 모든 테이블에 대한 정보가 들어있는데 SELECT * FROM DBA_TABLES WHERE OWNER = '스키마명' 위 쿼리를 사용해주면 스키마별로 모든 테이블 이름을 검색 가능하다 WHERE을 사용하지 않을 시에는 모든 스키마가 다 걸려서 조회되는 테이블이 너무 많아 검색하기 힘드므로 ONWER = '스키마명' 이렇게 사용해주면 간단하게 테이블을 검색할 수 있다 2021. 4. 12. 이전 1 2 3 4 5 6 7 8 ··· 31 다음 반응형