MySQL

미니멀리즘·2022년 10월 19일

클라우드 IDE

구름IDE https://ide.goorm.io/my/dashboard

  • 도커는 애플리케이션을 신속하게 구축, 테스트 및 배포할 수 있는 소프트웨어 플랫폼이다.
  • 도커(Docker)는 컨테이너에 기반해 애플리케이션을 구축하는 소프트웨어 플랫폼이다
  • 컨테이너는 격리된 공간에서 프로세스가 동작하는 기술이다
  • 컨테이너(Container)는 개별 Software의 실행에 필요한 실행환경을 독립적으로 운용할 수 있도록 기반환경 또는 다른 실행환경과의 간섭을 막고 실행의 독립성을 확보해주는 운영체계 수준의 격리 기술을 말합니다

구름 사용법

컨테이너 만들기 (언어는 상관없음, 체크박스 체크하기)

컨테이너 실행 - 설정 - 자동저장 켜기

리눅스 명령어

source 명령어는 스크립트 파일을 수정한 후에 수정된 값을 바로 적용하기 위해 사용하는 명령어이다.
파일명.sql -> SQL문 작성
실행하기 = source 경로/파일명.확장자

mysql-ctl cli = control Command-Line Interface START
MYSQL에서 나오기 CTRL + D

SQL

데이터베이스,테이블 관리

SHOW DATABASE;= 존재하는 데이터베이스 확인
CREATE DATABASE DB명; = 데이터 베이스 만들기
DROP DATABASE DB명; = 데이터 베이스 삭제
USE DB명; = 데이터 베이스 사용
SELECT DATABASE(); = 현재 내가 사용중인 DB를 보여 줌
SHOW TABLES; = 현재 내가 사용중인 테이블을 보여줌
SHOW COLUMNS FROM 테이블명; = 테이블의 컬럼 내용을 보여줘
DESC 테이블명 = (description)테이블의 컬럼 내용을 보여줘
SHOW WARNINGS; = 에러 메시지 보여줘

CREATE TABLE과 함께 쓰는 명령어

(컬럼명 자료형 ___ 식으로 입력. 연속적으로 입력 할경우 쉬표 없이 띄어 쓰기만)

  • NOT NULL = NULL 값이 입력 되지 않게함, (Default는 Null yes)
    DEFAULT '원하는 입력값' = Default값을 줌, null값이 입력 될 경우 자동입력
    PRIMARY KEY = 컬럼값에 고유값을줌
    AUTO_INCREMENT = 자동의로 증가된 값을 입력함, primary key만 사용가능
    PRIMARY KEY(컬럼명) = 컬럼값에 고유값을줌, 코드 가독성을 위해 컬럼명 마지막에 쓰는 것보다, SQL문 마지막에 작성하는 방법을 선호함
    FOREIGN KEY(컬럼명) REFERENCES 테이블명(키가 있는 컬럼명)); = FOREIGN KEY로 설정하고 다른 테이블의 PRIMARY KEY와 관계를 맺음
    Unique = 중복된 값을 허용하지 않음
    CREATE TABLE contacts (
    name VARCHAR(100) NOT NULL,
    phone VARCHAR(15) NOT NULL UNIQUE);
    NOT NULL, DEFAULT '값'
    = 입력할떄 빈값이면 자동 입력이 되자만 수동으로 NULL 값을 입력 할순 없다.

ALTER

테이블 수정하기

ALTER TABLE books ADD COLUMN store_info VARCHAR(15);
ALTER TABLE books DROP COLUMN store_info;
#ALTER TABLE books RENAME COLUMN pages TO pages_num;
ALTER TABLE reviewers MODIFY COLUMN last_name VARCHAR(50) NOT NULL;

SELECT과 함께 쓰는 명령어

SELECT 컬럼명(들) FROM 테이블명(들) WHERE 검색조건 GROUP BY 컬럼명 ORDER BY 속성명;

  • as = (aliases) 컬럼명 as 변경됨 컬럼명 = 컬럼명을 변경함
    CONCAT (컬럼명, 컬럼명) = 컬럽값을 합침
    CONCAT (컬럼명,'',컬럼명) AS '변경될 켤럼명' = 컬럼값을 합치고 합친 컬럼명을 변경함

  • ORDER BY 컬럼명 = 컬럼명을 기준으로 정렬하여 출력함
    ORDER BY 컬럼명 ASC; ↗ 오름차순
    ORDER BY 컬럼명 DESC; ↘ 내림차순

SELECT SUBSTRING('Hello World',1 ,4); = 1부터 4까지의 스트링을 가져옴
결과 = Hell
SELECT SUBSTRING('Hello World',3); = 3부터 끝까지 스트링을 가져옴
결과 = llo World
SELECT SUBSTRING('Hello World',-3); = 끝에서 3번째까지 스트링을 가져옴
결과 = rld
SELECT REPLACE('Hello World', 'o', '0'); = o을 0으로 바꾸달라
결과 = Hell0 W0rld
SELECT REPLACE('cheese bread coffe milk', ' ', ' and ');
결과 = cheese and bread and coffe and milk
SELECT REVERSE('Hello world'); = 뒤집기
결과 = dlrow olleH
SELECT CHAR_LENGTH('Hello World'); = 문자갯수 카운트
결과 = 띄어쓰기 포함
SELECT UPPER('Hello World'); = 대문자화
SELECT LOWER('HELLO WORLD'); = 소문자화
SELECT DISTINCT author_lname FROM books; = 중복된것 빼고 가져옴
SELECT title FROM books LIMIT 3; = 3개 까지 보여줌
SELECT title FROM books LIMIT 1,3; = 시작인덱스 번호부터 3개 까지 보여줌
SELECT title, author_fname FROM books WHERE author_fname LIKE '%da%'; da가 포함된 컬럼값을 가져옴
결과 = 문자열 찾기
SELECT COUNT(DISTINCT title) FROM songs; = 중복된 값을 제외하고 그 개수를 세줌
SELECT COUNT(*) FROM books WHERE title LIKE '%the%'; = 조건에 맞는 갯수를 세줌
SELECT MIN(pages) FROM books; = 가장작은 값을 가져오세요
SELECT MAX(pages) FROM books; = 가장큰 값을 가져오세요
SELECT title, pages FROM books WHERE pages = (SELECT MAX(pages) FROM books); 가장 작은 페이지를 가진 책의 이름을 가져옴
SELECT AVG(pages) FROM books; = 평균 값을 가져옴
SELECT FROM books WHERE released_year != 2017;
SELECT
FROM books WHERE title NOT LIKE '%e%';
SELECT * FROM books WHERE pages > 500;
ROUND(AVG(rating),2)

SELECT CURTIME(); = 현재 시간
SELECT CURDATE(); = 현재 날짜
SELECT NOW(); = 현재 시간, 날짜

WHERE AND , OR
WHERE rating IS NULL;

조건문

SELECT author_fname, author_lname, CASE 
WHEN COUNT(*) = 1 THEN '1 book'
ELSE CONCAT(COUNT(*),' books') END AS 'COUNT' 
FROM books GROUP BY author_fname, author_lname;

CASE WHEN THEN ELSE END

IF(COUNT(rating) > 0, 'ACTIVE', 'INACTIVE') AS status

SELECT title, released_year FROM books WHERE released_year BETWEEN 2004 AND 2015;(이상이하)
MOD(released_year, 2) != 0; 나머지 구하기

INSERT INTO people VALUES('Hazel', CURDATE(), CURTIME(), NOW()); = 이런식으로 입력가능

SELECT birthdate, DAY(birthdate), DAYOFWEEK(birthdate), DAYOFYEAR(birthdate) FROM people; = 날짜, 요일, 일년중 몇번째 인지

SELECT birthdate, MONTHNAME(birthdate), year(birthdate) FROM people; = 월, 년

SELECT birthdt, MONTH(birthdt), DAY(birthdt), HOUR(birthdt), MINUTE(birthdt) FROM people; = 월, 날짜, 시간, 분

SELECT birthdate, DATE_FORMAT(birthdate, '%a %b %D') FROM people; = 요일(약어), 월(약어), 몇번째 주인지

SELECT birthdate, DATE_FORMAT(birthdt, '%H : %i') FROM people; = 시간, 분

SELECT birthdt, DATE_FORMAT(birthdt, 'BORN ON : %r') FROM people; 시(12시간), 분, 초

CREATE TABLE tweets (conten VARCHAR(140),
username VARCHAR(20),
created_at timestamp DEFAULT NOW()); = 시간값이 디폴드로 입력 되게함

SQL문의 데이터 타입

CREATE TABLE people(name VARCHAR(100),
                    birthdate date,
                    birthtime time,
                    birthdt datetime);
                        
INSERT INTO people VALUES('Elton', '2000-12-25', '11:00:00', '2000-12-25 11:00:00')

JOIN

# LAST NAME이 George인 사람의 ORDER 내역을 가져오세요
SELECT * FROM customers WHERE last_name = 'George';
SELECT * FROM orders WHERE customer_id = 1;

SELECT * FROM orders WHERE customer_id = 
			(SELECT id FROM customers WHERE last_name = 'George');

INNER JOIN (교집합)

SELECT * FROM 테이블명, 테이블명 WHERE 테이블명.(PRIMARY KEY)컬럼명 = 테이블명.(FOREIGN KEY)컬럼명
SLEECT * FROM 테이블명 JOIN 테이블명 ON 테이블명.(PRIMARY KEY)컬럼명 = 테이블명.(FOREIGN KEY)컬럼명

SELECT * FROM customers, orders WHERE customers.id = orders.customer_id;

SELECT * FROM customers JOIN orders ON customers.id = customer_id;
  • SUM(컬럼명) ... GROUP(조건)
SELECT customer_id, SUM(amount) FROM orders GROUP By customer_id;
# NULL 값이면 O으로 출렴함
IFNULL(SUM(amount),0)

OUTER JOIN (차집합 + 교집합)

SELECT * FROM customers LEFT JOIN orders ON customers.id=orders.customer_id;

CROSS JOIN

SELF JOIN

profile
웹 개발자

0개의 댓글