데알못정을

DB 설계 및 HeidiSQL을 이용한 DB 구현 PART3: SQL 개념 및 예문 본문

Research

DB 설계 및 HeidiSQL을 이용한 DB 구현 PART3: SQL 개념 및 예문

쩡을이 2022. 9. 30. 17:37
728x90
--SQL문에 대한 정리--
SQL 예문에서 등장하는 어트리뷰트들은 아래와 같은 COMPANY 예제와 서점 예제가 각각 사용되었습니다.
 
SQL
  • SQL은 관계형 데이터베이스 관리 시스템의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어
  • 자료의 검색과 관리, 데이터베이스 스키마 생성과 수정, 데이터베이스 객체 접근 조정 관리를 위해 고안됨
  • DDL(데이터 명령어): CREATE, DROP, ALTER, TRUNCATE, RENAME
  • DML(데이터 조작어): SELECT, INSERT, DELETE, UPDATE
SQL 데이터 타입(자주사용)
  • INT, BIGINT, SMALLINT, TINYINT, FLOAT, DOUBLE
  • CHAR(n) -> n글자로 고정된 문자
  • VARCHAR(max) -> 문자열의 길이가 변하지만 max를 넘을 수는 없음
  • BINARY(n) ->n개의 010101
  • VARBINARY(max) ->max를 넘지 않는 010101
SQL문: CREATE ,ALTER
"""CREATE: 데이터베이스를 생성하거나 테이블을 생성할 때 사용한다."""

CREATE DATABASE IF NOT EXISTS 데베이름;
CREATE TABLE IF NOT EXISTS 테이블이름;



"""ALTER: 테이블의 columns, constraints, name등을 변경할 때 사용한다."""

ALTER TABLE 테이블이름 ADD exaple_colomn varchar(10);
# 컬럼과 제약조건을 추가 한다.

ALTER TABLE A RENAME B;
# 테이블 이름을 B로 변경한다.

ALTER TABLE A DROP FORIEN KEY business_id;
# 테이블 A의 외래키 business_id를 삭제한다.

ALTER TABLE A DROP column_1
# 테이블 A의 column_1을 삭제한다.

ALTER TABLE A CHANGE col1_name col2_name;
# 테이블 A의 col1_name을 col2_name으로 변경한다.

ARTET TABLE A ALTER col1 DROP DEFAULT;
# 테이블 A의 col1 어트리뷰트 제약조건 DEAULT를 삭제한다.
  • 선택사항
"""만약에 열을 삭제할 때 이 열을 참조하는 모든 제약 조건들과 뷰를 제거하고 싶으면
CASCADE사용
"""

ATER TABEL A DROP col1 CASCADE;

"""참조무결성 제약조건을 지키기 위해서 제거되는 열을 참조하는 뷰와
	제약조건이 없는 경우만 열을 제거 하고 싶으면 RESTRICT사용
"""
ARTER TABLE A DROP col1 RESTRICT;
 
 
SQL문: RENAME, DROP, TRUNCATE
RENAME TABLE A TO B;
"""테이블 A의 이름을 B로 변경한다."""
(= ALTER TABLE A RENAME B;)

RENAME TABLE A TO B, C TO D;
"""테이블 A의 이름을 B로 변경, C의 이름을 D로 변경"""

RENAME TABLE COMPANY.EMPLOY TO ISA_002.EMPLOY;
"""COMPANY 데베의 EMPLOY 테이블을 ISA_002 데베의 EMPLOY 테이블을 새로 만들면서 그대로 옮긴다."""
 

DROP DATABASE db.name;
"""데이터 베이스를 삭제"""

DROP TABLE table.name;
"""테이블을 삭제"""

 
""" TRUNCATE: 테이블에서만 사용가능하다."""
TRUNCATE TABLE A;
"""테이블 A의 데이터를 삭제하지만 column이름, 제약조건등의 기본 구조는 남아 있음"""
 
 
 
SQL문 소개: INSERT, DELETE, UPDATE, SELECT
INSERT INTO table_a VALUES (v1,‘v2’,‘v3’);

"""테이블 a에 다음과 같은 값을 순서대로 넣는다.
-> 이 방법은 테이블에 데이터를 한번에 넣는거
"""

INSERT INTO table_a(col1,col2) VALUES (v1,‘v3’);
"""테이블 a의 col1,col2에 값을 순서대로 넣는다.
-> 이 방법은 데이터를 삽입할 열을 선언해서 1대1로 매핑해주는 방법
-> 이 경우에 만약 테이블 a가 col3 까지 있다면 col3 은 defualt 값이나 null 허용 조건이 있어야함
"""

INSERT INTO table_a(col1,col2) VALUES (v1, ‘v2’),(v3,‘v4’);
"""테이블 a에 값을 넣는데 행이 두 개 생김"""

DELETE FROM table_A;
"""테이블 A의 모든 “row“를 지움(=TRUNCATE 와 동일한 결과)
-> WHERE 문을 사용하지 않았기 때문에 모든 데이터가 삭제됨"""

DELETE FROM exmaple_table WHERE col1 = v1;
"""col1의 값이 v1이면 그 “row”을 지움"""

DELETE FROM exaple_table WHERE EXISTS
(SELECT * FROM example_table1 WHERE example_table.col1 = example_table1.col2);
"""example_table의 col1 과 example_table1의 col2가 같으면 example_table의 모든 ‘row’을 지워라"""


UPDATE table_a SET column1 = ‘앙’;
"""테이블 a의 col1의 값을 모두 ‘앙’으로 업데이트한다."""

UPDATE table_a SET col1 = col1*2;
"""테이블 a의 col1을 두배해서 바꿔라."""

UPDATE table_a SET col2 = v2 WHERE col3 > v3;
"""테이블 a의 col3의 원소가 v3보다 큰 경우만 col2의 원소를 v2로 바꿔라."""


""" SELECT 어트리뷰트 이름 FROM 테이블 명 WHERE 조건 
주어진 테이블과 해당 조건에서 어트리뷰트를 가져오는 기능
중복된 row가 있을 수 있음
예제: 학생 테이블에서 키가 170 이상인 학생의 이름을 출력하시오.
"""
SELECT 이름
FROM 학생
WHERE 키 >= 170;

기타

"""기타
예)출판사를 모두 보여라. 단, 중복은 제거하여라
"""
SELECT DISTINT publisher
FROM book;

"""예) 주소가 휴스턴, 텍사스가 포함된 고용자들을 모두 가져와라"""
SELECT Fname, Lname
FROM EMPLOY
WHERE address LIKE “%Houston, Texas%”;
"""% : 얘는 문자의 길이를 모를 때 사용"""


"""예) Dnumber = Dno 인, 부서명을 내림차순, 고용자의 Lname을 오름 차순으로 불러와라"""
SELECT Dname, Lname
FROM DEPARTMENT, EMPLOY
WHERE Dnumber = Dno
ORDER BY Dname DESC Lname ASC;
"""그 밖의 합계를 나타내는 SUM(att1), 최댓 값을 나타내는 MAX(att1), 최솟 값을 나타내는 MIN(att1), 평균을 나타내는 AVG(att1), 총계를 나타내는 COUNT(*)가 있다. 또한 COUNT(*)에 대한 제약 조건으로 HAVING 문을 사용하며, 어트리뷰트 별로 정렬을 하고 싶을 땐, GROUB BY문을 사용한다.
SQL문 소개: 뷰(VIEW)
쿼리의 결과를 가상의 테이블로 만드는 것
장점 : 사용자에게 테이블 전체가 아닌 필요한 필드만 보여줄 수 있음/복잡한 쿼리를 단순화해서 사용할 수 있음/쿼리를 재사용할 수 있음
단점 : 한번 정의된 뷰는 변경할 수 없음(ALTER 불가능)/삽입, 삭제, 갱신 작업에 많은 제한 사항을 가짐/자신만의 인덱스를 가질 수 없음
"""

"""뷰 생성 및 삭제"""
CREATE VIEW WORKS_ON2 AS
SELECT Fname, Lname, Pname, Hours
FROM EMPLOY, WORKS_ON, PROJECT
WHERE Ssn = Essn AND Pno = Pnumber;


DROP VIEW WORKS_ON1;

 

 
[2] 박인범 교수, 정보시스템 분석 및 설계 강의 교안
728x90
Comments