Database/MySQL 16

[MySQL] 제약 조건

MySQL은 데이터의 무결성을 위해서 다음의 6가지의 제약 조건을 제공한다.PRIMARY KEY, FOREIGN KEY, UNIQUE, CHECK, DEFAULT, NULL  PRIMARY KEY 데이터베이스 테이블에서 각 행을 유일하게 식별하기 위해 사용하는 제약 조건  주요 특성각 행을 고유하게 식별해야 함. 즉, 중복된 값을 가질 수 없음 널 값 (NULL) 불가. 항상 NOT NULL이 같이 와야 함 각 테이블에는 하나의 PRIMARY KEY만 설정할 수 있음자동으로 인덱스를 생성하여 검색 성능을 향상 FOREIGN KEY 데이터베이스에서 두 테이블 간의 관계를 정의하는 제약 조건. FOREIGN KEY는 한 테이블의 열이 다른 테이블의 PRIMARY KEY 또는 UNIQUE 열을 참조하도록 설..

Database/MySQL 2024.09.12

[MySQL] 내부 함수 - 시스템 정보 함수

시스템 정보 함수시스템의 정보를 출력하는 함수를 제공 USER(), DATEBASE() : 현재 사용자 및 현재 선택된 데이터베이스를 구함SELECT CURRENT_USER(), DATABASE(); -- 현재 사용자, 현재 선택된 데이터베이스 FOUND_ROWS() : 바로 앞의 SELECT 문에서 조회된 행의 개수를 구함USE sqldb;SELECT * FROM usertbl;SELECT FOUND_ROWS(); -- usertbl의 행 개수를 반환 ROW_COUNT() : 바로 앞의 INSERT, UPDATE, DELETE 문에서 입력, 수정, 삭제된 행의 개수를 구함. CREATE, DROP 문은 0을 반환하고 SELECT문은 -1을 반환USE sqldb;UPDATE buytbl SET price..

Database/MySQL 2024.09.11

[MySQL] 내장 함수 - 날짜 및 시간 함수

날짜 및 시간 함수ADDDATE(날짜, 차이), SUBDATE(날짜, 차이) : 날짜를 기준으로 차이를 더하거나 뺀 날짜를 구함SELECT ADDDATE('2025-01-01', INTERVAL 31 DAY), ADDDATE('2025-01-01', INTERVAL 1 MONTH);-- 2025-02-01, 2025-02-01SELECT SUBDATE('2025-01-01', INTERVAL 31 DAY), SUBDATE('2025-01-01', INTERVAL 1 MONTH);-- 2024-12-01, 2024-12-01 ADDTIME(날짜/시간, 시간), SUBTIME(날짜/시간, 시간) : 날짜/시간을 기준으로 시간을 더하거나 뺀 결과SELECT ADDTIME('2025-01-01 23:59:59'..

Database/MySQL 2024.09.11

[MySQL] 내장 함수 - 수학 함수

수학 함수ABS(숫자) : 숫자의 절대값을 계산SELECT ABS(-100); -- 결과는 100 CEILING(숫자), FLOOR(숫자), ROUND(숫자) : 올림, 내림, 반올림을 계산SELECT CEILING(4.7), FLOOR(4.7), ROUND(4.7); -- 5, 4, 5 CONV(숫자, 원래 진수, 변환할 진수) : 숫자를 원래 진수에서 변환할 진수로 계산SELECT CONV('AA', 16, 2), CONV(100, 10, 8); -- 10101010, 144 DEGREES(숫자), RADIANS(숫자), PI() : 라디안 값을 각도값으로, 각도값을 라디안 값으로 변환SELECT DEGREES(PI()), RADIANS(180); -- 180, 3.141592653589793 MOD..

Database/MySQL 2024.09.11

[MySQL] 공통 테이블 식

공통 테이블 식(Common Table Expression)은 주로 데이터베이스에 없는 테이블이 필요할 때 사용하며, 바로 다음에 실행할 SELECT 문에만 사용해야 한다는 특징이 있다. 공통 테이블 식은 목적에 따라 일반 공통 테이블 식과 재귀 공통 테이블 식으로 나뉜다. 이를 줄여서 일반 CTE, 재귀 CTE라고 줄여서 부른다. 일반 CTEWITH [CTE_테이블 이름] (열 이름1, 열 이름2, ...)AS()SELECT [열 이름] FROM [CTE_테이블 이름]; 재귀 CTEWITH [CTE_테이블 이름] (열 이름1, 열 이름2, ...)AS( -- 쿼리 1(앵커 멤버)UNION ALL -- 쿼리 2(재귀 멤버))SELECT * FROM [CTE_테이블 이름]; 재귀 CTE의 실행 순서최초에 ..

Database/MySQL 2024.09.10

[MySQL] 서브 쿼리

서브 쿼리(Subquery)는 쿼리 안에 포함되는 또 다른 쿼리를 말한다. 서브 쿼리의 특징반드시 소괄호로 감싸 사용한다.주 쿼리를 실행하기 전에 1번만 실행된다.비교 연산자에 서브 쿼리를 사용하는 경우 서브 쿼리를 오른쪽에 기술해야 한다.내부에는 정렬 구문인 ORDER BY 문을  사용할 수 없다. WHERE 문에 서브 쿼리 사용하기서브 쿼리 중에서도 WHERE 문에 사용하는 서브 쿼리를 중첩 서브 쿼리라고 한다. 이것은 조건문의 일부로 사용한다. 그리고 서브 쿼리를 비교 연산자와 함께 사용할 때는 반드시 서브 쿼리의 반환 결과가 1건 이하 여야 한다. 2건 이상 반환할 경우 다중 행 연산자를 이용해야 한다.다중 행 연산자설명IN서브 쿼리의 결과에 존재하는 임의의 값과 같은 조건 검색ANY서브 쿼리의 ..

Database/MySQL 2024.09.10

[MySQL] 조인

조인(JOIN)이란 2개 이상의 테이블에서 쿼리를 작성하는 방법이다. 보통 잘 설계한 관계형 데이터베이스의 테이블은 1가지 이상의 엔티티(Entity)를 포함한다. 조인은 테이블 A의 열과 B의 열을 포함해 검색할 수 있게 만들어 준다. 처음부터 한 테이블에 필요한 열을 만들면 되지않을까라고 생각할 수도 있다. 하지만 그렇게되면 데이터 중복 저장 문제가 생길 수 있다. 그렇기 때문에 조인을 이용하는 것이 효율적인 방법이다.* 데이터베이스의 테이블 : 중복과 공간 낭비를 피하고 데이터 무결성을 위해서 여러 개의 테이블로 분리하여 저장 * 엔티티 : 저장되고 관리되어야 하는 데이터 내부 조인조인은 상황에 따라 여러 종류로 구분해 사용한다. 내부 조인(INNER JOIN)은 가장 많이 사용하는 조인이다.-- ..

Database/MySQL 2024.09.10

[MySQL] 내장 함수 - 제어 흐름 함수, 문자열 함수

내장 함수는 크게 제어 흐름 함수, 문자열 함수, 수학 함수, 날짜/시간 함수, 전체 텍스트 검색 함수, 형 변환 함수, XML 함수, 비트 함수, 보안/압축 함수, 정보 함수, 공간 분석 함수, 기타 함수 등으로 나눈다. 제어 흐름 함수 : 프로그램의 흐름을 제어IF(수식, 참, 거짓)IFNULL(수식 1, 수식 2) : 수식 1이 NULL이 아니면 수식 1이 반환되고, 수식 1이 NULL이면 수식 2가 반환NULLIF(수식 1, 수식 2) : 수식 1과 수식 2가 같으면 NULL을 반환하고, 다르면 수식 1을 반환CASE ~ WHEN ~ ELSE ~ END : CASE는 내장 함수가 아닌 연산자로 분류, 다중 분기에 사용될 수 있으므로 함께 알아두기 SELECT IF (100 > 200, '참', '..

Database/MySQL 2024.09.10

[MySQL] 변수와 형 변환

변수의 사용SQL도 다른 일반적인 프로그래밍 언어처럼 변수를 선언하고 사용할 수 있다.-- 기본 형식SET @변수이름 = 변수_값; -- 변수의 선언 및 값 대입SELECT @변수이름 -- 변수의 값 출력SET @myVar1 = 5;SET @myVar2 = 3;SET @myVar3 = 4.25;SET @myVar4 = '가수 이름==> ';SELECT @myVar1;SELECT @myVar2 + @myVar3;SELECT @myVar4, Name FROM usertbl WHERE height > 180; 실행 결과 데이터 형식과 형 변환데이터 형식 변환 함수가장 일반적으로 사용되는 데이터 형식 변환 함수는 CAST(), CONVERT()이다. 둘은 형식만 다를 뿐 거의 비슷한 기능을 한다.--기본 타입C..

Database/MySQL 2024.09.10

[MySQL] 데이터 형식

MySQL의 데이터 형식Data Type은 데이터 형식, 데이터형, 자료형, 데이터 타입 등 다양하게 부를 수 있다. SELECT 문을 더 잘 활용하고 테이블을 효율적으로 생성하기 위해서는 데이터 형식에 대한 이해가 반드시 필요하다. MySQL에서 지원하는 데이터 형식의 종류숫자 데이터 형식 : 정수, 실수 등의 숫자를 표현SMALLINT : 숫자 범위 -32768 ~ 32767 INT : 숫자 범위 약 -21억 ~ 21억BIGINT : 숫자 범위 약 -900경 ~ 900경FLOAT : 소수점 아래 7자리까지 표현DOUBLE : 소수점 아래 15자리까지 표현DECIMAL : 전체 자릿수(m)와 소수점 이하 자릿수(d)를 가진 숫자형예) DECIMAL(5, 2)는 전체 자릿수를 5자리로 하되, 그중 소수점..

Database/MySQL 2024.09.10