본문 바로가기

Language/MySQL

(33)
[MySQL] 삭제하기 - DELETE [SYNTAX] DELETE FROM 테이블명 WHERE 조건식 데이터를 삭제할 경우 행 단위로 DELETE 명령을 수행한다. DELETE 명령에서 WHERE 절을 입력하게 되면 WHERE의 조건식에 해당하는 열만 삭제되고, WHERE 절 없이 DELETE명령을 수행하게 되면 모든 행을 대상으로 동작하기 때문에 테이블의 모든 데이터가 사라지게 된다. 데이터만 사라지는 것이고 테이블은 남아있다. 테이블도 삭제하려면 drop 사용해야 한다. DELETE 명령은 SELECT 명령과 같이 열을 지정할 수는 없다. DELETE no FROM sample41과 같이 열을 지정해서 그 열만 삭제는 불가능하다. DELETE 명령을 실행할 때는 재확인을 위한 대화창 같은 것은 표시되지 않으니 삭제 시 주의해야 할 것!
[MySQL] 행 추가하기 - INSERT [SYNTAX] INSERT INTO 테이블명(열 1, 열 2,... ) VALUES(값 1, 값 2,... ) RDBMS에서는 INSERT 명령을 사용해 테이블의 행 단위로 데이터를 추가한다. 별도의 값이 지정하지 않으면 null(b열의 default값)이 저장된다. NOT NULL 제약 no열에는 null값을 허용하지 않는 NOT NULL 제약이 걸려있기 때문에 위와 같은 명령을 입력하면 에러 발생한다. NOT NULL제약이 걸려있는 열은 NULL값을 허용하지 않는다. DEFAULT Default는 명시적으로 값을 지정하지 않았을 경우 사용하는 초기값이다. Default 값은 테이블을 정의할 때 지정할 수 있으며, desc 명령으로 Default 항목을 찾을 수 있다. 행을 추가할 경우 지정하지 않은..
[MySQL] case문으로 데이터 변환하기 임의의 조건에 따라 독자적으로 변환 처리를 지정해 데이터를 변환하고 싶은 경우 case문 이용 [SYNTAX] CASE WHEN 조건식 1 THEN 식 1 WHEN 조건식 2 THEN 식 2 ELSE 식 3 END when절에는 참과 거짓을 반환하는 조건식 기술 해당 조건을 만족하여 참이 되는 경우 then절에 기술한 식이 처리됨 when절에 기술한 어느 조건식에도 만족하지 못하는 경우 else절에 기술한 식이 처리됨 else는 생략 가능하며, 생략했을 경우 else null로 간주됨 null값을 0으로 변환하는 경우라면 위의 case문보다는 coalesce 함수가 더 간편하다. ●검색 case ● ● 단순 case ● case문은 select 구 이외에도 where 구, order by 구 등 어디에나..
[MySQL] 날짜 연산 SQL에서의 날짜 날짜나 시간 데이터는 수치 데이터와 같이 사칙 연산을 할 수 있다. 연산 후 결괏값으로 동일한 날짜 시간 유형의 데이터를 반환하거나 기간(간격)의 차를 나타내는 기간형(interval) 데이터를 반환하는 경우도 있다. 기간형은 '10일간', '2시간 10분'과 같이 시간의 간격을 표현할 수 있다. 시스템 날짜 시스템날짜란 컴퓨터에 내장되어 있는 시계로부터 실시간으로 얻을 수 있는 일시적인 데이터를 말한다. 표준 SQL에서는 'CURRENT_TIMESTAMP'라는 긴 이름의 함수로 실행했을 때를 기준으로 시간을 표시한다. 날짜 서식 날짜 데이터를 데이터베이스에 저장할 경우 CURRENT_TIMESTAMP를 사용해 시스템 상의 날짜를 저장할 수 있고, 직접 날짜를 지정해 임의의 날짜도 저장..
[MySQL] 문자열 연산 1. 문자열 결합 [문자열 결합 사례] 'ABC' || '1234' → 'ABC1234' => oracle, DB2, PostgreSQL에서 사용 'ABC' + '1234' → 'ABC1234' => SQL Server 에서 사용 concat('ABC', '1234') → 'ABC1234' => MySQL에서 사용 문자열 결합이란 위와 같이 문자열 데이터를 결합하는 연산이다. 2. SUBSTRING 함수 substring 함수는 문자열의 일부분을 계산해서 반환해주는 함수이다. 앞 4자리(연도) 추출 SUBSTRING('20140125001', 1, 4) → '2014' 5째 자리부터 2자리(월) 추출 SUBSTRING('20140125001', 5, 2) → '01' 3. TRIM 함수 trim함수는 문..
[MySQL] 수치 연산 사칙 연산 연산자 연산 예 우선순위 + 덧셈(가산) 1 + 2 = 3 2 - 뺄셈(감산) 1 - 2 = -1 2 * 곱셈(승산) 1 * 2 = 2 1 / 나눗셈(제산) 1 / 2 = 0.5 1 % 나머지 1 % 2 = 1 1 계산 순서는 기본적으로 왼쪽에서 오른쪽으로 진행 SELECT구로 연산하기 [SYNTAX] SELECT 식 1, 식 2... FROM 테이블명 열의 별명 별명은 예약어 AS를 사용해 지정 키워드 AS는 생략 가능 별명에 ASCII문자 이외의 것을 포함할 경우 더블 쿼트("")로 둘러싸서 지정 별명을 예약어로 지정하고 싶은 경우 더블쿼트로 둘러싸면 가능 ※ 싱글쿼트('')로 둘러싸는 것은 문자열 상수이다. 주의할 것. WHERE구에서 연산하기 위의 예문을 잘 보면 SELECT구에서 지정..
[MySQL] 결과 행 제한하기 - LIMIT 행수 제한 [SYNTAX] SELECT 열명 FROM 테이블명 WHERE 조건식 ORDER BY 열명 LIMIT 행수 LIMIT 구는 표준 SQL이 아닌 MySQL과 PostgreSQL에서 사용할 수 있는 문법 LIMIT 구는 WHERE구나 ORDER BY구 뒤에 지정 최대 행수를 수치로 지정 (만약 LIMIT 10으로 지정하면 최대 10개의 행이 클라이언트로 반환됨) 위와 같은 결과를 얻기 위해 WHERE구에서 조건을 지정할 수도 있다. 그렇지만, LIMIT와 WHERE는 기능과 내부 처리 순서가 다르다. LIMIT는 반환할 행 수를 제한하는 기능으로, WHERE구로 검색한 후 ORDER BY로 정렬된 뒤 최종적으로 처리된다. 오프셋 지정 [SYNTAX] SELECT 열명 FROM 테이블명 LIMIT ..
[MySQL] 복수의 열을 지정해 정렬하기 [SYNTAX] SELECT 열명 FROM 테이블명 WHERE 조건식 ORDER BY 열명1 [ASC|DESC], 열명2 [ASC|DESC]... 데이터양이 많을 경우 하나의 열만으로는 행을 특정 짓기 어려울 때 복수 열로 정렬 지정 ORDER BY로 행을 정렬하거나, ORDER BY 구를 생략하는 경우 같은 값을 가진 행의 순서는 일정하지 않음 언제나 같은 순서로 결과를 얻고 싶다면 반드시 ORDER BY구로 순서를 지정해야 한다. 위처럼 a열로 정렬하면 a열은 순서대로 정렬되지만 b열은 정렬되지 않는다. 이때 ORDER BY로 복수 열 지정하여 정렬하면 된다. 정렬방법을 지정하지 않을 경우 자동으로 오름차순(ASC)으로 정렬된다. NULL값은 대소 비교를 할 수 없어 정렬 시에는 별도의 방법으로 취급..