✅ DB 문법
#데이터베이스 보기
show databses;
#데이터베이스 생성
create database myDB;
#데이터베이스 선택
use myDB;
👉 윈도우 환경의 MySQL에서는 대소문자를 구분하지 않는다.(유닉스 환경은 구분함)
✅ 테이블 생성
CREATE TABLE `테이블명` (
`컬럼명1` int NOT NULL AUTO_INCREMENT, #기본키, 숫자 자동 증가, 공백 불가 설정
`컬럼명2` Char(15) DEFAULT NULL,
PRIMARY KEY (`컬럼명1`) # 기본키
FOREIGN KEY(컬럼명2) REFERENCES 테이블명(컬럼명) #자기자신 외래키 참조
)
👉 '테이블명' 따옴표('')를 쓰는 이유는 테이블 이름을 띄어쓰를 쓸 때 쓴다. 띄어쓰기 없을 경우 따옴표('')를 안해도 된다.
✅ 테이블 제약 조건
📝 NOT NULL: 해당 필드의 속성 값은 공백(NULL) 값을 지정할 수 없다.
📝 AUTO_INCREMENT: int 값으로 설정 시 해당 속성 값을 1부터 시작하여 새로운 레코드가 추가될 때마다 1씩 증가한다.
📝 UNIQUE: 해당 필드는 서로 다른 값을 가져야 한다.(유일한 값)
📝 PRIMARY KEY: 해당 필드는 NOT NULL과 UNIQUE의 두가지 특징을 모두 가진다.
📝 FOREIGN KEY: 하나의 테이블을 다른 테이블에 참조한다.(참조무결성)
📝 DEFAULT: 해당 속성 값의 기본값을 설정할 수 있다.(ex. DEFAULT: 0)
👉 기본키 지정을 하지 않으면 NOT NULL 유니크가 기본키가 된다.
CREATE TABLE `테이블명` (
`컬럼명1` int NOT NULL AUTO_INCREMENT, #기본키, 숫자 자동 증가, 공백 불가 설정
`컬럼명2` Char(15) DEFAULT NULL,
PRIMARY KEY (`컬럼명1`)
CONSTRAINT 외래키이름 FOREIGN KEY (userId) REFERENCES userB(userId) ON UPDATE CASCADE
#외래키 지정 COONSTRAINT를 쓰면 외래키 이름 지정, 안쓰면 필드값 자체가 이름이 된다.
#부모키 변경 시 외래키 값도 변경(CASCADE, 상속)
)
✅ 테이블 조회
id: 테이블 이름
content: 내용
✅ 테이블 데이터 조회
SELECT 필드1, ...필드n AS 별명
FROM 테이블명
WHERE 테이블 조건(필드1 = 값(조건))
GROUP BY 필드명1
HAVING 별명 > 값(그룹 조건)
ORDER BY 필드명 DESC (정렬, ASC 오름차순, DESC 내림차순)
📝 SELECT: 필드(속성 값)나 함수 값을 선택하고 AS로 별명을 지정
📝 FROM:어느 테이블로 부터
📝 WHERE: 조건식을 만족하느 ㄴ값만
📝 GROUP: 그룹화
📝 HAVING: 그룹 시 조건식(WHERE X)
📝 ORDER: 정렬(기본값은 오름차순)
✅ 테이블 구조
🔴 필드 추가(ADD)
ALTER TABLE 테이블이름 ADD 필드이름 필드타입
🟠 필드 제거(DROP)
ALTER TABLE 테이블이름 DROP 필드이름
🟡 필드 수정(CHANGE)
ALTER TABLE 테이블이름 CHANGE 필드이름 새필드명 새필드타입
🟢 필드 타입 수정(MODIFY)
ALTER TABLE 테이블이름 MODIFY 필드이름 새필드타입
🔵 키 추가(ADD...KEY)
ALTER TABLE 테이블이름 ADD CONSTRAINT 기본키명 PRIMARY KEY (필드값)
ALTER TABLE 테이블이름 ADD FOREIGN KEY(컬럼명) REFERENCES 참조테이블(참조컬럼)
🟣 키 제거(DROP...KEY)
ALTER TABLE 테이블이름 DROP FOREIGN KEY 외래키명
🟤 테이블 이름 변경(RENAME)
ALTER TABLE 테이블이름 RENAME 테이블이름
✅ 테이블 데이터 수정(업데이트)
UPDATE 테이블 이름
SET 필드이름1 = 데이터값1, 필드이름N = 데이터값N, ...
WHERE 필드이름 = 데이터값; #조건식이 없을 시 전체 레코드가 바뀌니 주의
✅ 테이블 삽입
#필드를 선택하여 값을 넣을 때
INSERT INTO 테이블이름(필드이름1, 필드이름2, 필드이름3, ...)
VALUES (필드값1, 필드값2, 필드값3)
#필드 전체 값을 넣을 때 (필드명 생략 가능)
INSERT INTO 테이블이름
VALUES (필드값1, 필드값2, 필드값3, ...)
✅ 테이블 삭제
DROP TABLE 테이블명
DELETE: 테이블 구조 남김 없이 삭제, 트랜잭션 로그 기록으로 속도가 느림, 복구 가능, 테이블 자체 용량은 줄어들지 않음.
TRUNCATE: 테이블의 구조는 남기지만 데이터값은 삭제(복구불가)
✅ 중복(DISTINCT)
#해당 컬럼의 중복된 값은 하나로 보여줌
SELECT DISTINCT 컬럼명 FROM 테이블명