
Enter password: ****
MariaDB [(none)]> show databases;
****MariaDB [(none)]> create database test1




-- 회원(Member) 테이블 생성
CREATE TABLE MEMBER(
id VARCHAR(16) NOT NULL,
pw VARCHAR(330) NOT NULL,
NAME VARCHAR(100) NOT NULL,
email VARCHAR(100) NOT NULL,
tel VARCHAR(13),
regdate TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
POINT INT DEFAULT 0,
PRIMARY KEY (id));
SHOW TABLES;
desc member;
INSERT INTO 테이블(컬럼명, ...) VALUES(값, ...);
INSERT INTO member(id, pw, NAME, email, tel) VALUES ('admin', '1234', '관리자', 'admin@edu.com', '010-1004-1004');
INSERT INTO member(id, pw, NAME, email, tel) VALUES ('teacher', '1234', '선생님', 'teacher@edu.com', '010-1004-1005');
INSERT INTO member(id, pw, NAME, email, tel) VALUES ('sam', '1234', '쌤', 'sam@edu.com', '010-1004-1006');
INSERT INTO member(id, pw, NAME, email, tel) VALUES ('student', '1234', '학생', 'student@edu.com', '010-1004-1007');
SELECT * FROM member;
-- board table 생성board
CREATE TABLE board(
bno INT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(200) NOT NULL,
contents VARCHAR(1000),
author VARCHAR(16) NOT NULL,
regdate TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
cnt INT DEFAULT 0);
INSERT INTO board(title, contents, author) VALUES ('금요일', '네', 'teacher');
INSERT INTO board(title, contents, author) VALUES ('7월 28일', '내', 'sam');
INSERT INTO board(title, contents, author) VALUES ('더미쓰', '냉', 'admin');
INSERT INTO board(title, contents, author) VALUES ('더미쓰1', '냉', 'admin');
INSERT INTO board(title, contents, author) VALUES ('더미쓰2', '냉', 'admin');
INSERT INTO board(title, contents, author) VALUES ('더미쓰3', '냉', 'admin');
INSERT INTO board(title, contents, author) VALUES ('더미쓰4', '냉', 'admin');
INSERT INTO board(title, contents, author) VALUES ('더미쓰5', '냉', 'admin');
COMMIT;
CREATE database 데이터베이스명;
CREATE table 테이블명 (컬러명 타입 [제약조건], ... );
CREATE index 인덱스명 as 테이블명 컬럼명;
ALTER TABLE 테이블명 add 컬럼명 컬럼타입 [제약조건]; -- 컬럼 추가
ALTER TABLE 테이블명 modify 컬럼명 컬럼타입 [제약조건]; -- 기존 컬럼 타입, 제약조건 변경
ALTER TABLE 테이블명 drop column 컬럼명; -- 컬럼을 없앰
ALTER TABLE 테이블명 rename 구_컬럼명 신_컬럼명; -- 컬럼명 변경
ALTER TABLE 테이블명 edit 구_컬럼명 신_컬럼명; -- 컬럼명 변경
ALTER TABLE 테이블명 change 구_컬럼명 신_컬럼명; -- 컬럼명 변경 (일반적, 마리아DB, MySQL)
Drop database 데이터베이스명;
Drop table 테이블명;
INSERT INTO 테이블 VALUES(컬럼값1, 컬럼값2, ...);
INSERT INTO 테이블 컬럼 VALUES(컬럼값);
INSERT INTO customer VALUES('AK-100880', 'Illill Kim', 'Consumer', 'South Korea', 'Seoul', 'Seoul', 18517, 'West');
SELECT * FROM 테이블; -- 테이블에서 모든 컬럼 선택 출력
SELECT 컬럼1, 컬럼2, ... FROM 테이블; -- 테이블에서 일부 컬럼들만 선택하여 출력
SELECT * FROM member;
SELECT id, name FROM member;
-- 업데이트
UPDATE 테이블 SET 컬럼='새 컬럼값' WHERE 조건;
UPDATE board SET author='sam' WHERE bno=6; -- 글번호 6의 author를 sam으로 바꿈;
DELETE FROM 테이블 WHERE 조건절;
DELETE FROM member WHERE id='dummy'; -- 아이디가 'dummy'인 멤버 삭제
마리아 DB 데이터형 🔗
SELECT 컬럼1 as 닉네임 FROM 테이블; -- 테이블의 컬럼1을 닉네임 이름으로 가져온다.
SELECT a.컬럼1 FROM 테이블 as a; -- 테이블을 a라는 닉네임으로 하여 a의 컬럼1을 가져온다.
SELECT a.id, a.name, a.email, b.bno, b.title FROM member a INNER JOIN board b ON a.id=b.author; -- 내부 조인
SELECT * FROM board ORDER BY author ASC;
SELECT * FROM board ORDER BY author ASC, cnt DESC;
SELECT author, COUNT(author) FROM board GROUP BY author HAVING 조건;
SELECT * FROM member a, board b; -- 4(memeber의 row)*8(board의 row) = 32건, 13개 항목
SELECT a.id, a.name, a.email, b.bno, b.title FROM member a, board b; -- 32건, cardinality가 5개
SELECT a.id AS 'pid', a.name AS 'pname', a.email, b.bno, b.title FROM member a, board b WHERE a.id=b.author; -- 컬럼 이름은 as 'alias(별칭)'으로 불러옴. 특정 게시판에 글을 올린 회원 정보와 글 정보를 모두 표시한 것.
-- 합집합 CREATE VIEW 뷰이름 AS (SELECT 열 FROM 테이블 UNION SELECT 열2 FROM 테이블2)
CREATE VIEW uni_table1 AS (SELECT productid, price FROM product2 UNION SELECT productid, price FROM product3);
-- 교집합 CREATE VIEW 뷰이름 AS (SELECT 열 FROM 테이블 INTERSECT SELECT 열2 FROM 테이블2)
CREATE VIEW int_table1 AS (SELECT productid, price FROM product2 intersect SELECT productid, price FROM product);
-- 차집합 CREATE VIEW 뷰이름 AS (SELECT 열 FROM 테이블 EXCEPT SELECT 열2 FROM 테이블2)
CREATE VIEW exc_table1 AS (SELECT productid, price FROM product EXCEPT SELECT productid, price FROM product2);
ROUND(반올림)
IF(조건, 참일 때 값, 거짓일 때 값)
case when 조건1 than 값1 when 조건2 than 값2 ... else 값n end [as 별칭]
SELECT sname AS '이름',
(kor+eng+mat) AS 'tot',
((kor+eng+mat)/3)AS 'ave',
if(((kor+eng+mat)/3)>=80, '합격', '불합격') AS 'pan',
case
when ((kor+eng+mat)/3)>90 then 'A'
when ((kor+eng+mat)/3)>80 then 'B'
when ((kor+eng+mat)/3)>70 then 'C'
when ((kor+eng+mat)/3)>60 then 'D'
ELSE 'F'
END AS 'hak' FROM student;
create user '사용자명'@'호스트' identified by '비밀번호' ;
create user 'test1'@'%' identified by '1234'; -- 계정 추가, %는 외부자 속성
grant [all/CRUD(테이블의 컬럼명)] on [*/DB명].[*/테이블명] to '사용자명'@'호스트';
grant all privileges on *.* to 'test1'@'%'; -- *.*은 모든 Db와 테이블에 권한
flush privileges; -- commit과 같이 권한 확정
select user(); -- 현재 사용자 식별
select distinct User from mysql.user; -- 모든 계정보기
show grants for 'test2'@'%'; -- 계정에 대한 권한 정보 열람

revoke all on *.* from 'test2'@'%'; -- 권한 회수
flush privileges; -- 반드시 권한 반영 필요

사용자 삭제: 삭제할 사용자 이름으로 만든 테이블이나 DB를 모두 삭제 후에 사용자를 삭제할 수 있다.
drop user 'test2'@'%';
flush privileges;
select distinct User from mysql.user;

트랜잭션(Transaction): 데이터베이스의 상태를 변화시키기 위해 수행하는 작업의 단위. 그냥 보기엔 두 가지 이상의 일이지만, 같이 처리되어야 할 데이터베이스의 작업이다.
START TRANSACTION;
병렬 처리문1;
병렬 처리문2;
COMMIT;
START TRANSACTION;
1
ROLLBACK;
-- (가장 최근 커밋 이후)start transaction으로 돌아감. 1 사라짐
2
SAVEPOINT a;
3
ROLLBACK TO a;
-- savepoint a로 돌아감. 2만 남
LOAD DATA LOCAL INFILE 'customer.csv' INTO TABLE customer FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n';

source 파일경로_및_파일명;
source pro_02.sql;