# 터미널에서 sql실행하기
mysql -u root -p
#Enter password : 패스워드 입력
# 데이터목록보기
show databases;
# 데이터 생성
create database testdb;
# 데이터 접속
use testdb;
# 데이터 삭제
drop database testdb;
# 현재 host와 user정보
select host, user form user;.
# localhost zerobase유저 생성
create user 'zerobase'@'localhost' identified by '1234';
# 외부접속가능 zerobase유저 생성
create user 'zerobase'@'%' identified by '5678';
# 유저 삭제
drop user 'zerobase'@'localhost';
drop user 'zerobase'@'%';
# 권한 목록 확인
SHOW GRSNTS FOR 'username'@'localhost';
# 사용자에게 특정 데이터베이스의 모든 권한을 부여
GRANT ALL ON dbname.* to 'username'@'localhost';
#참고 - 수정내용이 적용이 되지 않는 경우 새로고침
FLUSH PRIVILEGES
# dbname의 모든 권한 제거
REVOKE ALL ON dbname.* from 'username'@'localhost';
# zerobase 라는 이름의 데이터베이스 생성
CREATE DATABASE zerobase DEFAULT CHARACTER SET ut8mb4;
# Table 생성 문법
CREATE TABLE tablename
(
columnname datatype,
columnname datatype,
...
)
# Table 목록 확인 문법
SHOW TABLE;
# Table 정보 호가인 문법
DESC mytable;
# table 이름 변경 문법
ALTER TABLE tablename
RENAME new_tablename;
# table Column 추가 문법
ALTER TABLE tablename
ADD COLUMN columnname dataype;
# table Column DataType변경
ALTER TABLE tablename
MODIFY COLUMN columnname dataype;
# table Column Name변경
ALTER TABLE tablename
CHANGE COLUMN old_columnname new_columnname new_dataype;
# table Column 삭제 문법
ALTER TABLE tablename
DROP COLUMN columnname;
# Table 삭제
DROP TABLE tablename;
INSERT INTO tablename(column1, column2,...)
VALUES (value1, value2,...);
# 모든 컬럼값을 추가하는 경우
INSERT INTO tablename
VALUES (value1, value2,...);
# 테이블 내의 특정 칼럼에 대한 데이터 조회
SELECT column1, column2,...
FROM tablename;
# 테이블 내의 모든 컬럼에 대한 데이터를 조회
SELECT *
FROM tablename;
SQL문에 조건을 추가하며 SELECT뿐만 아니라 UPDATE와 DELETE에도 사용
SELECT column1, column2,...
FROM tablename
WHERE condition;
UPDATE tablename
SET column1 = value1, column2 = value2, ...
WHERE condition;
DELETE FROM tablename
WHERE condition;
SELECT column1, column2,...
FROM tablename
ORDER BY column1, column2,...ASC/DESC;
# 여러컬럼 정렬을 다르게 할 경우
ORDER BY column1 ASC/DESC, column2 ASC/DESC;
A = B 같은
A > B A가 B 보다 큰, 초과
A < B A가 B 보다 작은, 미만
A >= B A가 B 보다 크거나 같은, 이상
A <= B A가 B 보다 작거나 같은, 이하
A <> B A가 B 보다 크거나 작은, 같지않은
A != b A와 B가 같지 않은
AND 조건을 모두 만족하는경우 TRUE
OR 하나의 조건이라도 만족하는 경우
NOT 조건을 만족하지 않는 경우
BETWEEN 조건값이 범위 사이에 있으면
IN 조건값이 목록에 있으면
LIKE 조건값이 패턴에 맞으면
SELECT column1, colum2,...
FROM tablename
WHERE condition1 AND codition2 AND codintion3 ...;
SELECT column1, colum2,...
FROM tablename
WHERE condition1 OR codition2 OR codintion3 ...;
SELECT column1, colum2,...
FROM tablename
WHERE NOT condition1;
// WHERE condtion1 AND NOT condition2
// WHERE (condtion1 AND NOT condition2)
OR (condtion3 AND NOT condition4)
SELECT column1, colum2,...
FROM tablename
WHERE column1 BETWEEN value1 AND value2;
ex) 나이 컬럼에서 20세에서 40세 사이
-> WHERE age BETWEEN 20 AND 40;
-> WHERE age>=20 AND age<=40;
SELECT column1, colum2,...
FROM tablename
WHERE column1 IN (value1, value2);
ex) 나이 컬럼에서 20세, 40세 중 하나인 데이터
-> WHERE age IN (20, 40);
-> WHERE age=20 OR age=40;
SELECT column1, colum2,...
FROM tablename
WHERE column1 LIKE pettern;
ex) '엔터테이먼트'로 끝나는 소속사 이름을 가진 데이터를 검색
-> WHERE agency Like '%엔터테이먼트';
ex ) 직업명에 '가수'가 포함된 데이터를 검색
-> WHERE job_title Like '%가수%';
ex ) 이름의 두번째 글자가 '동'인 데이터를 검색
-> WHERE name Like '_동%'; (세번쨰면 _언더바를 하나 더 넣어줌)
ex ) 직업명이 '가'로 시작하고 최소 5글자 이상인 데이터 검색
-> WHERE job_title Like '가____%';
ex ) 직업이 하나 이상인 연예인 중 영화배우 혹은 텔런트가 아닌 연예인
-> SELECT * FROM celeb
WHERE job_title Like '%,%'
AND NOT (job_title Like '%영화배우%' OR job_title Like '%탤런트%')
UNION : 중복된 값을 제거하여 알려줌
UNION ALL : 중복된 값도 모두 보여줌
SELECT column1, column2, ... FROM tableA
UNION/UNION ALL
SELECT column1, column2, ... FROM tableB;
두 개 이상의 테이블을 결합하는 것
# INNER JOIN
SELECT column1, column2, ...
FROM tableA
INNER JOIN tableB
ON tableA.column = tableB.colum #ON으로 기준을 정해줌
WHERE condition;
# LEFT JOIN
SELECT column1, column2, ...
FROM tableA
LEFT JOIN tableB
ON tableA.column = tableB.colum
WHERE condition;
# RIGHT JOIN
SELECT column1, column2, ...
FROM tableA
RIGHT JOIN tableB
ON tableA.column = tableB.colum
WHERE condition;
# FULL OUTER JOIN (mysql에서는 지원하지 않음)
SELECT column1, column2, ...
FROM tableA
FULL OUTER JOIN tableB
ON tableA.column = tableB.colum
WHERE condition;
------------
#MySQL에서 다음 쿼리로 같은 결과를 만들 수 있음
SELECT column1, column2, ...
FROM tableA
LEFT JOIN tableB
ON tableA.column = tableB.colum
UNION
SELECT column1, column2, ...
FROM tableA
RIGHT JOIN tableB
ON tableA.column = tableB.colum
WHERE condition;
#SELF JOIN
SELECT column1, column2, ...
(*동일한 칼럼명이 없는경우 칼럼명만 입력가능, 동일칼럼명 있는 경우 에러발생)
FROM tableA, tableB, ...
WHERE conditon;
문자 조합
칼럼이나 테이블 이름에 별칭 생성
# 칼럼 별칭
SELECT column as alias
RROM tablename;
# 테이블 별칭
SELECT column1, column2, ...
RROM tablename as alias;
검색한 결과의 중복 제거
SELECT DISTINCT column1, column2, ...
FROM tablename;
검색결과를 정렬된 순으로 주어진 숫자만큼만 조회
SELECT column1, column2, ...
FROM tablename
WHERE condition
LIMIT number;