본문 바로가기
개발일지/SQL

[Mysql] 파일 입력, 변수, 데이터의변환등

by 개발에정착하고싶다 2022. 10. 5.
320x100

#SQL 기본

 

#1

 

DROP DATABASE IF EXISTS sqldb;

 

만약 해당 데이터베이스가 있으면 삭제해줘 (에러가 뜨는 건아니고, 데이터베이스가 없을경우엔 알림이 알럿으로 뜬다.)


#2

 

테이블 생성 (외래키 포함)

 

CREATE TABLE buytbl

(

num INT auto_increment not null primary key,

    userID char(8) not null,

    prodName CHAR(6) NOT NULL,

    price INT NOT NULL,

    amount smallint not null,

    foreign key (userID) references usertbl(userID)

);

 

# 이 코드는 mysql용이라고 보면 된다.

사실상 문법적으론 문제가 없지만, 또 다른 문법측에선 문제가 있다.

mysql은 에러가 없지만 postgreSQL에서는 그 뭐랄까.. CREATE같은 내장함수와 같은 기능을 하는 것들에 대해서

대문자 표기 안해주면 칼이다. 진짜 개느리다. 심할땐 한 쿼리가 6줄이 안되는데 10분 기다린적도 있다.

하지만 중간에라도 보통 칼같이 CREATE같이 대문자쓸부분 잘 써주고 문법 잘지켜주면 그래도 보통은 10초안에 실행된다.

물론 실행속도는 내 실무를 하지 않은 경험 위주, 즉 연습용 위주로는 mysql이 압도적 of 압도적으로 빠르다. 비교 하는게

죄가 될 정도로

 

# 그럼에도 postgreSQL을 쓰는 이유를 꼽자면, 아직은 사실 잘 모르겠지만 이론적으로는 ‘호환성’에 있어서 mysql보다 훨씬 더 범용적이다. 라고 볼 수 있겠다. 그 호환성을 배제하면 누가 postgreSQL을 쓸까?

 

# 개인적으로 실무 하기 이전에 공부한 DBMS언어가 3개고 oracle, mysql, postgreSQL인데, mysql이 개인 취향으론 가장 선호한다.

 

# 제일 비선호는 oracle이고, 이유는 속도측면에 안정성이 있는 느낌이긴 한데 환경설정 하나 잘못건드리면 돌이킬수 없었다.

뭐 구글링 이딴거 필요없고 바로 포멧하는게 가장 맘편했었다. 어차피 구글링으론 답도안나오고 뻘짓만 하게 하니깐.

그리고 심지어 포멧하고 재설치 마치는데만 보통 8시간 사이클…. 진짜 최악의 지옥이였다.


#3

 

변수의 사용

 

SET @변수이름 = 변수값; — 변수의 선언 및 값 대입

SELECT @변수이름; —변수의 값 출력


#4

 

데이터 형식과 형 변환

 

CAST ( expression AS 데이터형식 [ (길이) ]

CONVERT ( expression, 데이터형식 [ (길이) ]

 

예시

SELECT AVG(amount) AS '평균 구매 갯수' FROM buytbl;

를 구하고 싶은데, 결과값이 소수점 값인

2.9167

이다.

이럴때 , ‘몇 개’는 FLOAT형식이 아닌 INT형식으로 나와야 하기 때문에

이떄 이렇게 해준다

 

SELECT CAST(AVG(amount) AS SIGNED INTEGER) AS ‘평균 구매 개수’ FROM buytbl;

이나

 

SELECT CONVERT (AVG(amount), SIGNED INTEGER) AS '평균 구매 갯수' FROM buytbl;

 

이 둘중에 하나를 써주면 되는데, 경우에 따라서는 작동이 되는것도 있고 안되는 것도 있을 수 있다.


#5

 

파일을 입력시키는 코드

 

INSERT INTO movietbl VALUES (1, '쉰들러 리스트', '스필버그', '리암 니슨',

LOAD_FILE('/Users/daniel_choi/Desktop/learn_myself/learn_books/This_is_Mysql/db_backup/movies/Schindler.txt'), LOAD_FILE('/Users/daniel_choi/Desktop/learn_myself/learn_books/This_is_Mysql/db_backup/movies/Schindler.mp4')

    );


#6

 

영화 대본과 영화 동영상이 입력되지 않을때는 두가지를 일단 확인해본다.

 

1.최대 패킷 크기(최대 파일 크기)

SHOW variables LIKE 'max_allowed_packet';

100만바이트가 1메가바이트라고 보면 된다. 쉽게

 

 

300x250