[데이터베이스] MySQL-1

Jaedeok Lee·2021년 8월 15일
0
post-thumbnail

SQL(Structured Query Language)

  • SQL은 데이터를 보다 쉽게 검색하고 추가, 삭제, 수정 같은 조작을 할 수 있도록 고안된 컴퓨터 언어이다.
  • 관계형 데이터베이스에서 데이터를 조작하고 쿼리하는 표준 수단이다.
  • DML(Data Manipulation Language) : 데이터를 조작하기 위해 사용한다.
    INSERT, UPDATE, DELETE, SELECT 등이 여기에 해당한다.
  • DDL(Data Definition Language) : 데이터베이스스키마정의하거나 조작하기 위해 사용한다.
    CREATE, DROP, ALTER 등이 여기에 해당한다.
  • DCL(Data Control Language) : 데이터를 제어하는 언어이다. 권한을 관리하고, 데이터의 보안, 무결성 등을 정의한다.
    GRANT, REVOKE 등이 여기에 해당한다.

Database 생성하기

  • 콘솔에서 다음과 같이 명령을 실행한다. MySQL 관리자 계정root데이터베이스 관리 시스템에 접속한다.

    mysql -uroot -p
    -u[username] : 유저는 username, -p는 패스워드 옵션

  • window 사용자는 설치시에 입력했던 암호를 입력한다. 맥사용자암호가 없으니 그냥 엔터를 입력하면 된다.
  • 관리자 계정으로 MySQL에 접속했다면, 다음과 같은 명령으로 데이터베이스를 생성한다.
    mysql> create database [DB이름];


다음과 같이 작성 시 DB이름에 해당하는 데이터베이스생성하게 된다. 데이터베이스생성할 수 있는 유저권한이 따로 있어야 하지만 현재 root로 접속했기 때문에 모든 걸 할 수 있다.

Database 사용자 생성과 권한 주기

  • Database를 생성했다면, 해당 데이터베이스를 사용하느 계정을 생성해야 한다. 또한 해당 계정이 데이터베이스를 이용할 수 있는 권한을 주어야 한다. 아래와 같은 명령을 이용해서 사용자 생성권한을 줄 수 있다.
  • db이름 뒤의 *모든 권한을 의미한다. @`%`어떤 클라이언트에서든 접근 가능하다는 의미이고, @`localhost`해당 컴퓨터에서만 접근 가능하다는 의미이다.
  • flush privilegesDBMS에게 적용하라는 의미이다. 해당 명령은 반드시 실행해줘야 한다.

grant all privileges on [db이름].to [username]@'%'identified by '암호';
grant all privileges on [db이름].
to [username]@'localhost'identified by '암호';
flush privileges;

쿼리는 **MySQL 5.x** 버전에서만 된다.

MySQL 8.x버전을 쓰다면 위 사진과 같이 쿼리를 작성한 뒤에 사용자에게 권한을 부여해야 한다.

해당 계정이 잘 만들어졌는지 확인하기 위해 다음 명령어를 실행하여 확인한다.

mysql -h[호스트명] -u[DB계정명] -p [데이터베이스 이름]

db이름connectdb, db계정connectuser, 암호connect123!@#일 경우 콘솔창에 다음과 같이 입력한다. 이때 패스워드는 미리 입력하지 않은 상태로 한칸 띄워준 뒤에 데이터베이스 이름을 작성한다.

mysql -h1270.0.1 -uconnectuser -p connectdb

그럼 다음과 같이 패스워드를 입력하는 커맨드라인이 나오게 되고 비밀번호를 입력하게 된다면 다음과 같은 결과가 나오게 된다.

MySQL 연결 끊기

  • exit; 혹은 quit;를 입력하면 된다.

MySQL 버전과 현재 날짜 구하기

프롬프트에서는 SQL을 입력한다. SQLsemicolon(;)으로 끝난다. SQL쿼리(Query)라고 읽는다. 쿼리DBMS에게 명령을 내릴 때 사용하는 문장이라고 생각하면 쉽다.
SELECT는 어떤 내용을 조회할 때 사용하는 키워드이다. (SELECTDML에 해당)
MySQL쿼리에 해당하는 결과의 전체 row를 출력하고 마지막에 전체 row 수와 쿼리 실행에 걸린 시간을 표시한다.


마지막줄을 보게 되면 결과를 표시해주는데 결과가 전체의 몇 줄이고, 몇 row인지 보여주며 쿼리가 실행되는 시간도 표시해준다.

키워드는 대소문자를 구별 X

다음 쿼리들은 모두 같다 :

SELECT VERSION(), CURRENT_DATE;
select version(), current_date;
SeLeCt vErSiOn(), current_DATE;

쿼리를 이용한 계산식의 결과

SELECT SIN(PI()/4), (4+1*5);


계산도 됨.

여러 문장을 한 줄에 연속으로 붙여서 실행가능

SELECT VERSION(); SELECT NOW();


붙여 써도 알아서 해줌.

하나의 SQL은 여러 줄로 입력가능

SELECT
USER()
,
CURRENT_DATE;


가독성이 좋아짐

SQL을 입력하는 도중에 취소가능

긴 쿼리를 작성하다가 중간에 취소해야 하는 경우 \c를 붙여주면 된다.

SELECT
USER()
\c

DBMS에 존재하는 데이터베이스 확인

작업하기 위한 데이터베이스를 선택하기 위해서는 어떤 데이터베이스가 존재하는 지 알아보아야 한다.

현재 서버에 존재하는 데이터베이스를 찾아보기 위해서 SHOW statment를 사용한다.

사용중인 데이터베이스 전환

Database를 선택하기 위해, "use" command 사용:

use mydb;

데이터베이스를 전환하려면, 이미 데이터베이스가 존재해야하며 현재 접속중인 계정이 해당 데이터베이스를 사용할 수 있는 권한이 있어야 한다.

다음과 같이 나갔다가 root계정으로 connectdb에 접속한 것을 볼 수 있다.

(두번째 mysql -root -p는 잘못 입력했다...)


참고
부스트코스
SQL이란 무엇인가

profile
서버 개발자

0개의 댓글