저는 지난 9월에 SQLD(SQL개발자) 시험을 쳤었는데요. 시험을 위해 공부를 할 때는 말 그대로 sql을 '글로 배웠기' 때문에 감이 잘 안왔어요.
그런데 요새 MYSQL과 AWS를 사용하기 시작하면서 직접 쿼리를 작성하고 데이터를 처리하는 재미에 빠지게 되었어요😁 확실히 파이썬과는 또 다른 매력이 있답니다! 오늘은 SQL의 기본 중의 기본을 살펴보도록 할게요! lego~!
SQL(Structured Query Language): 데이터베이스를 정의, 조작, 제어하기 위해 사용하는 언어
Database: 여러 사람이 공유하여 사용할 목적으로 체계화해 통합, 관리하는 데이터의 집합체
SQL은 데이터 정의 언어(DDL), 데이터 조작 언어(DML), 데이터 제어 언어(DCL)로 구성되어 있습니다.
DDL은 데이터베이스, 테이블 등 데이터가 담기는 틀을 생성하고, 삭제하고, 변경하는 등 데이터의 구조에 대해 기능하는 언어입니다.
CREATE
: SCHEMA, DOMAIN, TABLE, VIEW, INDEX를 생성
ALTER
: Table에 대한 정의를 변경하는 데 사용
DROP
: SCHEMA, DOMAIN, TABLE, VIEW, INDEX 를 삭제
DML은 테이블에 데이터를 삽입, 삭제하거나, 조건에 맞는 데이터를 조회, 갱신 하는 언어입니다.
SELECT
: 테이블에서 조건에 맞는 튜플을 검색
INSERT
: 테이블에 새로운 튜플을 삽입
DELETE
: 테이블에서 조건에 맞는 튜플을 삭제
UPDATE
: 테이블에서 조건에 맞는 튜플의 내용을 변경
DCL은 데이터의 무결성, 보안 및 권한 제어, 복구를 위한 언어입니다. 데이터를 보호하고 데이터를 관리하는 목적으로 사용됩니다.
GRANT
: 데이터베이스 사용자에게 사용 권한을 부여합니다.
REVOKE
: 데이터베이스 사용자의 사용 권한을 취소합니다.
COMMIT
: 명령에 의해 수행된 결과를 실제 물리적 디스크로 저장하고, 데이터베이스 조작 작업이 정상적으로 완료되었음을 관리자에게 알려줍니다.
ROLLBACK
: 데이터베이스 조작 작업이 비정상적으로 종료되었을 때 원래의 상태로 복구합니다.
먼저, mysql에 root 계정으로 접속합니다.
1)
cd /usr/local/mysql/bin
(위치 이동)
2)mysql -u root -p
를 입력 후, password를 입력해 접속
Tip!
- sql은 쿼리 끝에
;
을 찍어줘야합니다. 안그럼 안끝나요😂;
을 안찍고 엔터를 눌렀다면 당황하지말고 찍은 후에 다시 엔터를 치시면 됩니다.- 명령어는 소문자로 작성해도 상관없으나 대문자로 작성한다면 가독성이 높아질 것입니다😊
현재 데이터베이스 목록 확인
SHOW databases;
데이터베이스 생성
CREATE DATABASE dbname;
>깨짐방지
CREATE DATABASE dbname DEFAULT CHARACTER SET utf8mb4;
해당 데이터베이스로 이동(사용)
USE dbname;
데이터베이스 삭제
DROP DATABASE dbname;
현재 테이블 목록 확인
SHOW TABLES;
테이블 생성
CREATE TABLE tablename (column1 int, column2 float, column3 varchar(16), ... ) ;
테이블 정보 확인(컬럼, 데이터타입,널 여부, 기본키 여부, 기본값 등)
DESC tablename;
테이블 이름 변경
ALTER TABLE tablename RENAME new_tablename;
테이블 삭제
DROP DATABASE dbname;
컬럼 추가
ALTER TABLE tablename ADD COLUMN columnname datatype;
컬럼 변경 - 데이터타입
ALTER TABLE tablename MODIFY COLUMN columnname datatype;
컬럼 변경 - 이름
ALTER TABLE tablename CHANGE COLUMN old_columnname new_columnname new_datatype;
컬럼 삭제
ALTER TABLE tablename DROP COLUMN columnname;
유저 조회
USE mysql;
SELECT host, user FROM user;
사용자 정보는 mysql에서 관리하므로 일단 mysql 데이터베이스로 이동 후 조회!
유저 생성 - localhost
CREATE USER 'username'@'localhost' identified by 'password';
현재 PC에서만 접속 가능한 사용자를 비밀번호와 함께 생성
유저 생성 - %
CREATE USER 'username'@'%' identified by 'password';
외부에서 접속 가능한 사용자를 비밀번호와 함께 생성
유저 삭제
DROP USER 'username'@'localhost';
DROP USER 'username'@'%';
접근 범위에 따라 같은 이름의 사용자여도 별도로 삭제
권한 확인
SHOW GRANTS FOR 'username'@'localhost';
권한 부여
GRANT ALL ON dbname.* to 'username'@'localhost';
권한 제거
REVOKE ALL ON dbname.* from 'username'@'localhost';
참고 - 새로고침
FLUSH PRIVILEGES;