MySQL-생활코딩

Min·2021년 1월 7일
0

SQL

목록 보기
2/3
post-thumbnail

MySQL

Top


1. 수업소개

  • file의 한계

  • Relational Database

Top


2. 데이터베이스의 목적

  • 데이터를 표의 형태로 나타낸다.

  • 컴퓨터 언어를 통해서 데이터베이스를 제어

Top


3. MySQL 설치

  • mysql community edition download

  • bitnami wamp

    • Apache, mySQL, PHP 를 동시에 설치해주는 프로그램
    • Manage Servers 탭에서 실행 혹은 중지
    • 실행 : 터미널에서 C:\Bitnami\wampstack-7.4.9-0\mysql\bin 로 이동 후 mysql -uroot -p.

Top


4. MySQL의 구조

  • 구성요소

    • 표(table)
    • 데이터베이스(database, schema) : 일종의 폴더로 표들을 그룹핑한 것
    • 데이터베이스 서버(database server) : 데이터베이스, 스키마를 그룹핑한 것

Top


5. 서버접속

  • 데이터베이스 서버로 접속

  • bitnami wamp

    • Apache, mySQL, PHP 를 동시에 설치해주는 프로그램
    • Manage Servers 탭에서 실행 혹은 중지
    • 실행 : 터미널에서 C:\Bitnami\wampstack-7.4.9-0\mysql\bin 로 이동 후 mysql -uroot -p
  • 효용

    • 보안, 권한 부여
  • -u : User

  • -p : Password

Top


6. 스키마의 사용

  • 데이터베이스 사용

  • 검색

    • mysql create database
    • mysql delete database
    • how to show database list in mysql
  • 생성

    • CREATE DATABASE 스키마이름;
  • 삭제

    • DROP DATABASE 스키마이름;
  • 확인

    • SHOW DATABASES;
  • 사용

    • USE 스키마이름;

Top


7. SQL과 테이블의 구조

  • *SQL

    • Structured Query Language
    • SQL을 통해 MySQL Server와 대화
  • table, 표

    • x축 : row, record,
    • y축 : column,

Top


8. 테이블의 생성

  • 테이블 생성

    • 검색 : create table in mysql cheat sheet
  • id column 생성

    • 검색 : mysql datatype number
    • NOT NULL : 값을 반드시 입력
    • AUTO_INCREMENT : 자동으로 1씩 증가
    • PRIMARY KEY (id) : 식별자로 사용하고 있기 때문에 중복방지
  • title column 생성

    • 검색 : mysql datatype string
    • VARCHAR : 정한 글자수만 입력
  • description column 생성

    • 검색 : mysql datatype string
    • TEXT : 65,535자 까지 가능
  • created column 생성

    • 검색 : mysql datatype date/time
  • ERROR 1820 (HY000): You must reset your password using ALTER USER statement before excuting this statement.

    • 기본 세팅된 비밀번호를 바꿔야 한다.
    • SET PASSWORD = PASSWORD('새로운 비밀번호');`
CREATE TABLE topic (
  id INT(11) NOT NULL AUTO_INCREMENT,
  title VARCHAR(100) NOT NULL,
  description TEXT NULL,
  created DATETIME NOT NULL,
  author VARCHAR(30) NULL,
  profile VARCHAR(100) NULL,
  PRIMARY KEY (id)
);

Top


9. CRUD

  • CRUD

    • Create
    • Read
    • Update
    • Delete

Top


10. INSERT

  • 쓰기

  • **row 생성

    • 검색 : mysql create row
    • INSERT INTO table_name (column1, ...) VALUES (value1...);
    • DESC 테이블명; : 구조를 보여준다.
  • 실습

    • INSERT INTO topic (title,description,created,author,profile) VALUES('MySQL','MySQL is ...',NOW(),'egoing','developer');
    • 검색 : how to read row in mysql

Top


11. SELECT

  • 읽기

    • 검색 : mysql select syntax
  • SELECT * FROM topic;

    • 모든 column 보기
  • SELECT '표시하고 싶은 column' FROM topic WHERE '조건';

    • SELECT id, title,created,author FROM topic WHERE author='egoing' ORDER BY id DESC LIMIT 2;
    • WHERE : 조건에 맞는 행만을 출력
    • ORDER BY 원하는 행의 오름차순, 내림차순 정렬
    • LIMIT : 데이터를 가져오는 수

Top


12. UPDATE

  • 수정

    • 검색 : sql update mysql
  • UPDATE 'table이름' SET 'column이름 = '값'' WHERE '원하는 행';

    • WHERE 을 사용하지 않으면 모든 데이터가 바뀐다.
    • UPDATE topic SET description='ORACLE is', title='Oracle' WHERE id=2;

Top


13. DELETE

  • 삭제

    • 검색 : sql delete in mysql
  • DELETE FROM '테이블이름' WHERE '원하는 행';

    • WHERE 을 사용하지 않으면 모든 데이터가 삭제된다.
    • DELETE FROM topic WHERE id =5;

Top


14. 수업의 정상

  • 혁신과 본질

    • Relational = 혁신 = innovation
    • Database = 본질 = essence = CRUD

Top


15. 관계형데이터베이스의 필요성

  • 필요성

    • 중복 개선을 위해 테이블을 분리
    • 저장할땐 분리, 보여줄 땐 병합

Top


16. 테이블 분리하기

  • 흐름을 이해해보자

    • topic 테이블 이름을 topic_backup 으로 변경
    • topic 테이블의 author_idauthor 테이블 참조
--
-- Table structure for table `author`
--
 
 
CREATE TABLE `author` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(20) NOT NULL,
  `profile` varchar(200) DEFAULT NULL,
  PRIMARY KEY (`id`)
);
 
--
-- Dumping data for table `author`
--
 
INSERT INTO `author` VALUES (1,'egoing','developer');
INSERT INTO `author` VALUES (2,'duru','database administrator');
INSERT INTO `author` VALUES (3,'taeho','data scientist, developer');
 
--
-- Table structure for table `topic`
--
 
CREATE TABLE `topic` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(30) NOT NULL,
  `description` text,
  `created` datetime NOT NULL,
  `author_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
);
 
--
-- Dumping data for table `topic`
--
 
INSERT INTO `topic` VALUES (1,'MySQL','MySQL is...','2018-01-01 12:10:11',1);
INSERT INTO `topic` VALUES (2,'Oracle','Oracle is ...','2018-01-03 13:01:10',1);
INSERT INTO `topic` VALUES (3,'SQL Server','SQL Server is ...','2018-01-20 11:01:10',2);
INSERT INTO `topic` VALUES (4,'PostgreSQL','PostgreSQL is ...','2018-01-23 01:03:03',3);
INSERT INTO `topic` VALUES (5,'MongoDB','MongoDB is ...','2018-01-30 12:31:03',1);

Top


17. JOIN

  • topic 테이블의 author_id 값과 author 테이블의 id 값을 연결

  • SELECT * FROM topic LEFT JOIN author ON topic.author_id=author.id;

    • topic 테이블과 join 테이블을 합친다
    • ON 조건 만족시키는 경우
  • SELECT id, title, description, created, name, profile FROM topic LEFT JOIN author ON topic.author_id = author.id;

    • 오류
  • SELECT topic.id, title, description, created, name, profile FROM topic LEFT JOIN author ON topic.author_id = author.id;

    • 정상 출력
  • SELECT topic.id AS topic_id, title, description, created, name, profile FROM topic LEFT JOIN author ON topic.author_id = author.id;

    • 열에 id 란 값이 2개 중복되므로 idtopic.id 로 열 구분을 해줘야 함
    • topic.id AS topic_id에서 AS 를 이용해 이름 변경하여 출력 가능
  • 테이블을 분리한다는 것은, 모든 테이블이 식별자 값만 행에 포함하고 있다면

    JOIN 을 통해 얼마든지 관계를 맺을 수 있다.**

Top


18. 인터넷과 데이터베이스

  • clientInternetserver

  • clientInternetserver

  • **mysql서버클라이언트 둘다 설치

    • mysql monitor(client) 를 통해 명령어로 server 를 제어
    • database server 를 직접 제어할 수 없다.

Top


19. MySQL Client

  • MySQL monitor

    • 어디서나 사용가능
    • CLI 기반
  • MySQL client

    • 검색 : mysql client

Top


20. MySQL Workbench

  • Workbench GUI 환경

    • SQLMySQL 서버에 전송함으로써 데이터베이스 서버를 제어
    • ./mysql -uroot -p -hlocalhost

Top


21. 수업을 마치며

  • 공부할 것들

    • index (색인) : 사용자들이 검색을 자주 하는 컬럼에 색인을 걸어둠
    • modeling : 성능, 설계
    • backup : 내 컴퓨터와 별도의 컴퓨터에 복제해서 보관 ex) mysqldump, binary log
    • cloud : 내 컴퓨터가 아닌 큰 회사들의 인프라를 임대해서 원격 제어.
      backup도 알아서 해준다.
      ex) AWS RDS, Google Cloud SQL for MySQL, AZURE Database for MySQL
    • programming : DB 서버 핸들링
      ex) python mysql api, php mysql api, java mysql api
profile
slowly but surely

0개의 댓글