[SeSACX코딩온] DB - SQL

JUHEE·2024년 2월 6일
0

SeSACX코딩온

목록 보기
8/26

Database

- 다양한 카테고리의 정보를 저장할 수 있는 구조
- 데이터를 저장하는 구조/자료의 모음

File

- 파일은 여러 사람이 데이터 기록 공유 가능
- 데이터 중복이 생길 가능성 존재
- 데이터 공유에 제한 존재
- 구현, 유지 보수 어려움

DBMS

- DataBase Management System
- 주로 R관계형 DBMS가 사용된다
- 사용자가 데이터베이스 생성, 공유, 관리 할 수 있도록 돕는다
- Oracle, MySql, DB2, SQL Server etc(강의에서는 MySQL사용)

기본용어

- 열(속성, Coulmn, Attribute)
- 행(Record, Tuple)
- 테이블(relation, 열과 행으로 구성)
- key: 정렬의 기준이 되는 속성
(1)기본키: primary key, 한테이블에서 유일하게 구별가능한 속성, Null, 중복값 불가
(2)외래키: Foreign key, 어떤 테이블의 기본키를 참조하는 속성

My SQL

- 관계형 데이터베이스관리시스템
- 프로그램설치 방법은 PDF참고
- Workbench를 통한 접근 Or CMD창을 통한 접근가능

(1) MySQL 설치 위치로 이동
(2) -u root -p 입력
(3) password입력 완료시 실행, 명령어를 통해 데이터 관리 가능

DB구성

- DB생성 => Table생성 => Data입력, 수정, 삭제 => Data조회

DDL

- Data Definition Language
- 테이블이나 관계의 구조를 생성하는데 사용하는 명령어
- Create, Alter, Drop이 있다

CREATE

- 데이터 베이스 생성
- CREATE DATABASE 이름 DEFAULT CHARACTER SET 언어설정 COLLATE 언어설정관련;
- utf8, utf8_general_ci: 한글 사용가능하게 설정
- utf8mb4, utf8mb4_unicode_ci: 이모티콘까지 사용가능하게 설정
- DESC, SHOW: 테이블의 구조, 데이터베이스나 테이블의 목록 확인

CREATE DATABASE sesac DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

- 테이블 생성
- CREATE TABLE 이름 (속성값 데이터타입 제약조건 등)
- 데이터타입
(1) 숫자형: INT, TINYINT, FLOAT etc
(2) 문자형: CHAR(N), VARCHAR(N), TEXT etc
(3) 날짜형: DATE(YYYY-MM-DD), TIME(HH:MM:SS), DATETIME
- 제약조건: NOT NULL, KEY관련, AUTO_INCREMENT, DEFAULT, ENUM() etc

CREATE Table products (
    id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50) NOT NULL,
    model_name VARCHAR(15) NOT NULL,
    series VARCHAR(30) NOT NULL
);

ALTER

- 생성된 테이블의 속성과 속성에 대한 제약 등의 정보를 변경
- ADD(추가): ALTER TABLE 이름 ADD 속성 데이터타입;
- MODIFY(수정): ALTER TABLE 이름 MODIFY 속성 데이터타입;
- DROP(삭제): ALTER TABLE 이름 DROP COLUMN 속성;

ALTER Table products ADD new_column VARCHAR(20);
ALTER Table products MODIFY new_column INT;
ALTER Table products DROP new_column;

DROP

- 테이블, 데이터 베이스 삭제
- DROP TABLE 이름;
- DROP DATABASE 이름
- TRUNCATE: TRUNCATE TABLE 이름; 테이블 내부의 데이터 전부 삭제(테이블은 존재)

DML

- Data Manipulation Language
- CRUD: CREATE(INSERT), READ(SELECT), UPGRADE, DELETE

INSERT

- 테이블에 새로운 데이터 추가
- INSERT INTO 테이블이름 (속성1,속성2,속성3) VALUES (값1, 값2, 값3);
- (속성)은 생략해도 괜찮지만 생략시 뒤의 값은 테이블에서 선언된 모든속성에 순서대로 들어간다

INSERT INTO user VALUES ('JUHEE', 23, 'GAME');

UPDATE

- 튜플의 내용 수정
- WHERE 조건절을 통해 수정하고자 하는 튜플에 접근하고, 수정할 내용을 입력한다
- UPDATE 테이블이름 SET 수정할속성 = 수정할값 WHERE 속성 = 조건;

UPDATE user SET age = 56 WHERE NAME = 'JUHEE';

DELETE

- 기존 튜플을 삭제
- WHERE(o): 해당하는 튜플 삭제
- WHERE(x): 테이블 내의 모든 데이터 삭제(TRUNCATE와 달리 할당된 디스크 공간은 그대로 유지)
- DELETE FROM 테이블이름 WHERE 조건;

DELETE FROM user WHERE NAME = 'JUHEE';
DELETE FROM user;

SELECT

- 테이블에서 데이터를 검색하여 출력
- 가장 많이 사용되는 SQL문법으로, QUERY(질의어)라고도 한다
- SELECT 출력속성 FROM 테이블 이름 WHERE 조건
- WHERE, GROUP BY, HAVING, ORDER BY, LIMIT 등의 순서로 뒤에 세세한 질의 조건이 붙을 수 있다
(1) WHERE 조건절: 비교연산자, 부정연산자, BETWEEN a AND b, IN(list), LIKE '비교문자열(%,_)', IS NULL, IS NOT NULL, AND OR NOT 등의 문법을 통해 조건을 설정할 수 있다
(2) ORDER BY 조건절: 결과가 출력되는 튜플에 대해 정렬기준을 설정할 수 있다(기본값 ASC오름차, DESC 내림차) ORDER BY 속성 정렬;형태로 작성
(3) DISTINCT: 출력될 튜플에 대해 중복값을 제거하고 한가지 값만 출력한다 SELECT문의 속성이름 앞에 키워드 추가 ex) SELECT DISTINCT name from user ~~;
(4) LIMIT: 출력 개수 제한, 앞의 여러 조건에 따라 출력되는 행 중에서 위부터 특정 개수의 행만 출력하도록 한다 LIMIT 3; 등의 개수를 입력한다

- SELECT문의 다양한 예시(수업)

SELECT * from user ORDER BY birthday;
SELECT * from user WHERE gender = 'M' ORDER BY name desc;
SELECT id, name FROM user WHERE birthday LIKE "199%";
SELECT * from user WHERE birthday LIKE "____-06-__" ORDER BY birthday;
SELECT * from user WHERE gender = 'M' AND birthday LIKE '197%';
SELECT * from user ORDER BY age DESC LIMIT 3 ; 
SELECT * from user WHERE age BETWEEN 25 and 50;
profile
초보개발자

0개의 댓글