SQL
은 데이터를 보다 쉽게 검색하고 추가, 삭제, 수정 같은 조작을 할 수 있도록 고안된 컴퓨터 언어이다.관계형 데이터베이스
에서 데이터를 조작하고 쿼리하는 표준 수단이다.DML(Data Manipulation Language)
: 데이터를 조작하기 위해 사용한다.INSERT
, UPDATE
, DELETE
, SELECT
등이 여기에 해당한다.DDL(Data Definition Language)
: 데이터베이스
의 스키마를 정의하거나 조작하기 위해 사용한다.CREATE
, DROP
, ALTER
등이 여기에 해당한다.DCL(Data Control Language)
: 데이터를 제어하는 언어이다. 권한을 관리하고, 데이터의 보안, 무결성 등을 정의한다.GRANT
, REVOKE
등이 여기에 해당한다.MySQL
관리자 계정인 root
로 데이터베이스 관리 시스템
에 접속한다.mysql -uroot -p
-u[username] : 유저는 username, -p는 패스워드 옵션
MySQL
에 접속했다면, 다음과 같은 명령으로 데이터베이스
를 생성한다.mysql> create database [DB이름];
다음과 같이 작성 시 DB이름에 해당하는 데이터베이스
를 생성하게 된다. 데이터베이스
를 생성할 수 있는 유저는 권한이 따로 있어야 하지만 현재 root
로 접속했기 때문에 모든 걸 할 수 있다.
Database
를 생성했다면, 해당 데이터베이스
를 사용하느 계정을 생성해야 한다. 또한 해당 계정이 데이터베이스를 이용할 수 있는 권한을 주어야 한다. 아래와 같은 명령을 이용해서 사용자 생성과 권한을 줄 수 있다.grant all privileges on [db이름].to [username]@'%'identified by '암호';
위 쿼리는 **MySQL 5.x** 버전에서만 된다.
grant all privileges on [db이름].to [username]@'localhost'identified by '암호';
flush privileges;
MySQL 8.x버전을 쓰다면 위 사진과 같이 쿼리
를 작성한 뒤에 사용자에게 권한을 부여해야 한다.
해당 계정이 잘 만들어졌는지 확인하기 위해 다음 명령어를 실행하여 확인한다.
mysql -h[호스트명] -u[DB계정명] -p [데이터베이스 이름]
db이름이 connectdb, db계정이 connectuser, 암호가 connect123!@#일 경우 콘솔창에 다음과 같이 입력한다. 이때 패스워드는 미리 입력하지 않은 상태로 한칸 띄워준 뒤에 데이터베이스 이름을 작성한다.
mysql -h1270.0.1 -uconnectuser -p connectdb
그럼 다음과 같이 패스워드를 입력하는 커맨드라인이 나오게 되고 비밀번호를 입력하게 된다면 다음과 같은 결과가 나오게 된다.
exit;
혹은 quit;
를 입력하면 된다.프롬프트에서는 SQL
을 입력한다. SQL
은 semicolon(;)으로 끝난다. SQL
은 쿼리(Query)
라고 읽는다. 쿼리
는 DBMS
에게 명령을 내릴 때 사용하는 문장이라고 생각하면 쉽다.
SELECT
는 어떤 내용을 조회할 때 사용하는 키워드이다. (SELECT
는 DML
에 해당)
MySQL
은 쿼리
에 해당하는 결과의 전체 row를 출력하고 마지막에 전체 row 수와 쿼리 실행에 걸린 시간을 표시한다.
마지막줄을 보게 되면 결과를 표시해주는데 결과가 전체의 몇 줄이고, 몇 row인지 보여주며 쿼리가 실행되는 시간도 표시해준다.
다음 쿼리
들은 모두 같다 :
SELECT VERSION(), CURRENT_DATE;
select version(), current_date;
SeLeCt vErSiOn(), current_DATE;
SELECT SIN(PI()/4), (4+1*5);
계산도 됨.
SELECT VERSION(); SELECT NOW();
붙여 써도 알아서 해줌.
SELECT
USER()
,
CURRENT_DATE;
가독성이 좋아짐
긴 쿼리를 작성하다가 중간에 취소해야 하는 경우 \c를 붙여주면 된다.
SELECT
USER()
\c
작업하기 위한 데이터베이스를 선택하기 위해서는 어떤 데이터베이스가 존재하는 지 알아보아야 한다.
현재 서버에 존재하는 데이터베이스를 찾아보기 위해서 SHOW statment
를 사용한다.
Database를 선택하기 위해, "use" command 사용:
use mydb;
데이터베이스를 전환하려면, 이미 데이터베이스가 존재해야하며 현재 접속중인 계정이 해당 데이터베이스를 사용할 수 있는 권한이 있어야 한다.
다음과 같이 나갔다가 root계정
으로 connectdb에 접속한 것을 볼 수 있다.
(두번째 mysql -root -p
는 잘못 입력했다...)
참고
부스트코스
SQL이란 무엇인가