CS/SQL

[MySQL] 명령어 정리

seulll 2024. 10. 3. 11:30

 

기능별 명령어 정리

기능 SQL 명령어 설명
데이터베이스 관리 CREATE DATABASE database_name; 새로운 데이터베이스 생성
  DROP DATABASE database_name; 데이터베이스 삭제
  USE database_name; 사용할 데이터베이스 선택
테이블 관리 CREATE TABLE table_name (column1 datatype constraint, ...); 새로운 테이블 생성
  DROP TABLE table_name; 테이블 삭제
  ALTER TABLE table_name ADD column_name datatype; 테이블에 새로운 열 추가
  ALTER TABLE table_name DROP COLUMN column_name; 테이블의 특정 열 삭제
  ALTER TABLE table_name MODIFY COLUMN column_name datatype; 테이블 열의 데이터 타입 변경
데이터 삽입 INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...); 테이블에 새 데이터 삽입
  INSERT INTO table_name VALUES (value1, value2, ...); 모든 열에 대해 새 데이터 삽입
데이터 조회 SELECT column1, column2 FROM table_name WHERE condition; 특정 조건에 맞는 데이터 조회
  SELECT * FROM table_name; 테이블의 모든 데이터 조회
  SELECT DISTINCT column_name FROM table_name; 중복 없이 데이터 조회
  SELECT column_name AS alias_name FROM table_name; 열에 별칭(alias) 적용
데이터
업데이트
UPDATE table_name SET column1 = value1 WHERE condition; 조건에 맞는 데이터 업데이트
데이터 삭제 DELETE FROM table_name WHERE condition; 조건에 맞는 데이터 삭제
  TRUNCATE TABLE table_name; 테이블의 모든 데이터 삭제
조건 및 정렬 SELECT * FROM table_name WHERE condition; 조건에 맞는 데이터 조회
  `SELECT * FROM table_name ORDER BY column_name ASC DESC;`
  SELECT * FROM table_name WHERE column_name BETWEEN value1 AND value2; 범위 조건으로 데이터 조회
집계 함수 SELECT COUNT(column_name) FROM table_name; 행의 개수 계산
  SELECT AVG(column_name) FROM table_name; 평균 계산
  SELECT SUM(column_name) FROM table_name; 합계 계산
  SELECT MAX(column_name) FROM table_name; 최대값 조회
  SELECT MIN(column_name) FROM table_name; 최소값 조회
그룹화 SELECT column_name, COUNT(*) FROM table_name GROUP BY column_name; 특정 열로 데이터 그룹화
조인 SELECT * FROM table1 INNER JOIN table2 ON table1.column = table2.column; 내부 조인
  SELECT * FROM table1 LEFT JOIN table2 ON table1.column = table2.column; 왼쪽 외부 조인
  SELECT * FROM table1 RIGHT JOIN table2 ON table1.column = table2.column; 오른쪽 외부 조인
  SELECT * FROM table1 FULL OUTER JOIN table2 ON table1.column = table2.column; 완전 외부 조인
서브쿼리 SELECT column1 FROM table_name WHERE column2 = (SELECT column3 FROM table_name2 WHERE ...); 서브쿼리 사용
인덱스 관리 CREATE INDEX index_name ON table_name (column_name); 특정 열에 인덱스 생성
  DROP INDEX index_name; 인덱스 삭제
권한 관리 GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'host'; 사용자에게 권한 부여
  REVOKE ALL PRIVILEGES ON database_name.* FROM 'username'@'host'; 사용자의 권한 회수

계정 생성 및 권한 부여

MySQL을 설치하면 가장 먼저 사용되는 계정은 root 계정이다.

root 계정의 경우, 관리자 계정이기 때문에 DB에 대한 모든 권한을 갖고 있다.

 

- DB 접속 및 계정 조회

mysql -u root -p // root 계정 접속
use mysql; //mysql 스키마 선택
select user, host from user; //사용자 목록 조회

 

 

- 사용자 생성

create user '사용자'@'host' identified by '비밀번호';

// 내부 접근을 허용하는 사용자 추가
create user 'test'@'localhost' identified by '0000';

//외부 접근을 허용하는 사용자 추가
create user 'test'@'%' identified by '0000';

// 특정 ip만 접근을 허용하는 사용자 추가
create user 'test'@'123.456.789.100' identified by '0000';

// 특정 ip 대역을 허용하는 사용자 추가
create user 'test'@'192.168.%' identified by '0000';

 

- 사용자 삭제

drop user '사용자';
delete from user where user='사용자';

 

- 권한 부여

// 모든 데이터베이스의 모든 테이블에 모든 권한을 줌
grant all privileges on *.* to '사용자'@'localhost';

// 특정 데이터베이스의 모든 테이블에 모든 권한을 줌
grant all privileges on DB이름.* to '사용자'@'localhost';

// 특정 데이터베이스의 특정 테이블에 모든 권한을 줌
grant all privileges on DB이름.테이블명 to '사용자'@'localhost';

// 특정 데이터베이스의 특정 테이블에 select 권한을 줌
grant select on DB이름.테이블명 to '사용자'@'localhost';

모든 데이터베이스 보기

SHOW DATABASES;

 


데이터베이스 생성하기

# CREATE DATABASE 데이터베이스명;
CREATE DATABASE test;


데이터베이스 사용하기

#USE 데이터베이스명;
USE test;

 


테이블 생성하기

 


모든 테이블 보기

test 테이블 안에 test_table이 존재

 


테이블 구조 보기

DESC,  DESCRIBE, EXPLAIN 중 하나와 테이블명을 통해 해당 테이블의 구조를 확인할 수 있습니다.