티스토리 뷰
데이터 베이스 기초적인 부분을 정리해 보았다
SQL언어가 익숙해지면 테이블 생성하고 조작하는건 어느정도 감이 잡힐 것 같다 ^^...
◾ 데이터베이스(DB)
데이터를 구조적으로 모아둔 데이터 저장소
◾ 관계형 데이터베이스(RDB)
데이터를 열과 행을 가진 테이블 형태로 표현하며 구조적으로 데이터를 관리함
◾ 관계형 데이터베이스 관리시스템(RDBMS) 데이터 매니지먼트 시스템
데이터베이스에 데이터를 접근할 수 있게 해주는 도구가 DBMS
주요기능은 데이터 추가, 수정, 삭제, 조회, 무결서 유지, 트랜젝션 관리, 백업 및 복원 등이 있음
오라클, MySQL 등
◾ SQL
RDBMS의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어
어플리케이션(java, php등)이 SQL로 DBMS에 데이터를 요청함
◾ SQL 문법 종류
- 데이터 정의 언어(DDL) : CREATE, DROP, ALTER
- 데이터 조작 언어(DML) : SELECT, INSERT, UPDATE, DELETE *가장 많이 다룸
- 데이터 제어 언어(DCL) : GRANT, REVOKE
데이터 조작 언어를 CRUD 라고도 함
◾ CRUD (CREATE READ UPDATE DELETE)
이름 | 조작 | SQL |
Create | 생성 | INSERT |
Read | 읽기 | SELECT |
Update | 갱신 | UPDATE |
Delete | 삭제 | DELETE |
◾ MySQL 설치
https://dev.mysql.com/downloads/mysql/
mysql 설치 후 cmd에서 mysqul 설치되어있는 경로로 들어간후 mysqul -u root -p 실행
경로는 로컬디스크(c:) - 프로그램파일 - mySQL - 이 순서로 들어가서 주소 복사하고 cmd 창에 복붙
◾ 공통 명령어
# 데이터베이스 목록보기
SHOW DATABASES;
# 데이터베이스 사용하기
USE 데이터베이스명;
# 데이터베이스 목록보기
SHOW TABLES;
# 데이터베이스 구조보기
DESC 테이블명;
DDL
◾ CREATE - 데이터베이스, 테이블 생성
CREATE DATABASE [DB_NAME];
CREATE TABLE [TABLE_NAME] ([COLUMN_NAME][DATA TYPE]);
CREATE DATABASE test_db;
CREATE TABLE test_tb(
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(20) NOT NULL, age INT NOT NULL,
birthday DATE NOT NULL
);
*PRIMARY KEY - 고유한 식별자
*NULL 값이 기본값이므로 필요시 NOT NULL 넣어야함, MODIFY로 수정할때도 넣어줘야함!
*AUTO_INCREMENT 자동으로 1씩 증가(테이블 만들고 insert 할때 id값 넣지 않아도 자동으로 1이 시작된다)
◾ DROP - 데이터베이스, 테이블 삭제 *삭제하면 예/아니오 물어보지 않아서 주의해야함
DROP TABLE 테이블명;
◾ ALTER - 테이블의 특정 컬럼을 추가, 변경, 삭제할 때 사용하는 명령어
#1. 컬럼 삭제
ALTER TABLE 테이블명 DROP COLUMN 컬럼명;
#2. 컬럼 추가
ALTER TABLE 테이블명 ADD 컬럼명 타입;
#3. 컬럼 속성 변경
ALTER TABLE 테이블명 MODIFY 컬럼명 타입;
*수정할때도 NULL이 기본값이라서 NULL값 잘 확인해야됨!
*primary key인 경우 각 행을 고유하게 식별하는 역할을 수행하기 때문에 항상 유효한 값이 들어와야 되므로 null을 허용하지 않음
DML
◾ INSERT - 데이터 삽입
INSERT INTO [TABLE_NAME] ([COLUMN1]...) VALUES([DATA1]...);
INSERT INTO test_tb (seq, name, email) values(1, '가나다', 'SDF@SDFSF');
* values에 여러개 한번에 INSERT 할 수 있음
values(1, '가나다', 'SDF@SDFSF'), (2,'라마바','SDFS@SF'), (3,'사아자','SDFS@SF')
◾ SELECT - 데이터 조회 *제일 많이 사용
SELECT [COLUMN1] FROM [TABLE] WHERE [CONDITION];
// test_tb의 모든 컬럼명 조회하겠다
SELECT * FROM test_tb
// text_tb 테이블에서 name, age의 컬럼값을 조회하겠다
SELECT name, age FROM test_tb;
//text_tb 테이블에서 id가 admin인 사용자에 대해서만 name, age 컬럼값을 조회하겠다
SELECT name, age FROM test_tb WHERE id="admin"
◾ UPDATE - 데이터 수정
*UPDATE는 FROM절이 없음, 대부분 WHERE(조건)을 사용(전체데이터 일괄적으로 수정할때 제외하곤)
UPDATE [TABLE] SET [COLUMN1]=[DATA1] WHERE [CONDITION];
//text_tb라는 테이블에서 name이 kimhongsam인값의 age를 35로 바꾸겠다.
UPDATE test_tb SET age=35 WHERE name="kimhongsam";
*만약 WHERE문이 없다면 test_tb 테이블의 모든 age 값이 35로 바껴버림
◾ DELETE - 데이터 삭제
*반드시 WHEREH(조건) 줘야함, 안주면 테이블 전체 삭제되어 버림~
DELETE FROM [TABLE] WHERE[CONDITION];
//test_tb 테이블에서 name이 kimhongsam인 데이터를 삭제하겠다
DELETE FROM test_tb WHERE name="kimhongsam";
*만약 WHERE문이 없다면 test_tb 테이블 전체가 삭제 되어버림 주의!
Where절 연산자들
◾ BETWEEM a AND b
◾ IN 연산자
or 연산자와 같은 의미 *IN 연산자가 속도가 더 빨라서 추천
[컬럼/값] IN (값1, 값2...)
//MEMBER 테이블에서 id가 admin인 레코드와 id가 guest인 레코드의 NAME, HOBBY를 출력해라
SELECT name, hobby FROM member WHERE id in('admin','guest');
* id='admin' or id='guest'와 같은 의미
◾ NOT IN 연산자
제외
[컬럼/값] NOT IN (값1, 값2...)
//id가 admin인 레코드와 id가 guest인 레코드를 제외하고 출력해라
SELECT name, hobby FROM member WHERE id not in('admin','guest');
◾ LIKE 연산자
비교 문자열과 형태가 일치하면 사용
ex)네이버 연관 검색 기능, 특정 이메일 찾기 기능
% : 모든 단어 ex) id like 'ad%' // ad로 시작하는 모든 단어
_ : 1개의 단일 단어 ex) id like 'admi_' // 5글자에서 admi로 시작하는 하나의 단어
SELECT * FROM 테이블명 WHERE 컬럼명 LIKE '원하는 문자 %';
//customer2 테이블에서 id가 ap로 시작하는 사용자 출력
SELECT * FROM customer2 WHERE id LIKE 'ap%';
//customer2 테이블에서 email이 네이버인 사용자 출력
SELECT * FROM customer2 WHERE email like '%@naver.com' ;
*◾ ILIKE 연산자 : 대소문자 무시해줘서 like보다 많이 씀
내림차순, 오름차순, LIMIT
◾ 내림차순(DESC), 오름차순(ASC)
ORDER BY와 함께 사용되며 특정 열을 기준으로 정렬, *생략시 기본값은 오름차순(ASC)
//id 기준 내림차순으로 출력
SELECT * FROM member ORDER BY id DESC;
◾ LIMIT
행의 갯수 제한
//id 기준으로 내림차순 4개 출력
SELECT * FROM member ORDER BY id LIMIT 4;
'Coding > 포스코x코딩온' 카테고리의 다른 글
[포스코x코딩온] 웹 풀스택 과정 5주차 mvc 패턴 + mysql (0) | 2023.05.28 |
---|---|
mvc 패턴 (0) | 2023.05.24 |
[포스코x코딩온] 웹 풀스택 과정 4주차 파일업로드 multer (0) | 2023.05.18 |
[포스코x코딩온] 웹 풀스택 과정 4주차 비동기 HTTP 통신 axios (0) | 2023.05.17 |
[포스코x코딩온] 웹 풀스택 과정 4주차 form에서 입력한 데이터 서버로 전송하기 (0) | 2023.05.17 |