크리스마스에 시작한 클라우드 2기가 어느덧 한 달이 다 되어간다. 코드를 직접 작성하여 제출하고 채점 받는 앨리스 플랫폼에도 어느 정도 익숙해졌다. 특히 이번 주에 수백 번 sql문을 실행해 보면서 머리로 안다는 것과 손가락 끝에서 나오는 바이브의 차이를 확실히 알 수 있었다.
저 위에 찐하게 칠해진 칸이 보이는가? 덕분에 낯설게만 느껴졌던 데이터베이스랑 조금은 친해졌다.
select
select
(무)의식적으로 select 나가는 중
이번 포스팅에는 한 주 동안 허겁지겁 섭취한 개념들을 정리하는 시간을 가져보려고 한다.
데이터베이스란 한 조직 안에서 여러 사용자와 응용 프로그램이 공동으로 사용하는 데이터들을 통합하여 저장하고 운영하는 데이터를 말한다.
데이터가 하나 이상의 열과 행의 테이블(또는 관계)에 저장되어 서로 다른 데이터 구조가 어떻게 관련되어 있는지 쉽게 파악하고 이해할 수 있도록 사전 정의된 관계로 데이터를 구성하는 정보 모음
관계형 데이터베이스를 활용하기 위해 사용하는 표준 언어를 말한다.
DISTINCT
WHERE
비교연산자
복합조건 연산자
기타 연산자
LIKE
ORDER BY
COUNT
LIMIT
SUM
, AVG
MAX
, MIN
GROUP BY
HAVING
INNER JOIN .. ON ..
LEFT JOIN
: 왼쪽 테이블의 모든 값 포함하여 연결한다.RIGHT JOIN
: 오른쪽 테이블의 모든 값 포함하여 연결한다.VARCHAR(n), INT, FLOAT, DATETIME ...
- 테이블에 잘못된 데이터가 입력되는 것을 방지하기 위한 규칙이다.
id VARCHAR(10) NOT NULL
id VARCHAR(10) UNIQUE
superior VARCHAR(30) DEFAULT '지니'
age INT CHECK(age <= 8)
CONSTRAINT [제약조건이름] [제약조건](UNIQUE, CHECK, ...) [적용할 속성);
CONSTRAINT id_unique UNIQUE (id),
CONSTRAINT age_check CHECK (age <= 8)
-- 제약 조건 변경
ALTER TABLE bookstore ADD CONSTRAINT minimum_price CHECK (price >= 0);
ALTER TABLE [테이블명] DROP CONSTRAINT [제약조건이름]
ALTER TABLE item DROP CONSTRAINT age_check
조건에 만족하는 튜플을 찾거나 정렬할 때 기준이 되는 속성
CREATE TABLE item(
id INT PRIMARY KEY,
name VARCHAR(30)
);
CREATE TABLE order_history(
item_id INT,
order_id INT,
FOREIGN KEY (item_id) REFERENCES item(id),
CONSTRAINT order_history_pk PRIMARY KEY (item_id, order_id)
);
이상현상을 제거하기 위해 데이터베이스를 구조화하는 과정을 말한다.
테이블의 컬럼이 하나의 값만 갖도록 도메인을 원자값으로 설정하는 과정을 말한다.
부분 함수 종속을 제거하고 완전 함수 종속이 되도록 테이블을 분해하는 과정을 말한다.
이행 함수 종속을 제거하도록 테이블을 분해하는 과정을 말한다.
정규화된 데이터베이스의 성능을 개선하기 위해 다시 통합하여 구조를 재구성하는 것을 말한다.
-- 데이터베이스 생성하기
CREATE DATABASE electronic_car;
-- 생성한 데이터베이스 확인하기
SHOW DATABASES;
-- 데이터베이스 사용하기
USE electronic_car;
-- 데이터베이스 삭제하기
DROP DATABASE electronic_car;
-- 사용자 생성하기
CREATE USER juny@localhost IDENTIFIED BY '1234';
-- 권한 부여하기
GRANT ALL PRIVILEGES ON electronic_car.* TO juny@localhost;
-- 설정 권한 적용하기
FLUSH PRIVILEGES;
-- 권한 확인하기
SHOW GRANTS FOR juny@localhost;
-- 권한 제거하기
REVOKE ALL ON electronic_car.* FROM juny@localhost;
SHOW TABLES;
DESC item;
CREATE TABLE item(
id VARCHAR(10),
name VARCHAR(30),
customer_id VARCHAR(10),
FOREIGN KEY (customer_id) REFERENCES customer(customer_id)
);
ALTER TABLE item ADD COLUMN price INT NULL; // 컬럼 추가
ALTER TABLE item MODIFY COLUMN id VARCHAR(15) NOT NULL // 컬럼 변경
ALTER TABLE item CHANGE COLUMN name item_name VARCHAR(30) NOT NULL // 컬럼 이름 변경
ALTER TABLE item DROP COLUMN isbn; // 컬럼 삭제
ALTER TABLE item RENAME cleaning_item; // 테이블 이름 변경
DROP TABLE member;
SELECT DISTINCT name FROM item WHERE name = '치킨';
---
SELECT * FROM item WHERE price >= 50000;
INSERT INTO item (id, name) VALUES ('1', '호빵');
---
INSERT INTO item VALUES ('1', '호빵');
UPDATE item SET item_name = '막대사탕(딸기맛)' WHERE item_name = '막대사탕';
DELETE FROM item WHERE item_name = '막대사탕(딸기맛)';
SELECT * FROM employee WHERE payment >
(SELECT * FROM employee WHERE payment > 2500);
SELECT students.name, (
SELECT math
FROM middle_test as m
WHERE m.student_id = students.student_id
) AS middle_avg
FROM students;
CREATE INDEX item_index ON item(id);
-- 인덱스 확인하기
SHOW INDEX FROM item;
-- 인덱스 삭제하기
ALTER TABLE item DROP INDEX item_index;
#코딩독학 #코딩인강 #코딩배우기 #개발자 #코딩이란 #코딩교육
#프론트엔드부트캠프 #백엔드부트캠프 #국비지원부트캠프 #개발자 #백엔드 #AI부트캠프 #개발자국비지원 #백엔드개발자 #프론트엔드개발자