[Database] 기본적인 SQL 명령어 정리(DDL)
RDBMS에서 DB와 테이블을 생성하고, 사용자를 추가하거나 각각의 DB에 접근 권한을 주는 등의 행위는 MySQL Workbench와 같은 GUI 툴에서 간단하게 해줄 수 있습니다. 하지만, 기본적인 명령어는 알아두는 것이 좋겠죠? 🤓
1. DATABASE 생성
CREATE DATABASE [DB명] default CHARACTER SET UTF8;
2. 특정 사용자에게 DB와 테이블의 접근 권한 주기
다음은 DB와 테이블에 접근 권한을 가지는 쿼리입니다. 단순히 접근할 수 있냐를 넘어, 해당 테이블에 어떤 DML 쿼리문 실행을 허용할지, 어떤 DDL 쿼리문 실행을 허용할지 등을 자세하게 설정해줄 수도 있습니다.
-- 사용자 계정 생성하는 쿼리 명령어 CREATE USER '[아이디]'@'localhost' IDENTIFIED BY '[패스워드]' -- 계정에 DB와 테이블에 대한 접근 권한 부여 (테이블명을 적는 위치에 *를 적으면 모든 테이블을 의미합니다.) GRANT ALL PRIVILEGES ON [DB명].[테이블명] TO '[아이디]'@'localhost' GRANT ALL PRIVILEGES ON [DB명].[테이블명] TO '[아이디]'@'%'
3. TABLE 생성 & 컬럼 속성 추가 및 변경
테이블 생성입니다. MySQL은 기본 저장 엔진으로 InnoDB를 사용하기 때문에 InnoDB 엔진을 사용한다고 명시해주지 않아도 됩니다.
(MySQL 공식 문서 --> InnoDB Storage Engine)
CREATE TABLE board ( -- [컬럼명] [컬럼타입] [속성(옵션)] idx INT(11) NOT NULL AUTO_INCREMENT, name VARCHAR(128) NOT NULL, email VARCHAR(128) NOT NULL, reg_date DATETIME NOT NULL, member_id VARCHAR(128) NOT NULL, PRIMARY KEY(idx), -- 위의 컬럼명 옆에 선언해도되고 이렇게 따로 선언해도 됩니다. FOREIGN KEY(member_id) REFERENCES member(id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
만약 테이블을 생성할때 AUTO_INCREMENT 등의 속성을 깜빡했다면 ALTER 명령어로 이용해 컬럼 속성을 변경할 수 있습니다.
-- 기존 컬럼에 AUTO_INCREMENT, PK 속성 추가 -- 문법: ALTER TABLE [테이블명] MODIFY [컬럼명] [타입] [속성] ALTER TABLE posts MODIFY id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY; -- 기존 테이블에 신규 컬럼 추가 -- 문법: ALTER TABLE [테이블명] ADD [컬럼명] [타입] [속성] ALTER TABLE posts ADD name NVARCHAR(30) NOT NULL;
4. TABLE 구조 확인
DESC [테이블명];
5. DB 또는 TABLE 삭제
-- 문법: DROP DATABASE [DB명] DROP DATABASE mydb; -- 문법: DROP TABLE [테이블명] DROP TABLE posts;
'Database > Relational Database (RDB)' 카테고리의 다른 글
[Database] Clustered Index와 Non-Clustered Index (7) | 2020.12.06 |
---|---|
[Database] 조인(JOIN) (0) | 2020.08.26 |
[Database] 저장 프로시저(Stored Procedure) (0) | 2020.03.10 |
[Database/MySQL] Tablespace (0) | 2020.03.01 |
[Database] 파티셔닝 (Partitioning) (0) | 2020.02.03 |
댓글
이 글 공유하기
다른 글
-
[Database] 조인(JOIN)
[Database] 조인(JOIN)
2020.08.261. JOIN이란? JOIN은 2개 이상의 테이블을 엮어서 조회하는 연산입니다. 다음과 같은 종류가 있습니다. Inner JOIN: 서로 매칭되는 것만 조회한다. (교집합) Outer JOIN: 매칭되는 데이터를 기준으로 좌측 또는 우측의 데이터도 같이 조회합니다. Outer JOIN은 세 종류가 있습니다 --> Left Outer JOIN, Right Outer JOIN, Full Outer JOIN Natural JOIN: 두 테이블을 JOIN할때 컬럼명, 타입이 같은 모든 컬럼을 JOIN 조건으로 사용합니다. Selft JOIN: 자기 자신의 테이블을 JOIN하는 것입니다. employees 테이블이 사원번호, 상사번호를 가지고 있다고 가정해보겠습니다. 이때, 특정 사원의 상사를 구하고 싶다면 Se… -
[Database] 저장 프로시저(Stored Procedure)
[Database] 저장 프로시저(Stored Procedure)
2020.03.101. 저장 프로시저(SP)란? SP(Stored Procedure)는 일련의 쿼리를 마치 하나의 함수처럼 실행하기 위한 쿼리의 집합입니다. 쉽게 말해, 특정 로직의 쿼리를 함수로 만들어 놓은 것입니다. 페이징 쿼리와 같이 자주 사용되는 쿼리가 있다면 함수로 한 번 만들어놓고 사용하게 되면 성능 상으로나 코드 재사용성 등에 이점이 있을 것입니다. SQL을 옵티마이저가 해석하고 최적의 결과물을 만들어내는 데에는 많은 비용이 드는데, SP로 만들어놓으면 매번 그런 비용을 소모할 필요가 없게 되겠죠? 👏 SP를 사용했을 때의 장점을 요약하면 다음과 같습니다. 하나의 요청으로 여러 SQL문을 실행할 수 있다. (네트워크 부하를 줄일 수 있음) SQL을 구문 분석하고 실행 가능한 코드로 변환하는 데에는 많은 비용이… -
[Database/MySQL] Tablespace
[Database/MySQL] Tablespace
2020.03.01Tablespace 데이터를 관리한다는 것은 디스크에 데이터를 저장하고, 추출하고, 삽입하고, 삭제하는 작업을 한다는 것. 그럼 데이터는 어디에 저장되어 관리되어지는 것일까? 데이터 파일이다. ( 파일은 데이터가 저장되는 물리적인 공간 ) MySQL 8.0 기준으로 총 5가지의 Tablespace가 존재한다. System Tablespace File-Per-Table Tablespace General Tablespace Undo Tablespace Temporary Tablespace 당연히 데이터 파일에 아무런 체계없이 데이터를 무작정 저장하지는 않는다. 오라클 DBMS를 예로 들면, 오라클은 데이터 파일 내부의 공간을 4개의 논리적인 공간으로 나눠놨다. 테이블스페이스 (Tablespace) C++의 … -
[Database] 파티셔닝 (Partitioning)
[Database] 파티셔닝 (Partitioning)
2020.02.03파티셔닝 저장해야할 정보가 많은 대규모 시스템의 경우, 하나의 DB에 모든 정보를 저장해버리면 응답속도는 아주 느려질 것이다. 그럼 데이터를 분할해서 저장하기위해 2가지 방법을 생각해볼 수 있다. DATABASE를 여러 대로 분할 TABLE을 여러 대로 분할 위에서 첫 번째 방법은 잘 쓰이지 않는데, DB를 여러 대로 분할할 경우 read는 분산 처리할 수 있을지언정 write는 모든 DB에 동기화해야하니 분산 처리가 불가능하기 때문. 그래서 일반적으로 DB 파티셔닝이라하믄 TABLE을 여러 대로 분할하는 방법을 말한다. TABLE을 분할하는 방법은 다시 또 2가지로 나눌 수 있다. 수평 단편화 수직 단편화 수평 단편화 TABLE을 수평으로 쪼개는 것. 어떤 쪼개진 TABLE에 어떤 데이터가 있는지를 쉽…
댓글을 사용할 수 없습니다.