본문 바로가기
IT Study/SQL

[SQL][5~9] MySQL 서버 접속, 스키마(Schema), Table

by 하람 Haram 2022. 11. 14.
728x90
USE 접근할 스키마 ;

DataBase를 사용했을 때의 이점

보안 (자체적인 보안 체계가 있음) + 권한 기능 (여러사람을 등록가능 & 다른 권한을 부여가능)

mysql -uroot

-u : user의 약자

uroot : root(관리자)라는 사용자로 접속하겠다

root는 모든 권한이 열려있다. (이건 좀 위험한 접근임)

 

-p : passward를 입력하겠다.

(까먹으면 Googling 해보면 나옴)

 

mysql -uroot -p

하고 password를 입력하면 

"데이터베이스 서버에 접속 완료"

 

"데이터베이스(Schema) 만들어보자"

(표를 만들어보자)

CREATE DATABASE 스키마의 이름 ;

끝에 세미클론 (;) 까먹지 말기

 

"데이터베이스(Schema) 삭제해보자" (사용할 일 별로 없긴함)

DROP DATABASE 삭제할 스키마 이름 ;

"데이터베이스(Schema) 확인해보자" 

SHOW DATABASES;
SHOW SCHEMAS;

둘중에 하나 아무거나 입력하면 된다.

끝에 세미클론 (;) 까먹지 말기

"데이터베이스(Schema) 접근해보자" 

USE 접근할 스키마

지금부터 내가 내리는 명령은 tutorial Schema에 있는 표(table)를 대상으로 명령어를 실행한다.

- 표를 만들 준비 끝 -


<SQL과 테이블의 구조>

SQL <- 컴퓨터 언어(가성비가 좋음, 쉽고 중요함)

Structured : 관계형 데이터 베이스는 기본적으로 표의 형식 (구조화 되었다 -> 정리할 수 있다)

Query : 데이터베이스에게 데이터를 쓰기/수정/읽기 등을 요청할 수 있다

Language : 데이터베이스와 User(Server) 모두가 이해할 수 있는 공통의 약속을 사용한다

 

표 = table

x축 : row , record, 행 (SQL : 데이터 자체)

y축 : column, 열, (SQL : 데이터 타입, 데이터 구조)

2개의 행 3개의 열

 

CREATE TABLE topic(
    id INT(11) NOT NULL AUTO_INCREMENT,
    title VARCHAR(100) NOT NULL,
    description TEXT NULL,
    created DATETIME NOT NULL,
    author VARCHAR(15) NULL,
    profile VARCHAR(200) NULL,
    PRIMARY KEY(id)
);

근데 살면서 이렇게 TABLE을 직접 만들 일은 그렇게 많지 않다.

 

이런 SQL Cheet Sheet 검색해서 띄워두고 하면 편하다

 

"표 (Table)을 만들어보자" 

 

cd ./mysql -uroot -p
USE tutorial

테이블 명을 정해줌

CREATE TABLE 테이블 이름(

MySQL은 세미클론(;)을 찍지 않으면 그냥 indent된 줄바꿈 가능 (실행이 되지 않는다)

이런식으로

Column을 만들어 주자

CREATE TABLE 테이블 이름(
    column이름

Excel과 MySQL의 차이

Excel의 어떤 record(row)을 쓰던지 상관없다 -> 아래 줄 Data type이 통일될 필요 x

MySQL -> 같은 줄에 있는 record(row)의 형식(Type)이 정해져 있다. (=> Column의 데이터 타입을 강제할 수 있다)

이러면 꺼낼 때 신경쓸 필요 없음

 

Data type은 필요할 때 (mysql datatype number) 이런 식으로 검색

https://www.techonthenet.com/mysql/datatypes.php

 

MySQL: Data Types

MySQL: Data Types The following is a list of datatypes available in MySQL, which includes string, numeric, date/time, and large object datatypes. String Datatypes The following are the String Datatypes in MySQL: Data Type Syntax Maximum Size Explanation CH

www.techonthenet.com

Column의 데이터 타입을 지정해주자

CREATE TABLE 테이블 이름(
    column이름 INT(노출시킬자릿수 = 보통은 11씀)

테이블을 다시보면 id 와 title 은 반드시 쓰게 하고 싶은데

description은 안써도 될거 같음.. => 값이 없는 채로 추가하는 것도 허용

 

NULL : 값이 없는 걸 허용한다

NOT NULL : 값이 없는 걸 허용하지 않겠다

CREATE TABLE topic(
    id INT(11) NOT NULL

 

그리고 record에 접근할 때 id로 접근하는 것이 좋은 것 같음

(그래서 위의 표에 하나가 더 추가 될 때 자동으로 id = 6 이 되었으면 좋겠다)  => AUTO_INCREAMENT

(이러면 중복되지 않는 식별자를 가지게 된다)

CREATE TABLE topic(
    id INT(11) NOT NULL AUTO_INCREMENT,

자 이제 column 한개 끝났음 ㅠㅠ

title 은 글자수 제한을 좀 두고 싶음 => 스프레드 시트는 못하지만 SQL은 가능하다

 

String DataType을 보면

VARCHAR(size) 라는 것이 존재 (variable character)

=> size까지만 저장하고 나머지는 버려준다.

아래 예시는 100글자 까지만 저장

CREATE TABLE topic(
    id INT(11) NOT NULL AUTO_INCREMENT,
    title VARCHAR(100) NOT NULL,

 

description은 좀 길어도 괜찮을 것 같음

VARCHAR(size)  <<  TEXT(size) <<<< LONGTEXT(size)

CREATE TABLE topic(
    id INT(11) NOT NULL AUTO_INCREMENT,
    title VARCHAR(100) NOT NULL,
    description TEXT NULL,

 

created 는 생성한 날짜를 써주고 싶음

DATE : 날짜를 표시해줌

DATETIME : 날짜와 시간을 표시해줌

CREATE TABLE topic(
    id INT(11) NOT NULL AUTO_INCREMENT,
    title VARCHAR(100) NOT NULL,
    description TEXT NULL,
    created DATETIME NOT NULL,

마찬가지로 진행을 해주면

CREATE TABLE topic(
    id INT(11) NOT NULL AUTO_INCREMENT,
    title VARCHAR(100) NOT NULL,
    description TEXT NULL,
    created DATETIME NOT NULL,
    author VARCHAR(15) NULL,
    profile VARCHAR(200) NULL,

 

PRIMARY KEY(col) : 메인 키, 주인공  => 중복을 허용하지 않는다

각각의 행을 식별하는 식별자로 사용

CREATE TABLE topic(
    id INT(11) NOT NULL AUTO_INCREMENT,
    title VARCHAR(100) NOT NULL,
    description TEXT NULL,
    created DATETIME NOT NULL,
    author VARCHAR(15) NULL,
    profile VARCHAR(200) NULL,
    PRIMARY KEY(id)
);

Query OK가 나오면 잘 생성된 것이다

 

이거가 가끔 나오는데 MySQL이 기본으로 세팅하는 password를 사용할 떄 사용

이런건 그냥 검색해보셈 ㅇㅇ

SET PASSWARD = PASSWORD('your_new_password');

ex)

SET PASSWARD = PASSWORD('111111');

이런건 외우는게 아니라 검색하는 것이다.

728x90

'IT Study > SQL' 카테고리의 다른 글

[SQL 입문부터 활용까지] 1차 과제  (0) 2022.11.19
[SQL][MYSQL] JOIN  (0) 2022.11.19
[SQL][MYSQL] order by, group by  (0) 2022.11.19
[SQL][10~13] MYSQL의 CRUD  (0) 2022.11.14
[SQL][1~4] 데이터베이스의 목적, MySQL 설치 및 구조  (0) 2022.11.13