[MySQL] 기본 문법 & 데이터 무결성(Data Integrity)

sua_ahn·2023년 1월 10일
0

MySQL

목록 보기
4/6
post-thumbnail

MySQL 기본 문법

MySQL 특징

  • 키워드, 구문, 문자열의 대소문자를 구분하지 않음!
    (Windows의 경우 테이블명, 데이터베이스명도 대소문자를 구분하지 않음)
  • 데이터베이스 == 스키마 (DATABASE == SCHEMA)

 

 

📚 Object 다루기

SHOW, DESC, USE
CREATE, DROP, ALTER (DDL 데이터 정의어)

 

조회 SHOW, DESC

-- 데이터베이스 목록 조회
SHOW DATABASES;

-- 현재 접속한 스키마의 테이블 목록 조회
SHOW TABLES;

-- 테이블 컬럼 조회
DESC 테이블;

선택 USE

-- 사용할 데이터베이스 선택, 접속
USE 데이터베이스;

생성 CREATE

-- 데이터베이스 생성
CREATE DATABASE 데이터베이스;
CREATE SCHEMA 스키마;

-- 테이블 생성
CREATE TABLE 테이블(컬럼1 타입1 제약조건, 컬럼2 타입2 제약조건);

-- 테이블 복제
CREATE TABLE 테이블 LIKE 테이블;

-- 테이블 복사(컬럼 선택)
CREATE TABLE 테이블 AS SELECT 컬럼 FROM 테이블;
--							   ㄴ Aliasing하면 컬럼명 변경 가능

삭제 DROP

DROP DATABASE 데이터베이스;
DROP TABLE 테이블;

수정 ALTER

  • 테이블, 컬럼 이름 변경 RENAME
-- 테이블 이름 변경
ALTER TABLE 기존테이블명 RENAME TO 변경테이블명;

-- 컬럼 이름 변경
ALTER TABLE 테이블 RENAME COLUMN 기존컬럼명 TO 변경컬럼명;
  • 컬럼, 키 추가 ADD
-- 컬럼 추가
ALTER TABLE 테이블 ADD 컬럼 타입 [제약조건] [AFTER 앞에 위치할 컬럼];

-- 키 추가
ALTER TABLE 테이블 ADD PRIMARY KEY(컬럼);
  • 컬럼 타입 변경 MODIFY, CHANGE
-- 컬럼 타입 변경
ALTER TABLE 테이블 MODIFY 컬럼 타입;

-- 컬럼 이름과 타입 변경
ALTER TABLE 테이블 CHANGE 기존컬럼명 변경컬럼명 타입;
  • 컬럼, 키 삭제 DROP
-- 컬럼 삭제
ALTER TABLE 테이블명 DROP 컬럼;

-- 키 삭제
ALTER TABLE 테이블명 DROP PRIMARY KEY;





📝 Data 다루기 (DML 데이터 조작어)

INSERT, DELETE, SELECT, UPDATE

 

삽입 INSERT

-- 레코드 삽입
INSERT INTO 테이블(컬럼1, 컬럼2) values(1,2);

삭제 DELETE

-- 조건에 해당하는 데이터 삭제
DELETE FROM 테이블 WHERE 컬럼 =

수정 UPDATE

-- WORKBENCH로 데이터 수정 시 설정 필요
SET sql_safe_updates = 0;

-- 조건에 해당하는 데이터 수정
UPDATE 테이블 
SET 컬럼 = 변경값 
WHERE 컬럼 = 기존값

조회 SELECT

SELECT 컬럼 FROM 테이블
  • 조건절 WHERE
SELECT 컬럼
FROM 테이블
WHERE 검색조건;
  • 그룹화 GROUP BY + 그룹화조건 HAVING
SELECT 컬럼
FROM 테이블
WHERE 검색조건
GROUP BY 컬럼
HAVING 그룹화조건;
  • 정렬 ORDER BY → 오름차순(ASC 생략가능), 내림차순(DESC)
SELECT 컬럼
FROM 테이블
WHERE 조건
ORDER BY 컬럼 [ASC 또는 DESC];
  • 레코드 중복 제거 DISTINCT
SELECT DISTINCT 컬럼
FROM 테이블
WHERE 검색조건;
  • 조건문 CASE
SELECT CASE 컬럼
			WHEN 비교값 THEN 반환값
            WHEN 비교값 THEN 반환값
      		ELSE 반환값
  		END AS 가명
FROM 테이블;

Subquery
: 쿼리 안에 쿼리 (메인 쿼리에 종속되는 쿼리)

<SELECT 구문 위치별 서브쿼리 조건>
SELECT + (단일 행 && 단일 열)을 반환하는 서브쿼리
FROM + aliasing이 된 서브쿼리

 

 


데이터 무결성 Data Integrity

: 데이터를 인가되지 않은 방법으로 변경할 수 없도록 보호하는 성질

→ 데이터 무결성을 위해 컬럼에 다음과 같은 제약 조건을 걸 수 있음

 

🔐 제약 조건 Constraints

키워드null 허용중복 허용특징
primary key (기본키)xx테이블의 대표 컬럼 (하나만 설정 가능)
unique key (고유키)Ox테이블에 유일한 값으로 존재하도록 설정
foreign key (외래키)OO참조테이블과 연결 목적으로, 참조테이블에서는 기본키이며, 참조테이블에 존재하는 값만 사용 가능!
not nullxO필수 입력 사항
checkOO주어진 조건에 해당하는 값들만 사용 가능

cf) 컬럼 기본값 설정 : DEFAULT
cf) 자동 값 증가 컬럼 : AUTO_INCREMENT (Sequence 기능)




-- 기본키, 고유키, 외래키 ( + auto_increment)

CREATE TABLE tb1(
	col_id INT PRIMARY KEY
);

CREATE TABLE tb2(
	seq INT AUTO_INCREMENT PRIMARY KEY,
    
    col1 VARCHAR(20) UNIQUE,
    col2 VARCHAR(10) UNIQUE KEY,
    
    col_id INT,
    FOREIGN KEY(col_id) REFERENCES tb1(col_id)
);


-- not null, check (+ default)

CREATE TABLE tb_check(
	col1 VARCHAR(5) NOT NULL,
    
    col2 VARCHAR(20) DEFAULT 0,
    
	CONSTRAINT ck1 CHECK(col1 IN('Yes', 'No')),
    CONSTRAINT ck2 CHECK(col2 >= 0 AND col2 < 100)
);




profile
해보자구

0개의 댓글