비전공자의 MYSQL 기초 (1) - MYSQL WORKBENCH 다루기, 비전공자 코딩 공부(MAC)

 

안녕하세요 에이든입니다.

얼마전까지만 해도 윈도우 노트북을 쓰면서, Microsoft SQL Server를 사용하고 있었는데, 얼마전부터 맥으로 넘어와서 MYSQL을 사용하고 있습니다.

 

언어 프로그램을 바꾼데에는 2가지 이유가 있는데, 우선 Micorsoft SQL Server를 맥에 설치하는 과정이 복잡해 보였고, 평소 사용 점유율이 높은 MYSQL로 넘어가야겠다는 생각이 있었습니다. 때마침 듣던 강의 중 하나가 MYSQL을 설명해주는 강의가 있었고, 이 참에 넘어가야겠다 생각했습니다. (Microsoft SQL Server와 MYSQL의 사용 점유율에 대한 정보는 차이가 있을 수 있습니다.) 가장 사용 점유율이 높은 Oracle의 경우, 유료 프로그램이라 처음부터 제외했습니다.

 

 Microsoft SQL Server와 MYSQL을 비교하면, 전반적으로는 유사하지만, MYSQL이 조금 더 직관적인 느낌이었습니다.

 

SQL은 Structured Query Language의 약자로, 관계형 데이터베이스 관리 시스템(RDBMS)를 다룰 때 사용되는 언어이고, MYSQL은 그들 중 대표적인 오픈 소스 프로그램입니다. 이것에 대해 개인적으로 이해한 바를 토대로 조금 쉽게 설명해본다면, 여러 묶음의 데이터들이 서로 연관되고, 그 연관성 중에서 원하는 결과 값을 찾기 혹은 만들어 내기 위한 시스템이라고 보입니다.

 

여기에는 테이블과 데이터베이스라는 개념이 존재하는데, 테이블들이 여러 개 묶여있는 그룹을 데이터베이스라고 생각하면 됩니다. 테이블은 입력값들이 행과 열로 정리되어 있습니다.

 

'행/열 -> 테이블 -> 데이터베이스'

 

때문에 기본적으로 '데이터베이스'를 만들고, '테이블'을 만들어야 합니다.

 

MYSQL WORKBENCH 프로그램에서 + 버튼을 눌러줍니다.

 

모든 전제는 이미 MYSQL WORKBENCH가 설치되어 있다는 하에서 시작하겠습니다. MAC의 경우 Homebrew를 통해서 MYSQL 자체를 먼저 설치한 후, 이를 구동하는 프로그램인 MYSQL WORKBENCH를 설치해주면 됩니다. Terminal을 통해서 MYSQL을 구동할 수도 있지만, 저 같은 초보자들에게는 너무 헷갈리므로, WORKBENCH로 진행하겠습니다.

 

그 후 Connection name을 지정해주시면 됩니다.

WORKBENCH 구동 후, 새로운 연결을 만들어줍니다. 이 때 지금 쓰는 OS가 맥이어서 그런지, MYSQL과 Microsoft SQL과의 차이인지 정확하지는 않지만, 연결이 SQL Server에 비해 좀 더 직관적이고 간편했습니다.

 

데이터베이스 생성문을 실행하기 이전

자 우선, MYSQL을 시작하려면, 데이터베이스가 있어야 합니다. 데이터베이스는 앞서 이야기했다시피, 테이블들의 묶음인데요, 테이블을 만들기 위해서는 데이터베이스가 먼저 존재해야 합니다. 지금 좌측에 보이는 Employees는 제가 기존에 공부할 때 사용하던 Database인데요, 지금 제가 적어놓은 작업문을 먼저 보겠습니다.

 

Create database Test_Database;

 

 여기서 Create는 차후에 데이터베이스 뿐아니라 테이블, Stored Procedure, Function 등 다양한 곳에 쓰이는데, 만든다는 의미 정도로 생각하시면 됩니다. 저희는 지금 데이터베이스를 만들기 때문에 'Create Database'라고 만들어줍니다.

 

 그리고 'Test_Database'부분은 '데이터베이스의 이름'인데요, 여기에는 원하는 대로 작성해주시면 됩니다. 다만, 해당 데이터베이스 혹은 해당 코드를 혼자만 볼 것도 아니고, 만들어 놓고 나중에 다시 봐야할 수도 있으니 되도록 직관적인 이름을 사용하는 것이 좋습니다.

 

 그리고 여기서 중요한 것 중 하나가 ';'의 존재인데, 세미콜론은 SQL Server로 작업할 땐 필요 없었지만, MYSQL에서는 한 작업문이 끝났음을 알려주는 중요한 지표입니다. 그래서 만약 문장 끝에 붙이지 않으면, 에러가 발생하니 주의하시길 바랍니다.

 

Create 실행 후 Test_Database가 생성된 것을 확인할 수 있다.

작업문을 실행하고 나면, 좌측에 Test_Database가 생겨난 것을 알 수 있습니다. 이제 데이터베이스 만들기에 성공한 것인데요, 그럼 이제 테이블을 만들어볼까요?

 

아직 테이블 만들기 전이라, Test_Database 아래 Tables에 아무런 Table이 없습니다.

앞서 이야기한 create 문법을 사용하며, 이번에는 데이터베이스가 아닌 테이블을 만들어 줍니다.

 

create table [table_name] (

열_이름 / 해당 열 데이터 타입 / 필수 여부

);

 

정도로 구성되어 있다고 생각하면 쉽습니다. 테이블을 만들 때 열(Column)을 생성할 수가 있는데, 이 때 해당 열에 들어갈 데이터의 타입과 'Null'여부를 정해주어야 합니다. 'Null' 여부란, 이 열이 비어도 되는 가(Null), 비면 안 되는가(Not Null)를 뜻하는 것입니다. 만약 Not Null인데 데이터가 들어가지 않으면, 에러가 납니다.

 

그런데 작업문을 실행하자 에러가 납니ㅏ.

문법을 정상적으로 작성했고, 세미콜론도 잘 붙였는데 에러가 났습니다.

Response를 읽어보니, 'No Database Selected'라고 나와있습니다. 왜냐하면, 테이블을 생성할 데이터베이스를 미리 선정해줘야 하기 때문인데요, 이는 'Use' 문법을 통해 생성합니다.

 

USE 를 통해서 데이터베이스를 선택해줍니다.

USE 문법을 통해서 해당 데이터베이스를 사용한다는 명령을 해줘야 합니다.

명령문이 정상적으로 작동했습니다.

명령문이 정상적으로 작동한 경우에는 'Action Output'란에 초록색으로 표시가 되고, Response부분에 에러코드도 나오지 않습니다.

 

자, 그럼 이제 테이블 생성문을 다시 실행해볼게요.

에러 없이 실행되었습니다.

이번에는 테이블 생성 명령문이 정상적으로 작동한 모습을 볼 수 있습니다.

 

테이블과 열(Column)들이 정상적으로 생성되었습니다.

지금 보면, 아까는 없던 Table이 생긴 것을 알 수 있습니다. 또한 열(Column)도 문제 없이 저희가 만든 이름으로 생성되었음을 알 수 있습니다.

 

다음 포스팅에서는 이 곳에 데이터를 넣는 방법.

기본적인 출력에 대해서 배워보겠습니다.

 

감사합니다.

 

 

'Master of Business Analytics > SQL' 카테고리의 다른 글

django 시작하기  (0) 2020.03.06
파이썬(기초) 공부를 시작했습니다.  (0) 2020.02.16

IoT란? Internet of Things의 약자로, 사물 인터넷을 의미합니다. 사물 인터넷이란 사물에 인터넷이 접목되는 것을 의미하며, 오프라인이던 물체를 온라인화 시켜줍니다. 사물끼리 연결되기도 하며, 이를 사물끼리 대화를 나눈다라고 표현하기도 합니다. 여기서 대화란 데이터 공유와 사용자의 명령어를 공유한다는 의미로도 볼 수 있습니다.

 

유플러스 스마트홈 기기(출처: 유플러스 홈페이지)

몇 년 전부터 이미 IoT 제품들이 출시되고, 소비자들의 접근성도 꽤 높아졌지만, 시장의 성장 속도가 예상보다 더딘 편입니다. 예를 들어 스마트 콘센트(IoT 콘센트)의 경우 출시된지 꽤 오래된 제품이고, 그 사용방법도 단순하며 편리하지만, 주변에서 흔히 보기는 어렵습니다. 개인적인 생각이지만, 그 이유는 제품이 주는 효용성(이 경우에는 관리의 편리성)이 제품을 구매하고, 설치하며 사용방법을 배우는 비용보다 크지 못하기 때문이라고 생각합니다. 예를 들어, 스마트 콘센트 하나를 사려고 하더라도, 어떤 제품이 좋은지를 알아봐야 하며, 자신이 사용하는 타 기기와 호환은 되는지, 스마트폰 어플리케이션은 구비되어 있는지, 가격은 얼마인지 등을 고려해야 합니다. 적잖은 비용(비금전적 비용과 금전적 비용을 모두 포함하여)이 들어가는데, 콘센트 하나에 이런 비용을 투자하는 사람이 많지 않습니다. 때문에 시장이 성장하기 어려웠다고 생각합니다.

S플러그(출처:HK네트웍스)

 

그래서인지 최근 IoT 시장이 B2C에서 B2B로 많이 돌아갔다고 생각됩니다. 소비자들에게 하나 하나 판매하는 것보다는 아파트나 건물을 짓는 건설 시공사와 계약하여 건설 시에 IoT 제품들을 내재시키는 쪽으로 방향을 잡은 것 같습니다. 예를 들어 2000년대 초반이나 그 이전에 지어진 아파트들은 대부분 월패드가 없습니다. 있더라도 방문자 확인, 관리실과 연결 등 기본적인 기능만 있는 경우가 많습니다. 하지만 최근에 건설되는 아파트들은 스마트 월패드라는 이름으로, 차량 진입, 방문자 확인, 로비(지하 주차장에서 1층 로비까지)의 문 열어주기, 가스 잠금, 보일러 관리 등 대부분의 기능 동작을 관리해주는 컨트롤 타워가 있습니다. 이 월패드를 관리하는 어플리케이션을 통해서 원격으로 조정할 수도 있으며, 방문자나 차량 진입 등의 정보를 받아볼 수도 있습니다. 굉장히 편리해진 셈이죠.

삼성 스마트월패드(출처: 삼성 스마트도어락)

 

집 안에서 누워있는 경우에도 불을 끄기가 귀찮거나 한다면, 누워서 해결할 수 있습니다. 하지만 이런 기능 인프라를 개인이 직접 설치하고, 관리한다면 어떨까요? 우선 가스밸브, 콘센트, 보일러 조절기 등을 모두 IoT 제품으로 바꿔야하는데, 걔 중에는 일반인이 다루기 힘든 제품도 많습니다. 예를 들어 보일러 조절기 같은 경우에도, 잘못 만지면 온도 조절계 등이 고장나서 아예 작동이 안될 수도 있고, 보일러가 호환이 되질 않을 수도 있습니다. 이처럼 개인이 접근하기 어렵고, 시간과 금전적 비용이 소모되는 작업이 많기 때문에 B2C 시장 성장에 한계가 있었다고 생각합니다.

 

개인소비자들에게 IoT는 편리해보이지만 동시에 어려운 존재일 것입니다. 예를 들어 전자기기에 익숙하지 못한 60대 이상의 소비자들이 스마트 콘센트를 구입했다고 가정해보면, 그들에게는 그저 묵직한 콘센트에 불과할 수도 있습니다. 어플을 까는 방법, 기기를 와이파이에 연결시키는 방법 등 모르는 작업이 많아 그림의 떡이 되는 것이죠.

 

하지만 동시에 전자기기에 익숙한 사람들이 IoT를 접한다면, 편리함을 극대화할 수도 있습니다. 대표적인 제품이 IoT 냉장고라고 생각하는데, 냉장고 내에 어떤 제품이 있는지, 그 제품들로 만들 수 있는 요리가 무엇인지, 신선도는 어떤지 등 다양한 정보를 제공해준다면, 굉장히 편리할 것입니다. 또한 부착된 디스플레이로 바로 주문까지 할 수 있다면 금상첨화입니다.

 

IoT 제품군 중 현재 많이 사용되는 것들은 홈CCTV, 스마트 콘센트 등 1차원적인 제품들이 많습니다. 좀 더 고차원적의 제품들도 많이 출시되어 있지만, 가격이 비싸거나 실용성이 떨어지거나 하는 등의 이유로 상용화되지 못한 경우도 많습니다. 이런 제품군들을 하나하나 공부해보고자 하는 것이 앞으로 쓸 글들의 방향성이라 생각합니다.

 

안녕하세요 남편입니다.

 

요즘 저는 django에 대해 공부하고 있습니다. django는 '장고'라고도 하며, 웹 프레임워크라고 합니다.

 

그런데 코딩 초보인 저는 '웹 프레임워크'가 무엇인지 궁금해지기 시작했습니다.

 

'웹 프레임워크는 동적인 웹 페이지나 웹 애플리케이션, 웹 서비스 개발 보조용으로 만들어지는 애플리케이션 프레임워크의 일종이다.' - 위키백과

 

자....

 

문과인 저로서는 동적이 뭔지 정적이 뭔지 부터가 어려웠습니다.

 

그래서 우연히 이 둘의 차이를 잘 설명해놓은 글을 찾았는데 요약하자면 이렇습니다.

'정적인' 웹페이지는 클라이언트가 특정 html을 요청하면, 이미 만들어져 있는 페이지가 나타나는 것입니다. 즉, 클라이언트가 어떤 요청을 넣더라도, 정해진 결과값을 돌려받는 셈입니다.

 

반면 '동적인' 웹페이지는 클라이언트의 요청에 따라 페이지에 나타나는 결과값이 달라지는 것을 뜻합니다. 즉, 클라이언트(이용자)의 요청에 따라서 결과값이 달라지면 동적, 요청과 무관하면 정적이라는 뜻이 됩니다.

 

그렇다면, 요청값에 따라 결과값이 달라지는 페이지를 만들기 위해 프레임워크가 필요하다는 뜻이되고, 그것이 django라는 뜻이 됩니다.

 

저는 django의 기반이되는 '파이썬'조차 아직 초급단계입니다. 이제서야 겨우 몇 개의 메소드와 함수를 배우고 있습니다. 하지만 django를 통해서 페이지를 연습하고, 제가 짜놓은 코드들이 실현되는 모습을 보는 일은 정말 설레는 일입니다.

 

저는 유튜브 '김왼손의 미운코딩새끼'를 통해 파이썬 기초 강좌를 다졌고, 지금은 '인프런'의 django 입문 강의를 보며 공부하고 있습니다. 퇴근하고 곧장 컴퓨터를 켜서 공부하는 일은 만만하지는 않은 일이지만 정말 보람찬 일이라고 생각합니다.

 

'인프런' 인강 사이트

 

django를 구글에 검색해보았습니다.

django를 구글에 검색하면, django를 설치할 수 있는 사이트가 나옵니다.

 

장고 설치 과정을 설명해줍니다.

해당 사이트에 들어가면 django를 설치하는 과정을 보여줍니다. 우선 장고는 파이썬 기반 웹 프레임워크이기 때문에 파이썬이 설치되어 있어야 합니다. 그리고 'PyCharm'을 사용해서 django를 구현합니다.

 

사실 여기서 'PyCharm'에 대해 이해가 조금 부족한 편이라고 생각합니다. '파이썬'이 프로그래밍 언어이고, '장고'가 웹 프레임워크라고 한다면, '파이참'은 무슨 역할을 하는 것일까요? 아직 학습이 부족한 탓에 완전히 이해하지는 못했지만, '툴(Tool)'이라고만 생각하고 있습니다. 언어를 통해 어떤 작업을 하기 위해 사용하는 '도구'라는 것입니다. '도구'는 '파이참' 말고, 'Visual Studio Code'라는 툴도 있습니다. 저는 유튜브를 통해 처음 배울 때는 visual studio code를 깔았으나, '인프런' 강의에서 파이참을 이용하기에 파이참을 다시 깔았습니다.

 

파이참을 구동시킨 화면입니다.

아, 그런데 장고를 구현하기 위해서는 '가상환경'이라는 것을 먼저 구성해야 합니다. 이 가상환경이라는 것은 일종의 개발환경입니다. 작업을 하기 위한 작업실이라고 볼 수 있는데, 가상환경이 없으면 여러 코드를 테스트하기가 어렵습니다. 예를 들어 A라는 가상환경에서 작업을 하다가, 갑자기 가상환경 밖에서 작업을 하려고 하면 작업이 되지 않습니다. 작업실 바깥이기 때문입니다. 또한 A라는 가상환경과 B라는 가상환경을 둘 다 켜놓는다면, 작업이 실행이 되지 않습니다. 왜냐하면 한 페이지를 두고 두 개의 작업실이 작업을 하기 때문입니다.

 

다만, 위의 내용은 '제가 이해한 내용을 바탕으로 한 것'입니다. 저게 정확한 이해와 설명은 아닙니다.

 

코딩의 길은 쉽지만은 않은 것 같습니다.

안녕하세요 남편입니다.

 

저는 이번에 파이썬 공부를 새로 시작했습니다.

본래 프로그래밍쪽에 관심은 많았지만, 도전하기를 망설이고 있었습니다.

하지만, 언제까지 고민만 할 수 없다는 생각에 언어를 배우기로 마음먹었고, 접근하기 쉬운편이라는 파이썬을 시작하게 되었습니다.

 

본래 C++언어를 잠깐 했었는데, 중학생까지 했던거라 기억도 안나지만 초보 수준에 머물러 있었습니다.

그래도 알고리즘에 대한 느낌은 알고 있고, 언어에 대한 거부감은 적어서 열심히 해보려고 합니다.

 

우선 저는 '프로그래머스'라는 사이트를 이욯하고 있습니다.

출처 : 프로그래머스 사이트

기업들이 개발자 채용을 위해 코딩테스트를 이곳을 통해 열기도 하고, 저처럼 프로그래밍에 입문하려는 사람들을 위해 강의도 개설해놓고 있습니다.

 

무엇보다 제가 풀어본 문제를 채점하고 제출해볼 수 있다는 것이 장점이라고 생각합니다.

 

스택/큐에대한 알고리즘을 찾아보다 우연히 발견한 사이트라 스택/큐 코딩테스트 연습문제부터 풀어보고 있습니다.

'프린터 순서'라는 문제입니다

저는 파이썬(3.8.2) 버전을 사용중이며, 여기에 풀어본 풀이를 프로그래머스 사이트에 입력해서 채점해보는 방식으로 공부하고 있습니다.

 

앞으로 제가 공부하고 있는 내용들을, 제가 생각한 풀이법과 다른 이들이 풀어본 풀이법을 비교해보고 새로 배운 것들을 적어보도록 하겠습니다.

+ Recent posts