생활코딩 mysql

skh951225·2022년 8월 26일
0

SQL

목록 보기
1/5
post-thumbnail

강의주소

SQL(Structured Query Language)특징

(1) 쉽다.(HTML 만큼 쉽다.)
(2) 중요하다.(관계형 데이터베이스를 다룰때 공통적으로 쓰는 언어, 압도적으로 많이 사용됨)

SQL 구조


Table\subsetDatabase or Schema\subsetDatabase server

Table : x축은 row,record,행(데이터의 수) / y축은 column,열(데이터의 타입)

데이터베이스 서버 접속

/mysql -uroot -p #-u : user // rooot : 기본유저(관리자) // -p : 비밀번호 입력

데이터베이스의 사용

CREATE DATABASE opentutorials; # opentutorial 라는 DATABASE 만들기
DROP DATABASE opentutorials; # opentutorial 라는 DATABASE 삭제
# 위의 두 명령어는 잘 사용할 일은 없음 필요할때마다 검색 ㄱㄱ
SHOW DATABASES # 어떤 Database가 있는지 출력

USE opentutorials # opentutorials 라는 DATABASE 사용하기

mysql cheat sheet

Table 만들기

# 데이터 타입관련 : https://www.techonthenet.com/mysql/datatypes.php
CREATE TABLE topic(
# topic이라는 table 만듬
   id INT(length) NOT NULL AUTO_INCREMENT,
# length : 어디까지 노출 시킬것인가? 
# NOT NULL : 값이 없는 것을 허용하지 않는다.
# AUTO_INCREMENT : 자동으로 1씩 증가함  
   title VARCHAR(100) NOT NULL,
   description TEXT NULL,
   created DATETIME NOT NULL,
   author VARCHAR(30) NULL,
   profile VARCHAR(100) NULL,
   PRIMARY KEY(id));
   # id 를 MAIN KEY로 선언, 중복이 없어야함?

데이터베이스가 여러가지 규제 정책(length, NULL)을 가지고 있고, 그로인해 우리가 원하는 형태의 데이터베이스를 구성하는데 큰 도움을 준다.

SET PASSWORD = PASSWORD('new_password')
# 패스워드 바꾸기

CRUD

: 데이터베이스가 무엇이든 간에 막론하고 가지고 있는 4가지 작업
Create(가장 중요) Read (무조건 있음) | Update Delete (없을 수 도 있음)
INSERT(Create)

SHOW TABLES; # TABLE 목록 출력
DESC topic; # topic 이라는 table 을 묘사

INSERT INTO topic(title,description ...) VALUES('MySQL','MySQL is ...' ...);
# topic 이라는 table 에 row를 추가 (Create)
SELECT * FROM topic; # topic 이라는 table 을 읽기 (Read)
SELECT id,title,description... FROM topic; 
# topic 에서 id,title,description...(projection) 이라는 column 만 출력 

SELECT(Read)

SELECT * FROM topic WHERE author='skh' ORDER BY id DESC LIMIT 2;
# [WHERE] topic에 author가 skh인것만 출력
# [OREDER BY] id를 역순으로 (DESC/ASC)
# [LIMIT] 출력되는 개수 2개로 제한

UPDATE

UPDATE topic SET description='Oracle is ...',title='Oracle' WHERE id=2;
# id=2 인 row의 description 과 title을 UPDATE
# WHERE 문을 빠뜨리면 재앙...

DELETE

DELETE FROM topic WHERE id=5;
# id=5 이 row 삭제
# 마찬가지로 WHERE 을 빠뜨리면 재앙.. 인생이 바뀔 수 있다?

Relational Database의 필요성

문제의식
: 데이터가 중복? 반복하면 낭비가 생긴다. 또한 중복되지만 같은 데이터가 아닐 수 있다.

JOIN

다수의 table 을 서로의 관계로 JOIN 할 수 있다.

topic_backup의 author와 profile은 중복적으로 등장할 가능성이 높기때문에 효율성을 위하여 author로 분리하였다.
topic과 author를 활용하여 topic_backup을 표현하기위해선 join을 사용하면된다.

table1 LEFT JOIN table2 ON table1.a=table2.b;

author_id와 id가 불필요하게 들어갔다 이를 제거해보자.

topic_backup과 동일한 table을 얻었다.

0개의 댓글