본문 바로가기
Progamming/BoostCourse

SQL이란?

by 동그란 혜주 2019. 1. 22.
  • 들어가기 전에

사람과 사람이 대화하기 위해서는 언어가 필요하다. DBMS에게 명령을 내릴 때도 특별한 명령이 필요하다. 이 명령을 SQL이라고 한다. 이번 시간엔 SQL에 대한 개념을 알아보고, 직접 데이터베이스 사용자와 데이터베이스를 생성해보도록 하겠다.




  • 학습 목표

1. SQL이 무엇인지 이해한다.

2. MySQL에서 Database를 생성할 수 있다.

3. MySQL에서 Database를 이용하는 계정을 생성하고, 권한을 부여할 수 있다.

4. 생성한 Database에 sample 데이터를 추가할 수 있다.




  • 핵심 개념

- create database

- grant

- flush privileges

- select




  • SQL(Structured Query Language)

- SQL은 데이터를 보다 쉽게 검색하고 추가, 삭제, 수정같은 조작을 할 수 있도록 고안된 컴퓨터 언어이다.

- 관계형 데이터베이스에서 데이터를 조작하고 쿼리하는 표준 수단이다.

- DML(Data Mainpulation Language) : 데이터를 조작하기 위해 사용한다. 

· INSERT, UPDATE, DELETE, SELECT 등이 여기에 해당한다.

- DDL(Data Definition Language) : 데이터베이스의 스키마를 정의하거나 조작하기 위해 사용한다.

· CREATE, DROP, ALTER 등이 여기에 해당한다.

- DCL(Data Control Language) : 데이터를 제어하는 언어이다.

· 권한을 관리하고, 데이터의 보안, 무결성 등을 정의한다.

· GRANT, REVOKE 등이 여기에 해당한다.




  • Database 생성하기

- 콘솔(cmd)에서 다음과 같이 명령을 실행한다. MySQL 관리자 계정인 root로 데이터베이스 관리 시스템에 접속하겠다는 것이다.

· mysql -uroot -p

- 관리자 계정으로 MySQL에 접속했다면, 다음과 같은 명령으로 데이터베이스를 생성한다.

· mysql> create database DB이름;

· ex) mysql> create database connectdb;




  • Database 사용자 생성과 권한부여

- Database를 생성했다면, 해당 데이터베이스를 사용하는 계정을 생성해야 한다. 또한, 해당 계정이 데이터베이스를 이용할 수 있는 권한을 줘야한다. 아래와 같은 명령을 이용해서 사용자 생성과 권한을 줄 수 있다. 

· db이름 뒤의 *는 모든 권한을 의미한다. 

· @'%'는 어떤 클라이언트에서든 접근가능하다는 의미이다.

· @'localhost'는 해당 컴퓨터에서만 접근가능하다는 의미이다.

· flush privileges는 DBMS에게 적용을 하라는 의미이다.




  • 생성한 Database에 접속하기

- cmd 창에서 아래와 같이 명령을 실행하여 원하는 데이터베이스에 접속할 수 있다.

· mysql -h호스트명 -uDB계정명 -p 데이터베이스 이름

· p는 password, 지금 입력하지 않아도 나중에 입력창이 뜬다 (ex. connect123!@#)

· 본인의 컴퓨터 : 127.0.0.1




  • MySQL 연결끊기

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

· mysql> QUIT

· mysql> exit




  • MySQL 버전과 현재 날짜 구하기

- mysql> SELECT VERSION(), CURRENT_DATE;

· 프롬프트(cmd)에서는 SQL을 입력한다. SQL은 세미콜론(;)으로 끝난다. SQL은 쿼리(Query)라고 읽는다. 쿼리는 DBMS에게 명령을 내릴때 사용하는 문장이다.

· SELECT는 어떤 내용을 조회할 때 사용하는 키워드이다.

· MySQL은 쿼리에 해당하는 결과를 전체 row에 출력하고, 마지막에 전체 row 수와 쿼리실행에 걸린 시간을 표시한다.

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

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

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

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

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

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

· \c 키워드 사용




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

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

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

· mysql> show databases;




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

- Database를 선택하기 위해, 'use' command 사용

· mysql> use mydb;

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




  • 데이터를 저장하는 공간 테이블(Table)

- 마이크로소프트의 엑셀(Excel)을 실행하면 표가 나온다. 이러한 표에 각종 값을 저장할 수 있다.

- 데이터베이스도 엑셀의 표와 유사한 테이블을 가질 수 있다.

- 엑셀과 다른 점은 데이터베이스를 생성해도 테이블은 존재하지 않는다는 것이다.

- 테이블을 사용하려면 테이블을 생성하는 SQL을 사용해야 한다.

- 테이블에 값을 저장하려면 저장하기 위한 SQL을 사용해야 한다.

* MySQL은 관계형 DB. 관계형 DB는 데이터들이 테이블 형태로 저장된다.





  • 테이블(table)의 구성 요소

- 테이블 : RDBMS의 기본적 저장구조. 한 개 이상의 column과 0개 이상의 row로 구성한다.

- 열(Column) : 테이블 상에서 단일 종류의 데이터를 나타낸다. 특정 데이터 타입 및 크기를 가지고 있다.

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

- Field : Row와 Column의 교차점으로 Field는 데이터를 포함할 수 있고, 없을때는 Null 값을 가지고 있다.




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

- Database를 선택 후, Database의 전체 테이블 목록을 출력

· mysql> show tables;

· empty set : 데이터베이스에 어떤 테이블도 아직 생성되지 않았다는 것을 알려준다.




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

- examples.sql을 다운로드한다.

- 터미널에서 examples.sql이 있는 폴더로 이동한 후, 다음과 같은 명령을 수행하고 암호를 입력한다.

· mysql -uconnectuser -p connectdb < examples.sql

· examples.sql에는 연습을 위한 테이블 생성문과 해당 테이블에 값을 저장하는 입력문이 존재한다.

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

· mysql> desc 테이블명;

'Progamming > BoostCourse' 카테고리의 다른 글

DDL(create, alter, drop)  (0) 2019.01.22
DML(select, insert, update, delete)  (0) 2019.01.22
DB와 DBMS  (0) 2019.01.22
JSTL(JSP Standard Tag Library)  (0) 2019.01.21
EL(Expression Language)  (0) 2019.01.21

댓글