#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메가바이트라고 보면 된다. 쉽게
'개발일지 > SQL' 카테고리의 다른 글
SQL - postgreSQL 테이블전체 목록 조회 명령어 (1) | 2022.12.17 |
---|---|
*매우중요 sql, django - 대량 더미 데이터(dummy data) 생성 (1) | 2022.12.16 |
[Mysql] 이것이 MYSQL이다 후기 (0) | 2022.10.05 |
[Mysql] 데이터베이스 모델링 기본개념 (1) | 2022.10.03 |
[Mysql] TRIGGER(트리거) 매우중요개념 (삭제된 필드를 다른테이블로 자동이동) (0) | 2022.10.03 |