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-uroot -p 명령을 내린다. mysql 관리자 계정인 root로 데이터베이스 관리 시스템이 접속하겠다는 것이다.
  • 윈도우라면 이후 암호를 입력한다.

  • 관리자계정으로 mysql에 접속했다면 mysql> create database DB이름;으로 데이터베이스를 생성한다.

mysql-uroot -p에서 발생한 에러 해결

  • 나는 위의 명령을 입력했더니 에러가 발생했다. 그 이유는 저렇게 입력하면 기본 포트번호 3306으로 명령으로 가는데, 난 3307에 할당했기 때문이다.
  • 이전에 생활코딩에서 설치한 bitnami에 포함된 wampmysql이 포트3306을 차지해서 다음 포트로 할당했었다.
  • 그래서 bitnami 삭제, 재부팅 후 mysql installer에서 포트를 3306으로 바꿔준 후 실행했더니 정상적으로 작동했다.

database 사용자 생성과 권한 주기

  • database를 생성했다면, 해당 데이터베이스를 사용하는 계정을 생성해줘야한다.
  • 또한, 해당 계정이 데이터베이스를 이용할 수 있는 권한을 줘야한다.
  • 아래와 같은 명령으로 사용자 생성과 권한 부여가 가능하다.
  • 5.7버전
    grant all privileges on db이름.* to 계정이름@'%' identified by '암호’;
    grant all privileges on db이름.* to 계정이름@'localhost' identified by '암호’;
    flush privileges;
  • 8.0버전
    create user '계정이름'@'localhost' identified by '암호';
    create user '계정이름'@'%' identified by '암호';
    grant all privileges on connectdb.* to 'connectuser'@'localhost';
    grant all privileges on connectdb.* to 'connectuser'@'%';
    flush privileges;
  • db이름 뒤의 *는 모든 권한을 의미한다.
  • @'%'는 어떤 클라이언크에서든 접근 가능하다는 의미이고, @'localhost'는 해당 컴퓨터에서만 접근 가능하다는 의미이다.
  • flush priviledges는 dbms에게 적용을 하라는 의미이다.

생성한 database에 접속하기

  • mysql –h호스트명 –uDB계정명 –p 데이터베이스이름로 데이터베이스에 접근할 수 있다. 내 컴퓨터라면 호스트명은 127.0.0.1을 입력한다.

mysql 연결 끊기

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

mysql 버전과 현재 날짜 구하기

  • SELECT VERSION(), CURRENT_DATE;로 가능하다.
  • sql은 ;로 끝난다.
  • sql은 쿼리라고 읽느낟.
  • 쿼리는 DBMS에게 명령을 내릴때 사용하는 문장이라고 생각하면 쉽다.
  • SELECT는 어떤 내용을 조회할 때 사용하는 키워드이다.
  • mysql은 쿼리에 해당하는 결과의 전체 row를 출력하고 마지막에 전체 row 수와 쿼리실행에 걸린 시간을 표시한다.

추가 내용

  • 키워드는 대소문자를 구별하지 않는다.
  • 쿼리를 이용해서 계산식을 구할 수 있다.
  • 여러 문장을 세미콜론으로 구분하여 한줄에 입력할 수 있다.
  • 하나의 sql은 여러 줄로 입력 가능하다. 중간에 취소하려면 \c를 입력한다.
mysql> SELECT
    -> USER()
    -> ,
    -> CURRENT_DATE;
  • show databases로 dbms에 존재하는 데이터베이스를 확인할 수 있다.
  • use db명로 사용중인 데이터베이스를 전환할 수 있다.

테이블


  • 엑셀의 표와 유사한 형태를 가지고 있다.
  • 엑셀과 다른 점은 데이터베이스를 생성해도 테이블은 존재하지 않는다. 테이블을 사용하려면 테이블을 생성하는 SQL을 사용해야 한다.
  • 테이블에 값을 저장하려면 저장하기 위한 SQL을 사용해야한다.

구성요소

  • 테이블 : RDBMS(Relational DMBS)의 기본적 저장구조 한 개 이상의 colunm과 0개 이상의 row로 구성한다.
  • 열(column) : 테이블 상에서의 단일 종류의 데이터를 나타낸다. 특정 데이터 타입 및 크기를 가지고 있다.
  • 행(row) : column들의 값의 조합. 레코드라고 불린다. 기본키(PK)에 의해 구분된다. 기본키는 중복을 허용하지 않으며 없어서는 안된다.
  • field : row와 column의 교차점으로, field는 데이터를 포함할 수 있고 없을 때는 NULL 값을 가지고 있다.

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

mysql> show tables

  • 프롬프트에서 mysql에 접속한 후 위의 명령어를 입력하면 테이블이 출력된다. 없을 경우 Empty set이 출력된다.

태이블 생성과 저장

  • sql 파일이 있다면 해당 파일이 있는 폴더로 가서 프롬프트에 mysql -u유저명 -p db명 < examples.sql를 입력한다.
  • 그 후 mysql에 접속하여 show tables를 입력하면 테이블 목록이 출력된다.

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

  • table 구조를 확인하기 위해 해당 명령을 사용할 수 있다.
  • 테이블 목록 중 하나를 desc 뒤에 같이 입력하면 해당 테이블의 구조가 출력된다.
profile
do for me

0개의 댓글