SQL
SQL이란 데이터의 검색, 추가, 삭제, 수정 등의 조작이 쉽게 가능하도록 고안된 컴퓨터 언어로 관계형 데이터베이스에서 데이터를 조작하고 쿼리하는 표준 수단이다. 이때 데이터를 관리하기 위한 여러 명령어를 다음과 같이 나눌 수 있다.
- DML (Data Manipulation Language): 데이터 조작을 위해 사용한다. INSERT, UPDATE, DELETE, SELECT 등이 포함된다.
- DDL (Data Definition Language): 데이터베이스의 스키마를 정의하거나 조작하기 위해 사용된다. CREATE, DROP, ALTER 등이 포함된다.
- DCL (Data Control Language): 권한 관리 및 데이터의 보안, 무결성 등의 정의를 통해 데이터를 제어하는데 사용된다. GRANT, REVOKE등이 포함된다.
Query
Query는 '질문하다, 문의하다'라는 뜻이다. 즉, 쿼리란 이름의 의미대로 '데이터베이스에게 특정한 데이터를 보여달라는 클라이언트(사용자)의 요청'을 말한다. 예를 들어, 우리가 구글의 검색 엔진을 통해 무언가를 검색한다면 우리는 해당 데이터베이스에 쿼리를 보낸 것이다 이후 서버에서는 이에 응답하여 데이터베이스에서 데이터를 보여준다.
- '쿼리문을 작성한다'라는 말을 많이 쓰곤 하는데 이는 '데이터베이스에서 원하는 정보를 가져오는 코드를 작성한다'는 의미다.
Database 생성
Database 실행을 위해서는 콘솔에서 아래 명령을 실행해야 한다. 아래 명령은 'MySQL 관리자 계정인 root계정으로 DBMS에 접속하겠다'는 의미다.
mysql -uroot -p
위 명령 수행 후 관리자 계정으로 MySQL에 접속했다면 아래 명령을 통해 데이터베이스를 생성할 수 있다. 단, 데이터베이스를 생성할 수 있는 유저는 권한이 따로 있는데 현재 접속한 root 유저의 경우 다 가능하므로 그냥 생성하면 된다.
- Ex) create database connectdb;
create database (DB Name);
Database를 생성했다면, 해당 데이터베이스를 사용하는 계정을 생성해야 하며 해당 계정이 데이터베이스를 이용할 수 있도록 권한을 줘야 한다. 계정 생성 및 권한 부여를 위해서는 아래와 같은 명령을 사용할 수 있다.
- DB Name 뒤의 *은 모든 권한을 의미한다. @'%'는 어떤 클라이언트에서든 접근 가능하다는 의미며 @'localhost'는 해당 컴퓨터에서만 접근 가능하다는 의미다.
- 'flush privileges;'는 아래 계정 생성 및 권한 부여 명령을 적용하라는 명령이다.
- Ex) grant all privileges on connectdb.* to connectuser@'%' identified by 'connect123';
→ connectuser라는 이름의 계정을 암호는 connect123, 사용 데이터베이스는 connectdb로 생성한다.
grant all privileges on (DB Name).* to (User Name)@'%' identified by '(Password)';
grant all privileges on (DB Name).* to (User Name)@'localhost' identified by '(Password)';
flush privileges;
단, MySQL 8.0 이상 버전부터는 grant 명령어로 유저를 생성할 수 없다. 따라서 먼저 유저를 생성하고 grant 명령어를 생성해야 error가 발생하지 않는다. 만약 이 과정을 따르지 않고 위 방식을 사용하면 아래 에러가 발생한다.
- ERROR 1064 (42000): You have an error in your SQL syntax;
create user (User Name)@'%' identified by '(Password)';
grant all privileges on (DB Name).* to (User Name)@'%';
flush privileges;
Database 접속
생성한 데이터베이스에 접근하고 싶다면 아래 명령을 사용하면 된다.
- Ex) mysql -h127.0.0.1 -uconnectuser -p connectdb
mysql [-h(Host Name)] -u(DB User Name) -p (DB Name)
Database 확인 및 전환
아래 명령어를 사용하면 현재 서버에 존재하는 데이터베이스를 확인할 수 있다.
show databases;
만약 사용중인 데이터베이스를 다른 데이터베이스로 바꾸고 싶다면 use 명령을 사용하면 된다. 단, 데이터베이스 전환시 해당 데이터베이스가 존재해야 하며 현재 접속한 계정이 해당 데이터베이스를 사용할 수 있어야 한다.
use (DB Name);
MySQL 연결 끊기
MySQL의 연결을 끊기 위해서는 아래 명령중 하나를 사용하면 된다.
Quit
exit
MySQL 버전 및 현재 날짜
우리가 프롬프트에 SQL을 입력하는 것을 '쿼리를 입력한다'고 한다. 이때 쿼리는 DBMS에 명령을 내릴 때 사용하는 문자이라고 생각하면된다. MySQL은 쿼리의 결과의 전체 row를 출력하며 마지막에 전체 row수와 실행에 걸린 시간을 표시한다. MySQL의 버전 및 날짜를 구하기 위해서는 아래 명령을 사용한다.
- SELECT는 어떤 내용을 조회할 때 사용하는 키워드이다.
select version(), current_date;
'DB > MySQL' 카테고리의 다른 글
2-3. DML(Insert, Update, Delete) (0) | 2022.10.31 |
---|---|
2-2. DML(Select, 그룹 함수) (0) | 2022.10.31 |
2-1. DML (Select, 단일 함수) (0) | 2022.10.27 |
1-2. MySQL (Table) (0) | 2022.10.26 |
0. 데이터베이스란? (0) | 2022.10.26 |