MySQL의 개념과 특징
mysql은 오픈소스 관계형 데이터베이스(RDBMS) 관리 시스템이다. 행과 열로 구성된 테이블(표)로 데이터를 저장한다.
클라이언트는 SQL이라고 하는 구조화된 쿼리 언어를 사용하여 데이터 정의, 조작, 제어, 쿼리할 수 있다.
MYSQL이 많이 사용되는 것은 무료, 보안, 대용량 데이터 처리 기능, 처리 속도 빠름이라는 특징을 가져서 그럴것이다.
데이터베이스 및 테이블 생성 방법
Mysql 기본 사용법
- mysql -uroot -p : 나의 mysql 계정 접속
- quit; - 접속종료
- SHOW DATABASES; - 생성된 데이터베이스 확인
- use 데이터베이스이름; - 해당 데이터베이스 접속
- SHOW TABLES; - 테이블의 목록 확인
- desc 테이블명; - 테이블 정보 보기
데이터베이스 명령어
- CREATE DATABASE 데이터베이스이름 default CHARACTER SET UTF8; - 데이터베이스 생성
- DROP DATABASE 데이터베이스이름; - 데이터베이스 삭제
- use 데이터베이스이름; - 원하는 데이터베이스 사용
- use 데이터베이스 / SELECT USER, HOST FROM user; - 유저 확인
테이블 생성
CREATE TABLE 테이블이름 (
칼럼명 데이터타입 ...,
id INT(11) NOT NULL AUTO_INCREMENT,
title VARCHAR(100) NOT NULL // title 칼럼명에 datatype varchar 100
PRIMARY KEY(id) // PRIMARY KEY(칼럼명) - 중복 값 허용 안하는 칼럼 1개 선택
);
// NOT NULL - 공백 허용 안하는 옵션
// AUTO_INCREMENT - 자료형이 INT(정수형)일떄 가능, 데이터가 많아질떄마다 1씩 자동증가
데이터타입(자료형)
기본적인 SQL 쿼리문 작성 방법
SQL 구문 작성 순서
SELECT 칼럼명 (5)
FROM 테이블명 (1)
WHERE 테이블 조건 (2)
GROUP BY 칼럼명 (3)
HAVING 그룹 조건 (4)
ORDER BY 칼럼명 (6)
Join
두 개이상의 테이블을 서로 묶어서 하나의 결과 집합으로 만들어 내는 것
inner join(내부 조인) - 테이블들 간의 교집합
outer join(외부 조인) - 조건에 만족되지 않는 결과 포함 ex) LEFT OUTER JOIN, RIGHT OUTER JOIN, FULL OUTER JOIN
데이터 조작 및 관리
데이터 조작
- 데이터 검색 : SELECT [col1], [col2], ... FROM 테이블명 옵션1 옵션; ex) SELECT * FROM 테이블명; -> 전체 데이터 조회
- 데이터 수정 : UPDATE 테이블명 SET 칼럼 - 값, 칼럼= 값, ... WHERE 칼럼 = 값;
- 데이터 삭제 - DELETE FROM 테이블명 WHERE 칼럼 = 값; ex) DELETE FROM 테이블명; -> 전체 데이터 삭제
- 데이터 삽입 - INSERT INTO 테이블명 (칼럼1,칼럼2, ...) VALUES(값1, 값2, ...)
- 테이블 정렬 - SELECT * FROM 테이블명 ORDER BY 칼럼명 DESC(오름차순) or ASC(내림차순)
데이터 관리
- 유저 생성 - CREATE USER '사용자'@'host' identified by '비밀번호';
- 유저 삭제 - drop user '사용자'; or delete from user where user='사용자';
- 유저 권한 부여
grant all privileges on *.* to '사용자'@'localhost';
// 모든 데이터베이스의 모든 테이블에 모든 권한 부여
grant select on DB이름.테이블명 to '사용자'@'localhost';
// 특정 데이터베이스이 특정 테이블에 select 권한 부여
grant select, insert on DB이름.테이블명 to '사용자'@'localhost';
- 권한 즉시 반영 - FLUSH PRIVILEGES;
도전
Mysql 로컬 환경에서 설치 후 위의 내용 실습하기
일단 mysql을 실행하여 실습해보겠다.
sudo systemctl start mysql
sudo mysql -u root -p
로그인 한 뒤에 데이터베이스가 무엇이 있는지 확인해보았다.
위와 같이 데이터베이스가 나와 확인할 수 있다. 이제 내가 실습할 데이터베이스를 생성하고 테이블까지 만들어보겠다.
JOIN을 사용하여 여러 테이블 간 관계 설정하기
위에 test 테이블과 JOIN할 새로운 테이블을 한개 더 만들어서 INNER JOIN을 해보았다.
위와 같이 나온다. 해석해보자면 선택한 열(SELECT)은 test의 id와 data이며 test와 hello 두 테이블에서 INNER JOIN을 하여 ON(조건)을 내세우며 test.id와 hello.data가 값이 같으면 다음과 같이 SELECT한 표가 나온다.
데이터베이스 접근 제한, 사용자 권한 설정하기
사용자를 생성하여 사용자에게 testhello 데이터베이스의 hello 테이블에 대한 권한을 다 주는 것을 해보았다.
그리고 실제로 권한을 받았는지 들어가서 확인하였다.(SHOW GRANTS FOR 사용자;)
'web hacking(Knockon Bootcamp)' 카테고리의 다른 글
[3주차 TIL] KnockOn Bootcamp 게시판 만들기(메인화면, 회원가입, 로그인) (0) | 2024.12.23 |
---|---|
[2주차 TIL] KnockOn Bootcamp PHP (0) | 2024.12.16 |
[2주차 TIL] KnockOn Bootcamp Apache (0) | 2024.12.15 |
[2주차 TIL] KnockOn Bootcamp JavaScript (0) | 2024.12.13 |
[2주차 TIL] KnockOn Bootcamp HTML 기본 태그 (1) | 2024.12.11 |