SQL

박정훈·2021년 1월 4일
0

database

목록 보기
2/5

SQL(Structured Query Language)

  • SQL은 데이터를 보다 쉽게 검색하고 추가, 삭제, 수정 같은 조작을 할 수 있도록 고안된 컴퓨터 언어이다.
  • 관계형 데이터베이스에서 데이터를 조작하고 쿼리하는 표준 수단이다.

DML, DDL, DCL

DML(Data Manipulation Language)

데이터를 조작하기 위해 사용한다.
INSERT, UPDATE, DELETE, SELECT 등이 여기에 해당한다.

DDL(Data Definition Language)

데이터베이스의 스키마를 정의하거나 조작하기 위해 사용한다.
CREATE, DROP, ALTER 등이 여기에 해당한다.

DCL(Data Control Language)

데이터를 제어하는 언어이다. 권한을 관리하고, 데이터의 보안, 무결성등을 정의한다.
GRANT, REVOKE 등이 여기에 해당한다.

Database 생성하기

  • cmd에서 아래의 코드 입력해서 관리자 계정으로 MySQL에 접속
mysql -uroot -p [enter]//나의 비밀번호는 1234
1234
  • 다음 명령으로 데이터베이스 생성
CREATE DATABASE connectdb; //connectdb라는 DB생성

Database사용자 생성과 권한 주기

  • Database를 생성했다면, 해당 데이터베이스를 사용하는 계정을 생성해야 한다. 또한, 해당 계정이 데이터베이스를 이용할 수 있는 권한을 줘야 한다. 아래와 같은 명령을 이용해서 사용자 생성과 권한을 줄 수 있다. db이름 뒤의 *는 모든 권한을 의미한다. @'%'는 어떤 클라이언트에서든 접근가능하다는 의미이고, @'localhost'는 해당 컴퓨터에서만 접근가능하다는 의미이다.
  • flush privileges는 DBMS에게 적용을 하라는 의미이다. 해당 명령을 반드시 실행해줘야 한다.
CREATE USER 계정이름@'%' IDENTIFIED BY '엄호';
GRANT ALL PRIVILEGES ON db이름.* to 계정이름@'%';
FLUSH PRIVILEGES;

CREATE USER 계정이름@'localhost' IDENTIFIED BY '엄호';
GRANT ALL PRIVILEGES ON db이름.* to 계정이름@'localhost';
FLUSH PRIVILEGES;
  • 사용자 계정이름은 'connectuser', 암호는 'connect123!@#', 해당 사용자가 사용하는 데이터베이스는 'connectdb'로 계정을 생성하려면 다음과 같이 명령을 수행한다.
CREATE USER connectuser@'%' IDENTIFIED BY 'connect123!@#';
GRANT ALL PRIVILEGES ON connectdb.* TO connectuser@'%';
FLUSH PRIVILEGES;

CREATE USER connectuser@'localhost' IDENTIFIED BY 'connect123!@#';
GRANT ALL PRIVILEGES ON connectdb.* TO connectuser@'localhost';
FLUSH PRIVILEGES;

생성한 Database에 접속하기

  • 아래와 같이 명령을 실행하여 원하는 데이터베이스에 접속할 수 있다.
mysql -h호스트명 -uDB계정명 -P 데이터베이스이름

DB이름이 connectdb, db계정이 connectuser, 암호가 connect123!@#일 경우 콘솔창에서 다음과 같이 입력한다.

mysql -h127.0.0.1 -uconnect -p connectdb [enter]
connect123!@#

MySQL 연결끊기

  • 프롬프트에서 quit 혹은 exit라고 입력한다.
quit
exit

아래와 같이 Bye라고 나오면 연결 끊기 성공

Bye

MySQL 버전과 현재 날짜 구하기

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

쿼리문 특징

1. 키워드는 대소문자를 구별하지 않는다.

  • 키워드는 예약어이다.
  • 다음 쿼리들은 모두 같다.
  • 쿼리는 보통 대문자로 쓴다.
SELECT VERSION(), CURRENT_DATE;
select version(), current_date;
SeLeCt vErSiOn(), current_DATE;

2. 쿼리를 이용해서 계산식의 결과도 구할 수 있다.

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

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

  • 각 문장에 세미콜론(;)만 붙여 주면 된다.
SELECT VERSION(); SELECT NOW();

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

  • MySQL은 문장의 끝을 라인으로 구분하는 것이 아니라 세미콜론(;)으로 구분하기 때문에 여러 줄에 거쳐 문장을 쓰는 것도 가능하다.
SELECT
USER()
,
CURRENT_DATE;

5. SQL을 입력하는 도중에 취소할 수 있다.

  • 긴 쿼리를 작성하다가 중간에 취소해야하는 경우에는 즉시 \C를 붙여주면 된다.
SELECT
USER()
\c

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

  • 작업하기 위한 데이터베이스를 선택하기 위해서는 어떤 데이터베이스가 존재하는지 알아보아야 한다.
  • 현재 서버에 존재하는 데이터베이스를 찾아보기 위해서 SHOW를 사용한다.
SHOW DATABASES;

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

  • Database를 선택하기 위해, "use" command 사용
USE mydb;
  • 데이터베이스를 전환하려면, 이미 데이터베이스가 존재해야하며 현재 접속중인 계정이 해당 데이터베이스를 사용할 수 있는 권한이 있어야 한다.

테이블의 구성 요소

테이블

  • RDBMS의 기본적 저장구조
  • 한개 이상의 column과 0개 이상의 row로 구성

열(column)

  • 테이블 상에서의 단일 종류의 데이터를 나타냄
  • 특정 데이터 타입 및 크기를 가지고 있음

행(row)

  • column들의 값의 조합, 레코드라고 불린다.
  • 기본 키(Primary Key, PK)에 의해 구분된다.
  • 기본 키는 중복을 허용하지 않으며 없어서는 안된다.

Field

  • row와 column의 교차점으로 Field는 데이터를 포함할 수 있고 없을 때는 NULL 값을 가지고 있다고 한다.

현재 데이터베이스에 존재하는 테이블 목록 확인하기

  • Database 선택 후, Database의 전체 테이블 목록을 출력
SHOW TABLES;

Empty set은 데이터베이스에 어떤 테이블도 아직 생성되지 않았다는 것을 알려주는 것이다.

SQL 연습을 위한 테이블 생성과 값의 저장

  • examples.sql을 준비(테이블 정보가 있는 sql파일, https://www.boostcourse.org/web326/lecture/258482 에서 다운 가능)
  • 터미널에서 examples.sql이 있는 폴더로 이동한 후, 다음과 같이 명령을 수행한다. 명령을 수행한 후 암호를 입력한다.
mysql -u connectuser -p connectdb < examples.sql
  • examples.sql에는 연습을 위한 테이블 생성문과 해당 테이블에 값을 저장하는 입력문이 존재한다.

테이블 구조를 확인하기 위한 DESCRIBE 명령

  • TABLE 구조를 확인하기 위해, DESCRIBE 명령을 사용할 수 있다.
  • 짧게 DESC라고 사용해도 된다.
DESC EMPLOYEE;

출처: https://www.boostcourse.org/web326/lecture/258481

profile
정팔입니다.

0개의 댓글