데이터베이스시스템 #4 - Basic Queries

juyeong-s·2021년 11월 2일
1

SQL

데이터베이스로부터 데이터에 접근하고 데이터를 조작할 수 있도록 정의된 쿼리

  • 절차적 언어(프로그래밍 언어 X)

기본 syntax

  • 대소문자를 구분하지 않는다.
    • select=SELEECT
  • 주석
    • 한 줄은 --
    • 여러 줄은 /* */
  • ;은 SQL을 구분한다.

DDL : 데이터베이스 스키마를 정의하는 표기법

  • CREATE
CREATE DATABASE 데이터베이스이름;

디폴트 스키마로 설정하기

USE 데이터베이스명;

데이터베이스 목록 보기

SHOW DATABASE;

relation 생성

CREATE TABLE 테이블명(
	속성1 타입,
    	속성2 타입,
    	...
);
  • DROP

데이터베이스 삭제

DROP DATABASE 데이터베이스명;

테이블 삭제

DROP TABLE 테이블명;
  • ALTER

속성 추가하기

ALTER TABLE 테이블명
ADD COLUMN 속성명 테이터타입;

속성 삭제하기

ALTER TABLE 테이블명
DROP COLUMN 속성명;

속성명 변경하기

ALTER TABLE 테이블명
CHANGE COLUMN 원래속성명 바꿀속성명 데이터타입;

속성 수정하기

ALTER TABLE 테이블명
MODIFY COLUMN 속성명 바꿀데이터타입;
  • TRUNCATE

relation 자체 말고 안의 데이터만 지우기

TRUNCATE TABLE 테이블명;

MYSQL 제약조건

  • NOT NULL
  • PRIMARY KEY
  • FOREIGN KEY
  • UNIQUE
  • CHECK
  • DEFAULT
  • CREATE INDEX

NOT NULL 제약조건

CREATE TABLE Employee(
	속성1 타입 NOT NULL,
    	...
);
ALTER TABLE 테이블명
MODIFY COLUMN 속성1 타입 NOT NULL;

PRIMARY KEY 제약조건

  • PRIMARY KEY는 UNIQUE한 값을 가진다.
CREATE TABLE Employee(
	속성1 타입 NOT NULL,
    	CONSTRAINT 키명 PRIMARY KEY (속성1)
);

PRIMARY KEY 삭제하기

ALTER TABLE 테이블명
DROP PRIMARY KEY;

PRIMARY KEY생성하기

ALTER TABLE 테이블명
ADD CONSTRAINT 키명 PRIMARY KEY (속성명);

FOREIGN KEY 제약조건

  • 두 relation 간의 관계를 생성하는 데 사용 된다.
  1. 다른 relation의 primary key를 참조하는 FOREIGN KEY
  2. 자기 자신의 primary key를 참조하는 FOREIGN KEY
  3. primary key의 합성
CREATE TABLE Employee(
	속성1 타입 NOT NULL,
    	CONSTRAINT 키명
    	FOREIGN KEY(속성1) REFERENCES 참조할테이블명(속성1)
);

FOREIGN KEY 삭제하기

ALTER TABLE 테이블명
DROP FOREIGN KEY 키명;

FOREIGN KEY 추가하기

ALTER TABLE 테이블명
ADD CONSTRAINT 키명 FOREIGN KEY (속성1) REFERENCES 참조할테이블명(속성);

UNIQUE 제약조건

CHECK 제약조건

DEFAULT 제약조건

DML

  • INSERT INTO 문
INSERT INTO 테이블명
VALUES (value1, value2 ...),
	(...);

-> 넣고싶은 속성이 몇개만 있는 경우, 속성 지정 가능

INSERT INTO 테이블명(속성2, 속성5)
VALUES(1, '기획'),
	(2, '개발');
  • UPDATE 문
    기존의 튜플을 수정
UPDATE 테이블명
SET title='기획', salary=35
WHERE empno = 15;

empno가 15인 튜플의 title, salary 속성의 데이터 값 변경

  • DELETE 문
    튜플 삭제하기
DELETE FROM employee WHERE empno=15;
  • SELECT 문
SELECT * FROM 테이블명;
SELECT DISTINCT title	- 중복없이 출력
FROM employee;
SELECT *
FROM employee
WHERE NOT title='사장';	==  WHERE title<>'사장';
WHERE salary >=30 AND salary <= 45;
= WHERE salary BETWEEN 30 AND 45;
WHERE empname LIKE '이%';
WHERE dno IN (1,3,7);	-- 1과 3과 7을 가지는 튜플 전부 출력

Aggregation 함수

SELECT와 HAVING절에만 쓰일 수 있다.

  • COUNT()
  • SUM()
  • AVG()
  • MAX()
  • MIN()
SELECT AVG(salary) AS avgsalary, MAX(SALARY) AS maxsalary
FROM employee;
SELECT COUNT(*)
FROM employee;
profile
frontend developer

0개의 댓글