-
1. SQL이란?(신) Spring/웹 백엔드 2021. 8. 2. 23:20
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 등이 여기에 해당한다.
데이터베이스 생성하기
mysql -uroot -p
mysql 관리자 계정인 root로 데이터베이스 관리 시스템에 접속하겠다는 의미입니다. 그 후 한 칸 내려가게 되면 입력했던 암호를 입력합니다.
* MariaDB는 mariadb -uroot -p를 입력해서 사용하면 됩니다.
그 후 관리자 계정으로 MYSQL을 접속했다면 데이터베이스를 생성합니다.
CREATE DATABASE DB이름;
우리는 connectdb로 생성하도록 하겠습니다.
connectdb라는 이름의 데이터베이스가 정상적으로 생성이 된 것을 확인할 수 있습니다.
DataBase 사용자 생성과 권한 주기
DataBase를 생성했다면 해당 데이터베이스를 사용하는 계정을 생성해야 합니다. 또한 해당 계정이 데이터베이스를 이용할 수 있는 권한을 주어야 합니다.
CREATE USER hello@localhost IDENTIFIED BY 'hello';
GRANT ALL PRIVILEGES ON connectdb.* TO 'hello'@'localhost';
flush privileges
위의 명령을 이용해서 사용자 생성과 권한을 줄 수 있습니다. db이름 뒤의 *은 모든 권한을 의미하고 @'%'는 어떤 클라이언트에서든 접근 가능하다는 의미이고 @'localhost'는 해당 컴퓨터에서만 접근이 가능하다는 의미입니다. flush privileges는 DBMS에게 적용을 하라는 의미입니다. 즉 flush privileges를 꼭 실행해줘야 합니다.
* 사용자 계정은 hello이고 비밀번호도 hello입니다.
mariadb -uhello -p
-> hello
를 입력하게 되면 우리가 생성한 user 정보로 마리아DB에 접근할 수 있습니다.
DB를 종료할 때는 exit나 ctrl + c를 누르면종료할 수 있습니다.
MySQL 버전과 현재 날짜 구하기
SELECT version(), current_date;를 입력하면 버전과 현재 날짜에 대해서 정보를 얻을 수 있습니다.
DBMS에 존재하는 데이터베이스 확인하기
SHOW databases;
사용중인 데이터베이스 전환하기
use 데이터베이스명;
데이터베이스에 접속하려면 이미 DB가 존재해야하며, 사용자가 접근 권한이 있어야 합니다.
테이블의 구성요소
테이블은 RDBMS의 기본적 저장구조입니다. 한 개 이상의 컬럼과 0개 이상의 로우로 구성됩니다. 열(Column)은 테이블 상에서의 단일 종류의 데이터를 나타냄, 행(Row)는 Column드의 값의 조합(레코드라고도 불림) Row는 PK에 의해 구분된다. Field는 Row와 Column의 교차점으로 Field는 데이터를 포함할 수 있고 없을 때는 Null 값을 가지고 있다고 한다.
현재 데이터베이스에 존재하는 테이블 목록 확인하기
SHOW tables
아직 테이블을 생성하지 않았기 때문에 따로 생성이 된 것은 없습니다.
SQL 파일로 DB 저장하기
터미널로 찾아가기 쉬운곳에 SQL 파일을 저장한 후 그 경로에서 mariadb를 접속을 해줍니다. 그 후
use connectdb
source SQL파일명
SQL 파일이 적용이 되는 것을 확인을 할 수 있습니다.
파일을 로드한 것만으로 아까는 없었던 여러 개의 테이블이 생긴 것을 확인할 수 있습니다.
테이블 구조 확인
DESC bonus;
테이블 구조를 확인하기 위해 DESCRIBE 명령을 사용할 수 있고 DESC라고 사용해도 됩니다.