SQL

[스키마 구성]MySQL workbench 기본 사용 방법 이해 및 테이블 만들어보기

Bordercolli 2023. 8. 23. 21:59
728x90

🌭WorkBench사용방법

SQL접근방법 두 가지

1. 워크벤치라는 툴을 사용하여 DB다루기

2.  프로그래밍을 사용해서 데이터에 SQL을 넣는다.

 

결과적으로 데이터베이스에 SQL명령을 전달하기만 하면 된다. 그래서 현업에서는 각 회사마다 웹 기반에 툴을 사용하는경우도 있다. 

이 Schema라는 부분은 우리들의 mysql의 데이터베이스가 보여지는 부분이다

처음 접속하면 sys라는 데이터베이스 파일이 있는데, 이 폴더는 mysql 자신만의 설정 데이터 이런 것들도 데이터베이스로 관리해서 보여질 수 있다.

mac환경은 administration, schemas가 위에 있고, 윈도우는 아래에 있다.

 

🌭명령어 익혀보기

이제 mysql프로그램에 스키마를 만들어보는 명령들을 익혀보도록 한다.

  • 데이터베이스 안에는 여러 개의 테이블이 존재한다.

데이터 베이스 → 엑셀 프로그램

테이블 → 엑셀 시트

 

1. 데이터베이스를 만들기 전에 어떤 데이터 베이스가 있는지 확인해보자.

MYSQL프로그램이 워크벤치에 명령어를 전달해 준 것이고, 이 워크벤치는 해당 결과를 보여줬다.

보시다시피 DB가 4개가 있다. 이렇게 네 개는 Mysql프로그램을 설치하면 설치하자마자 DB 4개가 생긴다.

이 DB 4개는 Mysql프로그램 자체적으로 사용하는 DB이다.

"MYSQL프로그램도 뭔가 프로그램을 실행하거나 관리하기 위해서 데이터를 사용해야 하는데, 그 데이터들을 데이터 베이스 형태로 만들어서 관리한다" 라고 이해하자.

그래서 이 네 개의 데이터들은 절대 건드리면 안됨. 

 

2. 데이터 베이스 만들어보기

3. 데이터베이스 삭제

+ 추가

 

mydata라는 데이터 베이스가 존재한다면 삭제해달라는 명령으로 앞서 mydata라는 데이터베이스를 지웠기 때문에 경고가 뜬 화면을 볼 수 있다.

이렇게 작성하면 에러가 뜬 모습을 확인할 수 있다.

 

★ 그러면 에러와 경고의 차이점은 무엇인가???

에러는 다음 코드를 실행하지 않지만, 경고는 에러를 내지 않고, 다음 sql문들을 수행한다.

 

이처럼 데이터를 보여주지 않고, 코드를 마무리하지 못한 화면을 볼 수 있다.

 

이제 데이터 베이스를 만들어보았으니 테이블을 만들어야 하는데, 테이블을 만들려면 CREATE TABLE을 써야하는데, 이것을 쓸려면 내가 어떤 데이터베이스를 쓸 것인지 알려줘야 한다.

그럼 USE???

 

4. 테이블 만들기

데이터 저장공간

데이터 공간 낭비를 막기 위해서 적절한 데이터 타입을 사용하도록 해야한다. 통상적으로는 INT

통상적으로 정수형은 INT, 실수형은 FLOAT, 문자형은 TEXT, 시간형 데이터 타입은 DATE 

EX) TEXT(5000)으로 하면 5000자 미만으로 작성이 가능하다. n은 작성하지 않으면 65535이하로 유동적으로 공간을 만들어준다.

 

필드 해석

ID라는 필드를 만들고 TITLE이라는 필드.. 이렇게 6개의 필드를 만드는데, ID는 문자열 string이고, title도 string, ORI_PRICE는 INT이다.

 

* VARCHAR이란? 가변적인 문자열로, TITLE(50)이라고 하고 세 글자만 작성한다면 해당 레코드 공간에 대해서는 3개만 할당하도록 한다. 이렇게 하여 저장공간을 절약할 수 있게 한다.

5. 테이블 삭제하기

6. 테이블 구조 확인하기

DESC 테이블명

을 작성하면 테이블 구조를 확인할 수 있다.

 

이 NULL부분은 값이 없다는 뜻인데, 값이 없어도 되니?를 뜻한다.

다른 필드들은 값을 안넣어도 되지만, MYKEY는 기본키라서 값이 꼭 있어야한다. 기본키는 유일성을 만족하며 NULL값이 존재하면 안된다.

  • UNSIGNED : 원래 INT로 지정하거나 숫자로 지정을 하면 이 값은 INT 의 경우 본래 -128~+127까지인데 UNSIGNED를 하면 0~255까지 값을 넣을 수 있다고 제한을 할 수 있다. (음수는 저장할 수 없지만, 양수는 더 큰 값을 저장할 수 있다. 주로 PRIMARY KEY로 지정된 필드를 UNSIGNED로 지정하는 경우가 많다. ) 
  • NOT NULL: PRIMARY KEY로 지정을 하면 디폴트로 해당 필드는 값이 없는 상태로 레코드가 저장이 되면 안되게끔 설정이 되긴한다. 그렇긴 한데, PRIMARY KEY외에 다른 필드들에도 여기에는 데이터는 꼭 들어가야한다고 치고 해당 필드에 데이터가 들어가지 않는다면 에러 메시지를 내게끔 한다. 
  • AUTO_INCREMENT: 만약 PRIMARY KEY지정 없이 테이블을 만든다면 이 옵션을 사용하여 지금까지 만든 레코드 중에 가장 높은 값을 가진 필드를 찾아내서 해당 값 +1을 하여 강제로 해당 추가적인 레코드에 저장을 하게 된다. 이 옵션을 사용하는 이유는 PRIMARY KEY는 유일해야 한다. 그래서 유일하려면 데이터를 저장할 때마다 이 데이터를 다른 데이터에 비해서 다른 레코드에 없는 데이터를 넣어줘야하는데 그걸 일일이 지정하기 힘드니 해당 옵션을 사용한 다음 자동으로 해당 데이터가 +1씩 증가되어서 저장되어 유일한 값을 가질 수 있도록 하는 옵션이다.

EX) MYKEY에 1,2로 가장 높은 값을 가진다면 다음은 +1을 하니 3, 4 이런식으로 값을 더해간다. 

 

위 옵션들은 보통 PRIMARY KEY에 지정되는 옵션들이다. 

문제

1-2번 문제 정답
1~3번까지 정답

DESC customer_db 를 해도 같은 결과가 나옴.