Language/MySQL (33) 썸네일형 리스트형 [MySQL] 데이터베이스 객체 데이터베이스 객체란 테이블이나 뷰, 인덱스 등 데이터베이스 내에 정의하는 모든 것을 일컫는 말이다. 객체지향 프로그래밍의 '객체'와는 다른 데이터베이스 내의 객체라는 의미로 '데이터베이스 객체'라 부른다. 객체는 데이터베이스 내에 실체를 가지는 어떤 것을 말한다. 객체의 종류에 따라 데이터베이스에 저장되는 내용도 달라진다. SELECT나 INSERT 등은 클라이언트에서 객체를 조작하는 SQL 명령으로, 실체가 없기 때문에 객체라 부를 수 없다. 객체는 이름을 가지기 때문에 데이터베이스 내에 객체를 작성할 때에는 이름이 겹치지 않도록 해야 한다. 객체에 이름을 붙일 때 다음과 같은 제약사항이 있다. 기존 이름이나 예약어와 중복하지 않는다 숫자로 시작할 수 없다 언더스코어( _ ) 이외의 기호는 사용할 수 .. [MySQL] 상관 서브쿼리 EXISTS [SYNTAX] EXISTS (SELECT 명령) EXISTS 술어를 사용하면 서브 쿼리가 반환하는 결괏값이 있는지를 조사할 수 있다. 예를 들어 서브쿼리를 사용해 검색할 때 '데이터가 존재하는지 아닌지' 판별하기 위해 조건 지정이 가능한데, 이 경우 EXISTS 술어를 사용해 조사할 수 있다. 위 두개의 테이블을 활용해서 sample552에 no열과 같은 값의 행이 있다면 '있음'으로, 없다면 '없음'으로 갱신한다. 없음의 경우, 행이 존재하지 않는 상태가 참이 되므로 이때는 NOT EXISTS를 사용한다. NOT을 붙이는 것으로 값을 부정할 수 있다. 상관 서브쿼리 서브 쿼리에는 명령 안에 중첩 구조로 된 SELECT 명령이 존재한다. update sample551 set a = '있음'.. [MySQL] 서브쿼리 서브 쿼리는 SELECT 명령에 의한 데이터 질의로, 상부가 아닌 하부의 부수적인 질의를 의미한다. [SYNTAX] ( SELECT 명령 ) 서브 쿼리는 SQL 명령문 안에 지정하는 하부 SELECT 명령으로 괄호로 묶어 지정한다. 특히 서브 쿼리는 SQL 명령의 WHERE구에서 주로 사용된다. WHERE 구는 SELECT, DELETE, UPDATE 구에서 사용할 수 있는데 이들 중 어떤 명령에서든 서브 쿼리를 사용할 수 있다. DELETE의 WHERE구에서 서브 쿼리 사용하기 서브 쿼리를 사용해서 최솟값을 가지는 행을 삭제할 수 있지만, MySQL에서는 실행할 수 없다. 데이터를 추가하거나 갱신할 경우 동일한 테이블을 서브 쿼리에서 사용할 수 없도록 되어있기 때문이다. 에러를 발생하지 않고 실행하려면.. [MySQL] 그룹화 - GROUP BY [SYNTAX] SELECT * FROM 테이블명 GROUP BY 열 1, 열 2,... GROUP BY로 그룹화를 통해 집계 함수로 넘겨줄 집합을 그룹으로 나눌 수 있고, 집계 함수의 활용 범위를 넓힐 수 있다. GROUP BY구에서는 그룹화할 열을 지정한다. 물론 복수로도 지정이 가능하다. 위의 결과를 보면 DISTINCT를 지정했을 때와 같은 결과가 나온다. GROUP BY구에 열을 지정하여 그룹화하면 지정된 열의 값이 같은 행이 하나의 그룹으로 묶인다. 각 그룹으로 묶인 값들은 서로 동일하다. 즉, 결과적으로는 각각의 그룹 값이 반환되며, DISTINCT와 같이 중복을 제거하는 효과가 있다. GROUP BY 구를 지정하는 경우 집계 함수와 함께 사용하지 않으면 별 의미가 없다. HAVING 구로 .. [MySQL] COUNT 이외의 집계 함수 [SYNTAX] SUM( [ ALL | DISTINCT ] 집합 ) AVG( [ ALL | DISTINCT ] 집합 ) MIN( [ ALL | DISTINCT ] 집합 ) MAX( [ ALL | DISTINCT ] 집합 ) 집계 함수는 COUNT 이외에도 SUM, AVG, MIN, MAX 등이 있다. SUM으로 합계 구하기 SUM 집계함수에 지정되는 집합은 수치형뿐이다. 문자열형이나 날짜 시간형의 집합에서 합계를 구할 수 없다. SUM 집계함수도 COUNT와 마찬가지로 NULL값은 무시한다. NULL값을 제거한 뒤 합계를 낸다. AVG로 평균내기 AVG라는 집계 함수를 사용하면 간단하게 평균값을 구할 수 있다. AVG 집계 함수에 주어지는 집합은 SUM과 동일하게 수치형만 가능하다. AVG 집계 함수도 .. [MySQL] 행 개수 구하기 - COUNT [SYNTAX] 집계 함수 COUNT (집합) SUM (집합) AVG (집합) MIN (집합) MAX (집합) SQL은 데이터베이스라 불리는 '데이터 집합'을 다루는 언어로 이 같은 집합의 개수나 합계가 궁금하다면 위와 같은 집계 함수를 사용하여 간단하게 구할 수 있다. COUNT로 행 개수 구하기 sample51 테이블에는 전부 5개의 행이 있으며, COUNT의 결괏값도 5가 나온다. 집계 함수의 특징은 복수의 값(집합)에서 하나의 값을 계산해 내는 것이다. 일반적인 함수는 하나의 행에 대하여 하나의 값을 반환하지만, 집계 함수는 집합으로부터 하나의 값을 반환한다. 이렇게 집합으로부터 하나의 값을 계산하는 것을 '집계'라고 한다. SELECT 구는 WHERE구보다 나중에 처리되어 WHERE구로 조건을 .. [MySQL] 물리삭제와 논리삭제 데이터베이스에서 데이터를 삭제하는 방법은 용도에 따라 크게 '물리 삭제'와 '논리 삭제' 두 가지로 나뉜다. 이는 SQL 명령이 두가지 존재한다는 의미가 아닌 데이터를 삭제하는데 두 가지 사고방식이 있다는 뜻이다. 물리삭제 SQL의 DELETE 명령을 사용해 직접 데이터를 삭제하는 사고방식이다. 삭제 대상 데이터는 필요 없는 데이터이므로 DELETE 명령을 실행해서 테이블에서 삭제해버리자 라는 지극히 자연스러운 발상에 의한 삭제 방법이다. 사용자의 개인정보를 다루는 시스템에서 탈퇴한 경우 데이터를 삭제하는 경우 개인정보 유출을 방지하는 측면에서 물리 삭제를 하는 편이 좋은 선택이라 할 수 있다. 논리 삭제 테이블에 '삭제 플래그'와 같은 열을 미리 준비해 둔다. 즉, 테이블에서 실제로 행을 삭제하는 대신.. [MySQL] 데이터 갱신하기 - UPDATE [SYNTAX] UPDATE 테이블명 SET 열명 = 값 WHERE 조건식 RDBMS에서는 UPDATE 명령으로 데이블의 셀 값을 갱신할 수 있다. UPDATE명령은 SET 구를 사용해서 갱신할 열과 값을 지정한다. SET구에 지정한 갱신 내용은 처리 대상이 되는 모든 행에 적용된다. WHERE구에 조건을 지정하면 그에 일치하는 행을 갱신할 수 있지만, WHERE 구를 생략한 경우 테이블의 모든 행이 갱신된다. SET구에서 ' = '은 비교 연산자가 아닌 대입 연산자이기 때문에 이처럼 UPDATE명령에서 증가 연산으로 데이터 갱신이 가능하다. 또한, SET구에서 필요에 따라 콤마( , )를 사용해서 복수 열 갱신도 가능하다. [SYNTAX] UPDATE 테이블명 SET 열명1 = 값1, 열명2 = 값2,.. 이전 1 2 3 4 5 다음