SQL
: 관계형 데이터베이스 관리 시스템에서 데이터를 관리하기 위해 사용되는 표준 언어
: 데이터베이스 스키마 생성 및 수정, 데이터 추가, 수정, 삭제 및 검색 등의 작업 수행
: 명령어는 대소문자 구분이 없음,
: ;(세미콜론)을 찍어서 명령어 끝남을 알려줘야 함
SQL 종류
DDL
: 데이터 정의어
: 데이터베이스, 테이블, 인덱스의 스키마를 생성, 변경, 삭제하는 역할\
: CREATE, ALTER, DROP
DML
: 데이터 조작어
: 테이블에 저장된 데이터를 실질적으로 처리
: SELECT, INSERT, UPDATE, DELETE
: 데이터의 구조에는 영향을 끼지치 않는다
DCL
: 데이터베이스에 대한 접근을 관리
: 권한 회수, 부여하는 역할
: GRANT, REVOKE, COMMIT, (ROLLPREAT?)
SQL 장점
표준화
직관적 : 배우기 쉬운 언어
강력한 성능
SQL 기초 - DDL
CREATE
: 데이터베이스, 테이블, 인덱스를 생성
DDL (데이터 정의어)
: 데이터베이스, 테이블, 인덱스, 사용자를 정의하는데 사용되는 언어
CREATE : 구조를 생성하는 명령어
CREATE 생성할구조 구조이름 [... 구조 정의];
데이터베이스 생성
CREATE DATABASE practice_sql;
특정 데이터베이스 사용
USE practice_sql;
지정한 스크립트만 실행함 (세미콜론으로 찍은 그 단락만 실행시킴)
테이블 생성
CREATE TABLE example_table (
-- VARCHAR(문자열길이) : 가변길이 문자열(문자를 몇자까지 적을지를 나타냄) / 인덱스 사용 가능
String_column VARCHAR(100),
-- TEXT : 장문의 문자열 / 인덱스 사용 불가능
text_column TEXT,
-- INT : 정수
int_column INT,
-- DOUBLE : 실수
double_column DOUBLE,
-- FLOAT : 실수
float_column FLOAT,
-- BOOLEAN : 논리형
boolean_column BOOLEAN,
-- DATE : 날짜
date_column DATE,
-- DATETIME : 날짜 및 시간
datetime_column DATETIME
);
* boolean_column
: 논리형 형태로 저장하면 tinyint(0 또는 1)으로 저장됨
사용자 생성
: CREATE USER '사용자명'@'접속IP' IDENTIFIED BY '비밀번호';
CREATE USER 'developer'@'localhost' IDENTIFIED BY 'P!ssw0rd';
생성된 사용자 보기
use mysql;
SELECT * FROM user;
DROP
: 데이터 구조를 삭제하는 명령어
테이블 삭제
DROP TABLE example_table;
데이터베이스 삭제
DROP TABLE example_table;
ALTER
: 데이터 구조를 변경하는 명령어
테이블 컬럼 추가
ALTER TABLE example_table ADD added_column INT; # added_column 추가
테이블 컬럼 삭제
ALTER TABLE example_table DROP COLUMN added_column; # added_column 삭제
테이블 컬럼 타입 수정
ALTER TABLE example_table MODIFY COLUMN string_column VARCHAR(200); # 100 -> 200으로 변경
테이블 컬럼 이름 수정
ALTER TABLE example_table CHANGE string_column varchar_column VARCHAR(200);
# string_column -> varchar_column으로 변경
* 관계 DBMS 객체 DBMS 차이점
: 객체지향에는 참조변수를 넣을 수 있기 때문에 하나의 컬럼에다가 여러개의 값을 넣을 수 있음
: 관계 데이터베이스는 하나의 컬럼에다가 한개의 값을 넣을 수 있음
DML (데이터 조작어)
: 테이블에 데이터를 삽입, 조회, 수정, 삭제 할때 사용
INSERT : 테이블에 데이터를 삽입하는 명령어
1. 모든 열에 대하여 데이터 삽입
INSERT INTO 테이블명 VALUES (데이터1, 데이터2, ...);
INSERT INTO example_table
VALUES ('문자열데이터', '텍스트데이터', 99, 3.14, 3.14, true, '2024-02-05', now());
2. 특정 열에 대하여 데이터 삽입
NSERT INTO 테이블명 (컬럼명1, 컬럼명2, ...)
VALUSE (데이터1, 데이터2, ...);
INSERT INTO example_table (int_column, boolean_column) # 지정한 컬럼의 맞는 값을 넣어야 함
VALUES (50, false);
SELECT : 테이블에서 데이터를 조회할 때 사용하는 명령어
1. 모든 데이터 조회
SELECT * FROM 테이블명
SELECT * FROM example_table;
2. 테이블의 특정 컬럼 데이터 조회
SELECT 컬럼명1, 컬럼명2, ...FROM 테이블명
SELECT int_column, text_column FROM example_table;
3. 테이블에서 특정 조건에 따른 데이터 조회
SELECT 조회할컬럼... FROM 테이블명 WHERE 조건;
SELECT * FROM example_table WHERE int_column = 50;
* sql에서는 같다를 '=' 하나로 사용
UPDATE : 테이블에서 데이터를 수정할 때 사용하는 명령어
UPDATE 테이블명 SET 컬럼1 = 데이터1, ...;
UPDATE example_table SET boolean_column = false;
UPDATE 테이블명 SET 컬럼1 = 데이터1, ... WHERE 조건;
UPDATE example_table SET datetime_column = now() WHERE int_column = 50;
DELETE : 테이블에서 데이터를 삭제할 때 사용하는 명령어
DELETE FROM 테이블명;
DELETE FROM example_table;
DELETE FROM 테이블명 WHERE 조건;
DELETE FROM example_table WHERE int_column = 50;
TRUNCATE TABLE : DDL 테이블의 구조만 남기고 초기화
TRUNCATE TABLE example_table;
'AWS(산대특)' 카테고리의 다른 글
DAY 14 - MysQL (0) | 2024.02.07 |
---|---|
DAY 13 - MySQL (0) | 2024.02.06 |
DAY 11 - GitHub (0) | 2024.02.01 |
DAY 9 - JAVA (0) | 2024.01.30 |
DAY 8 - JAVA (0) | 2024.01.29 |