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 : 데이터 타입, 데이터 구조)
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을 직접 만들 일은 그렇게 많지 않다.
"표 (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');
이런건 외우는게 아니라 검색하는 것이다.
'Data Science > SQL' 카테고리의 다른 글
[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 |
진도체크 (0) | 2022.11.14 |
[SQL][1~4] 데이터베이스의 목적, MySQL 설치 및 구조 (0) | 2022.11.13 |