Database
DBMS(Database Mangement System)
관계형 데이터베이스
show databases;
;의 경우, 즉시 실행 의미
create database dbname;
use dbname;
drop datbase dbname;
사용자 정보는 mysql에서 관리하므로 mysql 데이터베이스로 이동 후 조회
use mysql;
select host, user from user;
현재 PC에서만 접속가능한 사용자를 비밀번호와 함께 생성
create user 'username'@'localhost' identified by 'password';
외부에서 접속가능한 사용자를 비밀번호와 함께 생성
create user 'username'@'%' identified by 'password';
접근 범위에 따라 같은 이름의 사용자라도 별도 삭제해야 함
drop user 'username'@'localhost'
drop user 'username'@'%'
실습
Database(testdb) 생성
create database dbname;
권한 관리를 실습하기 위한 사용자 생성
create user 'username'@'localhost' identified by '1234';
사용자에게 부여된 모든 권한 목록 확인
show grants for 'username'@'localhost';
사용자에게 특정 데이터베이스의 모든 권한을 부여
grant all on dbname.* to 'username'@'localhost';
* : 모든 것을 의미
새로고침 : flush privileges;
사용자에게 특정 데이터베이스의 모든 권한을 삭제
revoke all on dbname.* from 'username'@'localhost';
실습
zerobase에서 사용할 기본 자료형은 다국어를 지원하고 이모지 문자를 사용을 의미
create database zerobase default character set utf8mb4;
create table tablename
(
columnname datatype,
columnname datatype,
...
);
show tables;
desc tablename;
varchar : pandas에서 object와 비슷
실습
alter table tablename rename new_tablename;
alter table tablename add column columnname datatype;
alter table tablename modify column columnname datatype;
alter table tablename change column old_columnname new_columnname new_datatype;
위 명령어의 경우 데이터 이름과 데이터타입을 동시에 변경이 가능하다.
alter table tablename drop column columnname;
drop table tablename;
실습
insert into tablename (column1, column2, ...)
values (value1, value2, ...);
- columns 순서와 values 순서가 일치해야 함
- 단, 모든 columns를 추가하는 경우에는 컬럼 이름을 지정하지 않아도 됨
- select * from tablename : tablename 안에 있는 모든 데이터 보기
실습
select column1, column2, ... from tablename; (특정컬럼)
select * from tablename; (모든 컬럼)
특정 조건을 만족하는 데이터를 가져오기, 갱신하기, 삭제하기
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 (where condition)
order by column1, column2, ... ASC | DESC;
- order by column1, column2 인 경우, column1, column2 순으로 정렬하여 조회
- ASC : 오름차순 정렬 (ASC를 생략해도 기본은 오름차순 정렬)
- DESC : 내림차순 정렬
- order by column1 ASC, column2 DESC 또한 가능함
- column1은 오름차순, column2는 내림차순 정렬
실습
A = B
A > B
A < B
A >= B
A <= B
A <> B (A가 B보다 크거나 작은, 같지않은)
A != B
select column1, column2, ...
from tablename
where 비교연산자
order by column1, column2, ... ASC | DESC;
실습
AND : 조건을 모두 만족하는 경우 TRUE
OR : 하나의 조건이라도 만족하는 경우 TRUE
NOT : 조건을 만족하지 않은 경우 TRUE
BETWEEN : 조건값이 범위 사이에 있으면 TRUE
IN : 조건값이 목록에 있으면 TRUE
LIKE : 조건값이 패턴에 맞으면 TRUE
select column1, column2, ...
from tablename
where condition1 AND condition2 AND condition3 ...
(order by ASC|DESC);
실습
select column1, column2, ...
from tablename
where condition1 OR condition2 OR condition3 ...
(order by ASC|DESC);
- AND 와 OR 중 우선순위는 AND 이다.
실습
select column1, column2, ...
from tablename
where NOT condition
(order by ASC|DESC);
실습
select column1, column2, ...
from tablename
where column1 BETWEEN value1 AND value2
(order by ASC|DESC);
실습
select column1, column2, ...
from tablename
where column1 IN (value1, value2, ...)
(order by ASC|DESC);
실습
select column1, column2, ...
from tablename
where column1 (not) LIKE pettern
(order by ASC|DESC);
- YG% : 'YG'로 시작하고 뒤에는 어떠한 문자도 와도 상관없다.
- %엔터테이먼트 : '엔터테이먼트'로 끝나는 데이터를 찾는다.
- %가수% : '가수'가 포한된 데이터를 찾는다.
- _G% : 두번째 글자가 'G'인 데이터를 찾는다.
- 가_% : '가'로 시작하고 최소 2글자 이상인 데이터를 찾는다.
- 영%모델 : '영'으로 시작하고 '모델'로 끝나는 데이터를 찾는다.
- column like '%영화배우%' and column like '%탤런트%'
: '영화배우'와 '탤런트'를 병행하는 데이터를 찾는다.
- %,% : 찾고자 하는 값이 2개 이상인 경우
실습
select column1, column2, ... from tableA
UNION | UNION ALL
select column1, column2, ... from tableB;
실습
select column1, column2, ...
from tableA
INNER JOIN tableB
ON tableA.column = tableB.column
where condition
(order by ASC|DESC);
select column1, column2, ...
from tableA
LEFT JOIN tableB
ON tableA.column = tableB.column
where condition
(order by ASC|DESC);
select column1, column2, ...
from tableA
RIGHT JOIN tableB
ON tableA.column = tableB.column
where condition
(order by ASC|DESC);
[기본]
select column1, column2, ...
from tableA
FULL OUTER JOIN tableB
ON tableA.column = tableB.column
where condition
(order by ASC|DESC);
[mySQL]
select column1, column2, ...
from tableA
LEFT JOIN tableB ON tableA.column = tableB.column
UNION
select column1, column2, ...
from tableA
RIGHT JOIN tableB ON tableA.column = tableB.column
where condition
(order by ASC|DESC);
select column1, column2, ...
from tableA, tableB, ...
where condition (where절에 기준을 설정)
(order by ASC|DESC);
실습
select CONCAT('string1', string2, ..) from tablename;
select column AS alias
from tablename;
select column1, column2, ...
from tablename AS alias;
- AS 생략이 가능함
실습
select DISTINCT column1, column2, ...
from tablename;
실습
select column1, column2, ....
from tablename
where condition
LIMIT number;
실습
자료출처: 제로베이스 데이터스쿨