데이터베이스 제 7강[KNU 2021-2]
👨💻🏫KNU 2021-2 SW & media 데이터베이스 필기노트 7_2
1. mySQL의 데이터 타입
[image by MySQL #10: Data Types in MySQL with Examples in Hindi. Thapa Technical]
mySQL에서는 다양한 데이터 타입을 지원한다. 이는 크게 숫자, 문자(열), 시간의 데이터로 분류가능하다.
1.1. 숫자 데이터 타입
부호없는 정수를 지정할때에는 UNSIGNED예약어를 붙인다.
데이터타입 | 설명 |
---|---|
INT | 정수저장 TINYINT(2^8)<SMALLINT(2^16)<MEDIUMINT(2^24)<INT(2^32)<BIGINT(2^32) 순으로 커진다 |
FLOAT,DOUBLE | 근사치의 실수를 저장 FLOAT는7자리소수 DOUBLE은15자리소수 |
DECIMAL | DECIMAL(m,d)는 m자리수와 d자리 소수 |
1.2. 문자 데이터 타입
데이터타입 | 설명 |
---|---|
CHAR(2^8), VARCHAR(2^16) | 고정길이, 가변길이 문자열 |
TEXT | TEXT데이터값 저장 TINY(2^8),MEDIUM(2^24),LONG(2^32) TEXT사용가능 |
BINARY(2^8),VARBINARY(2^8) | 고정길이, 가변길이 이진데이터 |
BLOB | 대용량이진데이터(미디어파일등) TINY(2^8),MEDIUM(2^24),LONG(2^32) BLOB사용가능 |
SET(list..) | 최대 64개의 서로 다른 데이터 값 저장 |
ENUMlist.. | 2^16개의 열거형 데이터 저장 |
1.3. 시간 데이터 타입
데이터타입 | 설명 |
---|---|
DATE | ‘YYYY-MM-DD’ |
TIME | ‘HH:MM:SS’ |
DATETIME | ‘YYYY-MM-DD HH:MM:SS’ |
2.mySQL의 변수
다른 프로그래밍 언어와같은 사용자 변수를 만들수있다.
SET @foo = bar;
SELECT @foo;
출력내용은 다음과 같다:
@foo | |
---|---|
▶ | bar |
이는 PREPARE EXECUTE문에서 다음과 같이 사용될수있다. 예제는 LIMIT에서 foo를 사용하는 쿼리이다.
SET @foo=3;
PREPARE foobar
FROM 'SELECT col FROM table LIMIT?'
EXECUTE foobar USING @foo;
3.타입캐스팅
#exp를 지정 _TYPE_로 변경한다
CAST(exp AS _TYPE_)
CONVERT(exp, _TYPE_)
예제는 실수값으로 출력되는 어떤 AVG(foo)를 정수형으로 바꾸는 쿼리이다.
SELECT CAST(AVG(foo) AS INTEGER)FROM tbl;
#CAST 함수는 `/`같은 구분자를 통해 날짜 형식으로 바꿔준다
SELECT CAST('2021/10/13'AS DATE);
mySQL은 ''
를 통해 수를 문자로 바꿀수있다. 이때 사로 다른 타입일경우 0으로 처리된다 즉, C처럼 ‘A’는 65가 아니라는 뜻이다(ASCII(‘A’)를 사용해야함).
4. 내장함수
으악!
4.1. 제어함수
IF(조건,t,f) | c++의 삼항연산자와 거의 같다고 볼 수있다. |
IFNULL(val,t) | VAL이 NULL일경우 t값을 출력, 아닌경우 val출력 |
NULLIF(foo,bar) | foo==bar라면 NULL, 아니라면 foo출력 |
CASE foo WHEN bar THEN baz ELSE qux END |
스위치문이다. foo는 조건문, bar은 조건값 baz는 출력값, qux는 예외처리값이다 |
4.2. 문자(열)함수
ASCII(‘chr’), CHAR(num) | 문자를 아스키코드로, 아스키코드를 숫자로 |
CHAR_LENGTH(문자열) | 문자의 개수반환 |
(BIT_)LENGTH(문자열) | 할당된 (비트)바이트 반환 |
CONCAT(_WS)(문자열들) | 두 문자열을 연결 한다. _WS일경우 첫 인자를 구분자로 사용해 연결 |
댓글남기기