TiDB의 SQL 살펴보기
TiDB는 MySQL과 호환되며 대부분의 경우 MySQL 문을 직접 사용할 수 있다. 지원되지 않는 기능에 대한 자세한 내용은 MySQL과의 호환성을 참조하여라.
SQL을 실험해 보고 MySQL 쿼리와의 TiDB 호환성을 테스트하려면 TiDB를 설치하지 않고 웹 브라우저에서 직접 실행할 수 있다. 먼저 TiDB 클러스터를 배포한 다음 SQL 문을 실행할 수도 있다.
이 페이지에서는 DDL, DML, CRUD 작업과 같은 기본 TiDB SQL 문에 대해 설명한다. TiDB 문의 전체 목록은 TiDB SQL 구문 다이어그램을 참조하여라.
카테고리
SQL은 함수에 따라 다음 네 가지 유형으로 나눤다.
- DDL(데이터 정의 언어): 데이터베이스, 테이블, 뷰, 인덱스 등과 같은 데이터베이스 개체를 정의하는데 사용된다.
- DML(Data Manipulation Language): 응용 프로그램 관련 레코드를 조작하는데 사용된다.
- DQL(Data Query Language): 조건부 필터링 후 레코드를 쿼리하는데 사용된다.
- DCL(Data Control Language): 액세스 권한 및 보안 수준을 정의하는데 사용됩된다.
일반적인 DDL 기능은 객체(테이블이나 인덱스 등)의 생성, 수정 및 삭제이다. 해당 명령은 CREATE
, ALTER
및 DROP
이다.
데이터베이스 보기, 작성, 삭제
TiDB 데이터베이스는 테이블 및 인덱스와 같은 객체의 컬렉션으로 볼 수 있다.
데이터베이스 목록을 표시하려면 SHOW DATABASES
문을 사용한다.
SHOW DATABASES;
mysql
이라는 데이터베이스를 사용하려면 다음문을 사용한다.
USE mysql;
데이터베이스의 모든 테이블을 표시하려면, SHOW TABLES
문을 사용한다.
SHOW TABLES FROM mysql;
데이터베이스를 작성하려면 다음 CREATE DATABASE
문을 사용한다.
CREATE DATABASE db_name [options];
samp_db
라는 데이터베이스를 만들려면 다음문을 사용한다.
CREATE DATABASE IF NOT EXISTS samp_db;
데이터베이스가 있을 경우에 오류를 방지하기 위해 IF NOT EXISTS
추가한다.
데이터베이스를 삭제하려면 다음 DROP DATABASE
문을 사용한다.
DROP DATABASE samp_db;
테이블 생성, 표시 및 삭제
테이블을 만들려면 CREATE TABLE문을 사용한다.
CREATE TABLE table_name column_name data_type constraint;
예를 들어, 번호, 이름, 생일 등의 필드를 포함하는 person
라는 테이블을 생성하려면 다음문을 사용한다.
CREATE TABLE person (
id INT(11),
name VARCHAR(255),
birthday DATE
);
테이블(DDL)을 생성하는 명령문을 표시하려면 SHOW CREATE
문을 사용한다.
SHOW CREATE table person;
테이블을 삭제하려면 DROP TABLE
문을 사용한다.
DROP TABLE person;
인덱스 생성, 표시 및 삭제
인덱스는 인덱싱된 열에 대한 쿼리 속도를 높이는데 사용된다. 값이 고유하지 않은 열의 인덱스를 만들려면 다음 CREATE INDEX
문을 사용한다.
CREATE INDEX person_id ON person (id);
또는, 다음과 같이 ALTER TABLE
문을 사용한다.
ALTER TABLE person ADD INDEX person_id (id);
값이 고유한 열에 고유한 인덱스를 생성하려면, 다음과 같이 CREATE UNIQUE INDEX
문을 사용한다.
CREATE UNIQUE INDEX person_unique_id ON person (id);
또는 다음과 같이 ALTER TABLE
문을 사용한다.
ALTER TABLE person ADD UNIQUE person_unique_id (id);
테이블의 모든 인덱스를 표시하려면 다음과 같이 SHOW INDEX
문을 사용한다.
SHOW INDEX FROM person;
인덱스를 삭제하려면 DROP INDEX
또는 ALTER TABLE
문을 사용한다. DROP INDEX
에 ALTER TABLE
를 중첩할 수도 있다.
DROP INDEX person_id ON person;
ALTER TABLE person DROP INDEX person_unique_id;
Note:
DDL 조작은 트랜잭션이 아닙니다. DDL 조작을 수행할 때 COMMIT명령문을 실행할 필요가 없습니다.데이터 삽입, 업데이트 및 삭제
일반적인 DML 기능은 테이블 레코드를 추가, 수정 및 삭제하는 것이다. 해당 명령은 INSERT
, UPDATE
및 DELETE
이다.
테이블에 데이터를 삽입하려면 다음과 같이 INSERT
문을 사용한다.
INSERT INTO person VALUES(1,'tom','20170912');
여러 필드의 데이터가 포함된 레코드를 테이블에 삽입하려면 INSERT
문을 사용한다.
INSERT INTO person(id,name) VALUES('2','bob');
테이블에 있는 레코드의 일부 필드를 갱신하려면 UPDATE
문을 사용한다.
UPDATE person SET birthday='20180808' WHERE id=2;
테이블의 데이터를 삭제하려면 다음와 같이 DELETE
문을 사용한다.
DELETE FROM person WHERE id=2;
Note:
필터로서WHERE
절이 없는 UPDATE
명령문과 DELETE
명령문은 전체 테이블에 적용된다.
쿼리 데이터
DQL은 테이블 또는 여러 테이블에서 원하는 데이터 행을 검색하는 데 사용된다.
테이블의 데이터를 보려면 SELECT
문을 사용한다.
SELECT * FROM person;
특정 열을 쿼리하려면 SELECT
키워드 뒤에 열 이름을 추가한다.
SELECT name FROM person;
+------+
| name |
+------+
| tom |
+------+
1 rows in set (0.00 sec)
WHERE
절을 사용하여 조건과 일치하는 모든 레코드를 필터링하고 결과를 반환한다.
SELECT * FROM person where id<5;
사용자 생성, 승인 및 삭제
DCL은 일반적으로 사용자를 만들거나 삭제하고 사용자 권한을 관리하는데 사용된다.
사용자를 생성하려면 CREATE USER
문을 사용한다. 다음 예제에서는 비밀번호가 123456
인 tiuser
사용자를 생성한다.
CREATE USER 'tiuser'@'localhost' IDENTIFIED BY '123456';
samp_db
데이터베이스에서 테이블을 검색할 수 있는 권한을 tiuser
에 부여하려면 다음을 수행한다.
GRANT SELECT ON samp_db.* TO 'tiuser'@'localhost';
tiuser
의 권한을 확인하려면:
SHOW GRANTS for tiuser@localhost;
tiuser
의 삭제하려면:
DROP USER 'tiuser'@'localhost';
Explore SQL with TiDB 최종수정일 2022. 7. 21. 오후 7:23:10: cloud: add SQL and TiFlash related docs (#9001) (#9479)